<!-- 
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) {
	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 dateCheck (dateStr, today) 
{
	if (trim(dateStr) != "") 
	{
		var patternDash = /\-/g;
		var sDate = trim(dateStr).replace(patternDash,"/");	
		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 < "1900")
		{
		return false;
		}
		
		if (!checkLeap(sDateMonth, sDateDay, sDateYear))
		{
			return false;
		}

		if (!(compareDates(dateStr, today)))
		{
			return false;
		}
	}

	return true;
}

function compareDates(a, b) 
{
  	datA = new Date(a);
  	datB = new Date(b);

  	if (datA < datB) 
  	{ 
  		return true; 
	}
  	else 
	{
    	if (datA > datB) 
		{ 
			return false; 
		}
    	else 
		{ 	
			return true; 
		}
  	}
}

function checkLeap(sDateMonth, sDateDay, sDateYear)
{
		if (((sDateYear % 4) > 0) && (sDateMonth=="02") && (sDateDay>"28"))
		{
			return false;
		}
		else
		{
			return true;
		}
}

function checkTextArea(desc, textLength, alertMsg) {
	intLength = parseInt(textLength);
	//alert(intLength);
//	var pattern = /^\s{1,intLength}$/;
	var pattern = /^\s{1,5}$/;
	if (desc.value!="")	{
		if (desc.value.length>textLength)		{
			alert(alertMsg);
			desc.focus();
			return false;
		} else if (desc.value.match(pattern)) {
			alert(alertMsg);
			desc.focus();
			desc.select();
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}

}

function checkText(desc, alertMsg) {
	var pattern = /^\s{1,1000}$/;
	if (desc.value!="") {
		if (desc.value.length>1000) {
			alert(alertMsg);
			desc.focus();
			return false;
		}
		else if (desc.value.match(pattern)) {
			alert(alertMsg);
			desc.focus();
			desc.select();
			return false;
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
}

function checkText500(desc, alertMsg) {
	var pattern = /^\s{1,500}$/;
	if (desc.value!="") {
		if (desc.value.length>500) {
			alert(alertMsg);
			desc.focus();
			return false;
		}
		else if (desc.value.match(pattern)) {
			alert(alertMsg);
			desc.focus();
			desc.select();
			return false;
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
}

function checkText1500(desc, alertMsg) {
	var pattern = /^\s{1,1500}$/;
	if (desc.value!="") {
		if (desc.value.length>1500) {
			alert(alertMsg);
			desc.focus();
			return false;
		}
		else if (desc.value.match(pattern)) {
			alert(alertMsg);
			desc.focus();
			desc.select();
			return false;
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
}

function checkText3000(desc, alertMsg) {
	var pattern = /^\s{1,3000}$/;
	if (desc.value!="") {
		if (desc.value.length>3000) {
			alert(alertMsg);
			desc.focus();
			return false;
		}
		else if (desc.value.match(pattern)) {
			alert(alertMsg);
			desc.focus();
			desc.select();
			return false;
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
}

