// Date Manipulation Object

function DateManip(oDate) {
	this.isProperDate=isProperDate;
	this.isWhiteSpace=isWhiteSpace;
	this.isLeapYear=isLeapYear;
	this.daysInMonth=daysInMonth;
	this.getDateSeparator=getDateSeparator;
	this.getYear=getYear;
 	this.getMonth=getMonth;
	this.getDay=getDay;
	this.isProperDay=isProperDay;
	this.isProperMonth=isProperMonth;
	this.isProperYear=isProperYear;
	this.CompareDates=CompareDates;
	this.LongToStandard=LongToStandard;
}


//------------------------------------------------------------------------------------
// function: LongToStandard
//           Function that accepts a long date (November 14, 2001) and outputs 
//           a standard date in the format mm/dd/yyyy
//------------------------------------------------------------------------------------
function LongToStandard(cLongDate)
{
	var oTempDate = new Date(cLongDate);
	var cStandardDate;	
	var cLowerCaseDate='';	
	
	var oMonths = new Array("january", "february", "march", "april", 
	  "may", "june", "july", "august", "september", "october", 
	  "november", "december");
	
	// Now we will make sure that the new date's months matches with the one passed in.
	// We have to do this because JavaScript will convert January 33rd, 2003 to 02/02/2003
		
	cStandardDate = (oTempDate.getMonth() + 1) + '/' + oTempDate.getDate() + '/' + oTempDate.getYear();		
		
	cLowerCaseDate = cLongDate.toLowerCase();	// convert the date to lower case so we can do string validation	
	
	//if (cLowerCaseDate.indexOf(oMonths[oTempDate.getMonth()]) > -1) {
		// Verify that the converted date is valid
		if (isProperDate(cStandardDate)) 
			return cStandardDate; // date is valid and conversion was successful
		else
			return '';    // date is invalid
//	} else { return ''; } // date is invalid
}
	
