//************   EMAIL   *************
function EmailCheck(jemail, jreq)
{
	if((jreq == 0)&&(jemail.value == "")){return true;}
	else{		
		// checks if the e-mail address is valid
		var emailPat = "^\\w+([_]*[\\-\\.]?[_]*\\w+[_]*)*@\\w+([_]*[\\-\\.]?[_]*\\w+[_]*)*(\\.\\w{1}\\w+)+$";
		var matchArray = jemail.value.match(emailPat);
		if (matchArray == null){
			return false;
		}
		// make sure the IP address domain is valid
		var IPArray = matchArray[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);
		if (IPArray != null){
			for (var i=1;i<=4;i++){
				if (IPArray[i]>255){
					return false;
				}
			}
		}
	}
	return true;
}

// ***********  PHONE    ***************
function PhoneCheck(jphone, jreq)
{
	if((jreq == 0)&&(jphone.value == "")){return true;}
	else{
	
		// If number is missing seperators put them in
		if(jphone.value.length == 10){
			
			var i = 0;
			var tmp = "";
			for(i = 0; i < 10; i++){
					if(i < 2 || i == 3 || i == 4 || i > 5){
						tmp = tmp + jphone.value.substr(i,1);}
					if(i == 2 || i == 5){
						tmp = tmp + jphone.value.substr(i, 1) + "-";}
			}
			jphone.value = String(tmp)
		}
	
		// checks if the e-mail address is valid
		var phonePat = /^[0-9]{3}-[0-9]{3}-[0-9]{4}$/;

		var matchArray = jphone.value.match(phonePat);
		if (matchArray == null) {
			return false;
		}
		return true;
	}
}

// ***********  ZIPCODE    ***************
function ZipCheck(jzip, jreq)
{
	if((jreq == 0)&&(jzip.value == "")){return true;}
	else{
	
	if(jzip.value.length == 9){
			
			var i;
			var tmp = "";
			for(i = 0; i < 9; i++){
					if(i < 4 || i > 4){
						tmp = tmp + jzip.value.substr(i,1);}
					if(i == 4){
						tmp = tmp + jzip.value.substr(i, 1) + "-";}
			}
				jzip.value = String(tmp)
		}
	
			
		var zipPat = /^[0-9]{5}$|^[0-9]{5}-[0-9]{4}$/;
		var matchArray = jzip.value.match(zipPat);
		if (matchArray == null) {
			return false;
		}
		return true;
	}
}

// ***********  SOCIAL SECURITY     ***************
function SSCheck(jss, jreq)
{
	if((jreq == 0)&&(jss.value == "")){return true;}
	else{
	
		if(jss.value.length == 9){
			
			var i;
			var tmp = "";
			for(i = 0; i < 9; i++){
					if(i == 0 || i == 1 || i == 3){
						tmp = tmp + jss.value.substr(i,1);}
					if(i == 2){
						tmp = tmp + jss.value.substr(i, 1) + "-";}
					if(i == 4){
						tmp = tmp + jss.value.substr(i, 1) + "-";}
					if(i > 4){
						tmp = tmp + jss.value.substr(i, 1);}
			}
				jss.value = tmp
		}			
		var ssPat = /^[0-9]{3}-[0-9]{2}-[0-9]{4}$/;
		var matchArray = jss.value.match(ssPat);
		if (matchArray == null){
			return false;
		}
		return true;	
	}
}

// ***********  NUMERIC     ***************
function NumberCheck(jnum, jreq)
{
	if((jreq == 0)&&(jnum.value == "")){return true;}
	else{		
		var numPat = /^[0-9]{1,99}$/
		var matchArray = jnum.value.match(numPat);
		if (matchArray == null) {
			return false;}
		return true;
	}
}

// *********** FLOAT *******************
function FloatCheck(fld,sep)
{ // decimal number check/complainer 
  if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
  var val= fld.value;
  if(typeof(sep)!='undefined') val= val.replace(new RegExp(sep,'g'),'');
  val= parseFloat(fld.value);
  if(isNaN(val))
  { // parse error 
    return false;
  }
  fld.value= val;
  return true;
}

// ***********  LOAN NUMBER     ***************
function LoanCheck(jln, jreq)
{
	if((jreq == 0)&&(jln.value == "")){return true;}
	else{		
		//Only allows numbers or letters
		var lnPat = /^[0-9a-zA-Z]{1,20}$/;
		var matchArray = jln.value.match(lnPat);
		if (matchArray == null) {
			return false;
		}
		return true;
	}
}

