var isNN = (navigator.appName.indexOf("Netscape")!=-1);

function dateinput(input,len1,len2,tabbing, e) {
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length == len1 && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len1)+"/";
	}
	
	if(input.value.length == len2 && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len2)+"/";
	}

	if (input.value.length == tabbing && !containsElement(filter,keyCode)) {
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
}

function monthyearinput(input,len1,tabbing, e) {
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length == len1 && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len1)+"/";
	}

	if (input.value.length == tabbing && !containsElement(filter,keyCode)) {
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
}

function accountinput(input,len1,tabbing, e) {
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length == len1 && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len1)+"-";
	}

	if (input.value.length == tabbing && !containsElement(filter,keyCode)) {
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
}

function phoneinput(input,len1,len2,tabbing, e) {
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length == len1 && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len1)+"-";
	}
	
	if(input.value.length == len2 && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len2)+"-";
	}
	
	if (input.value.length == tabbing && !containsElement(filter,keyCode)) {
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
}

function containsElement(arr, ele) {
	var found = false, index = 0;
	while(!found && index < arr.length)
	if(arr[index] == ele)
		found = true;
	else
		index++;
	return found;
}

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;
}

function RawData(strEntry) {
	var char_array = new Array("$",",","%");
	temp = "" + strEntry; // temporary holder
	for (x=0;x<char_array.length;x++) {
		out = char_array[x]; // replace this
		add = ""; // with this
		
		while (temp.indexOf(out)>-1) {
			pos= temp.indexOf(out);
			temp = "" + (temp.substring(0, pos) + add + 
			temp.substring((pos + out.length), temp.length));
		}
	}
	
	return parseFloat(temp);
}

function format1000 (n, d) {
	n = round (n, d);
	if (d>0)  {
		for (var i = n.indexOf('.') - 3; i > 0; i -= 3)
		  n = n.substring(0, i) + ',' + n.substring(i);
	} else {
		num = n+"";
		n = "";
		i = 1;
		for (x=0;x<num.length;x++) {
			n = num.substring(num.length-x-1,num.length-x) + n;
			if (i<3) {
				i++;
			} else {
				if (x!=num.length-1) {
					n = "," + n;
					i=1;
				}
			}
		}
	}
	return n;
}

function round (n, d) {
	n = n - 0;
	var f = Math.pow(10, d);
	n = Math.round(n * f) / f;
	n += Math.pow(10, - (d + 1));
	n += '';
	return d == 0 ? n.substring(0, n.indexOf('.')) :
	    n.substring(0, n.indexOf('.') + d + 1);
}

// ******************************************************************
// This function accepts a string variable and verifies if it is a
// proper date or not. It validates format matching either
// mm-dd-yyyy or mm/dd/yyyy. Then it checks to make sure the month
// has the proper number of days, based on which month it is.

// The function returns true if a valid date, false if not.
// ******************************************************************

function isDate(dateStr) {

var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
var matchArray = dateStr.match(datePat); // is the format ok?

if (matchArray == null) {
alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
return false;
}

month = matchArray[1]; // p@rse date into variables
day = matchArray[3];
year = matchArray[5];

if (month < 1 || month > 12) { // check month range
alert("Month must be between 01 and 12.");
return false;
}

if (day < 1 || day > 31) {
alert("Day must be between 01 and 31.");
return false;
}

if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Month "+month+" doesn`t have 31 days!")
return 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)) {
alert("February " + year + " doesn`t have " + day + " days!");
return false;
}
}
return true; // date is valid
}


function CheckDate(strForm,strField){
	var dt=document[strForm][strField]
	if (isDate(dt.value)==false){
		dt.select();
		dt.focus();
		return false;
	} else {
		return true;
	}
 }
