var CURRENT_DATE = new Date();

function setDefaultDateInfo() {
	window.calWeekdayNames 		= new Array();
	window.calWeekdayNames[0] 	= "Sunday";
	window.calWeekdayNames[1] 	= "Monday";
	window.calWeekdayNames[2] 	= "Tuesday";
	window.calWeekdayNames[3] 	= "Wednesday";
	window.calWeekdayNames[4] 	= "Thursday";
	window.calWeekdayNames[5] 	= "Friday";
	window.calWeekdayNames[6] 	= "Saturday";
	window.calArrMonths 		= new Array();
	window.calArrMonths[0] 		= "January|31";
	window.calArrMonths[1] 		= "February|28";
	window.calArrMonths[2] 		= "March|31";
	window.calArrMonths[3] 		= "April|30";
	window.calArrMonths[4] 		= "May|31";
	window.calArrMonths[5] 		= "June|30";
	window.calArrMonths[6] 		= "July|31";
	window.calArrMonths[7] 		= "August|31";
	window.calArrMonths[8] 		= "September|30";
	window.calArrMonths[9] 		= "October|31";
	window.calArrMonths[10] 	= "November|30";
	window.calArrMonths[11] 	= "December|31";
}

function setDefaultOtherInfo() {
	window.calendarName="BROWSE&nbsp;THE&nbsp;ARCHIVES";
	window.calendarFooter="VIEW&nbsp;PREVIOUS&nbsp;YEARS";
}

function setCalendarValues(calUrl, calParamNames, calParamValues, curMonth, curYear) {
	window.calUrl = calUrl;
	window.parameterNames = calParamNames.split(",");
	window.parameterValues = calParamValues.split(",");
	window.firstDayDate = new Date(curYear, curMonth, 1);
	window.firstWeekdayOfMonth = firstDayDate.getDay();
}

function createCalendarHeader() {
	headerOutput = '<tr id="caldaynames">';
	for (i=0;i<window.calWeekdayNames.length;i++) {
		headerOutput += "<td>" + window.calWeekdayNames[i].substring(0,window.calWeekdayFormat) + "</td>";
	}
	headerOutput += "</tr>";
	return headerOutput;
}
	
function createCalendarFooter() {
	footerOutput = '<tr id="calfooter"><td colspan="7">' + calendarFooter + '</td></tr>';
	return footerOutput;
}

function padCalendarCells(numCells) {
	padCellsOutput = "";
	for (i=0;i<numCells;i++) {
		padCellsOutput += '<td>&nbsp;</td>';
	}
	return padCellsOutput;
}

function createMonthYearHeader() {
	MYHeaderOutput = '<tr id="calheader">';
	MYHeaderOutput += '<td colspan="7">';
	MYHeaderOutput += window.calendarName;
	MYHeaderOutput += '</td>';
	MYHeaderOutput += '</tr>';
	MYHeaderOutput += '<tr>';
	MYHeaderOutput += '<td class="leftarrow">';
	moveLeft = '';
	if (startTime<new Date(curYear, curMonth, 1).valueOf()) {
		pipeFind = window.calArrMonths[new Date(curTime - 86400000).getMonth()].indexOf("|");
		prevMonth = window.calArrMonths[new Date(curTime - 86400000).getMonth()].substring(0,pipeFind);
		prevYear = new Date(curTime - 86400000).getYear();
		moveLeft = '&lt;';
	}
	
	MYHeaderOutput += '<a class="calmovemonth" href="javascript:void(0);" onclick="moveCalendar(-1);">' + moveLeft + '</a>';
	MYHeaderOutput += '</td>';
	MYHeaderOutput += '<td colspan="5" class="calmonthyear">';
	pipeFind = window.calArrMonths[window.firstDayDate.getMonth()].indexOf("|");
	if (window.calMonthFormat=="-1") {
		MYHeaderOutput += window.firstDayDate.getMonth();
	}
	else {
		MYHeaderOutput += window.calArrMonths[window.firstDayDate.getMonth()].substring(0,pipeFind).substring(0, parseInt(window.calMonthFormat));
		if (window.calMonthFormat=="3") {
			MYHeaderOutput += ".";
		}
	}
	MYHeaderOutput += '&nbsp;';
	MYHeaderOutput += window.curYear.substring(window.calYearFormat, 4);
	MYHeaderOutput += '</td>';
	MYHeaderOutput += '<td class="rightarrow">';
	moveRight = '';
	if (new Date(curYear, parseInt(curMonth)+1, 1).valueOf()<CURRENT_DATE.valueOf()) {
		pipeFind = window.calArrMonths[new Date(curTime + (32 * 86400000)).getMonth()].indexOf("|");
		nextMonth = window.calArrMonths[new Date(curTime + (32 * 86400000)).getMonth()].substring(0,pipeFind);
		nextYear = new Date(curTime + (32 * 86400000)).getYear();
		moveRight = '&gt;';
	}
	MYHeaderOutput += '<a class="calmovemonth" href="javascript:void(0);" onclick="moveCalendar(1);">' + moveRight + '</a>';
	MYHeaderOutput += '</td>';
	MYHeaderOutput += '</tr>';
	return MYHeaderOutput;
}

