var today = new Date();
var todayYear = today.getFullYear();
var todayMonth = today.getMonth();
var todayDay = today.getDate();

var endDate = new Date(today.getTime() + 90*24*60*60*1000);
var endYear = endDate.getFullYear();
var endMonth = endDate.getMonth(); 
var endDay = endDate.getDate();

var year = todayYear;
var month = todayMonth;

var formPrefix;

// getTopOffset() determines the number of pixels to offset from the top of the screen
// for placement of the calendar pop-up 

function getTopOffset()
{     
    var avail_height = screen.availHeight - 30; // subtract 30 pixels for system elements (taskbar, titlebar)
    var y_coord = avail_height / 2; 
    return y_coord;
}

// getLeftOffset() determines the number of pixels to offset from the left of the screen
// for placement of the calendar pop-up 

function getLeftOffset()
{     
    var avail_width = screen.availWidth - 10; // subtract 10 pixels for system elements (scrollbars)
    var x_coord = avail_width / 2;
    return x_coord;
}    

function isThisLeapYear (Year) {
	if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) { return (true); }
    else { return (false); }
}

function getAllDaysInMonth(month)  {
	var days;
    var year = (month >= todayMonth) ? todayYear : todayYear + 1;
	if (month==0 || month==2 || month==4 || month==6 || month==7 || month==9 || month==11)  { days=31; }
    else if (month==3 || month==5 || month==8 || month==10) { days=30; }
    else if (month==1)  {
        if (isThisLeapYear(year)) { days=29; }
        else { days=28; }
    }
    return (days);
}

function getMonthNumber(month_name)
{
	switch(month_name)
    {
		case 'January': { return 1; break }
		case 'February': { return 2; break }
        case 'March': { return 3; break }
        case 'April': { return 4; break }
        case 'May': { return 5; break }
        case 'June': { return 6; break }
        case 'July': { return 7; break }
        case 'August': { return 8; break }
        case 'September': { return 9; break }
        case 'October': { return 10; break }
        case 'November': { return 11; break }
        case 'December': { return 12; break }
  }

	
}

function makeDayArray(day) {
	dayArray = new Array();
	for(i=0; i<day; i++) {
		dayArray[i] = i + 1;
	}
	return (dayArray);
}

function makeMonthArray(startMonth, endMonth) {
   
	mymonthArray = new Array();
	numMonths = endMonth - startMonth;
	for(i=0; i<numMonths; i++) {
		mymonthArray[i] = returnLcaseMonth(startMonth++);
	}
	return (mymonthArray);
}

/*
function fillDropDown(monthDropDown) {

	monthDropDown.options.length=0;
	for (i=todayMonth; <= endMonth; i++) {
		monthDropDown.options[i] = new Option(returnMonth(i));
	}
	
}
*/

function changeDropDown(monthDropDown, dayDropDown) {
	var selectedDay = dayDropDown.selectedIndex;
	var selectedMonth = monthDropDown.options[monthDropDown.selectedIndex].value - 1;
	var days;
	if (selectedMonth == endMonth)
		days = endDay;
	else
		 days = getAllDaysInMonth(selectedMonth);
	var tempArray = makeDayArray(days);
	dayDropDown.options.length = 0;
	for(i=0; i<tempArray.length; i++) {
		dayDropDown.options[i] = new Option(tempArray[i]);
	}
	if(selectedDay > dayDropDown.length-1) { dayDropDown.selectedIndex = dayDropDown.length-1; }
	else { dayDropDown.selectedIndex = selectedDay; }
}

function changeYearDropDown(monthDropDown, yearDropDown) {
	var selectYear = yearDropDown.selectedIndex;
	var endMonth = 12;
		
	if (selectYear == 0)
	{
		var startMonth = todayMonth;
		var tempArray = makeMonthArray(startMonth, endMonth);
		monthDropDown.options.length = 0;
		for(i=0; i<tempArray.length; i++) {
			monthDropDown.options[i] = new Option(tempArray[i], getMonthNumber(tempArray[i]));
		}
	}
	else
	{
		var tempArray2 = makeMonthArray(0, endMonth);
		monthDropDown.options.length = 0;
		for(i=0; i<tempArray2.length; i++) {
			monthDropDown.options[i] = new Option(tempArray2[i], getMonthNumber(tempArray2[i]));
		}
	}	
	
}

function changeCalendarDropDown(tempMonth, dayDropDown) {
	var days = getAllDaysInMonth(tempMonth);
	var tempArray = makeDayArray(days);
	var optionsLength = dayDropDown.options.length;
	if(dayDropDown.options.length - 1 < tempArray.length) {
        dayDropDown.options.length = tempArray.length + 1;
        for(i=optionsLength; i<tempArray.length; i++) {
            dayDropDown.options[i].text = tempArray[i];
            dayDropDown.options[i].value = tempArray[i];
        }
	}
	else if (dayDropDown.options.length - 1 > tempArray.length) {
	    dayDropDown.options.length = tempArray.length + 1;
	}
}

