
function validateDates(objFromDate,objToDate) {

    if(document.dynpagesform.p_startdate.value == "DD-MON-YYYY")
        {
     	    document.dynpagesform.p_startdate.value = "";
        }
       if(document.dynpagesform.p_enddate.value == "DD-MON-YYYY")
		   {
          document.dynpagesform.p_enddate.value = "";
		   }

  
  objFromDate = document.dynpagesform.p_startdate;
  objToDate   = document.dynpagesform.p_enddate;
  

  return chkDatesNotNull(objFromDate,objToDate) && chkValidDate(objFromDate) && chkValidDate(objToDate)&& chkNoOfDays(objFromDate,objToDate);
} // End of validateDates

//This function allows the From & To Dates to be same day
function validateDates1(objFromDate,objToDate,objLatestToDate,objNumDays) {
  if ( chkDatesNotNull(objFromDate,objToDate) && chkValidDate(objFromDate) && chkValidDate(objToDate) && chkLatestToDate(objToDate,objLatestToDate) ) {
       var diff;
       diff = chkDatesDiff(objFromDate,objToDate);
       // Check that entered from and to dates have at least 0 or more days in between...
       if (diff >= 0) {
         objNumDays.value = diff;
         return true;
       }
       else {
         objFromDate.focus();
         alert("You entered a from date that is after the end date - please re-enter!");
         return false;    
       }
       return true;
  }    
  else {
       return false;
  }
} // End of validateDates1

function chkDatesNotNull(objFromDate,objToDate) {
  var fromDateField = objFromDate;
  var toDateField   = objToDate;
  
  if ((fromDateField.value == "") && (toDateField.value != "")) {
    alert("You did not enter a 'From' date (use format DD-MON-YYYY).");
    fromDateField.focus();
    return false;
  }
  else if ((fromDateField.value != "") && (toDateField.value == "")) {
    alert("You did not enter a 'To' date (use format DD-MON-YYYY).");
    toDateField.focus();
    return false;
  } 
  else {
     return true;
  }
} // End of chkDatesNotNull


function chkValidDate(objName) {
  var datefield = objName;
  
  fromDateField = document.dynpagesform.p_startdate.value;
  toDateField = document.dynpagesform.p_enddate.value;
  
  
  if ((fromDateField == "") && (toDateField == ""))
  {
    return true;
  }
  
  if (chkDate(objName) == false) {
    datefield.focus();
    alert("You entered an invalid date - please re-enter (use format DD-MON-YYYY)!");
    return false;
  }
  else {
    return true;
  }
} // End of chkValidDate


function chkDate(objName) {
  var intDay;
  var intMonth;
  var intYear;
  // Get integer representation of day
  intDay = getIntDay(objName);
  if (isNaN(intDay)) return false;
  // Get integer representation of month
  intMonth = getIntMonth(objName);
  if (isNaN(intMonth)) return false;
  if (intMonth == -1)  return false;
  // Get integer representation of year
  intYear = getIntYear(objName);  
  p_year = new String(intYear);
  if (isNaN(intYear)) return false;
  if (p_year.length != 4)
  {
   return false;
  }
    
  // Check valid day and month...
  if (intDay > 31 || intDay < 1) {
    return false;
  }
  if (intMonth > 12 || intMonth < 1) {
    return false;
  }
  if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intDay > 31 || intDay < 1)) {
    return false;
  }
  if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30 || intDay < 1)) {
    return false;
  }
  if (intMonth == 2) {
    if (intDay < 1) {
      return false;
    }
    if (chkLeapYear(intYear) == true) {
      if (intDay > 29) return false;
    }
    else {
      if (intDay > 28) return false;
    }
  }
  // It is a valid date...
  return true;
} // End of chkDate


function getIntDay(objName) {
  // Valid date format is DD-MON-YYYY
  var strDate = objName.value;
  var strDay  = strDate.substr(0,2);
  // Convert string representation of day into an integer
  return parseInt(strDay, 10);
} // End of getIntDay


