/**
 * @author	Lotus Note Team(Original Author) / Edited by Library Automation Services Team
 * @version	1.0
 * @copyright	Sarawak Information Systems Sdn. Bhd.
 *
 * Development Environment	: TextPad 4.4.1
 * Name of the Application	: calendar.js
 * Overview of Application	: Construct the calendar selector page
 * Creation/Modification History	:
 *	Original Copy from Lotus Note Team
 *	21-May-2002		Edited by Library Automation Team
 * 
 * Function Declaration:
 *	function getToday()
 *	function getMonth_and_Date(form,fieldName)
 *	function putcal(form, dateFieldName, language, format, pYear)
 *	function calccal(targetwin,form,dateFieldName, language, format, pYear)
 *	function calclastday(month,year)
 *	function calcnextmonth(month)
 *	function calcnextyear(month,year)
 *	function calcprevmonth(month)
 *	function calcprevyear(month,year)
 *
 */
var month, day, year;   
var delim = new Array(":","/","\\","-"," ",".");
var monthArray = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
var imgPath = "/public/img/";

function getToday(){
	today = new Date();
	day = today.getDate();
	month = today.getMonth();
	month++;
	year = today.getYear();
	year = (year < 1000) ? 1900 + year : year;}

function putcal(form, dateFieldName, language, format, pYear) {
	var version = navigator.appVersion;
	getToday();
	if (navigator.appVersion.indexOf("Mac") != -1) {
		LeftPosition = (screen.width) ? (screen.width-300)/2 : 0;
		TopPosition = (screen.height) ? (screen.height-340)/2 : 0;
		calwin = open("","calwin","height=285,width=300,top="+TopPosition+",left="+LeftPosition+",resizable=no");
	} else {
		LeftPosition = (screen.width) ? (screen.width-230)/2 : 0;
		TopPosition = (screen.height) ? (screen.height-280)/2 : 0;
		calwin = open("","calwin","height=225,width=230,top="+TopPosition+",left="+LeftPosition+",resizable=no");}
	language = (language=='undefined') ? "BM" : language;
	format = (format=='undefined') ? "SHORT" : format;
	calccal(calwin, form, dateFieldName, language, format, pYear);}

