//<script language="javascript"><!--//

/* *********************************************************
	Common Routines
 ********************************************************* */
// global variables
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
/* if (isNN)
{
	document.captureEvents(Event.KEYPRESS);
}
*/
var t_ms = 25; 			//global for setTimeout-milliseconds

var mayAutoTab = false;


/* **********************************************************
	isNumInt
	function to edit for all numeric digits
 ********************************************************** */
function isNumInt(inputStr) {
	inputStr = "" + inputStr; // Make sure inputStr is char str
	for (var i = 0; i < inputStr.length; i++) {
		var oneChar = inputStr.substring(i, i + 1)
		if (oneChar < "0" || oneChar > "9") {
			return false;
		}
	}
	return true;
}
/* **********************************************************
	isMonth
	function to edit month
 ********************************************************** */
function isMonth( input ) {
	if (isNumInt(input) == false) {
		return false;
	}
	if (input < 1 || input > 12) {
		return false;
	}
	return true;
}
/* **********************************************************
	isDay
	function to edit day
 ********************************************************** */
function isDay( input ) {
	if (isNumInt(input) == false) {
		return false;
	}
	if (input < 1 || input > 31) {
		return false;
	}
	return true;
}
/* **********************************************************
	isYear
	function to edit 2 or 4 digit year
 ********************************************************** */
function isYear( input ) {
	if (isNumInt(input) == false) {
		return false;
	}
	if (input.length == 4) {
		if (input < 1900)	return false;
	}
	if (input.length == 3) return false;
	if (input.length < 3) {
		if (input < 0 || input > 99) return false;
	}
	return true;
}
/* *********************************************************
	checkDateNum
	determine if date str is valid
 ********************************************************* */
function checkDateNum(strDATE) {
	var m,d,y,err=0
	var aDate=strDATE

	if (!(aDate.length == 6 || aDate.length == 8)) {
		err=1;
		return false;
	}

	m = aDate.substring(0, 2)// month
	d = aDate.substring(2, 4)// day
	y = aDate.substring(4, 8)// year

	if (m < 1 || m > 12) err = 1
	if (d < 1 || d > 31) err = 1

	if (y.length > 2) {
		if (y < 1900) err = 1
	} else {
		if (y < 0 || y > 99) err = 1
	}

	if (m==4 || m==6 || m==9 || m==11) {
		if (d==31) err=1
	}

	if (m==2) {
		var g=parseInt(y/4)
		if (isNaN(g)) {
			err=1
		}
		if (d > 29) err=1
		if (d==29 && ((y/4)!=parseInt(y/4))) err=1
	}

	if (err==1) return false;

	return true;
}
/* *********************************************************
	keyDown
	reset mayAutoTab variable
 ********************************************************* */
function keyDown() {
	mayAutoTab = true;
}

/* *********************************************************
	autoTab
	automatically tabs to the next input
 ********************************************************* */
function autoTab(input, len, e) 
{
	if (mayAutoTab == true) 
	{		
		if (isNN == true) {
			keyCode = e.which;
			filter = [0,8,0];
		} else {
			keyCode = e.keyCode;
			filter = [0,8,9,16,17,18,37,38,39,40,46];
		}
		if (input.value.length >= len && !containsElement(filter,keyCode)) 
		{
			input.value = input.value.slice(0, len);
			input.form[(getIndex(input)+1) % input.form.length].focus();
			input.form[(getIndex(input)+1) % input.form.length].select();
		}
		function containsElement(arr, ele) {
			var found = false, index = 0;
			while(!found && index < arr.length)
			if(arr[index] == ele)
			found = true;
			else
			index++;
			return found;
		}
	}
	mayAutoTab = false;
	return true;
}


/* **********************************************************
	getIndex
	Sets focus to next element in the form
 ********************************************************** */
 function getIndex(input) {
 		var index = -1, i = 0, found = false;
 		while (i < input.form.length && index == -1)
 		if (input.form[i] == input)index = i;
 		else i++;
 		return index;
 }
	
 /* **********************************************************
	isNotEmpty
	Return false if "string" is empty or all blank
 ********************************************************** */