function getIntMonth(objName) {
  // Valid date format is DD-MON-YYYY
  var intMonth = -1;
  var strDate  = objName.value.toUpperCase();
  var strMonth = strDate.substr(3,3);
  var strMonthArray = ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];
  // Convert string representation of month into an integer
  for (i = 0; i < 12; i++) {
    if (strMonth == strMonthArray[i]) {
      intMonth = i + 1;
      strMonth = strMonthArray[i];
      i = 12;
    }
  }
  return intMonth;
} // End of getIntMonth


function getIntYear(objName) {
  // Valid date format is DD-MON-YYYY
  var strDate = objName.value;
  var strYear = strDate.substr(7,4);
  // Convert string representation of year into an integer
  intYear = parseInt(strYear, 10);
  // 00 - 49 equals 2000 - 2049 and, 50 - 99 equals 1950 - 1999 respectively
 /* if (intYear >= 0 && intYear < 50) {
    intYear += 2000;
  }
  else {
    intYear += 1900;
  }
  */
  return intYear;
} // End of getIntYear


function chkLeapYear(intYear) {
  if (intYear % 100 == 0) {
    if (intYear % 400 == 0) { 
      return true;
    }
  }
  else {
    if ((intYear % 4) == 0) { 
      return true;
    }
  }
  return false;
} // End of chkLeapYear


function chkLatestToDate(objToDate,objLatestToDate) {
  // Check that entered to date is no later than yesterday
  if (chkDatesDiff(objToDate,objLatestToDate) >= 0) {
    return true;
  }
  else {
    objToDate.focus();
    alert("You entered a time period ending later than yesterday.\n No data exist for this or later end dates - please re-enter!");
    return false;
  }
} // End of chkLatestToDate

/*
function chkNoOfDays(objFromDate,objToDate,objNumDays) {
  var diff;
  diff = chkDatesDiff(objFromDate,objToDate);
  // Check that entered from and to dates have at least 2 days in between...
  if (diff > 2) {
    objNumDays.value = diff;
    return true;
  }
  else if (diff <= 0) {
    objFromDate.focus();
    alert("You entered a from date that is after the end date - please re-enter!");
    return false;    
  }
  else {
    objFromDate.focus();
    alert("You entered a too short time period, a valid time period consists of 3 days or more - please re-enter!");
    return false;
  }    
} // End of chkNoOfDays
*/


function chkNoOfDays(objFromDate,objToDate) {
  var diff;

  if(objFromDate.value == "" || objToDate.value == "")
  {
    return true;
  }
  diff = chkDatesDiff(objFromDate,objToDate);
  // Check that entered from and to dates have at least 2 days in between...
  if (diff == 0 || diff > 0) {
    return true;
  }
  if (diff <= 0) {
    objFromDate.focus();
    alert("You entered a from date that is after the end date - please re-enter!");
    return false;    
  }  
  
} // End of chkNoOfDays

function chkDatesDiff(objFromDate,objToDate) {
  var intFromDay;
  var intFromMonth;
  var intFromYear;
  var intToDay;
  var intToMonth;
  var intToYear;
  var fromDate = new Date();
  var toDate   = new Date();
  // Get integer representation of from day
  intFromDay = getIntDay(objFromDate);
  // Get integer representation of from month
  intFromMonth = getIntMonth(objFromDate);
  // Get integer representation of from year
  intFromYear = getIntYear(objFromDate);  
  // Get integer representation of to day
  intToDay = getIntDay(objToDate);
  // Get integer representation of to month
  intToMonth = getIntMonth(objToDate);
  // Get integer representation of to year
  intToYear = getIntYear(objToDate);  
  // Set current from date...
  fromDate.setYear(intFromYear);
  fromDate.setMonth(intFromMonth-1);
  fromDate.setDate(intFromDay);
  // Set current to date...
  toDate.setYear(intToYear);
  toDate.setMonth(intToMonth-1);
  toDate.setDate(intToDay);
  // Make milliseconds into days - 1000 * 60 * 60 * 24
  //return Math.floor((toDate.getTime() - fromDate.getTime()) / 86400000) + 1;
  //Removing the plus 1 as it is giving correct diff for 1 day also
  return Math.floor((toDate.getTime() - fromDate.getTime()) / 86400000);
} // End of chkDatesDiff


