		var blnFocus = false;
		var blnValid = false;
		
		var intLen = 0;
		
		var EMPTY_STRING = "";
		var INDENTION = "     ";
		var CRLF = "\n\r";
		
		var strCriteria = new String(EMPTY_STRING);
		var strMessage = new String(EMPTY_STRING);
		var strMissingInfo = new String(EMPTY_STRING);
		var strRedirect = "http://www.mahillconsulting.com";
		var strSearch = new String(EMPTY_STRING);
		var strTemp = new String(EMPTY_STRING);
		
/*------------------------------------------------------------------------
Control Functions
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
Other Functions
------------------------------------------------------------------------*/
    	function Body_onLoad() {	/*
Creator:		Leah Nolan
Created:		11/01/2007
Purpose:		Loads the startup page for the application and redirects to secure pages
Arguments:		N/A		*/
		    var strName = new String(EMPTY_STRING);
    		
    		var strNewName = new String(window.location.href);
		    
		    var blnSecure = false;

			if (strNewName == "http://www.mytaxaccess.com") {
				window.location.href = "https://www.mahillconsulting.com/TaxAccess/";
				return;
			}
    		
		    strName = GetPath(strNewName, true);
		    strName = strName.toLowerCase();
		    
    		if (strNewName.search("localhost") == -1) {
		        switch (strName) {
	            case !strName:
	            case EMPTY_STRING:
	                strName = "default.aspx";
	                blnValid = false;

                    break;
                                		
		        case "default.aspx": 
                    if (strNewName.search("IncomeTax") == 0) {
	                    blnSecure = true;
                    }
                    
                    break;
                                       
                case "payments.aspx":
	            case "login.aspx":
	                /*alert("strName = " + strName + CRLF+ "strNewName = " + strNewName + CRLF + 
                    "Location = " + strNewName.search("localhost") + CRLF + "Secure = " + strNewName.search("https:") + 
                    CRLF + "Unsecure = " + strNewName.search("http:")); */
                
		            blnSecure = true;
        		       
	            default:
	                break;
                }  
                   
    	        if ((strNewName.search("http:") == 0) && (blnSecure == true) && (blnValid == false)) {
                        strNewName = strNewName.replace("http:", "https:");
                        
		                blnValid = true;
		        } else {
		            if ((strNewName.search("https:") == 0) && (blnSecure == false) && (blnValid == false)) {
		                strNewName = strNewName.replace("https:", "http:");
    		            
		                blnValid = true;
		            } 
		        }
    		    
                /*alert("strName = " + strName + CRLF+ "strNewName = " + strNewName + CRLF + 
                "Location = " + strNewName.search("localhost") + CRLF + "Secure = " + strNewName.search("https:") + 
                CRLF + "Unsecure = " + strNewName.search("http:")); */
            
    		    if (blnValid == true) window.location.href = strNewName; 
    		} 
	    }
	    
		function calcPayment(intMethod) {	/*
Creator:		Leah Nolan
Created:		05/24/2004
Purpose:		Adds the 4.00% transaction fee for credit/debit card payments or $2.00 for eChecks
Arguments:	intMethod
                        "C" =  credit card/debit card
                        "K" = check			*/
			var intRate = 0;
			
			blnValid = true;
			
			with (document.forms(0)) {
				strTemp = amount.value;
				
				intRate = Math.abs(strTemp);
				
				switch (intMethod) {
				case "C":				    
				    intRate = intRate + (intRate * .04);
				    
				    break;
				case "K":
				    intRate = intRate + 2.00;
				    break;
				default:
				    break;
                }
                
                intRate = fix(intRate, 2);
                
				amount.value = intRate;
			}
			
			blnValid = SetStatus();
			
			return blnValid;
		}

		function ClearScreen() {	/*
Creator:		Leah Nolan
Created:		04/01/2004
Purpose:		Resets the current screen
Arguments:		N/A
Returns:		Always returns false so that the form is not submitted.		*/	
			window.location.href = window.location.href;
			
			return false;
		}
		
		function CloseMe() {
			window.parent.close();
			
			return true;
		}

		function fix(fixNumber, decimalPlaces) {	/*
Creator:		Wrox		*/
			var div = Math.pow(10, decimalPlaces);
			
			fixNumber = Math.round(fixNumber * div) / div;
			
			return fixNumber;
		}

		function isFormat(frmObj, intPattern) {	/*
Creator:		Leah Nolan
Created:		05/27/2004
Purpose:		This function accepts a string variable and verifies if it is in the
					proper format. 
Arguments:		frmObj:	object and value being validated
				intPattern:	indicates which pattern is being used to verify format
					0-1:	Date - validates format matching either mm-dd-yyyy or mm/dd/yyyy; then
								it checks to ensure number of days correspond to the month
					2-3:	Zip Code
					4:		Phone number
					5:		GPA
					6:		Email address
Returns:		true if a valid, false if not. */
			var datePat1 = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
			var datePat2 = /^(\d{1,4})(\/|-)(\d{1,2})(\/|-)(\d{2})$/;
			var zipPat1 = /^(\d{5})(-)(\d{4})$/;
			var zipPat2 = /^(\d{5})$/;
			var phonePat1 = /^(\d{3})(-)(\d{3})(-)(\d{4})$/;
			var phonePat2 = /^(\()(\d{3})(\))(\d{3})(-)(\d{4})$/;
			var gpaPat = /^(\d{1})(.)(\d{2})$/;
			var emailPat = /^(\w{2,})([@])(\w{2,})([.])(\w{2,4})$/;
			
			var arrMessage = new Array(7);
			
			var strTmp = new String(EMPTY_STRING);
			
			var blnFound = false;
			
			arrMessage[0] = "Please enter a valid date as either mm/dd/yyyy or mm-dd-yyyy.";
			arrMessage[1] = arrMessage[0];
			arrMessage[2] = "Please enter a valid zip code as either nnnnn-nnnn or nnnnn.";
			arrMessage[3] = arrMessage[2];
			arrMessage[4] = "Please enter a valid phone number as either (nnn)nnn-nnnn or nnn-nnn-nnnn.";
			arrMessage[5] = arrMessage[4];
			arrMessage[6] = "Please enter a valid GPA as n.nn.";
			arrMessage[7] = "Please enter a valid email address.";
			
			blnValid = true;
			
			strMissingInfo = EMPTY_STRING;
			
			with (document.forms(0)) {
				if ((!frmObj) || (frmObj.value == EMPTY_STRING)) {
					var matchArray = new Array(1);
					
					matchArray[0] = intPattern;
					matchArray[1] = intPattern;
				} else {
					strTemp = frmObj.value;
					intLen = strTemp.length;
					
					switch (intPattern) {
					case 0:
					case 1:
						if (intPattern == 1) {
							var matchArray = strTemp.match(datePat1);
						} else {
							var matchArray = strTemp.match(datePat2);
						}
						
						if (matchArray != null) {
							if (intPattern == 1) { // parse date into variables
								month = matchArray[1];
								day = matchArray[3];
								year = matchArray[5];
							} else {
								year = matchArray[1]; 
								month = matchArray[3]; 
								day = matchArray[5];
							}
							
							if (month < 1 || month > 12) blnValid = false; // check month range
							
							if (day < 1 || day > 31) blnValid = false;
							
				//Check valid number of days per month
							if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) blnValid = false;
							
							if (month == 2) { // check for february 29th
								var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
								
								if (day > 29 || (day == 29 && !isleap)) blnValid = false;
							}
						}
						
						break;
						
					case 2:
					case 3:
						if (intLen > 5) {
							var matchArray = strTemp.match(zipPat1);
						} else {
							var matchArray = strTemp.match(zipPat2);
						}
						
						break;
						
					case 4:
					case 5:
						if (intLen < 13) {
							var matchArray = strTemp.match(phonePat1);
						} else {
							var matchArray = strTemp.match(phonePat2);
						}
						break;
					
					case 6:
						var int1 = 0;
						var int2 = 0;
						
						if (strTemp == EMPTY_STRING) {
							blnValid = true;
						} else {
							var matchArray = strTemp.match(gpaPat);
						
							if (matchArray != null) {
								if (matchArray[2] != ".") {
									matchArray = null;
								} else {
									int1 = Math.abs(matchArray[1]);
									int2 = Math.abs(matchArray[3]);
								
									if ((int1 > 4) || ((int1 == 4) && (int2 > 0))) {
										matchArray = null;
										arrMessage[intPattern] = "Please enter a GPA on a 4.00 scale.";
									} else {			
										if (int1 < 2) {
											strCriteria = "Please note that a GPA below 3.00 may disqualify you from " +
															"receiving an interview or a scholarship.";
											alert(strCriteria);									
										}
									}
								}
							}
						}
						break;
						
					case 7:
						var matchArray = strTemp.match(emailPat);
						
						break;
						
					default:
						var matchArray = new Array(1);
						matchArray[0] = intPattern;
						matchArray[1] = intPattern;

						break;
					}
				}
					
				if (matchArray == null) {
					blnValid = false;
					alert(arrMessage[intPattern]);
					frmObj.focus();
				}
			}
			
			return blnValid;
		}
		
		function SetStatus(strText) {	/*
Creator:		Leah Nolan
Created:		04/01/2004
Purpose:		Display text in status bar on MouseOver and Click events
Arguments:		strText - Text to display in status bar	*/
			if ((!strText) || (strText == EMPTY_STRING) || (strText == "undefined")) {
				strText = window.defaultStatus;
			}

			window.status = strText;
			
			return true;
		}
			