function FormatDateTime(DateValue, iFormat) {
	var strDate = "";
	var dtmNow = (DateValue) ? new Date(DateValue) : new Date;
	switch ((!iFormat) ? 0 : iFormat) {
	case 0 : //vbGeneralDate
		// Display a date and/or time. If there is a date part, display it as a short date. If there is a time part, display it as a long time. If present, both parts are displayed.  
		// 1/1/2000 1:00:00 PM
		strDate = (dtmNow.getMonth() + 1)
				+ '/' + dtmNow.getDate()
				+ '/' + FixYear(dtmNow, DateValue);
		strDate += " " + ((dtmNow.getHours()<=12) ? ((dtmNow.getHours()==0) ? '12' : dtmNow.getHours()) : dtmNow.getHours() - 12) 
				+ ':' + ((dtmNow.getMinutes()<10) ? '0' + dtmNow.getMinutes() : dtmNow.getMinutes())
				+ ':' + ((dtmNow.getSeconds()<10) ? '0' + dtmNow.getSeconds() : dtmNow.getSeconds())
				+ ((dtmNow.getHours()<12) ? ' AM' : ' PM');
		break;

	case 1 : //vbLongDate
		// Display a date using the long date format specified in your computer's regional settings. 
		// Wednesday, November 29, 2000
		strDate = (new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'))[dtmNow.getDay()] + ", ";
		strDate += (new Array('January', 'February ', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'))[dtmNow.getMonth()] + " ";
		strDate += dtmNow.getDate() + ", ";
		strDate += FixYear(dtmNow, DateValue);
		break;

	case 2 : //vbShortDate
		//Display a date using the short date format specified in your computer's regional settings. 
		// 11/29/2000
		strDate = (dtmNow.getMonth() + 1) + '/' + dtmNow.getDate() + '/' + FixYear(dtmNow, DateValue);
		break;
	
	case 3 : //vbLongTime
		//Display a time using the time format specified in your computer's regional settings. 
		// 11:02:07 AM
		strDate = " " + ((dtmNow.getHours()<=12) ? ((dtmNow.getHours()==0) ? '12' : dtmNow.getHours()) : dtmNow.getHours() - 12)
				+ ':' + ((dtmNow.getMinutes()<10) ? '0' + dtmNow.getMinutes() : dtmNow.getMinutes())
				+ ':' + ((dtmNow.getSeconds()<10) ? '0' + dtmNow.getSeconds() : dtmNow.getSeconds())
				+ ((dtmNow.getHours()<12) ? ' AM' : ' PM');
		break;

	case 4 : //vbShortTime
		//Display a time using the 24-hour format (hh:mm). 
		// 11:02
		strDate = dtmNow.getHours() + ':' + dtmNow.getMinutes();
		break;

	default :
		return FormatDateTime(DateValue, 0);
	}
	return strDate;
}


//------------------------------------------------------------------------------------
// function: isProperDate
//           Function to tell whether the given date is valid or not
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function isProperDate(argDate) {	
	var tmpDay = getDay(argDate);
	var tmpMon = getMonth(argDate);
	var tmpYear = getYear(argDate);

	return isProperDay(tmpDay, tmpMon, tmpYear) && isProperMonth(tmpMon) && isProperYear(tmpYear);
}

//------------------------------------------------------------------------------------
// function: isWhiteSpace
//           Function to check whether the given argument consists of characters other
//           than a space and \t
//------------------------------------------------------------------------------------
function isWhiteSpace(argWhiteSpace) {
	argWs = argWhiteSpace.toString();    // Convert variant to string
	
	for (var intI=0; intI < argWs.length; intI++)
		if (argWs.charAt(intI) != ' ' && argWs.charAt(intI) != '\t')
			return false;
	
	return true;
}

//------------------------------------------------------------------------------------
// function: isLeapYear
//          Determine if specified date is a leap year
//------------------------------------------------------------------------------------
function isLeapYear(argYear) {
	return ((argYear % 4 == 0) && (argYear % 100 != 0)) || (argYear % 400 == 0);
}

//------------------------------------------------------------------------------------
// function: daysInMonth
//           Function to return the maximum number of days in a given month of a
//           given year
//------------------------------------------------------------------------------------
function daysInMonth(argMonth, argYear) {
	switch (Number(argMonth)) {
		case 1:		// Jan
		case 3:		// Mar
		case 5:		// May
		case 7:		// Jul
		case 8:		// Aug
		case 10:		// Oct
		case 12:		// Dec
			return 31;
			break;
		
		case 4:		// Apr
		case 6:		// Jun
		case 9:		// Sep
		case 11:		// Nov
			return 30;
			break;
		
		case 2:		// Feb
			if (isLeapYear(argYear))
				return 29;
			else
				return 28;
			break
		
		default:
			return 0;
	}
}

//------------------------------------------------------------------------------------
// function: getDateSeparator
//           Function to return the date separator
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getDateSeparator(argDate) {
	// Are there invalid separators?
	if ((argDate.indexOf('-') > 0) && (argDate.indexOf('/') > 0))
		return ' ';

	if (argDate.indexOf('-') > 0)
		return '-';
	else
		if (argDate.indexOf('/') > 0)
			return '/';
		else
			return ' ';
}

//------------------------------------------------------------------------------------
// function: getYear
//           Function to return the year part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getYear(argDate) {
	var dateSep = getDateSeparator(argDate);
	
	if (dateSep == ' ')
		return 0;

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[2];
	else
		return 0;
}

//------------------------------------------------------------------------------------
// function: getMonth
//           Function to return the month part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getMonth(argDate) {
	var dateSep = getDateSeparator(argDate);
	
	if (dateSep == ' ')
		return 0;

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[0];
	else
		return 0;
}

//------------------------------------------------------------------------------------
// function: getDay
//           Function to return the day part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getDay(argDate) {
	var dateSep = getDateSeparator(argDate);
	
	if (dateSep == ' ')
		return 0;

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[1];
	else
		return 0;
}

//------------------------------------------------------------------------------------
// function: isProperDay
//           Function to tell whether the given day of the given month is valid
//------------------------------------------------------------------------------------
function isProperDay(argDay, argMonth, argYear) {
	if ((isWhiteSpace(argDay)) || (argDay == 0))
		return false;

	if ((argDay > 0) && (argDay < daysInMonth(argMonth, argYear) + 1))
		return true;
	else 
		return false;
}

//------------------------------------------------------------------------------------
// function: isProperMonth
//           Function to tell whether the given month is a valid one
//------------------------------------------------------------------------------------
function isProperMonth(argMonth) {
	if ((isWhiteSpace(argMonth)) || (argMonth == 0))
		return false;
	
	if ((argMonth > 0) && (argMonth < 13))
		return true;
	else
		return false;
}