// ***********  LETTERS     ***************
function LettersCheck(jlet, jreq)
{
	if((jreq == 0)&&(jlet.value == "")){return true;}
	else{		
		var letPat = /^[a-zA-Z]{1,9999}$/
		var matchArray = jlet.value.match(letPat);
		if (matchArray == null){
			return false;
		}
		return true;
	}
}

function MoneyCheck(jmoney, jreq, emv) 
{
	if((jreq == 0)&&(jmoney.value=='')){
				jmoney.value = 0;
				return true;}
	var anynum = cleanmoney(jmoney.value);
	if(isNaN(anynum) == false){
	
	if(emv == 1){anynum = (anynum * 1000)};
	
		    //-- Returns passed number as string in $xxx,xxx.xx format.
	   anynum=eval(anynum)
	   workNum=Math.abs((Math.round(anynum*100)/100));workStr=""+workNum
	   
	   if (workStr.indexOf(".")==-1){workStr+=".00"}
	   
	   dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
	   pStr=workStr.substr(workStr.indexOf("."))
	   while (pStr.length<3){pStr+="0"}
	
	   if(emv == 1){jmoney.value = (jmoney.value * 1000)};
	   //--- Adds comma in thousands place.
	   if (dNum>=1000) {
		  dLen=dStr.length
		  dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
	   }
	
	   //-- Adds comma in millions place.
	   if (dNum>=1000000) {
		  dLen=dStr.length
		  dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
	   }
	   retval = dStr + pStr 
	   //-- Put numbers in parentheses if negative.
	   if (anynum<0) {retval="("+retval+")"}
	   
    jmoney.value = '$' + retval;
	return true;
	}
	else{
	return false;}

}

