/*
Copyright and Ownership: Wynsoft System Inc., Ontario, Canada.
*** DO NOT ALTER THIS CODE IN ANY WAY ***
*/
var gMonth;
var gYear;
var selObj;
var dateValue;
var showTime;
var sScript;
var offset;
var start_year=1975;
var end_year=2010;
var setdate=false;
var imgPath='';
var dateFormat="dd-MMM-yyyy";
function Calendar(Month,Year) {
    var output = '';
    gMonth=Month;
    gYear=Year;
	if (dateValue!="" && dateFormat=="dd-MMM-yyyy") {
		/*use the date passed as the Default Date
		must be in the following format:
			dd-Mon-yyyy
		*/
		dateString=dateValue;
		switch (dateString.substring(3,6)) {
		case 'Jan':
			mon=0;
			break;
		case 'Feb':
			mon=1;
			break;
		case 'Mar':
			mon=2;
			break;
		case 'Apr':
			mon=3;
			break;
		case 'May':
			mon=4;
			break;
		case 'Jun':
			mon=5;
			break;
		case 'Jul':
			mon=6;
			break;
		case 'Aug':
			mon=7;
			break;
		case 'Sep':
			mon=8;
			break;
		case 'Oct':
			mon=9;
			break;
		case 'Nov':
			mon=10;
			break;
		case 'Dec':
			mon=11;
			break;
		}
		dLen=dateString.length;
		if (dLen > 11) {
		    //has time
    		tmpDate=names[mon] + ' ' + parseInt(dateString.substring(0,2),10) + ', ' + dateString.substring(7,11) + ' ' + dateString.substring(12,20);
		} else {
    		tmpDate=names[mon] + ' ' + parseInt(dateString.substring(0,2),10) + ', ' + dateString.substring(7,11);
    	}
		var IDate = new Date(tmpDate);
		timezoneoffset = IDate.getTimezoneOffset();
		if (isDST()) {
			timezoneoffset=timezoneoffset + 60;
		}	
		timezoneoffset = timezoneoffset * (-1);
		timezoneoffset=timezoneoffset/60;
		var clientTZ=offset;
		timezoneoffset=(clientTZ - timezoneoffset);
		var CurrDate = new Date(IDate.getYear(),IDate.getMonth(),IDate.getDate(),IDate.getHours() + parseInt(timezoneoffset,10),IDate.getMinutes(),IDate.getSeconds());
			gMonth=CurrDate.getMonth();
			gYear=CurrDate.getFullYear();
			Day=CurrDate.getDate();
         dateValue='';
         setdate=true;
        
         firstDay = new Date(gYear, gMonth,1);
	} else {
		var IDate = new Date(Date());
		timezoneoffset = IDate.getTimezoneOffset();
		if (isDST()) {
			timezoneoffset=timezoneoffset + 60;
		}	
		timezoneoffset = timezoneoffset * (-1);
		timezoneoffset=timezoneoffset/60;
		var clientTZ=offset;
		timezoneoffset=(clientTZ - timezoneoffset);
		var CurrDate = new Date(IDate.getFullYear(),IDate.getMonth(),IDate.getDate(),IDate.getHours() + parseInt(timezoneoffset,10),IDate.getMinutes(),IDate.getSeconds());
			Day=1;
        firstDay = new Date(Year, Month,1);
	}
	hrs = CurrDate.getHours();
	if (hrs>12) {
		hrs=hrs-12
		ampm='PM'
	} else if (hrs==12) {
		ampm='PM'
	} else if (hrs==0) {
		hrs=12-hrs
		ampm='AM'
	} else {
		ampm='AM'
	};
	mins=CurrDate.getMinutes();
	secs=CurrDate.getSeconds();
    output += '<TABLE BGCOLOR="#ffffee" border=0 cellpadding=0 cellspacing=1 style="border:1px solid #000000"><TR>';
    output += '<TD ALIGN=LEFT><input type=button name=btnprev class="calendarbutton" style="width:15px;font:bold 7pt tahoma" value="<" onClick="PrevMonth();"><\/td>';
    output += '<td align=center>';
    output += '<SELECT NAME="Month" ID="Month" onChange="changeMonth();" class="calendar">';

    for (month=0; month<12; month++) {
        if (month == gMonth) output += '<OPTION VALUE="' + month + '" SELECTED>' + names[month] + '<\/OPTION>';
        else                output += '<OPTION VALUE="' + month + '">'          + names[month] + '<\/OPTION>';
    }

    output += '<\/SELECT><SELECT NAME="Year" ID="Year" onChange="changeYear();" class="calendar">';

    for (year=start_year; year<end_year; year++) {
        if (year == gYear) output += '<OPTION VALUE="' + year + '" SELECTED>' + year + '<\/OPTION>';
        else              output += '<OPTION VALUE="' + year + '">'          + year + '<\/OPTION>';
    }

    output += '<\/SELECT><\/TD>';

    output += '<TD ALIGN=RIGHT><input type=button name=btnnext class="calendarbutton" style="width:15px;font:bold 7pt tahoma" value=">" onClick="NextMonth();"><\/td>';
    output += '<\/TR><TR><TD ALIGN=CENTER COLSPAN=3>';

//    firstDay = new Date(Year,Month,Day);
//    tdt=new Date();
    
    startDay = firstDay.getDay();
    currdate = CurrDate;  //new Date();
    currday = currdate.getDate();
    currmon = currdate.getMonth();
    curryear = currdate.getFullYear();
//    curryear = (curyr < 1000) ? curyr + 1900 : curyr;
	rows=0
    if (((Year % 4 == 0) && (Year % 100 != 0)) || (Year % 400 == 0))
         days[1] = 29; 
    else
         days[1] = 28;

    output += '<TABLE CELLSPACING=1 CELLPADDING=0 bgcolor=#cccccc><TR>';

    for (i=0; i<7; i++)
        output += '<TD WIDTH=25 height=15 ALIGN=CENTER VALIGN=MIDDLE class="calendarhead"><b>' + dow[i] +'<\/b><\/TD>';

    output += '<\/TR><TR ALIGN=CENTER VALIGN=MIDDLE>';

    var column = 0;
    var lastMonth = Month - 1;
    if (lastMonth == -1) lastMonth = 11;

    for (i=0; i<startDay; i++, column++)
        output += '<TD WIDTH=25 HEIGHT=16 class="disableddate">' + (days[lastMonth]-startDay+i+1) + '<\/TD>';
    for (i=1; i<=days[gMonth]; i++, column++) {
	if (i==currday && gMonth==currmon && gYear==curryear) {
     if (setdate) { bgColor='#c4ddec'; setdate=false; } else { bgColor='#ff0000' }
		strDay='<TD WIDTH=25 HEIGHT=16" class="calendarcell" style="background-color:'+bgColor+';cursor:default" onMouseOver="this.style.backgroundColor=\''+bgColor+'\'" onMouseOut="this.style.backgroundColor=\''+bgColor+'\'" onClick="changeDay(' + i + ')"><b>' + i + '</b><\/TD>';
	} else {
		strDay='<TD WIDTH=25 HEIGHT=16 class="calendarcell" style="cursor:default" onMouseOver="this.style.backgroundColor=\'#c4ddec\'" onMouseOut="this.style.backgroundColor=\'#ffffff\'" onClick="changeDay(' + i + ')">' + i + '<\/TD>';
	}
		output += strDay;
        if (column == 6) {
            output += '<\/TR>';
            column = -1;
        }
		if (i<days[gMonth] && column ==6) { output+='<TR ALIGN=CENTER VALIGN=MIDDLE>' }
    }
    if (column > 0) {
        for (i=1; column<7; i++, column++){
            output +=  '<TD WIDTH=25 HEIGHT=16 class="disableddate">' + i + '<\/TD>';
		}
		output+='<\/TR>'
    }


	if (showTime=='TRUE' || showTime=='') {
		//show time
		output+='<TR><TD COLSPAN=7>'
		output+=' <table cellpadding=0 cellspacing=0 border=0 bgColor="#ffffff" width=100%>'
		output+='	<tr><td></td><td align=center style="font:bold 8pt verdana">HH</td><td align=center style="font:bold 8pt verdana">MM</td><td></td></tr>'
		output+='<tr><td class="formlabel" align=center>Time</td><td><SELECT NAME=hour id=hour size=1 class="plaintext">'
		for (i=1;i<13;i++) {
			if (i<10) i='0'+i;
			if (i==hrs) {
				output+='<option value="' +  i + '" selected>' + i + '<\/option>'
			} else {
				output+='<option value="' +  i + '">' + i + '<\/option>'
			}
		}
		output+='</select></td><td>'  
		output+='<SELECT NAME=min ID=min size=1 class="plaintext">'
		for (i=0;i<60;i++) {
			if (i<10) i='0'+i;
			if (i==mins) {
				output+='<option value="' +  i + '" selected>' + i + '<\/option>'
			} else {
				output+='<option value="' +  i + '">' + i + '<\/option>'
			}
		}
		output+='</select></td>'  
		output+='<td><SELECT NAME=ampm ID=ampm size=1 class="plaintext">'
		if (ampm=='PM') {
			output+='<option value="PM" selected>PM<\/option>'
			output+='<option value="AM">AM<\/option>'
		} else {
			output+='<option value="AM" selected>AM<\/option>'
			output+='<option value="PM">PM<\/option>'
		}
		output+='</select></td></tr>'  
		output+='</table></td></tr>'
	}
	output+='<tr><td colspan=6 class="plaintext boldtext" align=left bgColor="#cccccc">'  
	output+='<a href="javascript:SetToday();">Today</a>'
	output+='</td><td align=right><img src=\''+imgPath+'images/close.gif\' onclick=\'hideCalendar()\'></td></tr>'
	output+='<\/TABLE>'

    output += '<\/TD><\/TR><\/TABLE>';

	document.getElementById("Calendar").innerHTML=output;
}