function validateLastDays(objFromDate,objToDate,objNumDays) {
  return validateNumber(objNumDays) && calcFromDate(objFromDate,objToDate,objNumDays);
} // End of validateLastDays


function validateNumber(objNumDays) {
  // Validate the number of days 
  var strNumDays = objNumDays.value;
  // Convert string representation of days into an integer
  var intNumDays = parseInt(strNumDays, 10);
  if (isNaN(intNumDays)) {
    objNumDays.focus();
    alert("You entered an invalid number of days: " + strNumDays + "\nPlease re-enter and submit again!");
    return false;
  }
  else if (intNumDays < 3) {
    objNumDays.focus();
    alert("You entered a too short time period, a valid time period consists of 3 days or more - please re-enter!");
    return false;    
  }
  else {
    return true;    
  } 
} // End of validateNumber



function calcFromDate(objFromDate,objToDate,objNumDays) {
  var fromDate;
  var toDate = new Date();
  var intToDay     = -1;
  var intToMonth   = -1;
  var intToYear    = -1;
  var strFromDay   = "";
  var strFromMonth = "";
  var strFromYear  = "";
  var intFromDay   = "";
  var intFromMonth = "";
  var intFromYear  = "";
  var numDays = objNumDays.value;
  // Get integer representation of to day
  intToDay = getIntDay(objToDate);
  // Get integer representation of to month
  intToMonth = getIntMonth(objToDate);
  // Get integer representation of to year
  intToYear = getIntYear(objToDate);
  // Set current to date...
  toDate.setYear(intToYear);
  toDate.setMonth(intToMonth-1);
  toDate.setDate(intToDay);
  // Make milliseconds into days - 1000 * 60 * 60 * 24
  fromDate = new Date(toDate.getTime() - (numDays - 1) * 86400000);
  intFromDay = fromDate.getDate();
  if (intFromDay >= 0 && intFromDay <= 9) 
    strFromDay = "0" + intFromDay.toString();
  else
    strFromDay = intFromDay.toString(); 
  intFromMonth = fromDate.getMonth();
  if (intFromMonth == 0)      { strFromMonth = "JAN"; }
  else if (intFromMonth == 1) { strFromMonth = "FEB"; }
  else if (intFromMonth == 2) { strFromMonth = "MAR"; }
  else if (intFromMonth == 3) { strFromMonth = "APR"; }
  else if (intFromMonth == 4) { strFromMonth = "MAY"; }
  else if (intFromMonth == 5) { strFromMonth = "JUN"; }
  else if (intFromMonth == 6) { strFromMonth = "JUL"; }
  else if (intFromMonth == 7) { strFromMonth = "AUG"; }
  else if (intFromMonth == 8) { strFromMonth = "SEP"; }
  else if (intFromMonth == 9) { strFromMonth = "OCT"; }
  else if (intFromMonth == 10){ strFromMonth = "NOV"; }
  else if (intFromMonth == 11){ strFromMonth = "DEC"; }
  if (fromDate.getYear() < 1000)
    intFromYear = fromDate.getYear() + 1900;
  else
    intFromYear = fromDate.getYear();
  strFromYear = intFromYear.toString().substr(2,2);
  objFromDate.value = strFromDay + "-" + strFromMonth + "-" + strFromYear;
  return true;
} // End of calcFromDate


// end hiding contents 



