<!-- 
var errorColor = "#FED762";
var defaultColor = "#FFFFFF";

function openWindow(url,width,height,resize,scroll) {
    x = (640 - width)/2, y = (480 - height)/2;

    if (screen) {
        y = (screen.availHeight - height)/2;
        x = (screen.availWidth - width)/2;
    }

	if (screen.availWidth > 1800) { 
		x = ((screen.availWidth/2) - width)/2; 
    } 
	return window.open(url,'newWin','width='+width+',height='+height+',screenX='+x+',screenY='+y+',top='+y+',left='+x+',resizable='+resize+',scrollbars='+scroll+',menubar=no,status=no');
}

function trim (s) { 
	// this will get rid of leading spaces 
	var strText = new String(s);
	while (strText.substring(0,1) == ' ') 
        	strText = strText.substring(1, strText.length);

	// this will get rid of trailing spaces 
	while (strText.substring(strText.length-1,strText.length) == ' ')
		strText = strText.substring(0, strText.length-1);

	return strText;
}

function emailCheck (emailStr) {
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
		return false
	    }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   return false
}

// If we've gotten this far, everything's valid!
return true;
}

function phoneCheck (phoneStr) {
	if (trim(phoneStr) != "") {
        var phonePat = /^\(?\d{3}\)?\s|-\d{3}-\d{4}/;
//	 	var phonePat = /[0-9]{3}\-[0-9]{3}\-[0-9]{4}/;
		// See if Phone Number is valid 
		if (phoneStr.match(phonePat)==null) {
		    return false;
		}
	}
	return true;
}

function ssnCheck (ssnStr) {
	if (trim(ssnStr) != "") {
		//var ssnPat = /[0-9]{9}/;
		var ssnPat = /^\(?\d{3}\)?\s|-\d{2}-\d{4}/;
		// See if SSN is valid 
		if (ssnStr.match(ssnPat)==null) {
		    return false;
		}
	}
	return true;
}

function numericCheck (numericStr) {
// Check to see if the string is in a valid numeric format
	if (trim(numericStr) != "") {
		var pattern = /\d{1,5}|\d{1,3}\.\d{1,2}$/;
		// See if numeric is valid 
		if (numericStr.match(pattern)==null) {
		    return false;
		}
	}
	return true;
}

function percentCheck (numericStr) {
	// Check to see if the string is in a valid numeric format
	if (trim(numericStr) != "") {
		var pattern = /\d{1,3}%$|\d{1,3}\.\d{1,2}%$/;
		// See if numeric is valid 
		if (numericStr.match(pattern)==null) {
		    return false;
		}
	}
	return true;
}