//------------------------------------------------------------------------------------
// function: isProperYear
//           Function to tell whether the given Year is a valid one
//------------------------------------------------------------------------------------
function isProperYear(argYear) {
	if ((isWhiteSpace(argYear)) || (argYear.toString().length > 4) || (argYear.toString().length == 3))
		return false;
	
	switch (argYear.toString().length) {
		case 1:
			if (argYear >=0 && argYear < 10)
				return true;
			else
				return false;
			
		case 2:
			if (argYear >=0 && argYear < 100)
				return true;
			else
				return false;
			
		case 4:
			if (((argYear >=1900) || (argYear >=2000)) && ((argYear < 3000) || (argYear < 2000)))
				return true;
			else
				return false;
		
		default:
			return false;
	}
}
//------------------------------------------------------------------------------------
// function: CompareDates
//           Function to tell whether a specified date is the same as, before, 
//           or after another specified date
//------------------------------------------------------------------------------------
function CompareDates(argDate1, argDate2) {    
	var oDate1 = new Date();
	var oDate2 = new Date();

	// Convert first date into a Date object
	
	// We have to subtract 1 because the months begin with 0
	oDate1.setMonth(getMonth(argDate1) - 1);
	oDate1.setDate(getDay(argDate1));
	oDate1.setYear(getYear(argDate1));
    
	// Convert second date into a Date object    	
	oDate2.setMonth(getMonth(argDate2) - 1);
	oDate2.setDate(getDay(argDate2));
	oDate2.setYear(getYear(argDate2));
  
	if (oDate1.getTime() == oDate2.getTime())         
		return 0;    // both dates are equal
	else if (oDate1.getTime() < oDate2.getTime())
		return -1;   // The first date is before the second date
	else if (oDate1.getTime() > oDate2.getTime())
		return 1;    // The first date is after the second date
	else
		return -999; // One of the two dates is invalid
    
	return;
    
}






// JavaScript Document
<!-- Original:  Kedar R. Bhave (softricks@hotmail.com) -->
<!-- Web Site:  http://www.softricks.com -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 2;

var cActiveMonth;
var cActiveDay;
var cActiveYear;


