

function name_values(instring) {
	
	
	var vars = new Array();
	rc = "\235";
	instring = instring.replace(/\\\;/g, rc);

	var pattern = /[a-zA-Z0-9]+\=[\/:#a-zA-Z0-9\. \235]+/gi;
	var y = instring.match(pattern);
    
	if (y) {
	for (i=0; i<y.length; i++) {
		var s = y[i].split("=");
		s[1] = s[1].replace(rc, ";");
		vars[i] = "v_" + s[0];
		eval(vars[i] + " = '" + s[1] + "'");
	}
    }
	return vars;
}

var onClickFnCode = "";
var orig_onClickFnCode = "";







function onClickFn(pday) {
alert("1");
	var re = /pday/;
	alert("2");
	onClickFnCode = orig_onClickFnCode;
	alert("3");
	onClickFnCode = onClickFnCode.replace(re, "'" + pday + "'");
	alert("4");
	eval(onClickFnCode);
	alert("5");
}



var v_CloseOnSelect, v_AppendOrReplace, v_AppendChar, v_ReturnData;
var v_InlineX, v_InlineY, v_Title, v_CurrentDate, v_AllowWeekends;
var v_Resizable, v_Width, v_Height, v_SelectAfter, v_NSHierarchy;

var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "verdana";               
var fontsize = 2;

var gNow = new Date();
var ggWinCal;           


var theLayer;
var theLayerStyle;		

var currX, currY;
var cx, cy;				
var x, y;				
var incrX, incrY;

var mDown, mUp;


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.EMonths = ["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.DOW = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

Calendar.supportedFormats = ["MM/DD/YYYY", "MM/DD/YY", "MM-DD-YYYY", "MM-DD-YY", "DD/MON/YYYY", "DD/MON/YY", "DD-MON-YYYY", "DD-MON-YY", "DD/MONTH/YYYY", "DD/MONTH/YY", "DD-MONTH-YYYY", "DD-MONTH-YY", "MONTH DD, YYYY", "DD/MM/YYYY", "DD/MM/YY", "DOW, DD-MON-YY", "DD/MM/YYYY 00:00:00"];

Calendar.count = 0;
Calendar.Format = null;


Calendar.gInitText = "Softricks.com Calendar";

function Calendar(p_item, p_WinCal, p_month, p_year, p_format, p_type) {

	
	
	
	
	

	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;
	}
	
	if (p_type == null)
		this.gType = "POPUP";		
	else
		this.gType = p_type;

	if (this.gType == "INLINE") {
		this.WHO = "";
		this.INLINE = "Calendar";	
		this.codeINLINE = "";		
	} else
		this.WHO = "window.opener.";

	this.gYear = p_year;
	this.gFormat = p_format;
	this.gBGColor = "white";
	this.gFGColor = "black";
	this.gTextColor = "black";
	this.gHeaderColor = "black";
	this.gReturnItem = p_item;
	this.gTitle = "Softricks.com Calendar";
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.get_dow = Calendar_get_dow;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;
Calendar.CreateCalendarLayer = Calendar_CreateCalendarLayer;
Calendar.Close = Calendar_Close;
Calendar.Lwwrite = Calendar_Lwwrite;
Calendar.MoveTo = Calendar_MoveTo;
Calendar.isWeekend = Calendar_isWeekend;

function Calendar_get_month(monthNo, pLanguage) {
if (!pLanguage || pLanguage=="E")
	return Calendar.EMonths[monthNo];
else
	return Calendar.Months[monthNo];
}

function Calendar_get_dow(dayNo) {
	return Calendar.DOW[dayNo];
}

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];

			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) {
		
		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) {
		
		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_isWeekend(pday) {
	var i;

	for (i=0; i<weekend.length; i++) {
		if (pday == weekend[i])
			return true;
	}
	return false;
}


new Calendar();

Calendar.prototype.setFormat = function(pFormat) {
	var j;
	for (j=0; j<Calendar.supportedFormats.length; j++) {
		if (Calendar.supportedFormats[j] == pFormat)
			Calendar.Format = pFormat;
	}
}

Calendar.prototype.getMonthlyCalendarCode = function() {
	var vCode = "";
	var vHeader_Code = "";
	var vData_Code = "";

	
	vCode = vCode + "<TABLE WIDTH='264' 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.onclickfn = function() {
	
	
	
	
	var whois = this.WHO + 
				((this.gType == "POPUP") ? 
				"document." + v_NSHierarchy : 
				"window.document." + v_NSHierarchy) + 
				this.gReturnItem + ".value";

	
	var apchar = (this.returnMode == "Replace") ? " = " : " += ";

	var retCode = "apchar = ''" +
					((this.returnMode == "Replace") ? ";" : " + ") +
					"((" + whois + " == '') ? '' : '" + this.appendChar + "');\n" +
				whois + apchar + "apchar + pday;\n" + this.WHO + 
				((this.gType == "POPUP") ? 
				"document." + v_NSHierarchy : 
				"window.document." + v_NSHierarchy) + 
				this.gReturnItem + ".focus()";


	

	if (honourOnChange = true)
	{
		var onchangeHandler = this.WHO + 
				((this.gType == "POPUP") ? 
				"document." + v_NSHierarchy : 
				"window.document." + v_NSHierarchy) + 
				this.gReturnItem + ".onchange";

		retCode = retCode + '\n/*if (' + onchangeHandler + ')\n\t' + onchangeHandler + "();\n*/";
	}

	

	return retCode;
}

Calendar.prototype.show = function() {
	var vCode = "";

	if (this.gType == "POPUP")
		this.gWinCal.document.open();

	
	this.wwrite("<html>");
	this.wwrite("<head><title>Calendar</title>");
	
	if (this.gType == "POPUP")
		this.wwrite("<script language='javascript'>" + 
			"function onClickFn(pday) {/*window.close();*/\n" +
			this.onclickfn() + "}\n<\/script>");
	else
		orig_onClickFnCode = this.onclickfn();

	this.wwrite("</head>");

	this.wwrite("<body " + 
			"link=\"" + this.gLinkColor + "\" " + 
			"vlink=\"" + this.gLinkColor + "\" " +
			"alink=\"" + this.gLinkColor + "\" " +
			"text=\"" + this.gTextColor + "\">");

	this.wwrite("<TABLE WIDTH='264' BORDER=0 CELLPADDING=0 BGCOLOR='#000099'><TR><TD>" +  
	"<TABLE BORDER=0 WIDTH='100%' CELLPADDING=1 BGCOLOR='#B7B7C7'>" +  
	"<TR><TD BGCOLOR='#000099'>" + 
	"<FONT COLOR=white FACE='" + fontface + "' SIZE=2><B>" + this.gTitle + "</B></FONT>" + 
	"</TD><TD BGCOLOR='#000099' ALIGN=RIGHT>" + 
	"<FONT COLOR=white FACE='" + fontface + "' SIZE=2><B>" + 
	"<A HREF='javascript:" +
	this.WHO + "Calendar.Close(\"" + this.gType + "\", \"" + this.INLINE + "\");' " +
	"STYLE='color:white'>" + 
	"x</A></B></FONT></TR><TR>" + 
	"<TD BGCOLOR='#B7B7C7' COLSPAN=2>");

	this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>");
	this.wwriteA(this.gMonthName + " " + this.gYear);
	this.wwriteA("</B><BR>");

	
	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 BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");

	this.wwrite("<FONT COLOR=black FACE='" + fontface + "' SIZE=2>" + 
			"[<A HREF=\"" +
			"javascript:" + this.WHO + "Build(" + 
			"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-10) + "', '" + this.gFormat + "', '" + this.gType + "'" + 
			");\"><<<<\/A>]</FONT></TD><TD ALIGN=center>");
	
	this.wwrite("<FONT COLOR=black FACE='" + fontface + "' SIZE=2>" + 
			"[<A HREF=\"" +
			"javascript:" + this.WHO + "Build(" + 
			"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "', '" + this.gType + "'" + 
			");\"><<<\/A>]</FONT></TD><TD ALIGN=center>");

	this.wwrite("<FONT COLOR=black FACE='" + fontface + "' SIZE=2>" + 
			"[<A HREF=\"" +
			"javascript:" + this.WHO + "Build(" + 
			"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "', '" + this.gType + "'" + 
			");\"><<\/A>]</FONT></TD><TD ALIGN=center>");





	this.wwrite("<FONT COLOR=black FACE='" + fontface + "' SIZE=2>" + 
			"[<A HREF=\"" +
			"javascript:" + this.WHO + "Build(" + 
			"'" + this.gReturnItem + "', '" + gNow.getMonth() + "', '" + gNow.getFullYear() + "', '" + this.gFormat + "', '" + this.gType + "'" + 
			");\">Today<\/A>]</FONT></TD><TD ALIGN=center>");

	this.wwrite("<FONT COLOR=black FACE='" + fontface + "' SIZE=2>" + 
			"[<A HREF=\"" +
			"javascript:" + this.WHO + "Build(" + 
			"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "', '" + this.gType + "'" + 
			");\">><\/A>]</FONT></TD><TD ALIGN=center>");

	this.wwrite("<FONT COLOR=black FACE='" + fontface + "' SIZE=2>" + 
			"[<A HREF=\"" +
			"javascript:" + this.WHO + "Build(" + 
			"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "', '" + this.gType + "'" + 
			");\">>><\/A>]</FONT></TD><TD ALIGN=center>");

	this.wwrite("<FONT COLOR=black FACE='" + fontface + "' SIZE=2>" + 
			"[<A HREF=\"" +
			"javascript:" + this.WHO + "Build(" + 
			"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+10) + "', '" + this.gFormat + "', '" + this.gType + "'" + 
			");\">>>><\/A>]</FONT></TD></TR></TABLE><BR>");


	
	vCode = this.getMonthlyCalendarCode();
	this.wwrite(vCode);

	this.wwrite("</TD></TR></TABLE></TD></TR></TABLE>");

	this.wwrite("</font></body></html>");
	
	if (this.gType == "POPUP")
		this.gWinCal.document.close();
		
	if (this.gType == "INLINE")
		Calendar.Lwwrite(this.codeINLINE, this.INLINE);
}

function Calendar_Close(pType, pINLINE) {
	if (pType == "POPUP")
		ggWinCal.close();
	if (pType == "INLINE")
		Calendar.Lwwrite(Calendar.gInitText, pINLINE)
}

Calendar.prototype.showY = function() {
	var vCode = "";
	var i;
	var vr, vc, vx, vy;             
	var vxf = 285;                  
	var vyf = 200;                  
	var vxm = 10;                   
	var vym;                                
	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>");

	if (this.gType == "POPUP")
		this.wwrite("<script language='javascript'>" + 
			"function onClickFn(pday) {\n" +
			this.onclickfn() + "}\n<\/script>");
	else
		orig_onClickFnCode = this.onclickfn();

	this.wwrite("</head>");

	this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");

	this.wwrite("Year : " + this.gYear);
	this.wwrite("</B><BR>");

	
	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 + "'" +
			");" +
			"\">>><\/A>]</TD></TR></TABLE><BR>");

	
	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.cal_header = function() {
	var vCode = "";

	vCode = vCode + "<TR>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='16%'><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 = "";
	
	var linkText = "";
	var linkCloseText = "";

	
	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>";
	}

	
	if (this.closeable) {
		closecodeP = ((this.gType=="POPUP") ? "window.close();" : "");
		closecodeI = "Calendar.Close(\"" + this.gType + "\", \"" + this.INLINE + "\"); ";
	} else {
		closecodeP = "";
		closecodeI = "void(0);' ";
	}

	var whois = this.WHO + 
				((this.gType == "POPUP") ? "document." : "window.document.") + 
				this.gReturnItem + ".value";

	
	for (j=vFirstDay; j<7; j++) {
		vDate.setDate(vDay);
		if ((this.gAllowWeekends == "No" && Calendar.isWeekend(j)) || 
			(vDate < v_SelectAfter)) {
					linkText = "";
					linkCloseText = "";
		} else {
			linkText = "<A HREF='javascript:" + closecodeI + "' " +
				"onClick=\"onClickFn('" + 
				
				((this.returnData == "Date") ? 
				this.format_data(vDay) : 
				this.format_dow(vDay)) + 
				
				"');" + 
				closecodeP +
				"\">";
			linkCloseText = "<\/A>";
		}

		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + 
				"><FONT SIZE='2' FACE='" + fontface + "'>" + 
				linkText + 
				this.format_day(vDay) + 
				linkCloseText + 
				"</FONT></TD>";
		vDay = vDay + 1;
	}
	vCode = vCode + "</TR>";

	
	for (k=2; k<7; k++) {
		vCode = vCode + "<TR>";

		for (j=0; j<7; j++) {
			vDate.setDate(vDay);
			if ((this.gAllowWeekends == "No" && Calendar.isWeekend(j)) || 
				(vDate < v_SelectAfter)) {
					linkText = "";
					linkCloseText = "";
			} else {
				linkText = "<A HREF='javascript:" + closecodeI + "' " +
					"onClick=\"onClickFn('" + 
				
					((this.returnData == "Date") ? 
					this.format_data(vDay) : 
					this.format_dow(vDay)) + 
				
					"');" + 
					closecodeP +
					"\">";
				linkCloseText = "<\/A>";
			}

			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + 
					"><FONT SIZE='2' FACE='" + fontface + "'>" + 
					linkText + 
					this.format_day(vDay) + 
					linkCloseText + 
					"</FONT></TD>";
			vDay = vDay + 1;

			if (vDay > vLastDay) {
				vOnLastDay = 1;
				break;
			}
		}

		if (j == 6)
			vCode = vCode + "</TR>";
		if (vOnLastDay == 1)
			break;
	}

	
	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 highDate;
	if (this.gCurrentDate != "NONE")
		highDate = this.gCurrentDate;
	else
		highDate = gNow;

	var vNowDay = highDate.getDate();
	var vNowMonth = highDate.getMonth();
	var vNowYear = highDate.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;

	
	if (Calendar.isWeekend(vday))
		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;
	var vDOW = Calendar.get_dow(new Date(vMonth + "/" + vDD + "/" + vY4).getDay());

	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;
			case "DOW, DD-MON-YY" :
				vData = vDOW + ", " + vDD + "-" + vMon + "-" + vY2;
				break;

			case "DD\/MM\/YYYY 00:00:00" :
				vData = vDD + "\/" + vMonth + "\/" + vY4 + " 00:00:00";
				break;

			default :
				vData = vDD + "\/" + vMonth + "\/" + vY4;
	}

	return vData;
}

