var weekend = [0,6];
var weekendColor = "#ffcccc";
var fontface = "Arial";
var fontsize = 2;
var gNow = new Date();
var ggWinCal;
var jsFile = "calpop.js";
var	CalBGColor="#ffffff";
var	CalLinkColor="#003399";
var	CalTextColor="#003399";
var	CalHeaderColor="#000000";

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"];
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;

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;
		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 = "#ffffff";
	this.gFGColor = "#003399";
	this.gTextColor = "#003399";
	this.gHeaderColor = "#003399";
	this.gReturnItem = p_item;
}
function Calendar_get_month(monthNo) {
	return Calendar.Months[monthNo];
}
function Calendar_get_daysofmonth(monthNo, p_year) {
	if ((p_year % 4) == 0) {
		if ((p_year % 100) == 0 && (p_year % 400) != 0){
			return Calendar.DOMonth[monthNo];
		}else{
		  return Calendar.lDOMonth[monthNo];
		}
	}else{
		return Calendar.DOMonth[monthNo];
	}
}
function Calendar_calc_month_year(p_Month, p_Year, incr) {
	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_calc_month_year(p_Month, p_Year, incr) {
	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;
}

new Calendar();

Calendar.prototype.show = function() {
	var vCode = "";
	this.gWinCal.document.open();
	this.wwrite("<html>\n");
	this.wwrite("<head><title>Calendar</title>\n");
	this.wwrite("  <style type=\"text/css\">\n");
	this.wwrite("		.calDate{font-family:Arial,Helvetica,sans-serif;font-size:13px;color:#003399;text-decoration:none;position:relative;}");
	this.wwrite("		.calDateOn{font-family:Arial,Helvetica,sans-serif;font-size:13px;color:#cc0000;text-decoration:none;position:relative;}");
	this.wwrite("		.calDateOff{font-family:Arial,Helvetica,sans-serif;font-size:13px;color:#999999;}");
	this.wwrite("		.calDay{font-family:Arial,Helvetica,sans-serif;font-size:12px;color:#333333;font-weight:normal;}");
	this.wwrite("		.calMonth{font-family:Arial,Helvetica,sans-serif;font-size:13px;font-weight:bold;color:#FFFFFF;}");
	this.wwrite("		.calNav{font-family:Arial,Helvetica,sans-serif;font-size:15px;font-weight:bold;color:#FFFFFF;text-decoration:none;}");
	this.wwrite("  </style>\n");
//this.wwrite("  <s" + "cript language=\"javascript\" type=\"text\/javascript\" src=\"" + jsFile + "\"><\/scr" + "ipt>\n");
	this.wwrite("</head>\n");
	this.wwrite("<body bgcolor=\"#003399\" link=\""  + this.gLinkColor + "\" vlink=\"" + this.gLinkColor + "\" alink=\"" + this.gLinkColor + "\" text=\""  + this.gTextColor + "\" marginheight=\"0\" marginwidth=\"0\" topmargin=\"0\" leftmargin=\"0\">\n");
	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=\"253\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#003399\" align=\"center\">\n");
	this.wwrite("  <tr valign=\"middle\">\n");
	this.wwrite("    <td width=\"5\">&nbsp;</td>\n");
	this.wwrite("    <td width=\"198\" align=\"left\"><span class=\"calMonth\">" + this.gMonthName + " " + this.gYear + "</span></td>\n");
	this.wwrite("    <td width=\"20\" align=\"right\"><a class=\"calNav\" href=\"" + "javascript:window.opener.Build('" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "');\"><<\/a></td>\n");
	this.wwrite("    <td width=\"20\" align=\"right\"><a class=\"calNav\" href=\"" + "javascript:window.opener.Build('" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "');\">><\/a></td>\n");
	this.wwrite("    <td width=\"10\">&nbsp;</td>\n");
	this.wwrite("  </tr>\n");
	this.wwrite("</table>\n");
	vCode = this.getMonthlyCalendarCode();
	this.wwrite(vCode);
	this.wwrite("</body></html>");
	this.gWinCal.document.close();
}
Calendar.prototype.getMonthlyCalendarCode = function() {
	var vCode = "";
	var vHeader_Code = "";
	var vData_Code = "";
	vCode = vCode + "<table width=\"253\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"" + this.gBGColor + "\" align=\"center\">\n";
	vHeader_Code = this.cal_header();
	vData_Code = this.cal_data();
	vCode = vCode + vHeader_Code + vData_Code;
  vCode = vCode + "  <tr valign=\"middle\">\n";
  vCode = vCode + "    <td width=\"253\" height=\"1\" bgcolor=\"#003399\" colspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"250\" /></td>\n";
  vCode = vCode + "  </tr>\n";
  vCode = vCode + "</table>\n";
  vCode = vCode + "<table width=\"253\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#6699cc\" align=\"center\">\n";
  vCode = vCode + "  <tr valign=\"middle\">\n";
  vCode = vCode + "    <td width=\"5\">&nbsp;</td>\n";
  vCode = vCode + "    <td width=\"238\" align=\"left\"><a href=\"javascript:self.close();\"><img src=\"/cms/assets/buttons/close_window.gif\" width=\"74\" height=\"10\" border=\"0\"></a></td>\n";
  vCode = vCode + "    <td width=\"10\">&nbsp;</td>\n";
  vCode = vCode + "  </tr>\n";
	vCode = vCode + "</table>\n";
	return vCode;
}
Calendar.prototype.cal_header = function() {
	var vCode = "";
  vCode = vCode + "  <tr valign=\"middle\">\n";
  vCode = vCode + "    <td width=\"1\" bgcolor=\"#003399\" rowspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"157\" width=\"1\" /></td>\n";
  vCode = vCode + "    <td width=\"35\" bgcolor=\"#003399\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"35\" /></td>\n";
  vCode = vCode + "    <td width=\"1\" bgcolor=\"#003399\" rowspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"157\" width=\"1\" /></td>\n";
  vCode = vCode + "    <td width=\"35\" bgcolor=\"#003399\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"35\" /></td>\n";
  vCode = vCode + "    <td width=\"1\" bgcolor=\"#003399\" rowspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"157\" width=\"1\" /></td>\n";
  vCode = vCode + "    <td width=\"35\" bgcolor=\"#003399\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"35\" /></td>\n";
  vCode = vCode + "    <td width=\"1\" bgcolor=\"#003399\" rowspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"157\" width=\"1\" /></td>\n";
  vCode = vCode + "    <td width=\"35\" bgcolor=\"#003399\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"35\" /></td>\n";
  vCode = vCode + "    <td width=\"1\" bgcolor=\"#003399\" rowspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"157\" width=\"1\" /></td>\n";
  vCode = vCode + "    <td width=\"35\" bgcolor=\"#003399\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"35\" /></td>\n";
  vCode = vCode + "    <td width=\"1\" bgcolor=\"#003399\" rowspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"157\" width=\"1\" /></td>\n";
  vCode = vCode + "    <td width=\"35\" bgcolor=\"#003399\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"35\" /></td>\n";
  vCode = vCode + "    <td width=\"1\" bgcolor=\"#003399\" rowspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"157\" width=\"1\" /></td>\n";
  vCode = vCode + "    <td width=\"35\" bgcolor=\"#003399\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"35\" /></td>\n";
  vCode = vCode + "    <td width=\"1\" bgcolor=\"#003399\" rowspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"157\" width=\"1\" /></td>\n";
  vCode = vCode + "  </tr>\n";
  vCode = vCode + "  <tr valign=\"middle\">\n";
  vCode = vCode + "    <td width=\"35\" height=\"25\" align=\"center\"><span class=\"calDay\">Sun</span></td>\n";
  vCode = vCode + "    <td width=\"35\" height=\"25\" align=\"center\"><span class=\"calDay\">Mon</span></td>\n";
  vCode = vCode + "    <td width=\"35\" height=\"25\" align=\"center\"><span class=\"calDay\">Tue</span></td>\n";
  vCode = vCode + "    <td width=\"35\" height=\"25\" align=\"center\"><span class=\"calDay\">Wed</span></td>\n";
  vCode = vCode + "    <td width=\"35\" height=\"25\" align=\"center\"><span class=\"calDay\">Thu</span></td>\n";
  vCode = vCode + "    <td width=\"35\" height=\"25\" align=\"center\"><span class=\"calDay\">Fri</span></td>\n";
  vCode = vCode + "    <td width=\"35\" height=\"25\" align=\"center\"><span class=\"calDay\">Sat</span></td>\n";
  vCode = vCode + "  </tr>\n";
  vCode = vCode + "  <tr valign=\"middle\">\n";
  vCode = vCode + "    <td width=\"253\" height=\"1\" bgcolor=\"#003399\" colspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"250\" /></td>\n";
  vCode = vCode + "  </tr>\n";
	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 = "";
	vCode = vCode + "<tr valign=\"middle\">\n";
	for (i=0; i< vFirstDay; i++) {
		vCode = vCode + "  <td width=\"35\" height=\"25\" align=\"center\" " + this.write_weekend_string(i) + ">&nbsp;</td>\n";
	}
	// Write rest of the 1st week
	for (j=vFirstDay; j<7; j++) {
		vCode = vCode + "  <td width=\"35\" height=\"25\" align=\"center\" id=\"aId" + j + "\"" + this.write_weekend_string(j) + "><a class=\"calDate\" href=\"#\" onclick=\"self.opener.document." + this.gReturnItem + ".value='" + this.format_data(vDay) + "';self.opener.document." + this.gReturnItem +".focus() ;window.close();\">" + this.format_day(vDay) + "</a></td>\n";
		vDay=vDay + 1;
	}
	vCode = vCode + "</tr>\n";
  vCode = vCode + "<tr valign=\"middle\">\n";
  vCode = vCode + "  <td width=\"253\" height=\"1\" bgcolor=\"#003399\" colspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"250\" /></td>\n";
  vCode = vCode + "</tr>\n";
  
	// Write the rest of the weeks
	for (k=2; k<7; k++) {
		vCode = vCode + "<tr valign=\"middle\">\n";
		for (j=0; j<7; j++) {
		  vCode = vCode + "  <td width=\"35\" height=\"25\" align=\"center\" id=\"b" + k + "Id" + j + "\"" + this.write_weekend_string(j) + "><a class=\"calDate\" href=\"#\" onclick=\"self.opener.document." + this.gReturnItem + ".value='" + this.format_data(vDay) + "';self.opener.document." + this.gReturnItem +".focus() ;window.close();\">" + this.format_day(vDay) + "</a></td>\n";
			vDay=vDay + 1;
			if (vDay > vLastDay) {
				vOnLastDay = 1;
				break;
			}
		}
		if (j == 7){
			vCode = vCode + "</tr>\n";
      vCode = vCode + "<tr valign=\"middle\">\n";
      vCode = vCode + "  <td width=\"253\" height=\"1\" bgcolor=\"#003399\" colspan=\"15\"><img src=\"/cms/assets/spacer.gif\" height=\"1\" width=\"250\" /></td>\n";
      vCode = vCode + "</tr>\n";
    }
		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++) {
		vCode = vCode + "  <td width=\"35\" height=\"25\" align=\"center\" " + this.write_weekend_string(j+m) + "><span class=\"calDateOff\">" + m + "</span></td>\n";
	}
	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 ("<span class=\"calDateOn\">" + vday + "</span>");
	}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);
	gCal.gBGColor=CalBGColor;
	gCal.gLinkColor=CalLinkColor;
	gCal.gTextColor=CalTextColor;
	gCal.gHeaderColor=CalHeaderColor;
	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];
  }
	vWinCal = window.open("", "Calendar", "width=255,height=220,status=no,resizable=no,menubar=no,directories=no,dependent=yes,titlebar=no,toolbar=no,top=200,left=200");
	vWinCal.opener = self;
	ggWinCal = vWinCal;
	Build(p_item, p_month, p_year, p_format);
}
Calendar.prototype.wwrite = function(wtext) {
	this.gWinCal.document.writeln(wtext);
}
Calendar.prototype.wwriteA = function(wtext) {
	this.gWinCal.document.write(wtext);
}