var gNow = new Date();
var ggWinCal;
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;

Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item, p_WinCal, p_month, p_year, p_format,p_day) {
	if ((p_month == null) && (p_year == null))	return;

	if (p_WinCal == null)
		this.gWinCal = ggWinCal;
	else
		this.gWinCal = p_WinCal;
	
	if (p_month == null) {
		this.gMonthName = null;
		this.gMonth = null;
		this.gYearly = true;
	} else {
		this.gMonthName = Calendar.get_month(p_month);
		this.gMonth = new Number(p_month);
		this.gYearly = false;
	}
	
	
	this.gYear = p_year;
	this.gDay = p_day;
	this.gFormat = p_format;
	this.gBGColor = "white";
	this.gFGColor = "black";
	this.gTextColor = "black";
	this.gHeaderColor = "black";
	this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;

function Calendar_get_month(monthNo) {
	return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {
	/* 
	Check for leap year ..
	1.Years evenly divisible by four are normally leap years, except for... 
	2.Years also evenly divisible by 100 are not leap years, except for... 
	3.Years also evenly divisible by 400 are leap years. 
	*/
	if ((p_year % 4) == 0) {
		if ((p_year % 100) == 0 && (p_year % 400) != 0)
			return Calendar.DOMonth[monthNo];
	
		return Calendar.lDOMonth[monthNo];
	} else
		return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

function Calendar_print() {
	ggWinCal.print();
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
	var vCode = "";
	var vHeader_Code = "";
	var vData_Code = "";

	// Begin Table Drawing code here..
	vCode = vCode + "<TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";
	
	vHeader_Code = this.cal_header();
	vData_Code = this.cal_data();
	vCode = vCode + vHeader_Code + vData_Code;
	
	vCode = vCode + "</TABLE>";
	
	return vCode;
}

Calendar.prototype.show = function() {
	var vCode = "";
	
	this.gWinCal.document.open();

	// Setup the page...
	this.wwrite("<html>");
	this.wwrite("<head><title>Date Selection</title>");
	this.wwrite('<link rel="stylesheet" type="text/css" href="styles/default.css">');
	this.wwrite("</head>");

	this.wwrite("<body " + 
		"link=\"" + this.gLinkColor + "\" " + 
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");
	this.wwriteA('<font class="smallBold">');
	this.wwriteA(this.gMonthName + " " + this.gYear);
	this.wwriteA("</font><BR>");

	// Show navigation buttons
	var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
	var prevMM = prevMMYYYY[0];
	var prevYYYY = prevMMYYYY[1];

	var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
	var nextMM = nextMMYYYY[0];
	var nextYYYY = nextMMYYYY[1];
	
	this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center class=headerLink>");
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src='images/CalNavFirst.gif' align='absmiddle' border='0' alt='Previous Year'><\/A></TD><TD ALIGN=center class=headerLink>");
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src='images/CalNavPrev.gif' align='absmiddle' border='0' alt='Previous Month'><\/A></TD><TD ALIGN=center class=headerLink>");
	this.wwrite("<A HREF=\"javascript:window.print();\"><font color=white>Print</font></A></TD><TD ALIGN=center class=headerLink>");
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src='images/CalNavNext.gif' align='absmiddle' border='0' alt='Next Month'><\/A></TD><TD ALIGN=center class=headerLink>");
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src='images/CalNavLast.gif' align='absmiddle' border='0' alt='Next Year'><\/A></TD></TR></TABLE><BR>");

	// Get the complete calendar code for the month..
	
	vCode = this.getMonthlyCalendarCode();	
	this.wwrite(vCode);
	this.wwrite("</font></body></html>");
	
	this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
	var vCode = "";
	var i;
	var vr, vc, vx, vy;		// Row, Column, X-coord, Y-coord
	var vxf = 285;			// X-Factor
	var vyf = 200;			// Y-Factor
	var vxm = 10;			// X-margin
	var vym;				// Y-margin
	if (isIE)	vym = 75;
	else if (isNav)	vym = 25;
	
	this.gWinCal.document.open();

	this.wwrite("<html>");
	this.wwrite("<head><title>caWebCalendar</title>");
	this.wwrite('<link rel="stylesheet" type="text/css" href="styles/default.css">');
	this.wwrite("<style type='text/css'>\n<!--");
	for (i=0; i<12; i++) {
		vc = i % 3;
		if (i>=0 && i<= 2)	vr = 0;
		if (i>=3 && i<= 5)	vr = 1;
		if (i>=6 && i<= 8)	vr = 2;
		if (i>=9 && i<= 11)	vr = 3;
		
		vx = parseInt(vxf * vc) + vxm;
		vy = parseInt(vyf * vr) + vym;

		this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
	}
	this.wwrite("-->\n</style>");
	this.wwrite("</head>");

	this.wwrite("<body " + 
		"link=\"" + this.gLinkColor + "\" " + 
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");
	this.wwrite("<FONT class=smallBold");
	this.wwrite("Year : " + this.gYear);
	this.wwrite("</font><BR>");

	// Show navigation buttons
	var prevYYYY = parseInt(this.gYear) - 1;
	var nextYYYY = parseInt(this.gYear) + 1;
	
	this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src='images/CalNavFirst.gif' align='absmiddle' border='0'><\/A></TD></TR></TABLE><BR>");

	// Get the complete calendar code for each month..
	var j;
	for (i=11; i>=0; i--) {
		if (isIE)
			this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
		else if (isNav)
			this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

		this.gMonth = i;
		this.gMonthName = Calendar.get_month(this.gMonth);
		vCode = this.getMonthlyCalendarCode();
		this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
		this.wwrite(vCode);

		if (isIE)
			this.wwrite("</DIV>");
		else if (isNav)
			this.wwrite("</LAYER>");
	}

	this.wwrite("</font><BR></body></html>");
	this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {		
	this.gWinCal.document.writeln(wtext);
	
}

Calendar.prototype.wwriteA = function(wtext) {
	this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
	var vCode = "";
	
	vCode = vCode + "<TR>";
	vCode = vCode + "<TD WIDTH='14%'><FONT class=smallBold" + this.gHeaderColor + "'>Sun</FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT class=smallBold" + this.gHeaderColor + "'>Mon</FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT class=smallBold" + this.gHeaderColor + "'>Tue</FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT class=smallBold" + this.gHeaderColor + "'>Wed</FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT class=smallBold" + this.gHeaderColor + "'>Thu</FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT class=smallBold" + this.gHeaderColor + "'>Fri</FONT></TD>";
	vCode = vCode + "<TD WIDTH='16%'><FONT class=smallBold" + this.gHeaderColor + "'>Sat</FONT></TD>";
	vCode = vCode + "</TR>";
	
	return vCode;
}

Calendar.prototype.cal_data = function() {
	//to set current day
	var vDate = new Date();
	vDate.setDate(1);
	vDate.setMonth(this.gMonth);
	vDate.setFullYear(this.gYear);

	var vFirstDay=vDate.getDay();
	var vDay=1;
	var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
	var vOnLastDay=0;
	var vCode = "";

	/*
	Get day for the 1st of the requested month/year..
	Place as many blank cells before the 1st day of the month as necessary. 
	*/

	vCode = vCode + "<TR>";
	for (i=0; i<vFirstDay; i++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>";
	}

	// Write rest of the 1st week
	for (j=vFirstDay; j<7; j++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
			"<A HREF='#' " + 
				"onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
				this.format_data(vDay) + 
				"';self.opener.dateCallBack();window.close();\">" + 
				this.format_day(vDay) + 
			"</A>" + 
			"</FONT></TD>";
		vDay=vDay + 1;
	}
	vCode = vCode + "</TR>";

	// Write the rest of the weeks
	for (k=2; k<7; k++) {
		vCode = vCode + "<TR>";

		for (j=0; j<7; j++) {
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
				"<A HREF='#' " + 
					"onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
					this.format_data(vDay) + 
					"';self.opener.dateCallBack();window.close();\">" + 
				this.format_day(vDay) + 
				"</A>" + 
				"</FONT></TD>";
			vDay=vDay + 1;

			if (vDay > vLastDay) {
				vOnLastDay = 1;
				break;
			}
		}

		if (j == 6)
			vCode = vCode + "</TR>";
		if (vOnLastDay == 1)
			break;
	}
	
	// Fill up the rest of last week with proper blanks, so that we get proper square blocks
	for (m=1; m<(7-j); m++) {
		if (this.gYearly)
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
			"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
		else
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
			"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
	}
	
	return vCode;
}

Calendar.prototype.format_day = function(vday) {
	var vNowDay = gNow.getDate();
	var vNowMonth = gNow.getMonth();
	var vNowYear = gNow.getFullYear();

	if (vday == cActiveDay && this.gMonth == cActiveMonth && this.gYear == cActiveYear)
		return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
	else
		return (vday);

}

Calendar.prototype.write_weekend_string = function(vday) {
	var i;

	// Return special formatting for the weekend day.
	for (i=0; i<weekend.length; i++) {
		if (vday == weekend[i])
			return (" BGCOLOR=\"" + weekendColor + "\"");
	}
	
	return "";
}

Calendar.prototype.format_data = function(p_day) {
	var vData;
	var vMonth = 1 + this.gMonth;
	vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
	//var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
	var vMon = Calendar.get_month(this.gMonth).substr(0,3);
	//var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
	var vFMon = Calendar.get_month(this.gMonth);
	var vY4 = new String(this.gYear);
	var vY2 = new String(this.gYear.substr(2,2));
	var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

	switch (this.gFormat) {
		case "MM\/DD\/YYYY" :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
			break;
		case "MM\/DD\/YY" :
			vData = vMonth + "\/" + vDD + "\/" + vY2;
			break;
		case "MM-DD-YYYY" :
			vData = vMonth + "-" + vDD + "-" + vY4;
			break;
		case "MM-DD-YY" :
			vData = vMonth + "-" + vDD + "-" + vY2;
			break;

		case "DD\/MON\/YYYY" :
			vData = vDD + "\/" + vMon + "\/" + vY4;
			break;
		case "DD\/MON\/YY" :
			vData = vDD + "\/" + vMon + "\/" + vY2;
			break;
		case "DD-MON-YYYY" :
			vData = vDD + "-" + vMon + "-" + vY4;
			break;
		case "DD-MON-YY" :
			vData = vDD + "-" + vMon + "-" + vY2;
			break;

		case "DD\/MONTH\/YYYY" :
			vData = vDD + "\/" + vFMon + "\/" + vY4;
			break;
		case "DD\/MONTH\/YY" :
			vData = vDD + "\/" + vFMon + "\/" + vY2;
			break;
		case "DD-MONTH-YYYY" :
			vData = vDD + "-" + vFMon + "-" + vY4;
			break;
		case "DD-MONTH-YY" :
			vData = vDD + "-" + vFMon + "-" + vY2;
			break;
		case "MONTH DD, YYYY" :
			vData = vFMon + " " + vDD  + ", " + vY4;
			break;

		case "DD\/MM\/YYYY" :
			vData = vDD + "\/" + vMonth + "\/" + vY4;
			break;
		case "DD\/MM\/YY" :
			vData = vDD + "\/" + vMonth + "\/" + vY2;
			break;
		case "DD-MM-YYYY" :
			vData = vDD + "-" + vMonth + "-" + vY4;
			break;
		case "DD-MM-YY" :
			vData = vDD + "-" + vMonth + "-" + vY2;
			break;

		default :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
	}

	return vData;
}

function Build(p_item, p_month, p_year, p_format,p_day) {
	var p_WinCal = ggWinCal;
	gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format,p_day);

	// Customize your Calendar here..
	gCal.gBGColor="white";
	gCal.gLinkColor="black";
	gCal.gTextColor="black";
	gCal.gHeaderColor="darkgreen";

	// Choose appropriate show function
	if (gCal.gYearly)	gCal.showY();
	else	gCal.show();
}

function show_calendar() {
	/* 
		p_month : 0-11 for Jan-Dec; 12 for All Months.
		p_year	: 4-digit year
		p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
		p_item	: Return Item.
	*/

	p_item = arguments[0];
	if (arguments[1] == null)
		p_month = new String(gNow.getMonth());
	else
		p_month = arguments[1];
	if (arguments[2] == "" || arguments[2] == null)
		p_year = new String(gNow.getFullYear().toString());
	else
		p_year = arguments[2];
	if (arguments[3] == null)
		p_format = "MM/DD/YYYY";
	else
		p_format = arguments[3];
	if (arguments[4] == null)
		p_day = new String(gNow.getDay());
	else
		p_day = arguments[4];
	vWinCal = window.open("", "Calendar", 
		'width=250,height=230,status=no,resizable=no,top=' + ScreenTop(250) + ',left=' + ScreenLeft(200));
	//vWinCal.document.body.bgcolor = '#EEEEEE';
	vWinCal.opener = self;
	ggWinCal = vWinCal;
	cActiveMonth=p_month;
	cActiveDay=p_day;
	cActiveYear=p_year;
	Build(p_item, p_month, p_year, p_format,p_day);
}
/*
Yearly Calendar Code Starts here
*/
function show_yearly_calendar(p_item, p_year, p_format) {
	// Load the defaults..
	if (p_year == null || p_year == "")
		p_year = new String(gNow.getFullYear().toString());
	if (p_format == null || p_format == "")
		p_format = "MM/DD/YYYY";

	var vWinCal = window.open("", "Calendar", 'scrollbars=yes,top=' + ScreenTop(200) + ',left=' + ScreenLeft(200));
	vWinCal.document.body.bgcolor = '#EEEEEE';
	vWinCal.opener = self;
	ggWinCal = vWinCal;

	Build(p_item, null, p_year, p_format);
}

function DisplayAge(spanDisplay,fldOpened,fldClosed){
		try{
			var cClosed = GetRecordVal(fldClosed.toLowerCase());
			var cOpened = GetRecordVal(fldOpened.toLowerCase());
			if(cOpened!=''){
				var dOpened = new Date(cOpened);
				if(cClosed!=''){
					var dClosed = new Date(cClosed);
				} else {
					var dClosed = new Date();
				}
				var nAge= Math.round((dClosed - dOpened) / 86400000);
				if(nAge!=1){
					spanDisplay.innerHTML=nAge + ' Days';
				} else {
					spanDisplay.innerHTML= '1 Day';
				}
			}
		} catch(e){
			spanDisplay.innerHTML='';
		}
}






