Calendar.prototype.format_dow = 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 vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

	var vDate = new Date(vMonth + "\/" + vDD + "\/" + vY4);
	vData = Calendar.get_dow(vDate.getDay());
	
	return vData;
}


Calendar.prototype.wwrite = function(wtext) {
	if (this.gType == "POPUP")
		this.gWinCal.document.writeln(wtext);
	else {
		
		this.codeINLINE += wtext;
	}
}

Calendar.prototype.wwriteA = function(wtext) {
	if (this.gType == "POPUP")
		this.gWinCal.document.write(wtext);
	else {
		
		this.codeINLINE += wtext;
	}
}

function Calendar_CreateCalendarLayer(pLeft, pTop, pInitText) {
	
	if (pInitText == null)
		pInitText = Calendar.gInitText;
	else
		Calendar.gInitText = pInitText;

	v_InlineX = pLeft;
	v_InlineY = pTop;

	var Calendar_ID = "Calendar";

	if (isIE)
		document.writeln("<DIV ID=\"" + Calendar_ID + "\" STYLE=\"" + 
		"position:absolute;top:" + pTop + ";left:" + pLeft + ";" + 
		"\">" + pInitText + "<\/DIV>");
	else if (isNav)
		document.writeln("<DIV ID=\"" + Calendar_ID + "\" STYLE=\"" + 
		"position:absolute;top:" + pTop + ";left:" + pLeft + ";" + 
		"\">" + pInitText + "<\/DIV>");
}