var weekend = [0,6];
var weekendColor = "#dcdcdc";
var fontface = "Verdana";
var fontsize = 2;

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) {
	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.gFormat = p_format;
	this.gBGColor = "#336699";
	this.gFGColor = "black";
	this.gTextColor = "black";
	this.gHeaderColor = "black";
	this.gReturnItem = p_item;

//	alert(this.gReturnItem);
//	alert(self.opener.document.forms[0]);
}

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>Broadband Calendar</title>");
	this.wwrite("</head>");

	this.wwrite("<body " + 
		"bgcolor=\"#FFFFFF\"" + 
		"link=\"" + this.gLinkColor + "\" " + 
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");
	this.wwriteA("<center><FONT FACE='" + fontface + "' SIZE=2 color=\"black\"><B>");
	this.wwriteA(this.gMonthName + " " + this.gYear);
	this.wwriteA("</B><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='white'><TR><TD ALIGN=center>");
// Change the Path and Image for going one Year back
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src=\"http://www.oracle.com/admin/images/a_left2.gif\" border=0 alt=\"Scroll one year back\"><\/A></TD><TD ALIGN=center>");
// Change the Path and Image for going one Month back
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src=\"http://www.oracle.com/admin/images/a_left.gif\" border=0 alt=\"Go one month back\"><\/A></TD><TD ALIGN=center>");
// Change the Path and Image for going one Month forward
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src=\"http://www.oracle.com/admin/images/a_rt.gif\" border=0 alt=\"Go one month forward\"><\/A></TD><TD ALIGN=center>");
// Change the Path and Image for going one Year forward
	this.wwrite("<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
		");" +
		"\"><img src=\"http://www.oracle.com/admin/images/a_rt2.gif\" border=0 alt=\"Scroll one year forward\"><\/A></TD></TR></TABLE><BR>");

// Get the complete calendar code for the month..
	vCode = this.getMonthlyCalendarCode();
	this.wwrite(vCode);
// Change the path and image that you want to include at the bottom of the calendar.
	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>Calendar</title>");
	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 FACE='" + fontface + "' SIZE=2><B>");
	this.wwrite("Year : " + this.gYear);
	this.wwrite("</B><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='#336699'><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 + "'" +
		");" +
		"\">>><\/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%' BGCOLOR='white'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%' BGCOLOR='white'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%' BGCOLOR='white'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%' BGCOLOR='white'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%' BGCOLOR='white'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%' BGCOLOR='white'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='16%' BGCOLOR='white'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>";
	vCode = vCode + "</TR>";
	
	return vCode;
}

Calendar.prototype.cal_data = function() {
	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++) {
		vDate.setDate(vDay);
	/*	if (vDate.getTime() < gNow.getTime()) {*/
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'><b>" + 
				"<A HREF='#' " + 
					"onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
					this.format_data(vDay) + 
					"';window.close();\">" + 
					this.format_day(vDay) + 
				"</A>" + 
				"</b></FONT></TD>";
		/*}
		else {
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'><b>" + 
					this.format_day(vDay) + 
				"</b></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++) {
			vDate.setDate(vDay);
		/*	if (vDate.getTime() < gNow.getTime()) {*/
				vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'><b>" + 
					"<A HREF='#' " + 
						"onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
						this.format_data(vDay) + 
						"';window.close();\">" + 
						this.format_day(vDay) + 
					"</A>" + 
					"</b></FONT></TD>";
/*			}
			else {
				vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'><b>" + 
						this.format_day(vDay) +
					"</b></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 == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
		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 vFMon = Calendar.get_month(this.gMonth).toUpperCase();
	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 "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) {
	var p_WinCal = ggWinCal;
	gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);

	// Customize your Calendar here..
	//gCal.gBGColor="#ffffcc";
	gCal.gBGColor="white";				
	gCal.gLinkColor="black";
	//gCal.gLinkColor="black";
	gCal.gTextColor="black";
	gCal.gHeaderColor="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 (DD-MON-YYYY)
		p_item	: Return Item
	*/

	
	p_item = arguments[0];

//	alert("startdate"+GetObj("StartDate").name);


	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 = "DD-MON-YYYY";
	else
		p_format = arguments[3];

	vWinCal = window.open("", "Calendar", "width=250,height=250,status=no,resizable=no,top=200,left=200");
	vWinCal.opener = self;
	ggWinCal = vWinCal;

	Build(p_item, p_month, p_year, p_format);
}
/*
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 = "DD-MON-YY";

	var vWinCal = window.open("", "Calendar", "scrollbars=yes");
	vWinCal.opener = self;
	ggWinCal = vWinCal;

	Build(p_item, null, p_year, p_format);
}