/*	******************************************************************************************
	CALENDAR CONTROL CODE
	Originally created for an external application by Kedar R. Bhave (softricks@hotmail.com)

	Added by:			Leah Nolan
	Added on:			04/01/2004
	Purpose:			Mahill will use the date picker to minimize users entering invalid dates.
	Revisions made:		1)	Removed references to Navigator since Mahill standard is IE;
						2)	Added blnValid where applicable to each return statement 
							to be consistent with rest of code. 
	*******************************************************************************************/
	var weekend = [0,6];
	var weekendColor = "#E0E0E0";
	var fontface = "Trebuchet MS";
	var fontsize = 3;
	
	var gToday = new Date();
	var ggWinCal;
	
// Data added by us
	var allowPast = true;
	var gNow = null;
	var gDigits = "0123456789";

	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 hideLink(vDay, vDate) {
		if (allowPast == true) return false;
		
		if (vDate.getYear() > gNow.getYear()) return false;
	  
		if (vDate.getYear() < gNow.getYear()) return true;
	 
// We are dealing with current year....	 
		if (vDate.getMonth() > gNow.getMonth()) return false;
	  
		if (vDate.getMonth() < gNow.getMonth()) return true;
	 
// We are dealing with current month
		if (vDay < gNow.getDate()) return true;
	  	
		return false;
	}
	
	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 = "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_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;
	}
	
	Calendar.prototype.getMonthlyCalendarCode = function() {
		var vCode = "";
		var vHeader_Code = "";
		var vData_Code = "";
		
// Begin Table Drawing code here..
		vCode = vCode + "<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=2 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>Calendar</title>");
		this.wwrite("</head>");
	
		this.wwrite("<body  onLoad='self.focus();'" + 
			"link=\"" + this.gLinkColor + "\" " + 
			"vlink=\"" + this.gLinkColor + "\" " +
			"alink=\"" + this.gLinkColor + "\" " +
			"text=\"" + this.gTextColor + "\">");
		this.wwriteA("<center><FONT FACE='" + fontface + "' SIZE=2><B>");
		this.wwriteA(this.gMonthName + " " + this.gYear);
		this.wwriteA("</B></center>");
	