function Calendar_Lwwrite(pText, pINLINE) {
	if (isIE) {
		alert(pINLINE)
		document.all[pINLINE].innerHTML = pText;
	} else if (isNav) {
		var lyr = document.layers[pINLINE].document;
		lyr.open();
		lyr.write(pText);
		lyr.close();
	}
}

function Calendar_MoveTo(pX, pY, pINLINE) {
	if (isIE) {
		document.all[pINLINE].style.top = pY;
		document.all[pINLINE].style.left = pX;
	} else if (isNav) {
		document.layers[pINLINE].top = pY;
		document.layers[pINLINE].left = pX;
	}
}


mDown = false;
mUp = false;

function click(e) {
	mUp = false;
	mDown = true;
	if (isIE) {
		
		x = event.clientX;
		y = event.clientY;
		cx = event.clientX - event.offsetX;
		cy = event.clientY - event.offsetY;
	} else if (isNav) {
		
		x = e.pageX;
		y = e.pageY;
		cx = theLayer.x;
		cy = theLayer.y;
	}
}

function unclick(e) {
	mUp = true;
	mDown = false;
}

function handleMove(e) {
	
	if (isIE) {
		
		currX = event.clientX;
		currY = event.clientY;
	} else if (isNav) {
		
		currX = e.pageX;
		currY = e.pageY;
	}
	
	incrX = currX - x;
	incrY = currY - y;

	
	if (mDown) {
		
		
		v_InlineX = cx + incrX;
		v_InlineY = cy + incrY;
		
		window.status = "DRAGGGGGG : X=" + v_InlineX + ", Y=" + v_InlineY;
		MoveLayer(v_InlineX, v_InlineY, "myLayer");
	} else
		window.status = "X=" + currX + ", Y=" + currY;
}

