var CURRENT_DATE = new Date();

function checkYear(cYear)
	{
		if (cYear < 200)
			{
				cYear = parseInt(cYear) + 1900;
			}
	}

function replaceString(repStr, stringToFind, stringToRep)
	{
		sFind = 0;
		newStr = repStr;

		while (sFind != -1)
			{
				// FIND THE NEXT OCCURENCE OF THE stringToFind
				sFind = newStr.indexOf(stringToFind);

				// IF THERE IS AN OCCURENCE, PERFORM THE REPLACE
				if (sFind != -1)
					{
						startString = newStr.substring(0, sFind); // GET THE STRING BEFORE stringToFind
						endString = newStr.substring(sFind +  stringToFind.length, newStr.length); // GET THE STRING AFTER stringToFind
						newStr = startString + stringToRep + endString; // CAT THE STRING BEFORE AND AFTER stringToFind AND INSERT stringToRep IN BETWEEN
					}
			}

		return newStr;  // RETURN VALUE AFTER REPLACES
	}

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++)
			{
				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;
				if (calLinks.substring(iDate, iDate+1)==1)
					{
						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 = 0;
					}
					
				if (linked==1)
					{
						calOutput += '<a href="' + useCalUrl + '?' + calUrlParams + '">' + hCurDay + i + hCurDay2 + '</a>';
					}
				else
					{
						calOutput += hCurDay + hSelDay + i + hSelDay2 + hCurDay2;
					}
				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 = "standard";
		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();
	}