// 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 ALIGN='CENTER' BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR='#FFFFFF'><TR><TD ALIGN=center>");
		
		if (allowPast) {
			this.wwrite("<A HREF=\"" +
				"javascript:window.opener.Build(" + 
				"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
				");" +
				"\"><img src='..\/images\/btnPrevYr.gif' alt='Previous Year' border='0'><\/A></TD><TD ALIGN=center>");
			this.wwrite("<A HREF=\"" +
				"javascript:window.opener.Build(" + 
				"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
				");" +
				"\"><img src='..\/images\/btnPrevMo.gif' alt='Previous Month' border='0'><\/A></TD><TD ALIGN=center>");
		}
		
		this.wwrite("<A HREF=\"" +
			"javascript:window.opener.Build(" + 
			"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
			");" +
			"\"><img src='..\/images\/btnNextMo.gif' alt='Next Month' border='0'><\/A></TD><TD ALIGN=center>");
		this.wwrite("<A HREF=\"" +
			"javascript:window.opener.Build(" + 
			"'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
			");" +
			"\"><img src='..\/images\/btnNextYr.gif' alt='Next Year' border='0'><\/A></TD></TR></TABLE>");
	
// 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 = 25;			// Y-margin
		
		if (isIE) vym = 75;
		
		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 onLoad='self.focus();' " + 
			"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>");
	