function CalResize() {
	
	
	v_Height = ggWinCal.innerHeight;
	v_Width = ggWinCal.innerWidth;
}

function initEvents() {
	if (isNav) {
		theLayer.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.MOUSEMOVE);
	}

	
	theLayer.onmousemove = handleMove;
	theLayer.onmousedown = click;
	theLayer.onmouseup = unclick;
	
	if (isIE) window.event.cancelBubble=true;
}

function MoveLayer(pX, pY) {
	theCSSLayer.top = pY;
	theCSSLayer.left = pX;
}

function drag_init(Leyer) {
	if (isIE) {
		theCSSLayer = document.all[Leyer].style;
		theLayer = document.all[Leyer];
	} else if (isNav) {
		theCSSLayer = document.layers[Leyer];
		theLayer = document.layers[Leyer];
	}

	initEvents();
}



function Build(p_item, p_month, p_year, p_format, p_type, p_custom) {
	
	if (p_custom && p_custom != "") {
		
		
		v_CurrentDate = "";

		var vvars = name_values(p_custom);
	} else
		v_CurrentDate = "";

	
	
	var vCurrentDate;
	if (v_CurrentDate || v_CurrentDate != "") {
		vCurrentDate = new Date(v_CurrentDate);
		p_month = vCurrentDate.getMonth();
		p_year = vCurrentDate.getFullYear().toString();
	} else
		vCurrentDate = "NONE";
	
	v_Resizable = (v_Resizable && v_Resizable != "") ? v_Resizable : "No";
	v_SelectAfter = new Date((v_SelectAfter && v_SelectAfter != "") ? v_SelectAfter : "01/01/0001");
	v_NSHierarchy = isNav ? 
					((v_NSHierarchy && v_NSHierarchy != "") ? (v_NSHierarchy + ".") : "")
					: "";

	var vHeight, vWidth;
	if (p_type == "POPUP") {
		vWidth = (v_Width && v_Width != "") ? v_Width : 295;
		
		if (isIE) vHeight = (v_Height && v_Height != "") ? v_Height : 265;
		else if (isNav) vHeight = (v_Height && v_Height != "") ? v_Height : 250;
		
		vWinCal = window.open("", "Calendar", 
				"width=" + vWidth + ",height=" + vHeight + 
				",status=no,resizable=" + v_Resizable);
		vWinCal.opener = self;
		ggWinCal = vWinCal;
		var p_WinCal = ggWinCal;

		if (isNav) ggWinCal.captureEvents(Event.RESIZE);
		ggWinCal.onresize = CalResize;
	}

	gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format, p_type);
	
	gCal.gCurrentDate = vCurrentDate;
	gCal.gAllowWeekends = 
		(v_AllowWeekends && v_AllowWeekends != "" &&  
		v_AllowWeekends == "Yes") ? "Yes" : "No";

	
	
	gCal.gBGColor="white";
	gCal.gLinkColor="black";
	gCal.gTextColor="black";
	gCal.gHeaderColor="darkgreen";
	
	gCal.closeable = v_CloseOnSelect ? 
		((v_CloseOnSelect == "Yes") ? true : false)
		: false;

	gCal.returnMode = v_AppendOrReplace ?
		v_AppendOrReplace : "Replace";

	gCal.returnData = v_ReturnData ?
		v_ReturnData : "Date";

	
	gCal.appendChar = (gCal.returnMode == "Append") ?
		v_AppendChar ? v_AppendChar : ";" 
		: "";
					
	
	
	
	gCal.InlineX = v_InlineX ? v_InlineX : 100;
	gCal.InlineY = v_InlineY ? v_InlineY : 100;
	
	
	if (gCal.gType == "INLINE") {
		Calendar.MoveTo(gCal.InlineX, gCal.InlineY, gCal.INLINE);
	}

	gCal.gTitle = v_Title ? v_Title : gCal.gMonthName + "/" + gCal.gYear;
	

	
	if (gCal.gYearly)	gCal.showY();
	else	gCal.show();

	if (gCal.gType == "INLINE") {
		
		drag_init(gCal.INLINE);
	}
}