function createCalendarDates() {
	//calOutput += '<tr>';
	calOutput += padCalendarCells(window.firstWeekdayOfMonth);
	dayCounter = window.firstWeekdayOfMonth;
	monthSave = window.firstDayDate.getMonth();
	pipeFind = window.calArrMonths[window.firstDayDate.getMonth()].indexOf("|");
	monthName = window.calArrMonths[window.firstDayDate.getMonth()].substring(0,pipeFind);
	monthDays = window.calArrMonths[window.firstDayDate.getMonth()].substring(pipeFind+1);
	if (monthSave==1) {
		monthDays = 28;
		if (curYear%4==0) {
			if (curYear%100==0) {
				if (!curYear/400) {
					monthDays = 29;
				}
			}
			else {
				monthDays = 29;
			}
		}
		window.calArrMonths[window.firstDayDate.getMonth()] = monthName + "|" + monthDays;
	}
	for (i=1;i<=monthDays;i++) {
		//td = new Date(curYear, curMonth, i).getDay();
		//aa = window.calWeekdayNames[td];
				
		useCalUrl = window.calUrl;
		calUrlParams = "";
		for (x=0;x<window.parameterNames.length;x++) {
			//calUrlParams += window.parameterNames[x] + "=";
			if (window.parameterValues[x]=="dateSelected") {
				if (window.calDateFormat=="oracle_default") {
					calUrlParams += i + "-" + window.calArrMonths[curMonth].substring(0, 3) + "-" + curYear.substring(2, 4);
				}
				else if (window.calDateFormat=="oracle_full_year") {
					calUrlParams += i + "-" + window.calArrMonths[curMonth].substring(0, 3) + "-" + curYear;
				}
				else if (window.calDateFormat=="standard") {
			        tmpMonth = parseInt(curMonth) + 1;
					calUrlParams += tmpMonth + "-" + i + "-" + curYear;
				}
			}
			else {
				calUrlParams += window.parameterValues[x];
			}
			if (x!=window.parameterNames.length-1) {
				calUrlParams += "&";
			}
		}
		
		if (dayCounter%7==0) {
			calOutput += '</tr><tr>';
		}
		calOutput += '<td class="calday">';
		iDate = new Date(curYear, curMonth, i).getDay();
		linked = 0;
		aa = window.calWeekdayNames[iDate];
		if (calLinks.substring(iDate, iDate+1)==1 && (aa !== "Sunday" && aa !== "Saturday")) {
			if (curYear>startYear) {
				linked = 1;
			}
			else if (curYear==startYear) {
				if (curMonth>startMonth) {
					linked = 1;
				}
				else if (curMonth==startMonth) {
					if (i>=window.startDay) {
						linked = 1;
					}
				}
			}
		}
		hCurDay = '';
		hCurDay2 = '';
		saveCYear = CURRENT_DATE.getYear();
		if (CURRENT_DATE.getYear()<200) {
			saveCYear = saveCYear + 1900;
		}
		if ((curMonth==CURRENT_DATE.getMonth()) && (curYear==saveCYear)) {
			if (i==CURRENT_DATE.getDate()) {
				hCurDay = '<div id="caltoday">';
				hCurDay2 = '</div>';
				linked = 0;
			}
			else if (i>CURRENT_DATE.getDate()) {
				linked = 0;
			}
		}
		else if ((curMonth > CURRENT_DATE.getMonth()) && (curYear==saveCYear)) {
			linked = 0;
		}
		else if (curYear > saveCYear) {
			linked = 0;
		}				
				
		hSelDay = '';
		hSelDay2 = '';
		if (curMonth==selMonth && curYear==selYear && i==selDay) {
			hSelDay = '<div id="calselected">';
			hSelDay2 = '<div>';
			linked = 1;
		}

		if (linked==1) {
			sm =  window.calArrMonths[curMonth].substring(0, 3).toLowerCase();
			useCalUrl = "javascript:getDailyComment("
			//calOutput += '<a href="' + useCalUrl + i + ',' + sm + "'"+')">' + hCurDay + i + hCurDay2 + '</a>';
			calOutput += '<a href="javascript:void(0);" onClick="' + useCalUrl + "'" + i + "','" + sm + "','" + curYear + "'" + ')">' + hCurDay + i + hCurDay2 + '</a>';
		}
		else {
			calOutput += '<span class=gt>' + hCurDay + hSelDay + i + hSelDay2 + hCurDay2 + '</span>';
		}
		calOutput += '</td>';
		dayCounter++;
	}
	if (dayCounter%7!=0) {
		if (dayCounter>35) {
			calOutput += padCalendarCells(42%dayCounter);
		}
		else {
			calOutput += padCalendarCells(35%dayCounter);
		}
	}
	calOutput += '</tr></table>';
}