function ReqCheck(jcheck, jreq)
{
	if((jreq == 1)&&(jcheck.value == "")){return false;}
	return true;
}
//************   DATES   *************
function DateCheck(jdate, jreq, jtype, jstyle){
/* 
   Created By:  Michael C. Roof,  mroof@cranialfeed.com
   Hosted By:   http://www.cranialfeed.com
                mroof@cranialfeed.com
   Creation Date: 02/05/2003
   Title: Super Duper Date Validator
    
   DETAIL DESCRIPTION AVAILABLE AT: 
   http://www.cranialfeed.com/DateCheck.aspx	
*/
var i = 0;			//counter
var jmonth = '';	//month holder
var jday = '';		//date holder
var jyear = '';		//year holder
var jctr = 0;		//date seperator counter
var err	= 0;		//error holder
var jleap =	0;		//leap year holder
var jholder;		//character holder
var jnosep = false;	//validate date type as no-sep or sep
var jfinalsep = "/";//separator used in final date format

if((jreq == 0)&&(jdate.value == "")){err = 3;}
else
	{
	//break string up into DAY, MONTH, YEAR
	for(i = 0; i < jdate.value.length; i++){
			jholder = jdate.value.substr(i,1);
				//WITH SEPERATORS
			if((jdate.value.substr(i,1) == "/") || (jdate.value.substr(i,1) == "-")){
				jctr = jctr +1;}	//set seperator counter
			else if((jctr == 0) && (i < 3)){	//MONTH
				jmonth = jmonth + jholder;}
			else if(jctr == 1){				//DAY
				jday = jday + jholder;}
			else if(jctr == 2){				//YEAR
				jyear = jyear + jholder;}
			else if((i == jdate.value.length - 1) && (jctr == 0) && (jdate.value != "")){
				jnosep = true;}
		}
		if(jnosep == true)
		{
			//WITHOUT SEPERATORS
			jday = "";
			jyear = "";
			jmonth = "";
			jholder = "";
			
			for(i = 0; i < jdate.value.length; i++)
			{
				jholder = jdate.value.substr(i,1);			
				if(i <= 1){ jmonth = jmonth + jholder;}
				if((i > 1) && (i < 4)){ jday = jday + jholder;}
				if((i > 3) && (i < 8)){ jyear = jyear + jholder;}
			}
		}
		//VALIDATE MONTH STRING
		if((jmonth.length <= 2) && (jmonth >= 1) && (jmonth <= 12)){
			if(jmonth.length == 1){
				jmonth = "0" + jmonth;}
			}
		else{
		err = 2;}
		
		//VALIDATE DAY STRING
		if((err != 2) && (jday.length <= 2) && (jday >= 1) && (jday <= 31)){
				if(jday.length == 1){
					jday = "0" + jday;}
			}
		else{
		err = 2;}
		
		//VALIDATE YEAR STRING
		if(jtype == 2){
			if((jyear.length == 2) && (jyear >= 50) && (jyear <= 99)){
				jyear = "19" + jyear;}
			else if((jyear.length == 2) && (jyear >= 0) && (jyear <= 49)){
				jyear = "20" + jyear;}
			else if((jyear.length == 4) && (jyear >= 0)){
				}//jyear keeps existing value
			else
			{err = 2;}
			}
		else if((jtype == 0) && (jyear.length != 4)){err = 2;}
		else{
			if((jyear.length == 2) && (jyear >= 0) && (jyear <= 99)){
				jyear = "20" + jyear;}
			else if((jyear.length == 4) && (jyear >= 0)){
				}//jyear keeps existing value
			else
			{err = 2;}
		}
		
		//CHECK NUMBER OF DAYS FOR EACH MONTH 
		if((err != 2) && (jday <= 31) && (jmonth == 01) || (jmonth == 03)
			|| (jmonth == 05) || (jmonth == 07) || (jmonth == 08) || (jmonth == 10)
			|| (jmonth == 12)){/* do nothing */}
		else if((err != 2) && (jday <= 30) && (jmonth == 04) || (jmonth == 06)
			|| (jmonth == 09) || (jmonth == 11)){ /* do nothing */}
			
		//VALIDATE LEAP YEAR -- February -- DAY
   		if ((jyear % 4 == 0) || (jyear % 100 == 0) || (jyear % 400 == 0)) {jleap = 1;}
		if ((jmonth == 2) && (jleap == 1) && (jday > 29)){err = 2;}
   		if ((jmonth == 2) && (jleap != 1) && (jday > 28)){err = 2;}		
	}
	//Return Response
	if(err == 2){
	//Validation failed -- feturn false
	return false;}
	else if(err == 3){return true;}
	else{
	//Validation passed -- return true
	//		MM/DD/YYYY
	if((jstyle == 0) || (jstyle == '')){
		jdate.value = (jmonth + jfinalsep + jday + jfinalsep + jyear);}
		
	//		M/D/YYYY
	else if(jstyle == 1){
		jdate.value = ((jmonth * 1) + (jfinalsep) + (jday * 1) + (jfinalsep) + (jyear));}
			
	//		MM/DD/YY	
	else if(jstyle == 2){
		jyear = jyear.substr(2,2);
		jdate.value = (jmonth + jfinalsep + jday + jfinalsep + jyear);}	
	
	//		M/D/YY
	else if(jstyle == 3){
		if(jmonth < 10){jmonth = (jmonth * 1);}
		if(jday < 10){jday = (jday * 1);}
		jyear = jyear.substr(2,2);
		jdate.value = (jmonth + jfinalsep + jday + jfinalsep + jyear);}		
	return true;
	}
}
function f(myfield, val){if(! val){/*do nothing*/}}

function cleanmoney(myvalue)
{
		var ctr;
		var mholder = '';
		for(ctr = 0; ctr < myvalue.length; ctr++){
			if((myvalue.substr(ctr,1) != ',') && (myvalue.substr(ctr,1)!=' ')&& (myvalue.substr(ctr,1)!=''))
			{mholder = mholder + myvalue.substr(ctr,1);}
		}
	
	if(mholder == ''){return 'Null';}
	else{return mholder;}
}

// ***********  YEAR     ***************
function YearCheck(jyear, jreq)
{
if((jreq == 0)&&(jyear.value == "")){return true;}
	else
	{		
		var numPat = /^[0-9]{4}$/;
		var matchArray = jyear.value.match(numPat);
		if (matchArray == null) {
			return false;
		}
		else
		{
			if((jyear.value >= 1700)&&(jyear.value <= 2300))
			{return true;}
			else{return false;}
		}
	}	
}
function trim(inputString) {
   // Removes leading and trailing spaces from the passed string. Also removes
   // consecutive spaces and replaces it with one space. If something besides
   // a string is passed in (null, custom object, etc.) then return the input.
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
} 

//function ff(myfield, firstfield){
//if (firstfield == ''){return 'document.form1.' + myfield + '.focus();'}
//}