function show_calendar() {
	

	p_item = arguments[0];
	if (arguments[1] == null)
		p_month = new String(gNow.getMonth());
	else
		p_month = (typeof(arguments[1]) == "number") ? 
						arguments[1].toString() 
						: 
						arguments[1];
	if (arguments[2] == "" || arguments[2] == null)
		p_year = new String(gNow.getFullYear().toString());
	else
		p_year = (typeof(arguments[2]) == "number") ? 
						arguments[2].toString() 
						: 
						arguments[2];
	if (arguments[3] == null)
		p_format = "DD/MM/YYYY";
	else
		p_format = (typeof(arguments[3]) == "string") ? 
						arguments[3] 
						: 
						"DD/MM/YYYY";
	if (arguments[4] == null)
		p_type = "POPUP";
	else
		p_type = (typeof(arguments[4]) == "string" && 
					(arguments[4] == "POPUP" || arguments[4] == "INLINE")) ?
						arguments[4]
						:
						"POPUP";
	if (arguments[5] == null)
		p_custom = "CloseOnSelect=Yes;AppendOrReplace=Replace;AppendChar=';';ReturnData=Date;Title=Select a Date;AllowWeekends=Yes;Resizable=No";
	else
		p_custom = typeof(arguments[5]) == "string" ?
					arguments[5]
					:
					"CloseOnSelect=Yes;AppendOrReplace=Replace;AppendChar=';';ReturnData=Date;Title=Select a Date;AllowWeekends=Yes;Resizable=No";

	Build(p_item, p_month, p_year, p_format, p_type, p_custom);
}