function moveCalendar(direction) {
	selMonth = '';
	selYear = '';
	selDay = '';
	if (window.curMonth==11 && direction==1) {
		window.curMonth = 0;
		window.curYear = (parseInt(window.curYear) + direction);
	}
	else if (window.curMonth==0 && direction==-1) {
		window.curMonth = 11;
		window.curYear = (parseInt(window.curYear) + direction);
	}
	else {
		window.curMonth = (parseInt(window.curMonth) + direction);
	}
	window.curYear = window.curYear.toString();
	doCalendarLoad();
}

function doCalendarLoad() {
	if (!window.calDivToUse.style.width) {
		window.calDivToUse.style.width = "100px";
	}
	if (!window.calDivToUse.style.height) {
		window.calDivToUse.style.height = "100px";
	}
	if (!window.calDivToUse.style.fontSize) {
		window.calDivToUse.style.fontSize = "1em";
	}
	if (window.tableCellSpacing=="" || window.tableCellSpacing==null) {
		window.tableCellSpacing = "0";
	}			
			
	setCalendarValues(window.calUrl, window.calParamNames, window.calParamValues, window.curMonth, window.curYear);
	window.calOutput = '';
	window.calOutput += '<table cellspacing="' + window.tableCellSpacing + '" cellpadding="0" border="0">';
	calOutput += createMonthYearHeader();
	calOutput += createCalendarHeader();
	createCalendarDates();
	//calOutput += createCalendarFooter();
	window.curTime = new Date(curYear, curMonth, 1).valueOf();
	//window.calOutput += '</table>';
	window.calDivToUse.innerHTML = '';
	window.calDivToUse.innerHTML = calOutput;
}

function setCalendarOnLoadValues() {
	window.calDivToUse = document.getElementById('calendar');
	window.calDateFormat = "oracle_full_year";
	window.calWeekdayFormat = "1";
	window.calMonthFormat = "10";
	window.calYearFormat = "0";
	setDefaultDateInfo();
	setDefaultOtherInfo();

	if ((window.selMonth==null || window.selMonth=="") && (window.selYear==null || window.selYear=="")) {
		window.curMonth = CURRENT_DATE.getMonth();
		window.curYear = CURRENT_DATE.getYear();
	}
	else {
		window.curMonth = window.selMonth;
		window.curYear = window.selYear;
	}
	window.curTime = new Date(curYear, curMonth, 1).valueOf();
	window.startTime = new Date(startYear, startMonth, 1).valueOf();
}

function month(intMonth){
	var MonthArray = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	return MonthArray[intMonth];  	 
}
