// Old Functions *** REMOVE LATER ***

function openEdit(TARGETPG, var1, var2, VAR3_ID, VAR4_ID, h, w, l, t, opt){
	if (opt==1)
		window.open	(TARGETPG+'?var1='+var1+'&var2='+var2+'&VAR3_ID='+VAR3_ID+'&VAR4_ID='+VAR4_ID, 'NewWindow', config='height='+h+', width='+w+', left='+l+', top='+t+', toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, directories=no, status=no');
	else if (opt==2)
		window.open	(TARGETPG+'?var1='+var1+'&var2='+var2+'&VAR3_ID='+VAR3_ID+'&VAR4_ID='+VAR4_ID, 'NewWindow', config='height='+h+', width='+w+', left='+l+', top='+t+', toolbar=yes, menubar=no, scrollbars=yes, resizable=yes, location=no, directories=no, status=no');
}


// General Functions

function openWindow(vPAGE, vNEWWINDOW, vHEIGHT, vWIDTH, vLEFT, vTOP, vTOOLBAR, vMENUBAR, vSCROLLBARS, vRESIZABLE) {
	window.open(vPAGE, vNEWWINDOW, config='height='+vHEIGHT+', width='+vWIDTH+', left='+vLEFT+', top='+vTOP+', toolbar='+vTOOLBAR+', menubar='+vMENUBAR+', scrollbars='+vSCROLLBARS+', resizable='+vRESIZABLE+', location=no, directories=no, status=no');
}




// Form Functions

function SwapTab(newTab){
	var x = document.getElementsByTagName('div');

	for (var i = 0; i < x.length; i++) {
		if (x[i].getAttribute('divType') == 'info' ) {
			if (x[i].id == newTab+'Info' ) {
				x[i].style.display = 'block';
				document.getElementById(x[i].id+'Link').style.backgroundImage = 'url(../images/tabOn.gif)';
				document.getElementById('sTAB').value = x[i].getAttribute('ref1');
			} else {
				x[i].style.display = 'none';
				document.getElementById(x[i].id+'Link').style.backgroundImage = 'url(../images/tabOff.gif)';
			}
		}
	}
}

function setfocusfield(vFIELDID){
	var vFIELD = document.getElementById(vFIELDID);
	tFIELD = vFIELD;
	setTimeout("tFIELD.focus();",0);
}



// List Functions

function MoveRecord(vOpt) {
	var sPath = window.location.pathname;
	var sTab = document.getElementById('sTAB').value;
	var sName = document.getElementById('sNAME').value;

	if (vOpt == 0) {
		var sID = document.getElementById('sMinID').value;
	} else if (vOpt == 1) {
		var sID = document.getElementById('sPrvID').value;
	} else if (vOpt == 2) {
		var sID = document.getElementById('sNxtID').value;
	} else if (vOpt == 3) {
		var sID = document.getElementById('sMaxID').value;
	}

	var sHref = sPath + '?' + sName + '=' + sID + '&TAB=' + sTab;
	document.location.href = sHref;
}

function submitFrm(pNav, sField, sType) {
	document.query.vSORT.value = sField;
	document.query.vSORTTYPE.value = sType;
	document.query.vNAV.value = pNav;
	document.query.submit();
}




// Validation Functions

function validateValue(vFIELDOBJ, vLENGTHMIN, vLENGTHMAX, vFIELDNAME, vBNUM) {
	var valid=false;
	var errorMsg="";
	var regN = /^[0-9]{0,3}\.?[0-9]{1,2}$/;
	var regC = /^\-?[$]?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/
	var regD = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[9]|[2-9]\d)?\d{2})$/;
	var regT = /^(((((0)?([1-9])))|(1[012]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2}))/;
	var regS = /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NB|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)$/;

// currency: var regC = /^(-)?\d+(\.\d\d)?$/;
// var regC = /^\$?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/

	if(vFIELDOBJ.value == null)
		errorMsg = "The "+vFIELDNAME+" field is empty. Please enter "+vFIELDNAME+".";
	else if (vFIELDOBJ.value == "")
		errorMsg = "The "+vFIELDNAME+" field is empty. Please enter "+vFIELDNAME+".";
	else if (vFIELDOBJ.value.length==0)
		errorMsg = "The "+vFIELDNAME+" field is empty. Please enter "+vFIELDNAME+".";
	else if (vFIELDOBJ.value.length<vLENGTHMIN || vFIELDOBJ.value.length>vLENGTHMAX)
		errorMsg = "The value you enter for "+vFIELDNAME+" may be too short or long. Please re-enter "+vFIELDNAME+". Current Length="+vFIELDOBJ.value.length+" Min="+vLENGTHMIN+" Max="+vLENGTHMAX+".";
	else if (vBNUM == "cur" && !regC.test(vFIELDOBJ.value))
		errorMsg = "Please enter numeric values only in "+vFIELDNAME+".";
	else if (vBNUM == "date" && !regD.test(vFIELDOBJ.value))
		errorMsg = "Please enter date values as 'mm/dd/yyyy' only in "+vFIELDNAME+".";
	else if (vBNUM == "time" && !regT.test(vFIELDOBJ.value))
		errorMsg = "Please enter date values as 'hh:mm:ss AM/PM' only in "+vFIELDNAME+". Note: Seconds are optional.";
	else if (vBNUM == "state" && !regS.test(vFIELDOBJ.value.toUpperCase()))
		errorMsg = "Please enter a valid U.S. state only in "+vFIELDNAME+".";
	else if (vBNUM == true && !regN.test(vFIELDOBJ.value))
		errorMsg = vBNUM + "The value you entered in the "+vFIELDNAME+" field may be invalid. Please try again.";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {vFIELDOBJ.focus();} catch(e) {}
	}
	return valid;
}

