/* 
Calendar Script by Ray Perea

This script is copyright and may not be used without written consent from the author.

*/


var DISP_YEAR = 0;		// Year to display in calendar
var DISP_MONTH = 0;		// Month to display in calendar
var DISP_DAY = 0;		// Day to display in calendar
var DISP_HOUR = 0;		// Hour to display in calendar
var DISP_MIN = 0;		// Minute to display in calendar
var DISP_AP = AM;		// AM or PM to display in calendar
var SEL_YEAR = 0;		// Year to display as selected in calendar
var SEL_MONTH = 0;		// Month to display as selected in calendar
var SEL_DAY = 0;		// Day to display as selected in calendar
var NOW_YEAR = 0;		// Year to show as now in calendar
var NOW_MONTH = 0;		// Month to show as now in calendar
var NOW_DAY = 0;		// Day to show as now in calendar
var SHOW_OBJ = '';		// The show object text input field
var INPUT_OBJ = ''; 	// The input object input field
var CALLBACK = '';		// The callback function to execute when the calendar is set
var CALOVER = 0;		// Variable that detects when the mouse is over the calendar.
var SHOW_YEAR = 0; 		// Variable that keeps the shown year.
var SHOW_TIME = 0;		// Variable that tells us wether to show the time along with the date
var SHOW_SEL = '';		// Variable that tells us which selector is currently displayed on the left side