// 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>");

		if (allowPast) {
			this.wwrite("[<A HREF=\"" +
				"javascript:window.opener.Build(" + 
				"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
				");" +
				"\"><img src='..\/images\/btnPrevYr.gif' alt='Previous Year' border='0'><\/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\/btnNextYr.gif' alt='Next Year' border='0'><\/A>]</TD></TR></TABLE>");
	
// 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 + "\">");
		
			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>");
		}
	
		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 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 = "";
	
/*		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 align='center' WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'>&nbsp</FONT></TD>";
		}
		
// Write rest of the 1st week
		for (j=vFirstDay; j<7; j++) {
			vCode = vCode + "<TD align='center' WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>";

			if (hideLink(vDay,vDate)) {
				vCode = vCode + vDay;
			} else {
				vCode = vCode + "<A HREF='#' " + 
					"onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
					this.format_data(vDay) + 
					"';window.close();\">" + 
					this.format_day(vDay) + 
				"</A>";
			}
			
			vCode = vCode + "</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 align='center' WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>";
				
				if ( hideLink(vDay,vDate)) {
				 vCode = vCode + vDay;
				} else {
					vCode = vCode + "<A HREF='#' " + 
						"onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
						this.format_data(vDay,vDate) + 
						"';window.close();\">" + 
						this.format_day(vDay) + "</A>";
				}
				vCode = vCode +	"</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 align='center' WIDTH='14%'" + this.write_weekend_string(j+m) + 
				"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>&nbsp;</FONT></TD>";
			else
				vCode = vCode + "<TD align='center' 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);
		var vY4 = new String(this.gYear);
		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 getDateFromString(p_datestr) {
// accepts mm/dd/yyyy or mm/dd
		var newstr;
		var vMon;
		var vDay;
		var vYear;
		var i;
		
// try it first
		var vDate = new Date( p_datestr );

		if (isNaN(vDate.getTime()) == false) return vDate;
		
		if (p_datestr == null || p_datestr.length <= 0) return null;
	
// trim the value
		newstr = EMPTY_STRING;
		for (i=0; i < p_datestr.length; i++) {
		  var ch = p_datestr.charAt(i);

		  if (ch != " ") {
			 if (gDigits.indexOf(ch) >= 0) {
			   newstr += ch;
			 }
			 else if (ch == "-" || ch == "/" || ch == ".")
			   newstr += "\/";
			 }
		}
		
		if (newstr.length <= 0) return null;
		   
// get the month
		var firstndx = newstr.indexOf("\/");
		if (firstndx <= 0 || firstndx >= (newstr.length-1)) return null;
		  
		vMon = newstr.substring(0,firstndx);
		var secondndx = newstr.indexOf("\/", firstndx+1);
		if (secondndx < 0) secondndx = newstr.length;
		
		vDay = newstr.substring(firstndx+1,secondndx);
		if (secondndx >= (newstr.length-1)) {
		  vYear = gToday.getFullYear().toString();
		} else {
		  vYear = newstr.substring(secondndx+1);
		  if (vYear.length > 4) return null;
		  if (vYear.length < 4) vYear = "" + (parseInt(vYear,10) + 2000);
		}
		
		vDate = new Date();
		vDate.setYear( parseInt(vYear,10));
		vDate.setMonth( parseInt(vMon,10)-1 );
		vDate.setDate( parseInt(vDay,10));
		
		return vDate;
	}
	
	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="white";
		gCal.gLinkColor="black";
		gCal.gTextColor="black";
		gCal.gHeaderColor="darkgreen";
//		gCal.gHeaderColor="#31428C";
	
// Choose appropriate show function
		if (gCal.gYearly)	gCal.showY();
		else	gCal.show();
	}
	
	function show_calendar() { /*
	argument[0] =	Name of object where data is to be returned.
	argument[1] =	true - allow date to be set prior to today
					false - do not allow date to be set prior to today
	argument[2] =	Date portion of selected date
	argument[3] =	Month portion of selected date
	argument[4] =	Year portion of selected date
	argument[5] =	Format date is to be returned
				
	p_item	 : Return Item.
	p_datenow: String representing the selected date, or null for today. Format: same as p_format
	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 = arguments[0];
		
		if (arguments[2] != null) gNow = getDateFromString(arguments[2]);
		if (gNow == null) gNow = gToday;
		
		if (arguments[3] == null)
			p_month = new String(gNow.getMonth());
		else
			p_month = arguments[2];
			
		if (arguments[4] == EMPTY_STRING || arguments[3] == null)
			p_year = new String(gNow.getFullYear().toString());
		else
			p_year = arguments[3];
			
		if (arguments[5] == null)
			p_format = "MM/DD/YYYY";
		else
			p_format = arguments[5];
		
		if ((!arguments[1]) || (arguments[1] != null && arguments[1] == false)) allowPast = false;
		  
		vWinCal = window.open(EMPTY_STRING, "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);
	}

	function show_yearly_calendar(p_item, p_year, p_format) {
		// Load the defaults..
		if (p_year == null || p_year == EMPTY_STRING) p_year = new String(gNow.getFullYear().toString());
		
		if (p_format == null || p_format == EMPTY_STRING) p_format = "MM/DD/YYYY";
	
		var vWinCal = window.open(EMPTY_STRING, "Calendar", "scrollbars=yes");
		vWinCal.opener = self;
		ggWinCal = vWinCal;
	
		Build(p_item, null, p_year, p_format);
	}

/***********************************************
* Switch Content script- � Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use. Last updated Mar 23rd, 2004.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

		var enablepersist = "off" //Enable saving state of content structure using session cookies? (on/off)
		var collapseprevious = "yes" //Collapse previously open content when opening present? (yes/no)

		function getElementbyClass(classname) {
			ccollect = new Array()

			var inc = 0
			var alltags = document.all? document.all : document.getElementsByTagName("*")

			for (i = 0; i<alltags.length; i++) {
				if (alltags[i].className == classname) {
					ccollect[inc++] = alltags[i]
				}
			}
		}

		function contractcontent(omit) {
			var inc = 0
			
			while (ccollect[inc]) {
				if (ccollect[inc].id != omit) {
					ccollect[inc].style.display = "none"
				}
				inc++
			}
		}

		function expandcontent(cid) {
			if (typeof ccollect != "undefined") {
				if (collapseprevious == "yes") {
					contractcontent(cid)
				}
				document.getElementById(cid).style.display = (document.getElementById(cid).style.display != "block")? "block" : "none"
			}
		}
		
		function revivecontent() {
			contractcontent("omitnothing")
			selectedItem = getselectedItem()
			selectedComponents = selectedItem.split("|")
			
			for (i = 0; i < selectedComponents.length - 1; i ++) {
				document.getElementById(selectedComponents[i]).style.display = "block"
			}
		}

		function get_cookie(Name) { 
			var search = Name + " = "
			var returnvalue = EMPTY_STRING;

			if (document.cookie.length > 0) {
				offset = document.cookie.indexOf(search)
	
				if (offset != -1) { 
					offset += search.length
					end = document.cookie.indexOf(";", offset);
					if (end == -1) end = document.cookie.length;
					returnvalue = unescape(document.cookie.substring(offset, end))
				}
			}
			return returnvalue;
		}

		function getselectedItem() {
			if (get_cookie(window.location.pathname) != EMPTY_STRING) {
				selectedItem = get_cookie(window.location.pathname)
				return selectedItem
			} else {
				return EMPTY_STRING
			}
		}

		function saveswitchstate() {
			var inc = 0, selectedItem = EMPTY_STRING

			while (ccollect[inc]) {
				if (ccollect[inc].style.display == "block") {
					selectedItem += ccollect[inc].id + "|"
				}
				inc ++
			}
			
			document.cookie = window.location.pathname + "=" + selectedItem
		}

		function do_onload() {
			uniqueidn = window.location.pathname + "firsttimeload"
			getElementbyClass("switchcontent")
			
			if (enablepersist == "on" && typeof ccollect != "undefined") {
				document.cookie = (get_cookie(uniqueidn) == EMPTY_STRING)? uniqueidn + " = 1" : uniqueidn +" = 0" 
				
				firsttimeload = (get_cookie(uniqueidn) == 1)? 1 : 0 //check if this is 1st page load
				
				if (!firsttimeload) revivecontent()
			}
		}

		if (window.addEventListener) {
			window.addEventListener("load", do_onload, false)
		} else {
			if (window.attachEvent) {
				window.attachEvent("onload", do_onload)
			} else {
				if (document.getElementById) {
					window.onload = do_onload
				}
			}
		}
		
		if (enablepersist == "on" && document.getElementById) {
			window.onunload = saveswitchstate
		}