function setYearDropDown() {
	for (i=0; i <= inputYearField.options.length; i++) {
		if (inputYearField.options[i].value == year) {
			inputYearField.selectedIndex = i;
			return;
		}
	}
}

function moveCal(cal,pos) { 
	document.getElementById(cal).style.pixelLeft=pos; 
}

function process(num,cal) {
	if(num == -1) {
		if(month == 0) {
			month = 11;
			year--;
			today.setFullYear(year);
		}
		else { month--; }
	}
	if(num == 1) {
		if(month == 11) {
			month = 0;
			year++;
			today.setFullYear(year);
		}
		else { month++; }
	}
	// month set twice for bug #10002
	today.setMonth(month);
    today.setMonth(month);
	writeCalendar(cal);
}

function returnMonth(thismonth) {
	monthArray = new Array('JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE','JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER');
	return monthArray[thismonth];
}

function returnLcaseMonth(thismonth) {
	lcase_monthArray = new Array('January', 'February', 'March', 'April', 'May', 'June','July', 'August', 'September', 'October', 'November', 'December');
	return lcase_monthArray[thismonth];
}

function closeCalendar(cal) {

	if (document.layers) { 
		document.layers[cal].visibility = "hidden"; 
		document.layers[formPrefix + 'ddStartAM_PM'].visibility = "visible";
	}
	else if(document.all) { 
		document.all[cal].style.visibility = "hidden";
		document.all[formPrefix + 'ddStartAM_PM'].style.visibility = "visible" 
	}
	else { 
		document.getElementById(cal).style.visibility = "hidden"; 
		document.getElementById(formPrefix + 'ddStartAM_PM').style.visibility = "visible"
	}

}

var inputMonthField;
var inputDateField;
var inputYearField;

function setFields(userFormPrefix, userMonthField, userDateField, userYearField) {
	setField(userFormPrefix, userMonthField, userDateField);
	inputYearField = userYearField;
	
	if (inputYearField.selectedIndex > 0) {
		todayYear = inputYearField.options[inputYearField.selectedIndex].value;
		year = todayYear;
		today.setFullYear(year);
	}
}

function setField(userFormPrefix, userMonthField, userDateField) {
	inputMonthField = userMonthField;
	inputDateField = userDateField;
	formPrefix = userFormPrefix;
	//alert(document.bodyForm);
	//alert("userMonthField = " + userMonthField + "\nuserDateField = " + userDateField);
	//alert("inputMonthField = " + inputMonthField + "\ninputDateField = " + inputDateField);
	var validMonth = inputMonthField.options[inputMonthField.selectedIndex].value;

	if (validMonth == null || validMonth == "") {
		month = today.getMonth();
	} else  {
		month = validMonth - 1;
	}
	today.setMonth(month);
	year = todayYear;
	today.setFullYear(year);
	
/*	
	if(validMonth >= todayMonth) {
		month = validMonth;
		today.setMonth(month);
	   	year = todayYear;
		today.setFullYear(year);
	}
	else {
		month = validMonth;
		today.setMonth(month);
		year = todayYear + 1;
		today.setFullYear(year);
	}
*/
}

function returnDate(inDay,cal) {
	var thisDay = inDay - 1;
	var thisMonth = month;
	setYearDropDown();
    inputMonthField.value = thisMonth + 1;
	inputDateField.selectedIndex = inputDateField.options[0].value == "" ? thisDay+1 : thisDay;
	closeCalendar(cal);
}

