<!--
	var INCOME = 0 + '';
	var SALESUSE = 1 + '';
	var WITHHOLDING = 2 + '';
	var BATTERYTIRE = 3 + '';
	var FIDUCIARY = 6 + '';


	Date.prototype.savedDate  = null;

	// Methods
	Date.prototype.addDays      = dateAddDays;

	//----------------------------------------------------------------------------
	// addDays(n): Adds the specified number of days to the date.
	//----------------------------------------------------------------------------

	function dateAddDays(n) {

	  // Add the specified number of days.

	  this.setDate(this.getDate() + n);

	  // Reset the new day of month.

	  this.savedDate = this.getDate();
	}

	//this function calculates the amount of interest due based on out 
	//Tax Amount, DueDate, and specified Deadline.  
	function CalculateAdditions(amountDue, due, filed, end, type) {
		var dueDate = new Date(due);
		var fileDate = new Date(filed);
		var payDate = new Date(end);
		
		if ( payDate.getTime() < fileDate.getTime()) {
			var calcDate = new Date(end);
		} else {
			var calcDate = new Date(filed);
		}
		
		//var calcDate = new Date(end);
		
		var additions = 0;				
		
		if (type == WITHHOLDING) {
			if (calcDate.getTime() <= dueDate.getTime()){
				if (payDate.getTime() > dueDate.getTime()){
					penalty = 1;
					//alert("penaltay in first if:"+penalty);
				} else{
					penalty = 0;
					//alert("penaltay in first else:"+penalty);
				}
			} else {
				//The following is the formula as provided by Teresa Bisges
				//alert("dueDate: "+dueDate.getTime()+" fileDate: "+fileDate.getTime()+" payDate: "+payDate.getTime());
				var penalty = 0;
				//alert("step1: "+penalty);
				if (calcDate.getYear() > dueDate.getYear()){
					penalty = (calcDate.getYear() - dueDate.getYear()) * 12;
					//alert("step1 if: "+penalty);
				}		
				//alert("duedatemonth: "+(dueDate.getMonth() + 1));
				//alert("filedatemonth: "+(fileDate.getMonth() + 1));		
				//alert("calcDatemonth: "+(calcDate.getMonth() + 1));	
				penalty = penalty - (dueDate.getMonth() + 1) + (calcDate.getMonth() + 1);
				//alert("step2: "+penalty);
				if (calcDate.getDate() > dueDate.getDate()) {
					penalty = penalty + 1;
					//alert("step3: "+penalty);
				}
			}
			if (penalty >= 5 ){
				additions = amountDue * .25;
				//alert("step4: "+penalty);
			} else {
				additions = amountDue * (penalty * .05);
			}
			//alert(penalty);
			
			/* ***This forumla is outdated, but keeping it here just incase***
			if ((dateDiff(fileDate, dueDate) > 0) && (dateDiff(fileDate, dueDate) < 30)) {
				additions = amountDue * .05;
			} else if (dateDiff(fileDate, dueDate) >= 30 && dateDiff(fileDate, dueDate) < 60) {
				additions = amountDue * .10;
			} else if (dateDiff(fileDate, dueDate) >= 60 && dateDiff(fileDate, dueDate) < 90) {
				additions = amountDue * .15;
			} else if (dateDiff(fileDate, dueDate) >= 90 && dateDiff(fileDate, dueDate) < 120) {
				additions = amountDue * .20;
			} else if (dateDiff(fileDate, dueDate) >= 120) {
				additions = amountDue * .25;
			} else if (dateDiff(payDate, dueDate) > 0) {
				additions = amountDue * .05;
			}		
			*/
		} else if (type == INCOME || type == SALESUSE || type == BATTERYTIRE || type ==  FIDUCIARY) {
			var dueDate2 = new Date(dueDate.getFullYear(), dueDate.getMonth() + 1, dueDate.getDate());
			var dueDate3 = new Date(dueDate.getFullYear(), dueDate.getMonth() + 2, dueDate.getDate());
			var dueDate4 = new Date(dueDate.getFullYear(), dueDate.getMonth() + 3, dueDate.getDate());
			var dueDate5 = new Date(dueDate.getFullYear(), dueDate.getMonth() + 4, dueDate.getDate());
			
			//alert(dueDate + " " + dueDate2 + " " + dueDate3 + " " + dueDate4 + " " + dueDate5);

			if (type == INCOME || type == FIDUCIARY) { //If Income Tax, Take Weekends Into Account
			
				if (dueDate2.getDay() == 6) {
					dueDate2.addDays(2);
				} else if (dueDate2.getDay() == 0) {
					dueDate2.addDays(1);
				}

				if (dueDate3.getDay() == 6) {
					dueDate3.addDays(2);
				} else if (dueDate3.getDay() == 0) {
					dueDate3.addDays(1);
				}

				if (dueDate4.getDay() == 6) {
					dueDate4.addDays(2);
				} else if (dueDate4.getDay() == 0) {
					dueDate4.addDays(1);
				}

				if (dueDate5.getDay() == 6) {
					dueDate5.addDays(2);
				} else if (dueDate5.getDay() == 0) {
					dueDate5.addDays(1);
				}
			}
			
			if ((calcDate > dueDate) && (calcDate <= dueDate2)) {
				additions = amountDue * .05;				
			} else if ((calcDate > dueDate2) && (calcDate <= dueDate3)) {
				additions = amountDue * .10;				
			} else if ((calcDate > dueDate3) && (calcDate <= dueDate4)) {
				additions = amountDue * .15;				
			} else if ((calcDate > dueDate4) && (calcDate <= dueDate5)) {
				additions = amountDue * .20;				
			} else if (calcDate > dueDate5) {
				additions = amountDue * .25;				
			} else if (payDate > dueDate) {
				additions = amountDue * .05;				
			}				
		}
		return additions.toString();		
	}

	//this function calculates the amount of interest due based on out 
	//Tax Amount, DueDate, and specified Deadline.  
	function CalculateInterest(amountDue, due, end) {
		var days
		var dueDate = new Date(due);
		var Deadline = new Date(end);
		var taxrate;
		var interest = 0;
		//alert("Deadline variable = "+end);
		
		//added to fix a bug caused when calculating the amount of days between the due date
		//and the date of payment. If the time is left as 00h 00min 00sec the days will be
		//calculated one day off (ex: calculates as the floor of 99.95555 instead of the actual 100 days)
		Deadline.setHours(12);
		
		//Loop through from Due Date Year To Deadline Year
		//alert("Deadline variable = "+Deadline);
		for (i = dueDate.getFullYear(); i <= Deadline.getFullYear(); i++) {
		 //alert("i = "+i);
			//Get tax rate for that year
			switch(i) {
				case 1982: taxrate = .06 / 365 ; break;
				case 1983: taxrate = .14 / 365 ; break;
				case 1984: taxrate = .12 / 366 ; break;
				case 1985: taxrate = .13 / 365 ; break;
				case 1986:
				case 1987: taxrate = .12 / 365 ; break;
				case 1988: taxrate = .12 / 366 ; break;
				case 1989:
				case 1990:
				case 1991: taxrate = .12 / 365 ; break;
				case 1992: taxrate = .12 / 366 ; break;
				case 1993:
				case 1994:
				case 1995: taxrate = .12 / 365 ; break;
				case 1996: taxrate = .09 / 366 ; break;
				case 1997: taxrate = .08 / 365 ; break;
				case 1998: taxrate = .09 / 365 ; break;
				case 1999: taxrate = .08 / 365 ; break;
				case 2000: taxrate = .08 / 366 ; break;
				case 2001: taxrate = .10 / 365 ; break;
				case 2002: taxrate = .06 / 365 ; break;
				case 2003: taxrate = .05 / 365 ; break;
				case 2004: taxrate = .04 / 366 ; break;
				case 2005: taxrate = .05 / 365 ; break;
				case 2006: taxrate = .07 / 365 ; break;
				case 2007: taxrate = .08 / 365 ; break;
				case 2008: taxrate = .08 / 366 ; break;
				case 2009: taxrate = .05 / 365 ; break;
				case 2010: taxrate = .03 / 365 ; break;
				case 2011: taxrate = .03 / 365 ; break;
				case 2012: taxrate = .03 / 365 ; break;
				default: taxrate = .08 / 365 ; break;
			}

			//select the start date and end date & get number of days
			if (i == Deadline.getFullYear() && i == dueDate.getFullYear()) {
				StartDate = dueDate;
				EndDate = Deadline;
				days = dateDiff(EndDate, StartDate);
				//alert("if Days: "+days);

			} else if (i == Deadline.getFullYear()) {
				StartDate = new Date(i, 0, 1);
				EndDate = Deadline;
				days = dateDiff(EndDate, StartDate) + 1;
				//alert("else if 1 Days: "+days);
			} else if (i == dueDate.getFullYear()) {
				StartDate = dueDate;
				EndDate = new Date(i, 11, 31);
				days = dateDiff(EndDate, StartDate);
				//alert("else if 2 Days: "+days);
			} else {
				StartDate = new Date(i, 0, 1);
				EndDate = new Date(i, 11, 31);
				days = dateDiff(EndDate, StartDate) + 1;
				//alert("Days: "+days);
			}
			
			//Interest Calculation Formula
			interest += Math.round(amountDue * days * (taxrate ) * 10000)/10000;
			
			//alert("Interest: "+interest);
			
		}
		return interest.toString();
	}

	//This function calculates the number of days between firstDate & secondDate
	function dateDiff(firstDate, secondDate) {
		var date1temp = new Date(firstDate);
		var date2temp = new Date(secondDate);
		var date1 = new Date();
		var date2 = new Date();
		var diff  = new Date();
		var timediff;
		var days;
	
		date1.setTime(date1temp.getTime());
		date2.setTime(date2temp.getTime());
		//alert("date1: "+date1);
		//alert("date2: "+date2);
			 
		// sets difference date to difference of first date and second date
		diff.setTime(date1.getTime() - date2.getTime());
	
		timediff = diff.getTime();
		//alert("timediff: "+timediff);
		
		if (timediff > 0) {
			days = Math.floor(timediff / (1000 * 60 * 60 * 24));
			timediff -= days * (1000 * 60 * 60 * 24);
		} else {
			days = 0;
		}

		return days;
	}

	//Displays the "Tax Due" on the screen using the Document Object Model
	function DisplayAmountDue(amountDue) {
		DisplayAmountDue.count++;
		var currentDue = document.getElementById("CurrentDue");
		var extendedDue = document.getElementById("ExtendedDue");

		//If it's not the first time called, delete old text node & recreate it
		if (DisplayAmountDue.count > 1) {
        	oldCurrentNode = currentDue.firstChild;
        	newCurrentNode = document.createTextNode(formatCurrency(amountDue));
        	oldExtendedNode = extendedDue.firstChild;
        	newExtendedNode = document.createTextNode(formatCurrency(amountDue));
        	currentDue.removeChild(oldCurrentNode);
	        currentDue.appendChild(newCurrentNode);
        	extendedDue.removeChild(oldExtendedNode);
	        extendedDue.appendChild(newExtendedNode);
		} else { //otherwise, append new text node
			var txtCurrentDue = document.createTextNode(formatCurrency(amountDue));
			var txtExtendedDue = document.createTextNode(formatCurrency(amountDue));
			currentDue.appendChild(txtCurrentDue);
			extendedDue.appendChild(txtExtendedDue);
		}
	}
	DisplayAmountDue.count = 1;

	function DisplayPaymentDate(PaymentDate) {
		var paymentDate = document.getElementById("PaymentDate");
		paymentDate.removeChild(newText2);
		newText2 = document.createTextNode(PaymentDate);	
		paymentDate.appendChild(newText2);
	}

	//Displays the "Additions To Tax" today on the screen using the Document Object Model
	function DisplayCurrentAdd(Additions) {
		DisplayCurrentAdd.count++;
		var CurrentAdditions = document.getElementById("CurrentAdditions");

		if (DisplayCurrentAdd.count > 1) {
			oldCurrentNode = CurrentAdditions.firstChild;
			newCurrentNode = document.createTextNode(formatCurrency(Additions));
			CurrentAdditions.removeChild(oldCurrentNode);
			CurrentAdditions.appendChild(newCurrentNode);
		} else {
			var txtCurrentAdditions = document.createTextNode(formatCurrency(Additions));
			CurrentAdditions.appendChild(txtCurrentAdditions);
		}
	}
	DisplayCurrentAdd.count = 1;

	//Displays the "Interest Due" today on the screen using the Document Object Model
	function DisplayCurrentInt(Interest) {
		DisplayCurrentInt.count++;
		var currentInterest = document.getElementById("CurrentInterest");

		if (DisplayCurrentInt.count > 1) {
			oldCurrentNode = currentInterest.firstChild;
			newCurrentNode = document.createTextNode(formatCurrency(Interest));
			currentInterest.removeChild(oldCurrentNode);
			currentInterest.appendChild(newCurrentNode);
		} else {
			var txtCurrentInterest = document.createTextNode(formatCurrency(Interest));
			currentInterest.appendChild(txtCurrentInterest);
		}
	}
	DisplayCurrentInt.count = 1;

	//Displays the "Interest Due" on payment date entered by the user on the screen using the DOM
	function DisplayExtendedInt(Interest) {
		DisplayExtendedInt.count++;
		var extendedInterest = document.getElementById("ExtendedInterest");

		if (DisplayExtendedInt.count > 1) {
			oldExtendedNode = extendedInterest.firstChild;
			newExtendedNode = document.createTextNode(formatCurrency(Interest));
			extendedInterest.removeChild(oldExtendedNode);
			extendedInterest.appendChild(newExtendedNode);
		} else {
			var txtExtendedInterest = document.createTextNode(formatCurrency(Interest));
			extendedInterest.appendChild(txtExtendedInterest);
		}
	}
	DisplayExtendedInt.count = 1;

	//Displays the "Additions To Tax" on payment date entered by the user on the screen using the DOM
	function DisplayExtendedAdd(Additions) {
		DisplayExtendedAdd.count++;
		var ExtendedAdditions = document.getElementById("ExtendedAdditions");

		if (DisplayExtendedAdd.count > 1) {
			oldExtendedNode = ExtendedAdditions.firstChild;
			newExtendedNode = document.createTextNode(formatCurrency(Additions));
			ExtendedAdditions.removeChild(oldExtendedNode);
			ExtendedAdditions.appendChild(newExtendedNode);
		} else {
			var txtExtendedAdditions = document.createTextNode(formatCurrency(Additions));
			ExtendedAdditions.appendChild(txtExtendedAdditions);
		}
	}
	DisplayExtendedAdd.count = 1;

	//Displays The "Total Due" tday on the screen using the Document Object Model
	function DisplayCurrentTotal(Total) {
		DisplayCurrentTotal.count++;
		var currentTotal = document.getElementById("CurrentTotal");

		if (DisplayCurrentTotal.count > 1) {
			oldCurrentNode = currentTotal.firstChild;
			newCurrentNode = document.createTextNode(formatCurrency(Total));
			currentTotal.removeChild(oldCurrentNode);
			currentTotal.appendChild(newCurrentNode);
		} else {
			var txtCurrentTotal = document.createTextNode(formatCurrency(Total));
			currentTotal.appendChild(txtCurrentTotal);
		}
	}
	DisplayCurrentTotal.count = 1;

	//Displays the "Total Due" on Deadline entered by the user on the screen using the DOM
	function DisplayExtendedTotal(Total) {
		DisplayExtendedTotal.count++;
		var extendedTotal = document.getElementById("ExtendedTotal");

		if (DisplayExtendedTotal.count > 1) {
			oldExtendedNode = extendedTotal.firstChild;
			newExtendedNode = document.createTextNode(formatCurrency(Total));
			extendedTotal.removeChild(oldExtendedNode);
			extendedTotal.appendChild(newExtendedNode);
		} else {
			var txtExtendedTotal = document.createTextNode(formatCurrency(Total));
			extendedTotal.appendChild(txtExtendedTotal);
		}
	}
	DisplayExtendedTotal.count = 1;

	//Main function called from HTML Page that checks to see if user entered values in each
	//field and then calls various functions to display the resulting calcuations.
	function DisplayInterest(amountDue, dueDate, fileDate, extendedDate, type) {	
		type = type + '';	
		if (document.frmCalculate.DueDate.value == "") {
			alert("You Must Enter A Value For The Due Date");
		} else if (document.frmCalculate.FileDate.value == "") {
			alert("You Must Enter A Value For The Date You Filed Your Tax Return");
		} else if (document.frmCalculate.AmountDue.value == "") {
			alert("You Must Enter The Amount Of Tax Due");
		} else if (document.frmCalculate.ExtendedDate.value == "") {
			alert("You Must Enter A Value For Your Estimated Payment Date");
		} else {
			var useDate;
			if (new Date(fileDate) < new Date()) {
				useDate = new Date(fileDate);
				//alert("using filedate "+useDate);
			} else {
				useDate = new Date();
				//alert("using Date() "+useDate);
			}
			
				//alert("using DueDate() "+dueDate);
									
			var currentInt = CalculateInterest(amountDue, dueDate, new Date());
			var currentAdd = CalculateAdditions(amountDue, dueDate, useDate, new Date(), type);	
			var extendedInt = CalculateInterest(amountDue, dueDate, extendedDate);
			var extendedAdd = CalculateAdditions(amountDue, dueDate, fileDate, extendedDate, type);			
			DisplayAmountDue(amountDue);	
			DisplayCurrentAdd(currentAdd);
			DisplayCurrentInt(currentInt);
			DisplayExtendedAdd(extendedAdd);
			DisplayExtendedInt(extendedInt);
			DisplayCurrentTotal((parseFloat(amountDue) + parseFloat(currentAdd) + parseFloat(currentInt)).toString());
			DisplayExtendedTotal((parseFloat(amountDue) + parseFloat(extendedAdd) + parseFloat(extendedInt)).toString());		
		}
	}

	//Formats the string to $#.## format
	function formatCurrency(num){
		var prefix="$";
		var wd;
		if (num.charAt(0)=="$") {
			return num;
		}
		wd="w";
		var tempnum=num;
		for (i=0;i<tempnum.length;i++){
			if (tempnum.charAt(i)=="."){
				wd="d";
				break;
			}
		}
		if (wd=="w") {
			num=prefix+tempnum+".00";
		} else{
			if (tempnum.charAt(tempnum.length-2)=="."){
				num=prefix+tempnum+"0";
			} else {
				tempnum=Math.round(tempnum*100)/100;
				if (tempnum.toString().charAt(tempnum.toString().length-2)==".") {
					num=prefix+tempnum+"0";
				} else {
					num=prefix+tempnum;
				}
			}
		}
		return num;
	}

	//Checks to see if a valid date is entered by the user
	function ValidateDate(txtBox) {
		//alert("validating "+txtBox.name);
		var message = null;
		var dateStr = txtBox.value;
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year

		var matchArray = dateStr.match(datePat); // is the format ok?
		if (matchArray == null) {
			message = dateStr + " Is Not A Valid Date.  Please Enter A Valid Date. (mm/dd/yyyy)";
		} else {
			month = matchArray[1]; // parse date into variables
			day = matchArray[3];
			year = matchArray[4];
			if (month < 1 || month > 12) { // check month range
				message = "Month must be between 1 and 12.";
			} else if (day < 1 || day > 31) {
				message = "Day must be between 1 and 31.";
			} else if ((month==4 || month==6 || month==9 || month==11) && day==31) {
				message = "Month "+month+" doesn't have 31 days!";
			} else if (month == 2) { // check for february 29th
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day>29 || (day==29 && !isleap)) {
					message = "February " + year + " doesn't have " + day + " days!";
			   }
			}
			if (txtBox.name == "DueDate") {
				if (document.frmCalculate.TaxType.value == INCOME) {
					var actualDate = new Date(dateStr);
					var dueDate = new Date(actualDate.getFullYear(), 3, 17);
					datePat =/^((4|04)(\/|-)(17)(\/|-)(\d{4}))|((4|04)(\/|-)(18)(\/|-)(2011))|((4|04)(\/|-)(15)(\/|-)(2010))|((4|04)(\/|-)(15)(\/|-)(2009))|((4|04)(\/|-)(15)(\/|-)(2008))$/;

					// alert(dueDate);
					
					
					//catch year 2007 falls on weekend.
					if (dueDate.getDay() == 6 || dueDate.getYear() == 2007 || dueDate.getYear() == 107) {
						dueDate.addDays(2);
					} else if (dueDate.getDay() == 0) {
						dueDate.addDays(1);
					}
					
					//alert(dueDate);
					
					if (dueDate.getDate() == 16) {
						datePat = /^(4|04)(\/|-)(16)(\/|-)(\d{4})$/;
						//alert(datePat);
					} else if (dueDate.getDate() == 17) {
						datePat = /^(4|04)(\/|-)(17)(\/|-)(\d{4})$/;
						//alert(datePat);
					}
					
					//alert(dateStr);
					matchArray = dateStr.match(datePat);
					if (matchArray == null) {
						//alert("Null Found");
//						if(dueDate.getYear() == 2008 || dueDate.getYear() == 108){
						//if(dueDate.getYear() == 2007 || dueDate.getYear() == 107){
						if(dueDate.getYear() == 2012 || dueDate.getYear() == 112){
							// alert("If1");
							message = "The Individual Income Tax Due Date For 2012 is April 17th";
						} else {
							//alert("Else1");
							message = "The Individual Income Tax Due Date Must Be April "+ dueDate.getDate() +"th";
						}
						
						changeDate(INCOME);
					}
				
				//ran new start
				} else if (document.frmCalculate.TaxType.value == FIDUCIARY) {
					var actualDate = new Date(dateStr);
					var dueDate = new Date(actualDate.getFullYear(), 3, 17);
					/^((4|04)(\/|-)(17)(\/|-)(\d{4}))|((4|04)(\/|-)(18)(\/|-)(2011))|((4|04)(\/|-)(15)(\/|-)(2010))|((4|04)(\/|-)(15)(\/|-)(2009))|((4|04)(\/|-)(15)(\/|-)(2008))$/;

					//alert(dueDate);
					
					if (dueDate.getDay() == 6 || dueDate.getYear() == 2007 || dueDate.getYear() == 107) {
						dueDate.addDays(2);
					} else if (dueDate.getDay() == 0) {
						dueDate.addDays(1);
					}
					
					//alert(dueDate);
					
					if (dueDate.getDate() == 16) {
						datePat = /^(4|04)(\/|-)(16)(\/|-)(\d{4})$/;
						//alert(datePat);
					} else if (dueDate.getDate() == 17) {
						datePat = /^(4|04)(\/|-)(17)(\/|-)(\d{4})$/;
						//alert(datePat);
					}
					
					//alert(dateStr);
					matchArray = dateStr.match(datePat);
					if (matchArray == null) {
						//alert("Null Found");
						if(dueDate.getYear() == 2012 || dueDate.getYear() == 112){
							//alert("If1");
							message = "The Fiduciary Tax Due Date For 2012 is April 17th";
						} else {
							//alert("Else1");
							message = "The Fiduciary Tax Due Date Must Be April "+ dueDate.getDate() +"th";
						}
						
						changeDate(FIDUCIARY);
					}
				// ran  new end
				
	} else if (document.frmCalculate.TaxType.value == SALESUSE) {
					//alert("SALES/USE");
						// current year dates - rj
datePat = /^((03|3|06|6|08|8|09|9|11|12)(\/|-)20(\/|-)(\d{4}))|((1(\/|-)31)|(01(\/|-)31)|(2(\/|-)21)|(02(\/|-)21)|(5(\/|-)21)|(05(\/|-)21)|(4(\/|-)30)|(04(\/|-)30)|(10(\/|-)31)|(7(\/|-)31)|(07(\/|-)31))(\/|-)(\d{4})|((01|1)(\/|-)31(\/|-)(2013))$/;
				
						
					matchArray = dateStr.match(datePat);
					if (matchArray == null) {
						// previous years dates - rj
						 datePat = /^((05|5|06|6|09|9|12)(\/|-)20(\/|-)(2011))|((3(\/|-)21)|(03(\/|-)21)|(11(\/|-)21)|(4(\/|-)15)|(04(\/|-)15)|(8(\/|-)22)|(08(\/|-)22)|(10(\/|-)31)|(8(\/|-)01)|(08(\/|-)01)|(2(\/|-)22)|(02(\/|-)22)|(5(\/|-)02)|(05(\/|-)02)|(1(\/|-)31)|(01(\/|-)31))(\/|-)(2011)|((01|1|08|8|09|9|12)(\/|-)20(\/|-)(2010))|((02|2|03|3|11)(\/|-)22(\/|-)(2010))|(((0?2)(\/|-)(0?1)(\/|-)2010))|(((0?4)(\/|-)30(\/|-)2010))|(((0?6)(\/|-)21(\/|-)2010))|(((0?8)(\/|-)(0?2)(\/|-)2010))|(((11)(\/|-)(0?1)(\/|-)2010))|((02|2|03|3|05|5|08|8|11)(\/|-)20(\/|-)(2009))|((02|2)(\/|-)(02|2)(\/|-)(2009))|(((0?4)(\/|-)(30)(\/|-)2009))|(((0?7)(\/|-)(31)(\/|-)2009))|(((11)(\/|-)(0?2)(\/|-)2009))|((02|2|03|3|05|5|06|6|08|8|09|9|11|12)(\/|-)20(\/|-)(2008))|((1(\/|-)31)|(01(\/|-)31)|(4(\/|-)30)|(04(\/|-)30)|(7(\/|-)31)|(07(\/|-)31)|(9(\/|-)22)|(09(\/|-)22)|(10(\/|-)31)|(12(\/|-)22))(\/|-)(2008)|((4(\/|-)30)|(04(\/|-)30)|(7(\/|-)31)|(07(\/|-)31)|(9(\/|-)22)|(09(\/|-)22)|(10(\/|-)31)|(12(\/|-)22))(\/|-)(2007)|((0?5)(\/|-)21(\/|-)2007)|((02|2|03|3|05|5|06|6|08|8|09|9|11|12)(\/|-)20(\/|-)(2007))$/;
						
						//alert(datePat);
						matchArray = dateStr.match(datePat);
						if (matchArray == null) {
						message = "The Sales/Use Tax Due Date Must Fall On The 20th Of The Month, February 21st, April 30th, May 21st, July 31st, or October 31st. In 2011 the Due Date may also fall on February 22nd, March 21st, May 2nd, August 8th, August 22nd or October 31st. In 2010 the Due Date may also fall on February 1st, February 22nd, March 22nd, April 30th, June 21st, August 2nd, November 1st, or November 22nd. In 2009 the Due Date may also fall on April 30th, June 22nd, July 31st, or October 20th, September 21st, Novmber 2nd, or December 21st.  In 2008 the Due Date may also fall on April 30th, July 31st, August 22nd, September 31st, or December 22nd. In 2007 the Due Date Must Fall On The 20th Of The Month, January 31st, April 30th, July 31st, or October 31st may also fall on May 21st.";
						changeDate(SALESUSE);
						}
					}
					//This checks if the automatically populated due date should be adjusted
						var datePat1 = /^((0?2)(\/|-)20(\/|-)2006)$/;
						var datePat2 = /^((0?4)(\/|-)30(\/|-)2006)$/;
						var datePat3 = /^((0?5)(\/|-)20(\/|-)2006)$/;
						var datePat4 = /^((0?8)(\/|-)20(\/|-)2006)$/;
						var datePat5 = /^((0?5)(\/|-)20(\/|-)2007)$/;
						if (dateStr.match(datePat1) != null){
							//alert("alternate date entered");
							changeDate("alt2006-1");
						} else if (dateStr.match(datePat2) != null){
							changeDate("alt2006-2");
						} else if (dateStr.match(datePat3) != null){
							changeDate("alt2006-3");
						} else if (dateStr.match(datePat4) != null){
							changeDate("alt2006-4");
						} else if (dateStr.match(datePat5) != null) {
							//alert("alternate date entered");
							changeDate("alt2007-1");
						}
				} 
				else if (document.frmCalculate.TaxType.value == WITHHOLDING) {
					//alert("withholding");
					
					// current year dates - rj
	datePat = /^((02|2|03|3|05|5|06|6|08|8|11)(\/|-)15(\/|-)(\d{4}))|((9(\/|-)17)|(09(\/|-)17)|(12(\/|-)17)|(4(\/|-)30)|(04(\/|-)30)|(7(\/|-)31)|(07(\/|-)31)|(10(\/|-)31)|(1(\/|-)31)|(01(\/|-)31))(\/|-)(\d{4})|((01|1)(\/|-)31(\/|-)(2013))$/;
					
					matchArray = dateStr.match(datePat);
					if (matchArray == null) {
						//datePat = /^((03|3|06|6|09|9|11|12)(\/|-)15(\/|-)(2010))|((02|2|08|8)(\/|-)16(\/|-)(2010))|((05|5|)(\/|-)17(\/|-)(2010))|((04|4)(\/|-)16(\/|-)(2010))|((01|1)(\/|-)31(\/|-)(2011))|((2(\/|-)17)|(02(\/|-)17)|(3(\/|-)16)|(03(\/|-)16)|(4(\/|-)30)|(04(\/|-)30)|(7(\/|-)31)|(07(\/|-)31)|(8(\/|-)17)|(08(\/|-)17)|(11(\/|-)02)|(11(\/|-)16))(\/|-)(2009)$/;
						datePat = /^((02|2|03|3|06|6|08|8|09|9|11|)(\/|-)15(\/|-)(2011))|((5(\/|-)16)|(05(\/|-)16)|(10(\/|-)31)|(5(\/|-)02)|(05(\/|-)02)|(8(\/|-)01)|(08(\/|-)01))(\/|-)(2011)|((01|1)(\/|-)31(\/|-)(2011))|((03|3|06|6|09|9|11|12)(\/|-)15(\/|-)(2010))|((02|2|08|8)(\/|-)16(\/|-)(2010))|((05|5|)(\/|-)17(\/|-)(2010))|((04|4)(\/|-)30(\/|-)(2010))|((08|8)(\/|-)02(\/|-)(2010))|((11)(\/|-)01(\/|-)(2010))|((2(\/|-)17)|(02(\/|-)17)|(3(\/|-)16)|(03(\/|-)16)|(4(\/|-)30)|(04(\/|-)30)|(7(\/|-)31)|(07(\/|-)31)|(8(\/|-)17)|(08(\/|-)17)|(11(\/|-)02)|(11(\/|-)16))(\/|-)(2009)$/;
						matchArray = dateStr.match(datePat);
						if (matchArray == null) {
							message = "The Withholding Tax Due Date Must Fall On The 15th Of The Month, April 30th, July 31st, September 17th, October 31st, or December 17th.";
							changeDate(WITHHOLDING);
						}
					}

					datePat = /^((0?4)(\/|-)30(\/|-)2006)$/;
					datePat2 = /^((0?9)(\/|-)15(\/|-)2007)$/;
					datePat3 = /^(12(\/|-)15(\/|-)2007)$/;
					if (dateStr.match(datePat) != null){
						//alert("alternate date entered");
						changeDate("alt2006-2");
					} else if (dateStr.match(datePat2) != null){
						//alert("alternate date entered");
						changeDate("alt2007-2");
					} else if (dateStr.match(datePat3) != null) {
						//alert("alternate date entered");
						changeDate("alt2007-3");
					}
				}	 
				else if (document.frmCalculate.TaxType.value == BATTERYTIRE) {
					//alert("BATTERYTIRE");
					//datePat = /^(02|2|03|3|05|5|06|6|08|8|09|9|11|12)(\/|-)15(\/|-)(\d{4})$/;
					datePat = /^((4(\/|-)30)|(04(\/|-)30)|(7(\/|-)31)|(07(\/|-)31)|(11(\/|-)02))(\/|-)(2009)$/; 
					matchArray = dateStr.match(datePat);
					if (matchArray == null) {
						datePat = /^((4(\/|-)30)|(04(\/|-)30)|(7(\/|-)31)|(07(\/|-)31)|(10(\/|-)31))(\/|-)(2008)$/;
						matchArray = dateStr.match(datePat);
						if (matchArray == null) {
							message = "The Tire/Battery Fee Due Date Must Fall on April 30th, July 31st, or November 2nd. In 2008 the Due Date may also fall on October 31st.";
							changeDate(BATTERYTIRE);
						}
					}

					datePat = /^((0?4)(\/|-)30(\/|-)2006)$/;
					datePat2 = /^((0?9)(\/|-)15(\/|-)2007)$/;
					datePat3 = /^(12(\/|-)15(\/|-)2007)$/;
					if (dateStr.match(datePat) != null){
						//alert("alternate date entered");
						changeDate("alt2006-2");
					} else if (dateStr.match(datePat2) != null){
						//alert("alternate date entered");
						changeDate("alt2007-2");
					} else if (dateStr.match(datePat3) != null) {
						//alert("alternate date entered");
						changeDate("alt2007-3");
					}
				}	
			}
		}
		if (message != null) {
			alert(message);
			txtBox.focus();
			return false;
		} else {
			if (txtBox.name == "ExtendedDate") {
				DisplayPaymentDate(txtBox.value);
			}
			return true;
		}
	}

	function changeDate(taxType) {
		var today = new Date();
		var day;
		if (taxType == INCOME) {
			var dueDate = new Date(today.getFullYear(), 3, 17);
			//alert(dueDate.getYear());
			if (dueDate.getDay() == 6 || dueDate.getYear() == 2008 || dueDate.getYear() == 108) {
				dueDate.addDays(2);
			} else if (dueDate.getDay() == 0) {
				dueDate.addDays(1);
			}
			document.frmCalculate.DueDate.value = (dueDate.getMonth()+ 1).toString()+"/"+dueDate.getDate().toString()+"/"+dueDate.getFullYear().toString();
		} else if (taxType == FIDUCIARY) {
			var dueDate = new Date(today.getFullYear(), 3, 17);
				//alert(dueDate.getYear());
			if (dueDate.getDay() == 6 || dueDate.getYear() == 2008 || dueDate.getYear() == 108) {
				dueDate.addDays(2);
			} else if (dueDate.getDay() == 0) {
				dueDate.addDays(1);
			}
			document.frmCalculate.DueDate.value = (dueDate.getMonth()+ 1).toString()+"/"+dueDate.getDate().toString()+"/"+dueDate.getFullYear().toString();
		} else if (taxType == SALESUSE) {
			
			if (today.getMonth() == 1) {
				day = "/02/";
			} else if (today.getMonth() == 2  || today.getMonth() == 10) {
				day = "/21/";
			} else if (today.getMonth() == 7) {
				day = "/22/";
			} else if (today.getMonth() == 9) {
				day = "/31/";
			} else {
				day = "/20/";	
			}
			document.frmCalculate.DueDate.value = (today.getMonth() + 1).toString()+day+today.getFullYear().toString();
			
			} else if (taxType == BATTERYTIRE) {
			if (today.getMonth() == 3) {
				day = "/30/";
			} else if (today.getMonth() == 0 || today.getMonth() == 6 || today.getMonth() == 9) {
				day = "/31/";
			} else {
				day = "/20/";	
			}
			document.frmCalculate.DueDate.value = (today.getMonth() + 1).toString()+day+today.getFullYear().toString();
							
		} else if (taxType == WITHHOLDING) {
			if (today.getMonth() == 3) {
				day = "/30/";
			} else if (today.getMonth() == 0 || today.getMonth() == 6 || today.getMonth() == 9) {
				day = "/31/";
			} else {
				day = "/15/";	
			}
			document.frmCalculate.DueDate.value = (today.getMonth() + 1).toString()+day+today.getFullYear().toString();
			
		 		
			 //These else if statements below represent the 4 days in 2006 where a tax due date fell on a holliday or weekend and must be changed
			 //To the following business day.
			
		} else if (taxType == "alt2006-1"){
			document.frmCalculate.DueDate.value = "02/21/2006";
		} else if (taxType == "alt2006-2"){
			document.frmCalculate.DueDate.value = "05/01/2006";
		} else if (taxType == "alt2006-3"){
			document.frmCalculate.DueDate.value = "05/22/2006";
		} else if (taxType == "alt2006-4"){
			document.frmCalculate.DueDate.value = "08/21/2006";
		} else if (taxType == "alt2007-1"){
			document.frmCalculate.DueDate.value = "05/21/2007";
		} else if (taxType == "alt2007-2"){
			document.frmCalculate.DueDate.value = "09/17/2007";
		} else if (taxType == "alt2007-3"){
			document.frmCalculate.DueDate.value = "12/17/2007";
		}
		
	}
	
	//Checks to see if a valid tax amount was entered by the user
	function ValidateNumber(txtBox) {
		var message = null;
		var numberStr = txtBox.value;
		var numberPat = /^(\d)+(\.)*(\d)*$/; // requires a number

		var matchArray = numberStr.match(numberPat); // is the format ok?
		if (matchArray == null) {
			alert("Please enter a valid tax amount.");
			txtBox.focus();
			return false;
		} else {
			return true;
		}
	}

-->