function changeDay(day) {
	if (day!='') {
     if (showTime=='TRUE') {
            if (dateFormat=="dd-MMM-yyyy") {
    		    selObj.value = '' + padout(day) + '-' + shortnames[gMonth] + '-' + gYear + ' ' + document.getElementById('hour').value + ':' + document.getElementById('min').value + ' ' + document.getElementById('ampm').value;
    		} else {
        	    selObj.value = gYear + '-' + padout(gMonth+1) + '-' + padout(day) + ' ' + document.getElementById('hour').value + ':' + document.getElementById('min').value + ' ' + document.getElementById('ampm').value;
    		}
	    } else {
            if (dateFormat=="dd-MMM-yyyy") {
    		    selObj.value = '' + padout(day) + '-' + shortnames[gMonth] + '-' + gYear;
    		} else {
        	    selObj.value = gYear + '-' + padout(gMonth+1) + '-' + padout(day);
    		}
	    }
	} else {
		selObj.value = '';
	}
 eval(sScript);
	document.getElementById('Calendar').style.display='none';
}
 
function padout(number) { return (number < 10) ? '0' + number : number; }
 
function NextMonth() {
	gMonth=gMonth+1;
	if (gMonth>11) {
		gMonth=0;
		gYear=gYear + 1;
	}
	Calendar(gMonth,gYear);
}	