function writeCalendar(cal) {
	cellHeight = '18';
	blankColumn = "<td height=" + cellHeight + " class='clickableDays'>&nbsp;</td>"
	tableOutput = "<table cellpadding='0' cellspacing='0' border='0' width='150'><tr><td colspan='7'><img src='../../images/calendar/spacer.gif' width='1' height='1' border='0'></td></tr><tr><td align='center' class='weekdays'>S</td><td align='center' class='weekdays'>M</td><td align='center' class='weekdays'>T</td><td align='center' class='weekdays'>W</td><td align='center' class='weekdays'>T</td><td align='center' class='weekdays'>F</td><td align='center' class='weekdays'>S</td></tr><tr align='right'>"

 	var days = getAllDaysInMonth(month);
	var firstOfMonth = new Date (year, month, 1);
	var startingPos  = firstOfMonth.getDay();
	days += startingPos;
	var columnCount = 0;

	for (i = 0; i < startingPos; i++) {
		tableOutput += blankColumn;
		columnCount++;
    }

	var currentDay = 0;
   	for (i = startingPos; i < days; i++) {
		currentDay = i-startingPos+1;
		var bcolor = "#FFFFFF";
/*		
		if((month == todayMonth && year == todayYear) || (month == endMonth && year == endYear)) {
			if ((year == todayYear && month == todayMonth && currentDay >= todayDay) || 
				(year == endYear && month == endMonth && currentDay <= endDay )) {
				tableOutput += "<td height=" + cellHeight + " align='center' class='clickableDays' bgcolor='" + bcolor + "'><a href='javascript:returnDate(" + currentDay + ",\"" + cal + "\")' class='clickableDays'>" + currentDay + "</a></td>"
			}
			else {
				tableOutput += "<td height=" + cellHeight + " align='center' class='nonclickableDays' bgcolor='" + bcolor + "'>" + currentDay + "</td>"
			}
		}
		else {
			tableOutput += "<td height=" + cellHeight + " align='center' bgcolor='" + bcolor + "'><a href='javascript:returnDate(" + currentDay + ",\"" + cal + "\")' class='clickableDays'>" + currentDay + "</a></td>"
		}
*/		
		tableOutput += "<td height=" + cellHeight + " align='center' bgcolor='" + bcolor + "'><a href='javascript:returnDate(" + currentDay + ",\"" + cal + "\")' class='clickableDays'>" + currentDay + "</a></td>"

		columnCount++;
		if (columnCount % 7 == 0) {
            tableOutput += "</tr><tr align='center'>";
        }
    }

	for (i=days; i<41; i++)  {
		tableOutput += blankColumn;
		columnCount++;

        if (columnCount % 7 == 0) {
            tableOutput += "</tr>";
            if (i<41) {
                tableOutput += "<tr align='center'>";
            }
        }
    }
    // draw close button/cell
    tableOutput += "<td height=" + cellHeight + " class='clickableDays'><a href='javascript:closeCalendar(\"" + cal + "\")'><img src='../../images/calendar/close.gif' width='16' height='12' border='0'></a></td>"
	
	var leftarrow;
	var rightarrow;

	//if(month==todayMonth && year==todayYear) leftarrow="<img src='../../images/calendar/spacer.gif' width='11' height='17' border='0'>"
	//elseleftarrow="<a href='javascript:process(-1,\"cal\")'><img src='../../images/calendar/left.gif' width='11' height='17' border='0'></a>"
	leftarrow="<a href='javascript:process(-1,\"cal\")'><img src='../../images/calendar/left.gif' width='11' height='17' border='0'></a>"
	
	//if((month==endMonth) && (year==endYear)) rightarrow="<img src='../../images/calendar/spacer.gif' width='11' height='17' border='0'>"
	//else rightarrow="<a href='javascript:process(1,\"cal\")'><img src='../../images/calendar/right.gif' width='11' height='17' border='0'></a>"
	rightarrow="<a href='javascript:process(1,\"cal\")'><img src='../../images/calendar/right.gif' width='11' height='17' border='0'></a>"
	
	tableOutput += "</table></td><td bgcolor='#FFFFFF'><img src='../../images/calendar/spacer.gif' width='1' height='1' border='0'></td><td bgcolor='#333333'><img src='../../images/calendar/spacer.gif' width='1' height='1' border='0'></td></tr><tr><td bgcolor='#333333' colspan='5'><img src='../../images/calendar/spacer.gif' width='1' height='1' border='0'></td></tr></table>"
	
	monthOutput = "<table width='154' cellspacing='0' cellpadding='0' border='0' bgcolor='#FFFFFF'><tr><td bgcolor='#333333' colspan='5'><img src='../../images/calendar/spacer.gif' width='1' height='1' border='0'></td></tr><tr><td bgcolor='#333333'><img src='../../images/calendar/spacer.gif' width='1' height='1' border='0'></td><td bgcolor='#FFFFFF'><img src='../../images/calendar/spacer.gif' width='1' height='1' border='0'></td><td><img src='../../images/calendar/spacer.gif' width='150' height='1' border='0'><br /><table cellpadding='0' cellspacing='0' border='0' width='150' bgcolor='#A40B0B'><tr><td bgcolor='#A40B0B' height='15' valign='top'>" + leftarrow + "</td><td align='center' valign='middle' class='months' bgcolor='#A40B0B'>" + returnMonth(month) + " " + year + "</td><td align='right' bgcolor='#A40B0B' valign='top'>" + rightarrow + "</td></tr></table>";

	tableOutput = (monthOutput + tableOutput);
	
	if (document.layers) {
		document.layers[cal].visibility = "visible";
		document.layers[formPrefix + 'ddStartAM_PM'].visibility = "hidden";
		document.layers[cal].document.write(tableOutput);
		document.layers[cal].document.close();
	}
	else if(document.all) {
		document.all[cal].style.visibility = "visible";
		document.all[formPrefix + 'ddStartAM_PM'].style.visibility = "hidden"
		document.all[cal].innerHTML=tableOutput;
	}
	else {
		document.getElementById(cal).style.visibility = "visible";
		document.getElementById(formPrefix + 'ddStartAM_PM').style.visibility = "hidden"
		document.getElementById(cal).innerHTML=tableOutput;
	}
	
}