function calccal(targetwin,form,dateFieldName, language, format, pYear) { 
	var Lmonthname = new Array(12);
	var Smonthname = new Array(12);
	Lmonthname[0] = (language=="BM") ? "Januari" : "January";
	Lmonthname[1] = (language=="BM") ? "Februari" : "February";
	Lmonthname[2] = (language=="BM") ? "Mac" : "March";
	Lmonthname[3] = (language=="BM") ? "April" : "April";
	Lmonthname[4] = (language=="BM") ? "Mei" : "May";
	Lmonthname[5] = (language=="BM") ? "Jun" : "June";
	Lmonthname[6] = (language=="BM") ? "Julai" : "July";
	Lmonthname[7] = (language=="BM") ? "Ogos" : "August";
	Lmonthname[8] = (language=="BM") ? "September" : "September";
	Lmonthname[9] = (language=="BM") ? "Oktober" : "October";
	Lmonthname[10] = (language=="BM") ? "November" : "November";
	Lmonthname[11] = (language=="BM") ? "Disember" : "December";
	Smonthname[0] = (language=="BM") ? "JAN" : "JAN";
	Smonthname[1] = (language=="BM") ? "FEB" : "FEB";
	Smonthname[2] = (language=="BM") ? "MAC" : "MAR";
	Smonthname[3] = (language=="BM") ? "APR" : "APR";
	Smonthname[4] = (language=="BM") ? "MEI" : "MAY";
	Smonthname[5] = (language=="BM") ? "JUN" : "JUN";
	Smonthname[6] = (language=="BM") ? "JUL" : "JUL";
	Smonthname[7] = (language=="BM") ? "OGO" : "AUG";
	Smonthname[8] = (language=="BM") ? "SEP" : "SEP";
	Smonthname[9] = (language=="BM") ? "OKT" : "OCT";
	Smonthname[10] = (language=="BM") ? "NOV" : "NOV";
	Smonthname[11] = (language=="BM") ? "DIS" : "DEC";
	
	var endday = calclastday(eval(month),eval(year));
	mystr = month + "/01/" + year;
	mydate = new Date(mystr);
	firstday = mydate.getDay();
	var remain = endday - (7 - firstday);
	var weekNum = remain / 7;
	weekNum = ((remain % 7) > 0) ? weekNum + 1 : weekNum; 
	var cnt = 0;
	var day = new Array(6);
	for (var i=0; i<=weekNum; i++) day[i] = new Array(7);
	for (var r=0; r<=weekNum; r++){
		for (var c=0; c<7; c++){
			if ((cnt==0) && (c!=firstday)) continue;
			cnt++;
			day[r][c] = cnt;
			if (cnt==endday) break;
		}
		if (cnt==endday) break;
	}
	calendar = ( language=="BM" ) ? "Kalendar" : "Calendar"
	targetwin.document.open();
	targetwin.document.writeln("<HTML>");
	targetwin.document.writeln("<HEAD><TITLE>" + calendar + "</TITLE>");
	targetwin.document.writeln("<STYLE>");
	targetwin.document.writeln("A:link{text-decoration:none}; A:hover{color:green;text-decoration:underline}; A:visited{text-decoration:none}");
	targetwin.document.writeln("BODY {background: white; color: black; font-family :  Arial, Helvetica, sans-serif; font-size : 8pt;}");
	targetwin.document.writeln("TH {background-color :#0082BF; color: #FFFFFF; font-family : Arial, Helvetica, sans-serif; font-size : 9pt; font-weight: normal}");
	targetwin.document.writeln("TD {color : #000000; font-family :  Arial, Helvetica, sans-serif; font-size :  8pt;}");
	targetwin.document.writeln(".bgtd{background-color : #7396E8}");
	targetwin.document.writeln(".shade {background-color : #CCCCCC;}");
	targetwin.document.writeln(".myText{font-family:Arial; font-size:9pt; color:#000000}");
	targetwin.document.writeln(".mySundayText{font-family:Arial; font-size:9pt; color:#FF0000; font-weight:bold}");
	targetwin.document.writeln(".mySunday{font-family:Arial; font-size:11pt; color:#FF0000}");
	targetwin.document.writeln(".myNumber{font-family:Arial; font-size:11pt; color:#0000FF}");
	targetwin.document.writeln(".myToday{font-family:Arial; font-size:11pt; color:#008040; font-weight:bold}");
	targetwin.document.writeln(".title{font-family :  Arial, Helvetica, sans-serif; font-size : 10pt; font-weight : bold; color : #CC0000;}");
	targetwin.document.writeln(".myButtonClass {font-family :  Arial, Helvetica, sans-serif; font-size :  8pt; font-weight: lighter; cursor:hand}");
	targetwin.document.writeln(".myNumberPast{font-family:Arial; font-size:9pt; color:#000000}");
	targetwin.document.writeln(".mySundayPast{font-family:Arial; font-size:9pt; color:#FF0000}");
	targetwin.document.writeln(".myOverTD{background:yellow}");
	targetwin.document.writeln("</STYLE>");
	targetwin.document.writeln("</HEAD>");
	targetwin.document.writeln("<BODY marginwidth=1 marginheight=0 leftmargin=1 topmargin=0 onBlur=\"self.focus()\">");
	targetwin.document.writeln("<FORM><TABLE BORDER=0 WIDTH=\"90%\" ALIGN=\"center\"><TR>");
	var prevyear = eval(year) - 1;
	targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevyearbutton CLASS='myButtonClass' VALUE='<<'"+
	" onclick='opener.month = " + month + "; opener.year = " + prevyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\", \"" +  language + "\",\"" + format + "\",\"" + pYear + "\")'></TD>");
	var prevmonth = (month == 1) ? 12 : month - 1;
	var prevmonthyear = (month == 1) ? year - 1 : year;
	targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevmonthbutton CLASS='myButtonClass' VALUE='&nbsp;<&nbsp;'"+
	" onclick='opener.month = " + prevmonth + "; opener.year = " + prevmonthyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\", \"" +  language + "\",\"" + format + "\",\"" + pYear + "\")'></TD>");
	targetwin.document.writeln("<TD COLSPAN=3 WIDTH=\"75%\" ALIGN=CENTER CLASS=\"title\">");
	var index = eval(month) - 1;
	targetwin.document.writeln("<B>" + Lmonthname[index] + " " + year + "</B></TD>");
	var nextyear = eval(year) + 1;        
	var nextmonth = (month == 12) ? 1 : month + 1;
	var nextmonthyear = (month == 12) ? year + 1 : year;
	targetwin.document.writeln("<TD HEIGHT=30><INPUT TYPE=BUTTON NAME=nextmonthbutton CLASS='myButtonClass' VALUE='&nbsp;>&nbsp;'"+
	" onclick='opener.month = " + nextmonth + "; opener.year = " + nextmonthyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\", \"" +  language + "\",\"" + format + "\",\"" + pYear + "\")'></TD>");
	targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextyearbutton CLASS='myButtonClass' VALUE='>>'"+
	" onclick='opener.month = " + month + "; opener.year = " + nextyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\", \"" +  language + "\",\"" + format + "\",\"" + pYear + "\")'></TD>");
	targetwin.document.writeln("</TR></TABLE>");
	mytoday = new Date();
	myday = mytoday.getDate();
	mymonth = mytoday.getMonth();
	mymonth++;
	myyear = mytoday.getYear();
	myyear = (myyear < 1000) ? 1900 + myyear : myyear;
	sunday = (language=="BM") ? "Ahd" : "Sun";
	monday = (language=="BM") ? "Isn" : "Mon";
	tuesday = (language=="BM") ? "Sel" : "Tue";
	wednesday = (language=="BM") ? "Rab" : "Wed";
	thursday = (language=="BM") ? "Kha" : "Thu";
	friday = (language=="BM") ? "Jum" : "Fri";
	saturday = (language=="BM") ? "Sab" : "Sat";
	targetwin.document.writeln("<TABLE border=1 cellspacing=0 cellpadding=0 width=\"90%\" align=\"center\" align=\"center\" bgcolor=\"#FFFFFF\"><TR><TD class=\"bgtd\">");
	targetwin.document.writeln("<TABLE border=0 cellpadding=0 cellspacing=1 width=\"100%\" align=\"center\"><TR align=\"center\">");
	targetwin.document.writeln("<TH height=20 width=\"14%\" class=\"mySundayText\">" + sunday + "</TH>");
	targetwin.document.writeln("<TH width=14%>" + monday + "</TH>");
	targetwin.document.writeln("<TH width=14%>" + tuesday + "</TH>");
	targetwin.document.writeln("<TH width=15%>" + wednesday + "</TH>");
	targetwin.document.writeln("<TH width=14%>" + thursday + "</TH>");
	targetwin.document.writeln("<TH width=15%>" + friday + "</TH>");
	targetwin.document.writeln("<TH>" + saturday + "</TH>");
	targetwin.document.writeln("</TR>");
	targetwin.document.writeln("<TR><TD COLSPAN=7 bgcolor=\"#FFFFFF\"><img src=\"" + imgPath + "whitedot.gif\"></TD></TR>");
	var selectedmonth = eval(month) - 1;
	var today = new Date();
	var thisyear = (today.getYear() > 1000)? today.getYear() : today.getYear() + 1900;
	var thisyear2 = pYear
	var thismonth = today.getMonth() + 1
	var thisday = today.getUTCDate() + 1
	var selectedyear = eval(year) - thisyear + 4;
	var conditionalpadder = "";
	for(r=0; r<=weekNum; r++){
		targetwin.document.writeln("<TR align=\"center\">");
		for(c=0; c<7; c++){
			if(day[r][c] != null) {
				todaydate = (thisday-1)+" "+Smonthname[thismonth-1]+" "+thisyear;
				current = day[r][c]+" "+Smonthname[month-1]+" "+year;
				bg = "bgcolor=#FFFFFF";
				if (todaydate == current) {
					bg = "bgcolor=#FFFFD9"; 
				} 
				if (Date.parse(current) < Date.parse(todaydate)) {
					bg = "bgcolor=#EBF0F0";
				}
				targetwin.document.writeln("<TD HEIGHT=25 " + bg + ">");
				if (day[r][c] < 10) conditionalpadder = "&nbsp;"
				else conditionalpadder = "";
				dateFormat = (format=="SHORT") ? day[r][c] + "-" + Smonthname[index] + "-" + year : day[r][c] + " " + Lmonthname[month-1] + " " + year
				link = true
				if (pYear!=""){
					if ( parseInt(year)==parseInt( thisyear2 )){
						if ( parseInt(year)==parseInt(thisyear)){
							if (parseInt(month)==parseInt(thismonth)){
								if (day[r][c]<thisday){ link = false }
								if (day[r][c]>thisday){ link = true }
								if (day[r][c]==thisday){ link = true }
							}else {
								if ( parseInt(month) > parseInt(thismonth) ){ link = true
								}else{ link = false }
							}
						}else{ link = true }
					}else{ link = false }
				}
				if (link){
					classUse = (c==0) ? "mySunday" : "myNumber"
					classUse = (today==current) ? "myToday" : classUse
					targetwin.document.writeln("<a href=\"javascript:" + "window.opener.document." + form.name + "." + dateFieldName + ".value='" + dateFormat + "'" + 
					"; window.close();\" class=\"" + classUse + "\">" + conditionalpadder + day[r][c] + conditionalpadder +  "</a>")							}else{					
					classUse = (c==0) ? "mySundayPast" : "myNumberPast"
					classUse = (today==current) ? "myToday" : classUse
					targetwin.document.writeln( "<font class=" + classUse + ">" + conditionalpadder + day[r][c] + conditionalpadder + "</font>")
				}
			}else{ 
				targetwin.document.writeln("<TD height=25 CLASS=\"shade\">");
				targetwin.document.writeln("&nbsp;"); }
			targetwin.document.writeln("</TD>");
		}
		targetwin.document.writeln("</TR>");
	}
	targetwin.document.writeln("</TABLE></BODY>");
	targetwin.document.writeln("</TD></TR></TABLE></FORM></HTML>");
	targetwin.document.close()
}

function calclastday(month,year) {
	if ((month==2) && ((year%4)==0)) return 29;
	if ((month==2) && ((year%4)!=0)) return 28;
	if ((month==1) || (month == 3) || (month == 5) || (month == 7) ||(month==8) || (month == 10) || (month ==12))return 31;
	return 30;}

function calcnextmonth(month) {
	if (month=="12") return "1";
	else return (eval(month)+1);}

function calcnextyear(month,year) {
	if (month=="12") return (eval(year)+1);
	else return (year);}

function calcprevmonth(month) {
	if (month=="1") return "12";
	else return (eval(month)-1);}

function calcprevyear(month,year) {
	if (month=="1") return (eval(year)-1);
	else return (year);
}