function calendarTimeSelect(showOBJ, inputOBJ, showTime, callback, nclear) { // This function is called when a calendar is to be displayed
	calendarStartOver();
	
	// Set the initial times
	if (!nclear) { calendarClearTimes(); calendarSetInitialTimes(inputOBJ.value); }
	
	if (callback) { CALLBACK = callback; }
	if (showTime) { SHOW_TIME = showTime - 0; } // 0 for no time, 1 for show time, 2 for no time and no day, just month, year, 3 for just time, no calendar.
	if ((!showOBJ)||(!inputOBJ)) { 
		showOBJ = SHOW_OBJ;
		inputOBJ = INPUT_OBJ;
	}
	SHOW_OBJ = showOBJ;
	INPUT_OBJ = inputOBJ;
	
	var calDIV = document.getElementById('calendar');
	calDIV.innerHTML = '';

	if (SHOW_TIME < 2)  {
		var start_day = calendarGetStartDay(DISP_YEAR, DISP_MONTH);
		var days_in_month = calendarGetDaysInMonth(DISP_YEAR, DISP_MONTH);
	}
	var finalHTML = "<table class=\"calendarOutterTable\" onMouseOver=\"calendarStartOver()\" onMouseOut=\"calendarStartClose()\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><table cellspacing=\"0\" cellpadding=\"0\"><tr><td class=\"calendarGeneralSelectorHidden\" id=\"calendarGeneralSelector\">&nbsp;</td><td class=\"calendarCalendarTable\"><table class=\"calendarInnerTable\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
	if (SHOW_TIME < 3) { 
		finalHTML += "<tr class=\"calendarTopRow\"><td class=\"calendarMonthCell\" onClick=\"calendarShowMonthSelector();\">\n";
		finalHTML += "<img src=\"skins/"+SKIN+"/icons/arrow_left.png\"> "+MONTH_NAMES[DISP_MONTH-1]+"</td><td class=\"calendarYearCell\" onclick=\"calendarDisplayYears();\">"+DISP_YEAR+" <img src=\"skins/"+SKIN+"/icons/arrow_right.png\"></td></tr>";
	}
	finalHTML += "<tr><td colspan=\"2\">\n";
	if (SHOW_TIME < 2) { 
		finalHTML += "<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr>";
		for(i=0;i<=6;i++){
			finalHTML += "<th abbr=\"" + DAY_NAMES[i].substr(0,1) + "\">" + DAY_NAMES[i].substr(0,1) + "</th>";
		}
		finalHTML += "</tr><tr>\n";
	} 
	
	
	if (SHOW_TIME < 2) { 
		// Format the blank calendar cells
		if (start_day > 0) { 
			for (i=1;i<=start_day;i++) { 
				finalHTML += "<td class=\"calendarBlankCell\">&nbsp;</td>";
			}
		}
	
		// Format all the non blank calendar cells
		for(x=1;x<=days_in_month;x++){
			if(((x-0)+(start_day-0)-1)%7==0){
				finalHTML += "</tr>\n<tr>";
			}
			// Format today's date
			var classname = '';
			if ((NOW_YEAR == DISP_YEAR)&&(NOW_MONTH == DISP_MONTH)&&(NOW_DAY == x)) { classname = 'calendarDayCellNow'; } else { classname = 'calendarDayCell'; }
			// Format the date if it is selected
			if ((DISP_YEAR == SEL_YEAR)&&(DISP_MONTH == SEL_MONTH)&&(SEL_DAY == x)) { classname = 'calendarDayCellSelected'; }
			finalHTML += "<td class=\""+classname+"\" onMouseOver=\"this.className='calendarDayCellOver';\" onMouseOut=\"this.className='"+classname+"';\" onClick=\"calendarSetDateTime("+x+");\">"+x+"</td>";
		}
		while((((days_in_month-0)+(start_day-0))%7)!=0){
			finalHTML += "<td class=\"calendarBlankCell\">&nbsp;</td>";
			days_in_month++;
		}
		finalHTML += "</tr></table></td></tr>";
		if (SHOW_TIME) { 
			finalHTML += "<tr><td colspan=\"2\" class=\"calendarTimeRow\" id=\"calendarTimeRow\"><span class=\"calendarTimeSpan\" onClick=\"calendarDisplayHour();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+DISP_HOUR+"</span>";
			finalHTML += "&nbsp;&nbsp;:&nbsp;&nbsp;<span class=\"calendarTimeSpan\" onClick=\"calendarDisplayMinute();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+calendarFormatMinute(DISP_MIN-0)+"</span>\n";
			finalHTML += "&nbsp;&nbsp;<span class=\"calendarTimeSpan\" onClick=\"calendarDisplayAP();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+DISP_AP+"</span></td></tr>";
		}
	} else {
		finalHTML += "&nbsp;</td></tr>";
	}
	
	if (SHOW_TIME == 3) { 
		finalHTML += "<tr><td colspan=\"2\" class=\"calendarTimeRow\" id=\"calendarTimeRow\"><span class=\"calendarTimeSpan\" onClick=\"calendarDisplayHour();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+DISP_HOUR+"</span>";
		finalHTML += "&nbsp;&nbsp;:&nbsp;&nbsp;<span class=\"calendarTimeSpan\" onClick=\"calendarDisplayMinute();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+calendarFormatMinute(DISP_MIN-0)+"</span>\n";
		finalHTML += "&nbsp;&nbsp;<span class=\"calendarTimeSpan\" onClick=\"calendarDisplayAP();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+DISP_AP+"</span></td></tr>";
	}
	
	finalHTML += "<tr><td colspan=\"2\" class=\"calendarButtonRow\"><span class=\"calendarSetButton\" onMouseOver=\"this.className = 'calendarSetButtonOver';\" onMouseOut=\"this.className = 'calendarSetButton';\" onClick=\"calendarSetDateTime();\">"+SET+"</span> ";
	if (SHOW_TIME < 3) { finalHTML += "<span class=\"calendarSetButton\" onMouseOver=\"this.className = 'calendarSetButtonOver';\" onMouseOut=\"this.className = 'calendarSetButton';\" onClick=\"calendarSetToday();calendarSetDateTime();\">"+TODAY+"</span> "; }
	finalHTML += "<span class=\"calendarSetButton\" onMouseOver=\"this.className = 'calendarSetButtonOver';\" onMouseOut=\"this.className = 'calendarSetButton';\" onClick=\"calendarClearCalendar();\">"+CLOSE+"</span>\n";
	if (SHOW_TIME < 3) { finalHTML += "</td></tr></table></td><td class=\"calendarYearCellHidden\" id=\"calendarYearSelector\"><table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarYearSelector\"><tr><td class=\"calendarUpArrow\" onMouseOver=\"this.className='calendarUpArrowOver';\" onMouseOut=\"this.className='calendarUpArrow';\" onClick=\"calendarGetUpYears();\"><div>&nbsp;</div></td></tr>\n"; 
		for (i=0;i<=9;i++) {
			year = (DISP_YEAR-0) + i;
			if (!i) { classname = 'calendarSelectorCellSelected'; } else { classname = 'calendarSelectorCell'; }
			finalHTML += "<tr><td class=\""+classname+"\" onMouseOver=\"this.className='calendarSelectorCellOver';\" onMouseOut=\"this.className='"+classname+"';\" onClick=\"calendarSetYear("+year+");\">"+year+"</td></tr>\n";
		}
		finalHTML += "<tr><td class=\"calendarDownArrow\" onMouseOver=\"this.className='calendarDownArrowOver';\" onMouseOut=\"this.className='calendarDownArrow';\" onClick=\"calendarGetDownYears();\"><div>&nbsp;</div></td></tr></table>\n";
		finalHTML += "</td></tr></table></td></tr></table>";
	} else { finalHTML += "</td></tr></table></td></tr></table></td></tr></table>"; }
	calDIV.innerHTML = finalHTML;
	calendarSetCalPos(calDIV, showOBJ);
	calDIV.style.display = '';
	
}
function calendarFormatMinute(minute) {
	minute -= 0;
	if (minute < 10) { return "0"+minute; } else { return minute; }
}
function calendarSetToday() {
	DISP_YEAR = NOW_YEAR;
	DISP_MONTH = NOW_MONTH;
	DISP_DAY = NOW_DAY;
}
function calendarClearTimes() {
	DISP_YEAR = 0;		
	DISP_MONTH = 0;		
	DISP_DAY = 0;		
	DISP_HOUR = 0;		
	DISP_MIN = 0;		
	DISP_AP = AM;		
	SEL_YEAR = 0;		
	SEL_MONTH = 0;		
	SEL_DAY = 0;		
	NOW_YEAR = 0;		
	NOW_MONTH = 0;		
	NOW_DAY = 0;
	SHOW_OBJ = '';
	INPUT_OBJ = '';
	CALLBACK = '';
	CALOVER = 0;
	SHOW_YEAR = 0;
	SHOW_TIME = 0;
	SHOW_SEL = '';
}
function calendarSetInitialTimes(val) {
	if (!val) { 
		// Set the values from now
		var date = new Date();
		DISP_YEAR = date.getFullYear();
		DISP_MONTH = (date.getMonth()-0) + 1;
		DISP_DAY = date.getDate();
		DISP_HOUR = date.getHours();
		if (DISP_HOUR < 12) { DISP_AP = AM; } else { DISP_AP = PM; }
		if (DISP_HOUR == 0) { DISP_HOUR = 12; }
		if (DISP_HOUR > 12) { DISP_HOUR -= 12; }
		DISP_MIN = date.getMinutes();
		SEL_YEAR = DISP_YEAR;
		SEL_MONTH = DISP_MONTH;
		SEL_DAY = DISP_DAY;
		NOW_YEAR = DISP_YEAR;
		NOW_MONTH = DISP_MONTH;
		NOW_DAY = DISP_DAY;
	} else {
		// Set the values from the value given
		var dt = val.split(" ");
		if (dt[0].match(':')) { dt[1] = dt[0]; dt[0] = ''; }
		var d = dt[0].split("-");
		if (dt[1]) { var t = dt[1].split(":"); } else { t = new Array('00', '00', '00'); }
		DISP_YEAR = d[0] - 0;
		DISP_MONTH = d[1] - 0;
		DISP_DAY = d[2] - 0;
		DISP_HOUR = t[0] - 0;
		if (DISP_HOUR < 12) { DISP_AP = AM; } else { DISP_AP = PM; }
		if (DISP_HOUR == 0) { DISP_HOUR = 12; }
		if (DISP_HOUR > 12) { DISP_HOUR -= 12; }
		DISP_MIN = t[1] - 0;
		SEL_YEAR = DISP_YEAR;
		SEL_MONTH = DISP_MONTH;
		SEL_DAY = DISP_DAY;
		var date = new Date();
		NOW_YEAR = date.getFullYear();
		NOW_MONTH = (date.getMonth()-0) + 1;
		NOW_DAY = date.getDate()-0;
	}
}
function calendarGetStartDay(year, month) {
	return new Date(year, (month-1), 1).getDay();
}
function calendarGetDaysInMonth(year, month) {
	return 32 - new Date(year, (month-1), 32).getDate();
}
function calendarSetCalPos(div, parent) { // Sets the calendar position to just under the parent object
	parentPOS = calendarFindPos(parent);
	div.style.left = parentPOS[0] + 'px';
	var top = parentPOS[1] + parent.offsetHeight;
	div.style.top = top + 'px';
}
function calendarFindPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}	
function calendarSetMonth(month) { 
	DISP_MONTH = month - 0;
	SHOW_SEL = '';
	calendarTimeSelect('', '', '', '', 1);
}
function calendarSetDateTime(day) {
	if (!day) { day = DISP_DAY; }
	day -= 0;
	DISP_MONTH -= 0;
	DISP_HOUR -= 0;
	DISP_MIN -= 0;
	var display = ''; var input = '';
	if (SHOW_TIME < 2) { display = MONTH_NAMES[(DISP_MONTH-0)+11]+" "+day+calendarGetSuffix(day)+", "+DISP_YEAR; }
	else if (SHOW_TIME == 2) { display = MONTH_NAMES[(DISP_MONTH-0)+11]+" "+DISP_YEAR; }
	if (SHOW_TIME == 1) { display += " at "+DISP_HOUR+":"+calendarFormatMinute(DISP_MIN)+" "+DISP_AP; }
	if (SHOW_TIME == 3) { display = DISP_HOUR+":"+calendarFormatMinute(DISP_MIN)+" "+DISP_AP; }
	var hour = DISP_HOUR-0;
	if (DISP_AP == PM) { if (hour < 12) { hour += 12; } }
	if (DISP_AP == AM) { if (hour == 12) { hour = 0; } }
	if (SHOW_TIME < 2) { input = DISP_YEAR+'-'+calendarFormatMinute(DISP_MONTH)+'-'+calendarFormatMinute(day); }
	else if (SHOW_TIME == 2) { input = DISP_YEAR+'-'+calendarFormatMinute(DISP_MONTH); }
	if (SHOW_TIME == 1) { input += ' '+calendarFormatMinute(hour)+':'+calendarFormatMinute(DISP_MIN)+':00'; }
	if (SHOW_TIME == 3) { input = calendarFormatMinute(hour)+':'+calendarFormatMinute(DISP_MIN)+':00'; }
	SHOW_OBJ.value = display;
	INPUT_OBJ.value = input;
	var calDIV = document.getElementById('calendar');
	calDIV.innerHTML = '';
	calDIV.style.display = 'none';
	if (CALLBACK) { eval(CALLBACK); }
}
function calendarGetSuffix(day) {
	day = day - 0;
	if ((day == 1)||(day == 21)||(day == 31)) { return 'st'; }
	if ((day == 2)||(day == 22)) { return 'nd'; }
	if ((day == 3)||(day == 23)) { return 'rd'; }
	return 'th';
}
function calendarSetMinute(minute) { 
	DISP_MIN = minute - 0;
	SHOW_SEL = '';
	calendarTimeSelect('', '', '', '', 1);
}
function calendarSetHour(hour) { 
	DISP_HOUR = hour - 0;
	SHOW_SEL = '';
	calendarTimeSelect('', '', '', '', 1);
}
function calendarSetAP(ap) { 
	DISP_AP = ap;
	SHOW_SEL = '';
	calendarTimeSelect('', '', '', '', 1);
}
function calendarStartOver() {
	if (CALOVER) { clearTimeout(CALOVER); }
	CALOVER = 0;
}
function calendarStartClose() {
	CALOVER = setTimeout('calendarClearCalendar()', 1000);
}
function calendarClearCalendar() {
	var calDIV = document.getElementById('calendar');
	calDIV.innerHTML = '';
	calDIV.style.display = 'none';
}
function calendarDisplayYears() {
	
	var calyeartd = document.getElementById('calendarYearSelector');
	if (calyeartd.className == 'calendarYearCellShown') { calyeartd.className = 'calendarYearCellHidden'; }
	else { calyeartd.className = 'calendarYearCellShown'; }
}
function calendarGetUpYears() {
	if (!SHOW_YEAR) { SHOW_YEAR = DISP_YEAR; }
	SHOW_YEAR -= 10;
	var finalHTML = '';
	finalHTML += "<table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarYearSelector\"><tr><td class=\"calendarUpArrow\" onMouseOver=\"this.className='calendarUpArrowOver';\" onMouseOut=\"this.className='calendarUpArrow';\" onClick=\"calendarGetUpYears();\"><div>&nbsp;</div></td></tr>\n";
	for (i=0;i<=9;i++) {
		year = (SHOW_YEAR-0) + i;
		if (year == DISP_YEAR) { classname = 'calendarSelectorCellSelected'; } else { classname = 'calendarSelectorCell'; }
		finalHTML += "<tr><td class=\""+classname+"\" onMouseOver=\"this.className='calendarSelectorCellOver';\" onMouseOut=\"this.className='"+classname+"';\" onClick=\"calendarSetYear("+year+");\">"+year+"</td></tr>\n";
	}
	finalHTML += "<tr><td class=\"calendarDownArrow\" onMouseOver=\"this.className='calendarDownArrowOver';\" onMouseOut=\"this.className='calendarDownArrow';\" onClick=\"calendarGetDownYears();\"><div>&nbsp;</div></td></tr></table>\n";
	document.getElementById('calendarYearSelector').innerHTML = finalHTML;
}
function calendarGetDownYears() {
	if (!SHOW_YEAR) { SHOW_YEAR = DISP_YEAR; }
	SHOW_YEAR -= 0;
	SHOW_YEAR += 10;
	var finalHTML = '';
	finalHTML += "<table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarYearSelector\"><tr><td class=\"calendarUpArrow\" onMouseOver=\"this.className='calendarUpArrowOver';\" onMouseOut=\"this.className='calendarUpArrow';\" onClick=\"calendarGetUpYears();\"><div>&nbsp;</div></td></tr>\n";
	for (i=0;i<=9;i++) {
		year = (SHOW_YEAR-0) + i;
		if (year == DISP_YEAR) { classname = 'calendarSelectorCellSelected'; } else { classname = 'calendarSelectorCell'; }
		finalHTML += "<tr><td class=\""+classname+"\" onMouseOver=\"this.className='calendarSelectorCellOver';\" onMouseOut=\"this.className='"+classname+"';\" onClick=\"calendarSetYear("+year+");\">"+year+"</td></tr>\n";
	}
	finalHTML += "<tr><td class=\"calendarDownArrow\" onMouseOver=\"this.className='calendarDownArrowOver';\" onMouseOut=\"this.className='calendarDownArrow';\" onClick=\"calendarGetDownYears();\"><div>&nbsp;</div></td></tr></table>\n";
	document.getElementById('calendarYearSelector').innerHTML = finalHTML;
}
function calendarSetYear(year) { 
	DISP_YEAR = year;
	SHOW_YEAR = 0;
	calendarTimeSelect('', '', '', '', 1);
}
function calendarShowMonthSelector() {
	if ((SHOW_SEL)&&(SHOW_SEL != 'MONTH')) { calendarTimeSelect('', '', '', '', 1); }
	var calmonthtd = document.getElementById('calendarGeneralSelector');
	if ((calmonthtd.className == 'calendarGeneralSelectorShown')&&(SHOW_SEL == 'MONTH')) { 
		calmonthtd.innerHTML = '&nbsp;';
		var calDIV = document.getElementById('calendar');
		calmonthtd.className = 'calendarGeneralSelectorHidden';
		calendarSetCalPos(calDIV, SHOW_OBJ);
		SHOW_SEL = '';
		calendarSetTimeContent();
	} else { 
		var finalHTML = "<table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarMonthSelector\">\n";
		for (i=1;i<=12;i++) {
			if (i == DISP_MONTH) { classname = 'calendarSelectorCellSelected'; } else { classname = 'calendarSelectorCell'; }
			finalHTML += "<tr><td class=\""+classname+"\" onMouseOver=\"this.className='calendarSelectorCellOver';\" onMouseOut=\"this.className='"+classname+"';\" onClick=\"calendarSetMonth("+i+");\">"+MONTH_NAMES[i+11]+"</td></tr>\n";
		}
		finalHTML += "</table>";
		calmonthtd.innerHTML = finalHTML;
		calmonthtd.className = 'calendarGeneralSelectorShown';
		var calDIV = document.getElementById('calendar');
		var leftSet = parseInt(calDIV.style.left) - parseInt(calmonthtd.offsetWidth);
		calDIV.style.left = leftSet + 'px';
		SHOW_SEL = 'MONTH';
		calendarSetTimeContent();
	}
}
function calendarDisplayHour() {
	if ((SHOW_SEL)&&(SHOW_SEL != 'HOUR')) { calendarTimeSelect('', '', '', '', 1); }
	var calselect = document.getElementById('calendarGeneralSelector');
	if ((calselect.className == 'calendarGeneralSelectorShown') &&(SHOW_SEL == 'HOUR')) { 
		calselect.innerHTML = '&nbsp;';
		var calDIV = document.getElementById('calendar');
		calselect.className = 'calendarGeneralSelectorHidden';
		calendarSetCalPos(calDIV, SHOW_OBJ);
		SHOW_SEL = '';
		calendarSetTimeContent();
	} else {
		var finalHTML = "<table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarHourSelector\">\n";
		for (i=1;i<=12;i++) {
			if (i == DISP_HOUR) { classname = 'calendarSelectorCellSelected'; } else { classname = 'calendarSelectorCell'; }
			finalHTML += "<tr><td class=\""+classname+"\" onMouseOver=\"this.className='calendarSelectorCellOver';\" onMouseOut=\"this.className='"+classname+"';\" onClick=\"calendarSetHour("+i+");\">"+i+"</td></tr>\n";
		}
		finalHTML += "</table>";
		calselect.innerHTML = finalHTML;
		calselect.className = 'calendarGeneralSelectorShown';
		var calDIV = document.getElementById('calendar');
		var leftSet = parseInt(calDIV.style.left) - parseInt(calselect.offsetWidth);
		calDIV.style.left = leftSet + 'px';
		SHOW_SEL = 'HOUR';
		calendarSetTimeContent();
	}
}
function calendarDisplayMinute(start) {
	if ((SHOW_SEL)&&(SHOW_SEL != 'MINUTE')) { calendarTimeSelect('', '', '', '', 1); }
	if ((start)||(start == 0)) { calendarTimeSelect('', '', '', '', 1); }
	var calselect = document.getElementById('calendarGeneralSelector');
	if ((calselect.className == 'calendarGeneralSelectorShown')&&(SHOW_SEL == 'MINUTE')&&(!start)&&(start != 0)) { 
		calselect.innerHTML = '&nbsp;';
		var calDIV = document.getElementById('calendar');
		calselect.className = 'calendarGeneralSelectorHidden';
		calendarSetCalPos(calDIV, SHOW_OBJ);
		SHOW_SEL = '';
		calendarSetTimeContent();
	} else {
		if ((!start)&&(start != 0)) { start = DISP_MIN - 5; }
		if (start < 0) { start = 0; }
		while ((start + 9) > 59) { start--; }
		var end = start + 9;
		
		var pstart = start - 10;
		var nstart = start + 10;
		
		var upArrow = '';
		if (start > 0) { upArrow += "<tr><td class=\"calendarUpArrow\" onMouseOver=\"this.className='calendarUpArrowOver';\" onMouseOut=\"this.className='calendarUpArrow';\" onClick=\"calendarDisplayMinute("+pstart+");\"><div>&nbsp;</div></td></tr>"; }
		else { end++; }
		var dnArrow = '';
		if (end < 59) { dnArrow += "<tr><td class=\"calendarDownArrow\" onMouseOver=\"this.className='calendarDownArrowOver';\" onMouseOut=\"this.className='calendarDownArrow';\" onClick=\"calendarDisplayMinute("+nstart+");\"><div>&nbsp;</div></td></tr>"; }
		else { start--; }
		
		var finalHTML = "<table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarMinuteSelector\">"+upArrow+"\n";
		for (i=start;i<=end;i++) {
			if (i == DISP_MIN) { classname = 'calendarSelectorCellSelected'; } else { classname = 'calendarSelectorCell'; }
			finalHTML += "<tr><td class=\""+classname+"\" onMouseOver=\"this.className='calendarSelectorCellOver';\" onMouseOut=\"this.className='"+classname+"';\" onClick=\"calendarSetMinute("+i+");\">"+calendarFormatMinute(i)+"</td></tr>\n";
		}
		finalHTML += dnArrow+"</table>";
		calselect.innerHTML = finalHTML;
		calselect.className = 'calendarGeneralSelectorShown';
		var calDIV = document.getElementById('calendar');
		var leftSet = parseInt(calDIV.style.left) - parseInt(calselect.offsetWidth);
		calDIV.style.left = leftSet + 'px';
		SHOW_SEL = 'MINUTE';
		calendarSetTimeContent();
	}
}
function calendarDisplayAP() {
	if ((SHOW_SEL)&&(SHOW_SEL != 'AP')) { calendarTimeSelect('', '', '', '', 1); }
	var calselect = document.getElementById('calendarGeneralSelector');
	if ((calselect.className == 'calendarGeneralSelectorShown') &&(SHOW_SEL == 'AP')) { 
		calselect.innerHTML = '&nbsp;';
		var calDIV = document.getElementById('calendar');
		calselect.className = 'calendarGeneralSelectorHidden';
		calendarSetCalPos(calDIV, SHOW_OBJ);
		SHOW_SEL = '';
		calendarSetTimeContent();
	} else {
		var finalHTML = "<table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarAPSelector\">\n";
		var asel = 'calendarSelectorCell';
		var psel = 'calendarSelectorCell';
		if (DISP_AP == AM) { asel = 'calendarSelectorCellSelected'; }
		if (DISP_AP == PM) { psel = 'calendarSelectorCellSelected'; }
		for (i=1;i<=10;i++) { finalHTML += "<tr><td class=\"calendarSelectorBlankCell\">&nbsp;</td></tr>\n"; }
		finalHTML += "<tr><td class=\""+asel+"\" onMouseOver=\"this.className='calendarSelectorCellOver';\" onMouseOut=\"this.className='"+asel+"';\" onClick=\"calendarSetAP('"+AM+"');\">"+AM+"</td></tr>\n";
		finalHTML += "<tr><td class=\""+psel+"\" onMouseOver=\"this.className='calendarSelectorCellOver';\" onMouseOut=\"this.className='"+psel+"';\" onClick=\"calendarSetAP('"+PM+"');\">"+PM+"</td></tr>\n";
		finalHTML += "</table>";
		calselect.innerHTML = finalHTML;
		calselect.className = 'calendarGeneralSelectorShown';
		var calDIV = document.getElementById('calendar');
		var leftSet = parseInt(calDIV.style.left) - parseInt(calselect.offsetWidth);
		calDIV.style.left = leftSet + 'px';
		SHOW_SEL = 'AP';
		calendarSetTimeContent();
	}
}
function calendarSetTimeContent() {
	caltime = document.getElementById('calendarTimeRow');
	var finalHTML = "";
	classname = 'calendarTimeRowSelector';
	if (SHOW_SEL == 'HOUR') { 
		finalHTML += "<span onClick=\"calendarDisplayHour();\" class=\"calendarTimeSpan\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\"><img src=\"skins/"+SKIN+"/icons/arrow_left.png\"> "+HOUR+"</span>";
	} else if (SHOW_SEL == 'MINUTE') { 
		finalHTML += "<span onClick=\"calendarDisplayMinute();\" class=\"calendarTimeSpan\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\"><img src=\"skins/"+SKIN+"/icons/arrow_left.png\"> "+MINUTE+"</span>";
	} else if (SHOW_SEL == 'AP') { 
		finalHTML += "<span onClick=\"calendarDisplayAP();\" class=\"calendarTimeSpan\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\"><img src=\"skins/"+SKIN+"/icons/arrow_left.png\"> "+AMORPM+"</span>";
	} else {
		classname = 'calendarTimeRow';
		finalHTML = "<span class=\"calendarTimeSpan\" onClick=\"calendarDisplayHour();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+DISP_HOUR+"</span>";
		finalHTML += "&nbsp;&nbsp;:&nbsp;&nbsp;<span class=\"calendarTimeSpan\" onClick=\"calendarDisplayMinute();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+calendarFormatMinute(DISP_MIN-0)+"</span>\n";
		finalHTML += "&nbsp;&nbsp;<span class=\"calendarTimeSpan\" onClick=\"calendarDisplayAP();\" onMouseOver=\"this.className='calendarTimeSpanOver';\" onMouseOut=\"this.className='calendarTimeSpan';\">"+DISP_AP+"</span>";
	}
	if (caltime) { 
		caltime.innerHTML = finalHTML;
		caltime.className = classname;
	}
}
		
	