function show_yearly_calendar(p_item, p_year, p_format) {
	
	if (p_year == null || p_year == "")
		p_year = new String(gNow.getFullYear().toString());
	else
		p_year = (typeof(p_year) == "number") ?
					p_year.toString()
					:
					p_year;

	if (p_format == null || p_format == "")
			p_format = "MM/DD/YYYY";

	var vWinCal = window.open("", "Calendar", "scrollbars=yes");
	vWinCal.opener = self;
	ggWinCal = vWinCal;

	Build(p_item, null, p_year, p_format);
}
function lengthcheck(temp,size){
	temp.value = temp.value + ' '
	var arr = temp.value.split(' ')
	var str = ''
	for (i = 0 ; i < arr.length - 1;i++){
		if (arr[i].length > 49){
			alert("The following string is too long and is being deleted:- " + arr[i])
		}else{
			if (i == 0 ){
				str = arr[i] 
			}else{
				str = str + ' ' + arr[i]
			}
		}
	}
	temp.value = str
	
	if (temp.value.length > size){
		temp.value = temp.value.substring(0,size );
		size = size + 1
		alert("Max. length allowed in textareas is " + size + " characters. String truncated.");
	}
}
var one_day=1000*60*60*24
var one_month=1000*60*60*24*30
var one_year=1000*60*60*24*30*12
function displayage(db,tb){
	
	yr = document.getElementById(db).value.split("/")[2]
	mon = document.getElementById(db).value.split("/")[1]
	day = document.getElementById(db).value.split("/")[0]
	round = "rounddown";
	decimal = 0;
	today=new Date()
	var pastdate=new Date(yr, mon-1, day)

	var countunit
	var decimals=decimal
	var rounding=round

	unit = "years";
	countunit=unit
	finalunit=(countunit=="days")? one_day : (countunit=="months")? one_month : one_year
	decimals=(decimals<=0)? 1 : decimals*10

	yearspast=today.getFullYear()-yr-1
	tail=(today.getMonth()>mon-1 || today.getMonth()==mon-1 && today.getDate()>=day)? 1 : 0
	pastdate.setFullYear(today.getFullYear())
	pastdate2=new Date(today.getFullYear()-1, mon-1, day)
	tail=(tail==1)? tail+Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals : Math.floor((today.getTime()-pastdate2.getTime())/(finalunit)*decimals)/decimals
	document.getElementById(tb).value = yearspast+tail+" "+countunit
	
	yr = document.getElementById(db).value.split("/")[2]
	mon = document.getElementById(db).value.split("/")[1]
	day = document.getElementById(db).value.split("/")[0]
	round = "rounddown";
	decimal = 0;
	today=new Date()
	var pastdate=new Date(yr, mon-1, day)

	var countunit
	var decimals=decimal
	var rounding=round

	unit = "months";
	countunit=unit
	finalunit=(countunit=="days")? one_day : (countunit=="months")? one_month : one_year
	decimals=(decimals<=0)? 1 : decimals*10

	if (today.getMonth()>mon-1){
		document.getElementById(tb).value = document.getElementById(tb).value + " " + (today.getMonth() + 1 - Number(mon)) + " months"
	}else if(today.getMonth()<mon-1){
		document.getElementById(tb).value = document.getElementById(tb).value + " " + (12 - Number(mon) + today.getMonth() + 1) + " months"
	}
	
	
	
}
function displayMonth(db){
	
	yr = document.getElementById(db).value.split("/")[2]
	mon = document.getElementById(db).value.split("/")[1]
	day = document.getElementById(db).value.split("/")[0]
	round = "rounddown";
	decimal = 0;
	today=new Date()
	var pastdate=new Date(yr, mon-1, day)

	var countunit
	var decimals=decimal
	var rounding=round

	unit = "months";
	countunit=unit
	finalunit=(countunit=="days")? one_day : (countunit=="months")? one_month : one_year
	decimals=(decimals<=0)? 1 : decimals*10

	if (today.getMonth()>=mon-1){
		return (today.getMonth() + 1 - Number(mon)) 
	}else if(today.getMonth()<mon-1){
		return (12 - Number(mon) + today.getMonth() + 1) 
	}
	
	
	
}
function displayYears2(db){
	
	yr = document.getElementById(db).value.split("/")[2]
	mon = document.getElementById(db).value.split("/")[1]
	day = document.getElementById(db).value.split("/")[0]
	round = "rounddown";
	decimal = 0;
	today=new Date()
	var pastdate=new Date(yr, mon-1, day)

	var countunit
	var decimals=decimal
	var rounding=round

	unit = "years";
	countunit=unit
	finalunit=(countunit=="days")? one_day : (countunit=="months")? one_month : one_year
	decimals=(decimals<=0)? 1 : decimals*10

	yearspast=today.getFullYear()-yr-1
	tail=(today.getMonth()>mon-1 || today.getMonth()==mon-1 && today.getDate()>=day)? 1 : 0
	pastdate.setFullYear(today.getFullYear())
	pastdate2=new Date(today.getFullYear()-1, mon-1, day)
	tail=(tail==1)? tail+Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals : Math.floor((today.getTime()-pastdate2.getTime())/(finalunit)*decimals)/decimals
	return yearspast+tail
	
	}