function validateDates(vFIELDOBJ, vFIELDNAME) {
	var valid=false;
	var errorMsg="";
	var regD = /(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d/;
	var regD = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
	var regD = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[9]|[2-9]\d)?\d{2})$/;

	if(vFIELDOBJ.value == null)
		valid = true;
	else if (vFIELDOBJ.value == "")
		valid = true;
	else if (!regD.test(vFIELDOBJ.value))
		errorMsg = "Please enter date values as 'mm/dd/yyyy' only in "+vFIELDNAME+".";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {vFIELDOBJ.focus();} catch(e) {}
	}
	return valid;
}

function validateTimes(vFIELDOBJ, vFIELDNAME) {
	var valid=false;
	var errorMsg="";
	var regT = /^(((((0)?([1-9])))|(1[012]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2}))/;

	if(vFIELDOBJ.value == null)
		valid = true;
	else if (vFIELDOBJ.value == "")
		valid = true;
	else if (!regT.test(vFIELDOBJ.value))
		errorMsg = "Please enter date values as 'hh:mm:ss AM/PM' only in "+vFIELDNAME+".";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {vFIELDOBJ.focus();} catch(e) {}
	}
	return valid;
}

function validateEmail(vFIELDOBJ, vLENGTHMIN, vLENGTHMAX, vFIELDNAME) {
	var valid = false;
	var errorMsg = "";
	var reg =  /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

	if(vFIELDOBJ.value == null)
		errorMsg = "The "+vFIELDNAME+" field is empty. Please enter "+vFIELDNAME+".";
	else if (vFIELDOBJ.value.length==0)
		errorMsg = "The "+vFIELDNAME+" field is empty. Please enter "+vFIELDNAME+".";
	else if (vFIELDOBJ.value.length < vLENGTHMIN || vFIELDOBJ.value.length > vLENGTHMAX)
		errorMsg = "The value you entered in the "+vFIELDNAME+" field may be too short or invalid. Please try again.";
	else if (!reg.test(vFIELDOBJ.value))
		errorMsg = "The value you entered in the "+vFIELDNAME+" field may be invalid. Please try again.";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {vFIELDOBJ.focus();} catch(e) {}
	}
	return valid;
}

function bNumber(vFIELDOBJ, vFIELDNAME) {
	var valid=false;
	var errorMsg="";
	var regN = /^[0-9]{0,2}\.?[0-9]{1,2}$/;
	var regC = /^\-?[$]?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/

	if(vFIELDOBJ.value == null)
		valid = true;
	else if (vFIELDOBJ.value == "")
		valid = true;
	else if (!regN.test(vFIELDOBJ.value))
		errorMsg = "The value you entered in the "+vFIELDNAME+" field may be invalid. Please try again.";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {vFIELDOBJ.focus();} catch(e) {}
	}
	return valid;
}

function validateNumeric(vFIELDOBJ, vLENGTHMIN, vLENGTHMAX, vFIELDNAME) {
	var valid=false;
	var errorMsg="";

	if(vFIELDOBJ.value=="TestCC#")
		valid = true;
	else if(vFIELDOBJ.value=="")
		errorMsg = "The "+vFIELDNAME+" field is empty. Please enter a valid number.";
	else if (vFIELDOBJ.value.length==0)
		errorMsg = "The "+vFIELDNAME+" field is empty. Please enter a valid number.";
	else if (vFIELDOBJ.value.length<vLENGTHMIN || vFIELDOBJ.value.length>vLENGTHMAX)
		errorMsg = "The "+vFIELDNAME+" field is must be between "+vLENGTHMIN+" and "+vLENGTHMAX+". Please enter a valid number.";
	else if (verifyLUHN(vFIELDOBJ.value)==false)
		errorMsg = "The "+vFIELDNAME+" number you provided is invalid. Please enter a valid number.";
	else
		valid = true;
	
	if (valid==false) {
		window.alert(errorMsg);
		try {vFIELDOBJ.focus();} catch(e) {}
	}
	return valid;
}

function verifyLUHN(num){
	var counter = new Number(0);
	var tempcount = new Number(0);
	var tempstring; 
	var half = new Number(parseInt((num.length - 1) * 0.5)); 
	for (var j=0; j <= half; j++){ 
		counter = counter + parseInt(num.substring(num.length - 2 * j - 1, num.length - 2 * j));
	} 
	half = parseInt(num.length * .5) - 1;

	for (j=0; j <= half; j++){ 
		tempcount = 2 * parseInt(num.substring(num.length - 2*j - 2,num.length - 2*j - 1)); 
		tempstring = tempcount.toString(); 
		if(tempstring.length == 2){ 
			counter = counter + parseInt(tempstring.substring(0,1)) + parseInt(tempstring.substring(1,2)); 
		} 
		else{
			counter = counter + parseInt(tempstring.substring(0,1)); 
		} 
	} 

	if(counter % 10 == 0){
		return true;
	} 
	else{ 
		return false; 
	}
}