function isNotEmpty(String) {
	if (String.length == 0) {return (false);}
	for (var i=0; i < String.length; i++) {
		if (String.substring(i) != " ") {return (true);}
	}
	return (false);
}
/* **********************************************************
	stripNum
	Remove decorations (commas, dollar signs) from number
	Only keep chars in Val that are valid numeric chars (i.e. in "RefString")
	return stripped value
 ********************************************************** */
function stripNum(Val) {
	 var RefString = "-.0123456789", TempChar, OutString = "";
	 Val = "" + Val; // Make sure Val is character string
	 //alert(Val);
	 if(Val.length == 0) return ("");
	 for (var i=0; i<Val.length; i++){
			TempChar=Val.substring(i, i+1);
			// TempChar is valid number
			if (RefString.indexOf (TempChar, 0) != -1) OutString=OutString+TempChar;
	 }
	 return (OutString);
}
/* **********************************************************
	stripNumFloat
 ********************************************************** */
function isNumFloat(cNum) {
	cNum=parseFloat(stripNum(cNum));
	//alert("cNum"+cNum);
	return (!isNaN(cNum));
}
/* **********************************************************
	isMoneyFmt
	Return false if Field isn't in Money Format or empty"
	Also reformat to $xxx.xx format2.3000000000000002
 ********************************************************** */
function isMoneyFmt(FormObj)  {
	var Val;

	if (!isNumFloat(FormObj.value)) {
		return(false);
	}
	Val=parseFloat(stripNum(FormObj.value))
	if (isNaN(Val)) {
		return(false);
	}
	FormObj.value=Val;
	//alert("Val:"+FormObj.value+"Pi:"+FormObj.value.length);
	if (Val==0) return(true);
	FormObj.value=truncate(0, roundto(1,Val));
	return true;
}
/* **********************************************************
	roundto
	Round "Num" to nearest "Factor"
		 Ex: roundto (100, 2532)  --> 2500    (for nearest 100)
		 roundto (1, 252.4284)    --> 252     (for nearest whole number)
		 roundto (.01, 252.4284)  --> 252.43  (for dollars & cents)
		 roundto (.125, 252.4284) --> 252.375 (for nearest 1/8th of a point)
 ********************************************************** */
function roundto(Factor,Num)   {
	 if (Factor == 0) return (0); // No can do if factor is zero -- just return zero
	 Num = Factor * (Math.floor(.5 + (Num/Factor)));
	 return(Num);
}
/* **********************************************************
	truncate
	After rounding a number use this to truncate it.
 ********************************************************** */
function truncate(decplaces,Num)   {
	 var str = "" + Math.round (eval(Num) * Math.pow(10,decplaces))
	 while (str.length <= decplaces) {
	 	str = "0" + str
	 }
	 var decpoint = str.length - decplaces
	 return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
}

/* **********************************************************
	timedFocus
	set focus and highlight field, used with setTimeout
 ********************************************************** */
function timedFocus(item) {
		item.focus();
		if (item.value.length > 0) {
			item.select();
		}
}
/* **********************************************************
 *	showStHelp
 *	This Function Is Used To Set Browser's Status Bar Message
 * ******************************************************** */
function showStHelp(message) {
	window.status = message;
	
}

/* *********************************************************
Form field and page edits section
********************************************************* */
function isValidDueDate(m, d, y) {
	if (isValidDueMonth(m) == false) {
		return false;
	}
	if (isValidDueDay(d) == false) {
		return false;
	}
	if (isValidDueYear(y) == false) {
		return false;
	}

	var dateNum, dateStr;

	dateStr = m.value + "/" + d.value + "/" + y.value;
	dateNum = m.value + d.value + y.value;

	if (dateNum.length > 0) {
		if (!checkDateNum(dateNum)) {
			alert("Date not valid:\n" + dateStr);
			setTimeout("timedFocus(document."+m.form.name+"."+m.name+")",t_ms);
			return false;
		}
	}
	return true;
}