function displayYears(db,tb){
	
	yr = document.getElementById(db).value.split("/")[2]
	mon = document.getElementById(db).value.split("/")[1]
	day = document.getElementById(db).value.split("/")[0]
	round = "rounddown";
	decimal = 0;
	today=new Date()
	var pastdate=new Date(yr, mon-1, day)

	var countunit
	var decimals=decimal
	var rounding=round

	unit = "years";
	countunit=unit
	finalunit=(countunit=="days")? one_day : (countunit=="months")? one_month : one_year
	decimals=(decimals<=0)? 1 : decimals*10

	yearspast=today.getFullYear()-yr-1
	tail=(today.getMonth()>mon-1 || today.getMonth()==mon-1 && today.getDate()>=day)? 1 : 0
	pastdate.setFullYear(today.getFullYear())
	pastdate2=new Date(today.getFullYear()-1, mon-1, day)
	tail=(tail==1)? tail+Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals : Math.floor((today.getTime()-pastdate2.getTime())/(finalunit)*decimals)/decimals
	document.getElementById(tb).value = yearspast+tail
	
	}
	
function confirmDelete(){
	return(confirm("Are you sure you want to delete this record?"));
}


function setDate(stdate,mths,enddate){
	//alert("hi")
	if (document.getElementById(stdate).value != ""){
	yr = document.getElementById(stdate).value.split("/")[2]
	mon = document.getElementById(stdate).value.split("/")[1]
	day = document.getElementById(stdate).value.split("/")[0]
	
	var startdate=new Date(yr, mon-1, day)
	if (Number(startdate.getMonth()) + Number(document.getElementById(mths).value) > 11 ){
		//alert(startdate.getDate() + "/" + startdate.getMonth() + 2 + "/" + startdate.getFullYear())
		//alert(startdate.getMonth())
		//alert(startdate.getMonth() + document.getElementById(mths).value)
		yr = Number(yr) + 1
		mon = Number(startdate.getMonth()) + Number(document.getElementById(mths).value) - 12 
	}else{
	//alert("else")
		mon = Number(startdate.getMonth()) + Number(document.getElementById(mths).value)
	}
	var enddte=new Date(yr, mon, day)
	mon = Number(enddte.getMonth()) + 1 
	//alert(enddte.getDate() + "/" + mon + "/" + enddte.getFullYear())
	document.getElementById(enddate).value = enddte.getDate() + "/" + mon + "/" + enddte.getFullYear()
	}
}

