﻿// ### Event calendar Shared Functions START

var arr_public_dd;

// Public hoilday;
arr_public_dd = new Array();
arr_public_dd.push("_20060102");
arr_public_dd["_20060102"] = "The day following the first day of January";
arr_public_dd.push("_20060128");
arr_public_dd["_20060128"] = "The day preceding Lunar New Year\'s Day";
arr_public_dd.push("_20060130");
arr_public_dd["_20060130"] = "The second day of the Lunar New Year";
arr_public_dd.push("_20060131");
arr_public_dd["_20060131"] = "The third day of the Lunar New Year";
arr_public_dd.push("_20060405");
arr_public_dd["_20060405"] = "Ching Ming Festival";
arr_public_dd.push("_20060414");
arr_public_dd["_20060414"] = "Good Friday";
arr_public_dd.push("_20060415");
arr_public_dd["_20060415"] = "The day following Good Friday";
arr_public_dd.push("_20060417");
arr_public_dd["_20060417"] = "Easter Monday";
arr_public_dd.push("_20060501");
arr_public_dd["_20060501"] = "Labour Day";
arr_public_dd.push("_20060505");
arr_public_dd["_20060505"] = "The Buddha\'s Birthday";
arr_public_dd.push("_20060531");
arr_public_dd["_20060531"] = "Tuen Ng Festival";
arr_public_dd.push("_20060701");
arr_public_dd["_20060701"] = "HKSAR Establishment Day";
arr_public_dd.push("_20061002");
arr_public_dd["_20061002"] = "The day following National Day";
arr_public_dd.push("_20061007");
arr_public_dd["_20061007"] = "The day following Chinese Mid-Autumn Festival";
arr_public_dd.push("_20061030");
arr_public_dd["_20061030"] = "Chung Yeung Festival";
arr_public_dd.push("_20061225");
arr_public_dd["_20061225"] = "Christmas Day";
arr_public_dd.push("_20061226");
arr_public_dd["_20061226"] = "The first weeday after Christmas Day";

var ywets_coming_event = function(){
	var scantodate = "_";

	var scancomingdate = "";
	var cat_type = "YES";
	scantodate+=new Date().getFullYear();
	scantodate+=(new Date().getMonth()+1<10)?"0":"";
	scantodate+=(new Date().getMonth()+1);
	scantodate+=(new Date().getDate()<10)?"0":"";
	scantodate+=new Date().getDate();
	if (arr_ywets_event){
		for (var i=0; i<arr_ywets_event.length; i++){
			if (arr_ywets_event[i]>=scantodate && arr_ywets_event_cat[arr_ywets_event[i]] == cat_type){ 
				scancomingdate = arr_ywets_event[i];
				break;
			}
		}
	}
	if (scancomingdate!=""){
		return "<b><u>"+((lang=="en")?"Coming Event:":"即將舉行之活動：")+"</u></b><p>"+arr_ywets_event[scancomingdate];
	}else{
		return "";
	}
}();

var ld_coming_event = function(){
	var scantodate = "_";

	var scancomingdate = "";
	var cat_type = "LD";
	scantodate+=new Date().getFullYear();
	scantodate+=(new Date().getMonth()+1<10)?"0":"";
	scantodate+=(new Date().getMonth()+1);
	scantodate+=(new Date().getDate()<10)?"0":"";
	scantodate+=new Date().getDate();
	if (arr_ywets_event){
		for (var i=0; i<arr_ywets_event.length; i++){
			if (arr_ywets_event[i]>=scantodate && arr_ywets_event_cat[arr_ywets_event[i]] == cat_type){ 
				scancomingdate = arr_ywets_event[i];
				break;
			}
		}
	}
	if (scancomingdate!=""){
		return "<b><u>"+((lang=="en")?"Other Coming Event by Labour Department:":"勞工處其他活動：")+"</u></b><p>"+arr_ywets_event[scancomingdate];
	}else{
		return "";
	}
}();


var bgcolor_hdr = "#c3d356";
var bgcolor_subhdr = "#e8eec0";
var bgcolor_body = "#ffffea";
var bgcolor_border ="#e8eec0";
var bgcolor_comingevent = "#ffffff";
var bgcolor_eventdetail = "#ffffea";
var style_txtWhBd = "font-family: Verdana, Arial, Helvetica, sans-serif;font-weight: bold;font-size: 11px;color: #FFFFFF;text-decoration: none;letter-spacing: 0px";
var style_border = "border-right: #e8eec0 solid 2px;border-bottom: #e8eec0 solid 2px;border-top: #e8eec0 solid 2px;border-left: #e8eec0 solid 2px;cursor:hand;letter-spacing: 0px"
var style_txt = "font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;letter-spacing: 0px";
var style_txtSmall = "font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 10px;letter-spacing: 0px";