function moneyCheck (moneyStr) {
// Check to see if the string is in a valid currency format
	if (trim(moneyStr) != "") {
		var pattern = /^\$?([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 pattern = /^((\$)[0-9]+|(\$)[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?$/;
//		var pattern = /\$\d{1,3}(,\d{3})*\.\d{2}$/;
		// See if currency is valid 
		if (!(moneyStr.match(pattern))) {
			return false;
		}
	}
	return true;
}

function timeCheck (timeStr) {
// Check to see if the string is in a valid time format
	if (trim(timeStr) != "") {
		var pattern = /\d{1,2}\:\d{2}\s(AM|am|PM|pm)$/;
		// See if currency is valid 
		if (!(timeStr.match(pattern))) {
			return false;
		}
	}
	return true;
}

function dateCheck (dateStr) {
	if (trim(dateStr) != "") {
		var sDate = dateStr;
		var patternDate1 = /[0-9]{2}\/[0-9]{2}\/[0-9]{4}/;
	 	if (sDate.match(patternDate1)) {
			var sDateMonth	= dateStr.substr(0,2);
			var sDateDay	= dateStr.substr(3,2);
			var sDateYear	= dateStr.substr(6,4);
	 	} else {
			var patternDate2 = /[0-9]{1}\/[0-9]{2}\/[0-9]{4}/;
			if (sDate.match(patternDate2)) {
				var sDateMonth	= "0" + dateStr.substr(0,1);
				var sDateDay	= dateStr.substr(2,2);
				var sDateYear	= dateStr.substr(5,4);
		 	} else {
				var patternDate3 = /[0-9]{2}\/[0-9]{1}\/[0-9]{4}/;
				if (sDate.match(patternDate3)) {
					var sDateMonth	= dateStr.substr(0,2);
					var sDateDay	= "0" + dateStr.substr(3,1);
					var sDateYear	= dateStr.substr(5,4);
			 	} else {
					var patternDate4 = /[0-9]{1}\/[0-9]{1}\/[0-9]{4}/;
					if (sDate.match(patternDate4)) {
						var sDateMonth	= "0" + dateStr.substr(0,1);
						var sDateDay	= "0" + dateStr.substr(2,1);
						var sDateYear	= dateStr.substr(4,4);
					} else {
						return false;
					}
				}
			}	
		}
	
		if ( ( (sDateMonth < "01") || (sDateMonth > "12") )
		|| ( (sDateMonth == "01") && ((sDateDay < "01") || (sDateDay > "31")) ) 
		|| ( (sDateMonth == "02") && ((sDateDay < "01") || (sDateDay > "29")) ) 
		|| ( (sDateMonth == "03") && ((sDateDay < "01") || (sDateDay > "31")) ) 
		|| ( (sDateMonth == "04") && ((sDateDay < "01") || (sDateDay > "30")) ) 
		|| ( (sDateMonth == "05") && ((sDateDay < "01") || (sDateDay > "31")) ) 
		|| ( (sDateMonth == "06") && ((sDateDay < "01") || (sDateDay > "30")) ) 
		|| ( (sDateMonth == "07") && ((sDateDay < "01") || (sDateDay > "31")) ) 
		|| ( (sDateMonth == "08") && ((sDateDay < "01") || (sDateDay > "31")) ) 
		|| ( (sDateMonth == "09") && ((sDateDay < "01") || (sDateDay > "30")) ) 
		|| ( (sDateMonth == "10") && ((sDateDay < "01") || (sDateDay > "31")) ) 
		|| ( (sDateMonth == "11") && ((sDateDay < "01") || (sDateDay > "30")) ) 
		|| ( (sDateMonth == "12") && ((sDateDay < "01") || (sDateDay > "31")) ) ) {
			return false;
		}
		
		if (sDateYear < "1898") {
			return false;
		}
		
		if (((sDateYear % 4) > 0) && (sDateMonth=="02") && (sDateDay>"28"))	{
			return false;
		}
	}
	return true;
}

function validateState(State) {
	if (State.value!="") {
		var sState = trim(State.value.toUpperCase());
		
		if (!((sState == "AK") || (sState == "AL") || (sState == "AR") || (sState == "AS") || (sState == "AZ") ||
			(sState == "CA") || (sState == "CO") || (sState == "CT") || (sState == "DC") || (sState == "DE") ||
			(sState == "FL") || (sState == "GA") || (sState == "HI") || (sState == "IA") || (sState == "ID") ||
			(sState == "IL") || (sState == "IN") || (sState == "KS") || (sState == "KY") || (sState == "LA") ||
			(sState == "MA") || (sState == "MD") || (sState == "ME") || (sState == "MI") || (sState == "MN") ||
			(sState == "MO") || (sState == "MS") || (sState == "MT") || (sState == "NC") || (sState == "ND") ||
			(sState == "NE") || (sState == "NH") || (sState == "NJ") || (sState == "NM") || (sState == "NV") ||
			(sState == "NY") || (sState == "OH") || (sState == "OK") || (sState == "OR") || (sState == "PA") ||
			(sState == "PR") || (sState == "RI") || (sState == "SC") || (sState == "SD") || (sState == "TN") ||
			(sState == "TX") || (sState == "UT") || (sState == "VA") || (sState == "VT") || (sState == "WA") ||
			(sState == "WI") || (sState == "WV") || (sState == "WY"))) {
			//alert("State is not a valid state code.");
			State.focus();
			State.select();
			return false;
		}
		else {
			return true;
		}
	}
	else {
	 	return true;
	}
}

function validateZIP(field) {
	if (field.value !="") {
		var valid = "0123456789-";
		var hyphencount = 0;
		var msg = "The zip code you entered is invalid.  Please correct the following error(s):\n"
		var error
		var errorTemp = false;
		var errorHyphen = false;
		
		if (field.value.length!=5 && field.value.length!=10) {
			msg = msg + "\tEnter a 5 digit or 5 digit+4 zip code.\n";
			error = true;
		}
		//alert(field.value.length);
		for (var i=0; i < field.value.length; i++) {
			temp = "" + field.value.substring(i, i+1);
			//alert(temp);
			if (temp == "-") hyphencount++;
			if (valid.indexOf(temp) == "-1") {
				errorTemp = true;
			}
			
			if ((hyphencount > 1) || ((field.value.length==10) && ""+field.value.charAt(5)!="-")) {
				errorHyphen = true;
			}
		}
			
			if (errorTemp==true) {
				msg = msg + "\tInvalid characters in your zip code.\n";
				error = true;
			}
			
			if (errorHyphen==true) {
				msg = msg + "\tThe hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.\n";
				error = true;
			}
			
			if (error) {
				msg = msg + "Please try again."
				//alert(msg)
				field.focus();
				field.select();
				return false;
			}
			else {
				return true;
			}
	}
	else {
		return true;
	}
}