function PrevMonth() {
	gMonth=gMonth-1;
	if (gMonth<0) {
		gMonth=11;
		gYear=gYear - 1;
	}
	Calendar(gMonth,gYear);
}	

function changeMonth() {
    gMonth = document.getElementById('Month').options[document.getElementById('Month').selectedIndex].value;
	Calendar(gMonth,gYear);
}

function changeYear() {
    gYear = document.getElementById('Year').options[document.getElementById('Year').selectedIndex].value;
	Calendar(gMonth,gYear)
}

function makeArray0() {
    for (i = 0; i<makeArray0.arguments.length; i++)
        this[i] = makeArray0.arguments[i];
}

function InitializeDate() {
	var today = new Date();
	day   = today.getDate();
	month = today.getMonth();
	year  = y2k(today.getFullYear());
	hour  = today.getHours();
	minute= today.getMinutes();
	second= today.getSeconds();
	notime = false;
	if (hour>12) {
		ampm='PM';
	} else {
		ampm='AM';
	}
}

function SetToday() {
	InitializeDate();
    if (dateValue=='') {
	    gMonth=month;
	    gYear=year;
    }
	Calendar(month,year)
}	

function showCalendar(oObj,dtValue,shTime,tzoffset,strScript,startYear,endYear) {
    if (document.getElementById('Calendar').style.display == 'none') {
	    selObj=oObj;
	    dateValue=dtValue;
	    showTime=shTime;
	    offset=tzoffset;
	    sScript=strScript;
        if (startYear!='') { start_year=startYear; }
	    if (endYear!='') { end_year=endYear;}
    	if (ie) {
    	    scrHgt=document.body.clientHeight;
    	} else {
    	    scrHgt=window.innerHeight;
    	}

	    if (shTime!='FALSE') {
	        calHgt=186;
	    } else {
		    calHgt=153;
	    }

	    toppos=oObj.offsetTop;
	    height=oObj.offsetHeight;

        if ((toppos+height+calHgt+10)>scrHgt) {
	        newtop=(toppos-calHgt)+10;
		    if (newtop<0) {
			    newtop=toppos+height;
		    }
        } else {
		    newtop=toppos+height;
	    }

	    leftpos=oObj.offsetLeft;
        SetToday()
        document.getElementById('Calendar').style.top = newtop +'px';
        document.getElementById('Calendar').style.left = leftpos +'px';
        document.getElementById('Calendar').style.display = '';
	} else {
		document.getElementById('Calendar').style.display = 'none';
	}
}
var names     = new makeArray0('January','February','March','April','May','June','July','August','September','October','November','December');
var shortnames     = new makeArray0('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var days      = new makeArray0(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var dow       = new makeArray0('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

function y2k(number)    { return (number < 1000) ? number + 1900 : number; }

function hideCalendar() {
 document.getElementById('Calendar').style.display='none';
}

//***************************************************************************
//Code to check if DST is in effect
function makeArray()    {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}

var daysofmonth   = new makeArray( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysofmonthLY = new makeArray( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}

function NthDay(nth,weekday,month,year) {
    if (nth > 0) return (nth-1)*7 + 1 + (7 + weekday -
DayOfWeek((nth-1)*7 + 1,month,year))%7;
    if (LeapYear(year)) var days = daysofmonthLY[month];
    else                var days = daysofmonth[month];
    return days - (DayOfWeek(days,month,year) - weekday + 7)%7;
}
function DayOfWeek(day,month,year) {
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) +
Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d+1;
}

var today = new Date();
var year = y2k(today.getYear());

var DSTstart = new Date(year,4-1,NthDay(1,1,4,year),2,0,0);
var DSTend   = new Date(year,10-1,NthDay(-1,1,10,year),2,0,0);

function getMS(date) {
    return Date.UTC(y2k(date.getYear()),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds())
}

function isDST() {
	var todayMS = getMS(today);
	var DSTstartMS = getMS(DSTstart);
	var DSTendMS = getMS(DSTend);
	if (todayMS > DSTstartMS && todayMS < DSTendMS)
	    return true;
	    //document.write('Daylight Saving in effect');
	else
		return false;
	    //document.write('Daylght Saving NOT in effect');
}
//End of code to check if DST is in effect
//***************************************************************************