function calendarShow(m, y){
	hiddenEventDetails();
	var yyyymm = y+""+((m<10)?"0":"")+m;
	var scandate = yyyymm+"00";
	var b_bgcolor = false;
	var m_b1, y_b1, m_n1, y_n1

	if (m>12) {m=m-12;y=y+1;}
	if (m<1) {m=12;y=y-1;}
	m_b1=m-1;
	y_b1=y;
	m_n1=m+1;
	y_n1=y;
	if (m-1==0){m_b1=12;y_b1=y-1;}
	if (m+1==13){m_n1=1;y_n1=y+1;}

	var mn=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
	var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
	var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
	oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st

	var todaydate=new Date() //DD added
	var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
	dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
	var t='<table cols="7" cellpadding="2" border="0" cellspacing="0" width="90%" style="'+style_border+'" bgcolor="'+bgcolor_subhdr+'"><tr align="center" bgcolor="'+bgcolor_hdr+'">';
	t+='<td style="'+style_txt+'"><a href="javascript:calendarShow('+ m_b1 +','+ y_b1 +')" style="'+style_txtWhBd+'">&lt;</a></td><td colspan="5" align="center" style="'+style_txtWhBd+'">'+mn[m-1]+' - '+y+'</td><td><a href="javascript:calendarShow('+ m_n1 +','+ y_n1 +')" style="'+style_txtWhBd+'">&gt;</a></td></tr><tr align="center">';
	for(s=0;s<7;s++)t+='<td style="'+style_txt+'">'+"SMTWTFS".substr(s,1)+'</td>';
		t+='</tr><tr align="center" bgcolor="'+ bgcolor_body +'">';
			for(i=1;i<=42;i++){
				var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
				b_bgcolor = false;
				scandate = yyyymm+"00";
				if (x!="&nbsp;") scandate = yyyymm + ((x<10)?"0":"") + x;
				t+='<td style="'+style_txt+'" '
				if (arr_ywets_event && arr_ywets_event["_"+scandate] && b_bgcolor==false){
					switch(arr_ywets_event_cat["_"+scandate]){
						case 'YES':
							t+=' bgcolor="lightgreen"';
							break;
						case 'LD':
							t+=' bgcolor="lightblue"';
							break;
						default:
							t+=' bgcolor="lightblue"';
							break;
					}
					t+=' onmouseover="getEventDetails(\''+arr_ywets_event["_"+scandate].replace(/"/g, "\\")+'\',this)"';
					b_bgcolor = true;	
				}				
				if (x==scanfortoday && b_bgcolor==false){
					t+=' bgcolor="white"';
					b_bgcolor = true;
				}
				t+='>';
				if (x!="&nbsp;"){
					t+=(arr_public_dd["_"+scandate] || (i)%7==1)?'<font color="red">'+x+'</font>':x;
				}
				t+='</td>';
				if(((i)%7==0)&&(i<36)) t+='</tr><tr align="center" bgcolor="'+bgcolor_body+'">';
			}
		t+='</tr>';
		t+='<tr><td colspan="7" bgcolor="'+bgcolor_subhdr+'"><table width="100%"><tr><td bgcolor="'+bgcolor_comingevent+'" style="'+style_txt+'">'+ywets_coming_event+'<br><br>'+ld_coming_event+'</td></tr></table></td></tr>';
		t+='</table>';
	lyr_calendar.innerHTML=t;
}

//To get current object X position
function getX(obj){
	return( obj.offsetParent==null ? obj.offsetLeft : obj.offsetLeft+getX(obj.offsetParent) );
}

//To get current object Y position
function getY(obj){
	return( obj.offsetParent==null ? obj.offsetTop : obj.offsetTop+getY(obj.offsetParent) );
}

function getEventDetails(m, obj){
  var mt;
  mt = "";
  mt = mt + "<table width=\"200\" height=\"50\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" bgcolor=\""+bgcolor_border+"\">";
  mt = mt + "<tr><td background=images/bg_blue.gif style=\""+style_txt+"\" valign=\"top\">";
  mt = mt + "<a href=\"javascript:hiddenEventDetails()\"><img src=\"images/btn_close.gif\" border=\"0\" align=\"right\"></a>";
  mt = mt + m;
  mt = mt + "</td></tr>";
  mt = mt + "</table>";
  lyr_eventdetails.innerHTML = mt;
  lyr_eventdetails.style.visible = true;
//  lyr_eventdetails.style.left = getX(obj)-20;
  lyr_eventdetails.style.left = getX(lyr_calendar)-40;
  lyr_eventdetails.style.top = getY(obj)+20;
}
function hiddenEventDetails(){
  lyr_eventdetails.innerHTML = "";
  lyr_eventdetails.style.visible = false;
}
function calendarfrontpage(){
  if (lyr_calendar.innerHTML == ""){
    calendarShow(new Date().getMonth()+1, new Date().getFullYear());
  }else{
    lyr_calendar.innerHTML = "";
    lyr_eventdetails.innerHTML = "";
  }
  lyr_calendar.style.top = getY(btncalendar)+20;
  lyr_calendar.style.left = getX(btncalendar)-140;
}
//document.write('<div id="lyr_calendar" style="position:absolute;z-index:1"></div>');
document.write('<div id="lyr_calendar"></div>');
document.write('<div id="lyr_eventdetails" style="position:absolute;z-index:2"></div>');
calendarShow(new Date().getMonth()+1, new Date().getFullYear());

// ### Event calendar Shared Functions END