function pensionYears(){
	if ( (Number(document.getElementById("txtTransferedMonth").value) - Number(document.getElementById("txtNonPenMonth").value) + Number(document.getElementById("txtPurchasedMonth").value) + Number(displayMonth('txtDateJoined')))%12 < 0 ){
		document.getElementById("txtTotalYear").value = Number(document.getElementById("txtTransferedYear").value) - Number(document.getElementById("txtNonPenYear").value) + Number(document.getElementById("txtPurchasedYear").value) + Number(displayYears2('txtDateJoined')) + Math.floor((Number(document.getElementById("txtTransferedMonth").value) - Number(document.getElementById("txtNonPenMonth").value) + Number(document.getElementById("txtPurchasedMonth").value) + Number(displayMonth('txtDateJoined')))/12) //- 1
		document.getElementById("txtTotalMonth").value = 12 + (Number(document.getElementById("txtTransferedMonth").value) - Number(document.getElementById("txtNonPenMonth").value) + Number(document.getElementById("txtPurchasedMonth").value) + Number(displayMonth('txtDateJoined')))%12
	}else{
		document.getElementById("txtTotalYear").value = Number(document.getElementById("txtTransferedYear").value) - Number(document.getElementById("txtNonPenYear").value) + Number(document.getElementById("txtPurchasedYear").value) + Number(displayYears2('txtDateJoined')) + Math.floor((Number(document.getElementById("txtTransferedMonth").value) - Number(document.getElementById("txtNonPenMonth").value) + Number(document.getElementById("txtPurchasedMonth").value) + Number(displayMonth('txtDateJoined')))/12)
		document.getElementById("txtTotalMonth").value = (Number(document.getElementById("txtTransferedMonth").value) - Number(document.getElementById("txtNonPenMonth").value) + Number(document.getElementById("txtPurchasedMonth").value) + Number(displayMonth('txtDateJoined')))%12
	}
}
function calvisible(check,cal,tb){
	//alert(document.getElementById("rdbWorkPermit_0").checked)
	if(document.getElementById(check).checked){
		document.getElementById(cal).disabled=false;
		document.getElementById(tb).disabled=false;
		document.getElementById(tb).style.background = "#A5BAC4"
	}else{
		document.getElementById(cal).disabled=true;
		document.getElementById(tb).disabled=true;
		document.getElementById(tb).style.background = "gray"
	}
		
	}
function enableDisable(check,tb){
	if(document.getElementById(check).checked){
		document.getElementById(tb).disabled=false;
		document.getElementById(tb).style.background = "#A5BAC4"
	}else{
		document.getElementById(tb).disabled=true;
		document.getElementById(tb).style.background = "gray"
	}
}
function contribVal(){
	document.getElementById("txtValueContributed").value = (document.getElementById("txtEmpContrib").value / 100) * document.getElementById("salary").value
}


function select_deselectAll(chkVal, idVal) 
{ 

    var frm = document.forms[0];
   
    // Loop through all elements
    var objTemp;
    for (i=0; i<frm.length; i++) 
    {
        objTemp=frm.elements[i];
        // Look for our Header Template's Checkbox
        if (idVal.indexOf ('CheckAll') != -1) 
        {
 
            // Check if main checkbox is checked, then select or deselect datagrid checkboxes 
            if(chkVal == true) 
            {
             if(objTemp.name.indexOf('CheckDelete')!=-1)
               {
                frm.elements[i].checked = true;
                }
            } 
            else 
            {
                 if(objTemp.name.indexOf('CheckDelete')!=-1)
               {
                frm.elements[i].checked = false;
                }
            }
         } 
         
         
            // Work here with the Item Template's multiple checkboxes
                else if (idVal.indexOf ('CheckDelete') != -1) 
        {
            // Check if any of the checkboxes are not checked, and then uncheck top select all checkbox
         if(objTemp.name.indexOf('CheckAll')!=-1)
          {
         
                frm.elements[i].checked = false; //Uncheck main select all checkbox
            }
        }
    }

} 

function ValidateTextBox(txtBox,strMessage)
{

if(txtBox.value=="")
{
alert(strMessage);
return false

}
}


   
function textKey(form,element){

supportsKeys = true
calcCharLeft(form,element)
}