function isValidDueMonth( item ) {
	if (isNotEmpty(item.value) == false) {
		alert("Month is required!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	if (isMonth(item.value) == false) {
		alert("Month not valid!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	if (item.value.length==1) {
		item.value='0'+item.value;
	}
	return true;
}

function isValidDueDay( item ) {
	if (isNotEmpty(item.value) == false) {
		alert("Day is required!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	if (isDay(item.value) == false) {
		alert("Day not valid!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	if (item.value.length==1) {
		item.value='0'+item.value;
	}
	return true;
}

function isValidDueYear( item ) {
	if (isNotEmpty(item.value) == false) {
		alert("Year is required!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	if (isYear(item.value) == false) {
		alert("Year not valid!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	if (item.value.length == 2) {
		if (item.value > 50 && item.value < 100) {
			item.value='19'+item.value;
		} else {
			item.value='20'+item.value;
		}
	}
	if (item.value < 1950 || item.value > 2100) {
		alert("Year not valid!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	return true;
}
function isValidPayYear( item ) {
	if (isNotEmpty(item.value) == false) {
		alert("Year required!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	if (isYear(item.value) == false) {
		alert("Year not valid!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	if (item.value.length == 2) {
		if (item.value > 50 && item.value < 100) {
			item.value='19'+item.value;
		} else {
			item.value='20'+item.value;
		}
	}
	if (item.value < 1950 || item.value > 2100) {
		alert("Year not valid!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
	return true;
}

/*function compareDates(numPayDate, numDueDate, item) {
	if (numPayDate < numDueDate) {
		alert("Tax Return Date Due must be less than Payment Date!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;
	}
}
*/
/**** Added by PC Acheru 10/27/08 *************/

function compareDates(numPayDay, numDueDay, numPayMonth, numDueMonth, numPayYear, numDueYear,item) {
	if (parseFloat(numPayYear) > parseFloat(numDueYear)) {
		return true;
	} else if ((parseFloat(numPayYear) == parseFloat(numDueYear)) && (parseFloat(numPayMonth) > parseFloat(numDueMonth))) {
		return true;
	} else if ((parseFloat(numPayYear) == parseFloat(numDueYear)) && (parseFloat(numPayMonth) == parseFloat(numDueMonth)) && (parseFloat(numPayDay) > parseFloat(numDueDay))) {
		return true;
	} else {alert("Tax Return Date Due must be less than Payment Date!");
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		return false;}
	

}
	
/**********************************************/


function isValidTaxDue(item) {
	if (isNotEmpty(item.value) == false) {
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		alert("Enter Amount of Tax Due!");
		return false;
	}

	if (isMoneyFmt(item) == false || item.value==0) {
		setTimeout("timedFocus(document."+item.form.name+"."+item.name+")",t_ms);
		alert('Please enter a valid dollar amount!');
		return false;
	}
	return true;
}
/* **********************************************************
	CalcDaysDiff
	function to calculate number of days between two dates
 ********************************************************** */
function CalcDaysDiff(EndDateSec, BeginDateSec) {
	var DaysDiff = EndDateSec - BeginDateSec;
	DaysDiff = Math.floor(DaysDiff / (1000 * 60 * 60 * 24));
	//alert(EndDateSec + "-" + BeginDateSec + " " + DaysDiff);
	return (DaysDiff);
}

 /* **********************************************************
	CalcIntDue
	function to calculate interest due over periods
 ********************************************************** */
function CalcIntDue(strDueDate, strPayDate, numDueDate, numPayDate, numTaxAmtDue) {
	var DaysDiff=0, intDue=0.0;
	var PayDate = new Date(strPayDate);
	var PayDateSec = PayDate.getTime();
	var DueDate = new Date(strDueDate);
	//alert(numDueDate + "-" + numPayDate);

	// 00000000 - 19750701
	if (numDueDate < 19750701) {
		if (numPayDate < 19750701) {
			DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
			intDue = intDue + (numTaxAmtDue * (DaysDiff * .00016438));
		} else {
			DaysDiff = CalcDaysDiff( Date.parse('1975/07/01'), DueDate.getTime() );
			intDue = intDue + (numTaxAmtDue * (DaysDiff * .00016438));
			numDueDate = 19750701;
			DueDate = new Date('1975/07/01');
		}
	}
	// 19750701 - 19820701
	if (numDueDate < 19820701) {
		if (numDueDate > 19750630) {
			if (numPayDate < 19820701) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00024658));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1982/07/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00024658));
				numDueDate = 19820701;
				DueDate = new Date('1982/07/01');
			}
		}
	}
	// 19820701 - 19831231
	if (numDueDate < 19840101) {
		if (numDueDate > 19820630) {
			if (numPayDate < 19840101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00041096));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1984/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00041096));
				numDueDate = 19840101;
				DueDate = new Date('1984/01/01');
			}
		}
	}
	// 19840101 - 19841231
	if (numDueDate < 19850101) {
		if (numDueDate > 19831231) {
			if (numPayDate < 19850101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032787));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1985/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032787));
				numDueDate = 19850101;
				DueDate = new Date('1985/01/01');
			}
		}
	}
	// 19850101 - 19851231
	if (numDueDate < 19860101) {
		if (numDueDate > 19841231) {
			if (numPayDate < 19860101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00035616));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1986/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00035616));
				numDueDate = 19860101;
				DueDate = new Date('1986/01/01');
			}
		}
	}
	// 19860101 - 19861231
	if (numDueDate < 19870101) {
		if (numDueDate > 19851231) {
			if (numPayDate < 19870101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032877));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1987/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032877));
				numDueDate = 19870101;
				DueDate = new Date('1987/01/01');
			}
		}
	}
	// 19870101 - 19871231
	if (numDueDate < 19880101) {
		if (numDueDate > 19861231) {
			if (numPayDate < 19880101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032877));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1988/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032877));
				numDueDate = 19880101;
				DueDate = new Date('1988/01/01');
			}
		}
	}
	// 19880101 - 19881231
	if (numDueDate < 19890101) {
		if (numDueDate > 19871231) {
			if (numPayDate < 19890101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032787));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1989/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032787));
				numDueDate = 19890101;
				DueDate = new Date('1989/01/01');
			}
		}
	}
	// 19890101 - 19891231
	if (numDueDate < 19900101) {
		if (numDueDate > 19881231) {
			if (numPayDate < 19900101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032877));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1990/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032877));
				numDueDate = 19900101;
				DueDate = new Date('1990/01/01');
			}
		}
	}
	// 19900101 - 19901231
	if (numDueDate < 19910101) {
		if (numDueDate > 19891231) {
			if (numPayDate < 19910101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00035616));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1991/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00035616));
				numDueDate = 19910101;
				DueDate = new Date('1991/01/01');
			}
		}
	}
	// 19910101 - 19911231
	if (numDueDate < 19920101) {
		if (numDueDate > 19901231) {
			if (numPayDate < 19920101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032877));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1992/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032877));
				numDueDate = 19920101;
				DueDate = new Date('1992/01/01');
			}
		}
	}
	// 19920101 - 19921231
	if (numDueDate < 19930101) {
		if (numDueDate > 19911231) {
			if (numPayDate < 19930101) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032787));
			} else {
				DaysDiff = CalcDaysDiff( Date.parse('1993/01/01'), DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00032787));
				numDueDate = 19930101;
				DueDate = new Date('1993/01/01');
			}
		}
	}
	// 19930101 - 00000000
	if (numDueDate > 19921231) {
				DaysDiff = CalcDaysDiff( PayDateSec, DueDate.getTime() );
				intDue = intDue + (numTaxAmtDue * (DaysDiff * .00035616));
	}
	intDue = roundto(1, intDue);
	//alert (DaysDiff + "-" + intDue);
	return intDue;
}

//-->
//</script>