
function ValidateInt(field)
{
	if(!parseInt(field.value))  
	{
    alert ("Please enter a valid number for " + field);
    field.focus();
    return (false);
  }
  return (true);
}

function CheckRequired(field, msg)
{
	if (field)
	{
		if (Trim(field.value).length == 0)
		{
			if (msg)
			{
				alert(msg);
				field.focus();
				return (false);
			}
			else
			{
				alert("Please enter the required field: " + field.name);
				field.focus();
				return (false);
			}
		}
	}
	return (true);
}

function CheckRange(field, min, max, fldName)
{
	if (field.value.length == 0)
	{
		alert((fldName ? fldName : field.name) + " is a required field.");
		field.focus();
		return false;
	}
	var fldVal = field.value;
	while (fldVal.substring(0,1) == '0')
		fldVal = fldVal.substring(1, fldVal.length);

	fldVal = parseInt(fldVal);
	if (fldVal < min)
	{
		alert("The minimum value for " + (fldName ? fldName : field.name) + " is " + min);
		field.focus();
		return false;
	}
	if (fldVal > max)
	{
		alert("The maximum value for " + (fldName ? fldName : field.name) + " is " + max);
		field.focus();
		return false;
	}
	return true;
}

function MinLength(field,len)
{
	if (field.value.length < len)
	{
		alert("Please enter at least " + len + " characters for the field: " + field.name);
		field.focus();
		return (false);
	}

	return (true);
}
	
function MaxLength(field,len)
{
	if (field.value.length > len)
	{
		alert("The maximum number of characters for this field is " + len + ". There are currently " + field.value.length + " characters entered into " + field.name + ".");
		field.focus();
		return (false);
	}

	return (true);
}

function CheckSSN(field)
{
	if ((field.value.indexOf("-") == 2) 
		&& (field.value.length == 10))
		{return true;}

	if ((field.value.indexOf("-") == 3) 
		&& (field.value.indexOf("-",4) == 6) 
		&& (field.value.length == 11))
		{return true;}

	alert("Please enter a valid SSN - format: xxx-xx-xxxx");
	field.focus();
	return (false);
}

function CheckPW(fld1,fld2)
{
	if (fld1.value.length < 4)
	{
		alert("Your password must be at least 4 characters long.");
		fld1.focus();
		return (false);
	}

	if (fld1.value != fld2.value)
	{
		alert("The password fields do not agree.");
		fld1.focus();
		return (false);
	}
	return (true); 
}

function CheckEmail(field)
{
	// Email address must be of form a@b.c -- in other words:
	// * there must be at least one character before the @
	// * there must be at least one character before and after the .
	// * the characters @ and . are both required
	//var emailexp = /^.+\@.+\..+$/
  //2008-12 TICKET 46597 - "improved" email validation
	//var emailexp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; //alternative?
  //var emailexp = /^[a-z0-9\._-]+\@([a-z0-9_-]+\.)+[a-z]{2,6}$/i; //alternative?
  //supposedly this will match "99.99% of all email addresses in actual use today", see http://www.regular-expressions.info/email.html:
	var emailexp = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i;
	
	if (!emailexp.test(field.value))
	{
		alert("Please enter a valid Email Address");
		field.focus();
		return (false);
	}

	return (true);
}

function ValidateSelection(entry,stringalert)
{
	if (entry.options[entry.selectedIndex].value.length == 0 || entry.options[entry.selectedIndex].text.length == 0)
	{
		alert (stringalert);
		entry.focus();
		return false;
  }  	
	return true;
}


function CheckDate(datPassed)
{
  var datDay=null;
  var datMonth=null;
  var datYear=null;
  var vntSpot;
  var vntCarry='';
  var vntDatPassed=datPassed.value;
  
  if ((vntDatPassed==null) || (vntDatPassed==''))
  {
    alert("Dates cannot be empty.");
    datPassed.focus();
    return false;
 	}
  
  for (var i=0; i<= vntDatPassed.length-1; i++)
 	{
    vntSpot=vntDatPassed.substring(i,i+1);

    if(parseInt(vntSpot,10) || vntSpot=='0')
    {
      vntCarry=(vntCarry + vntSpot);
    }
    else
    {		
      if(vntSpot=='/' || vntSpot=='-' || vntSpot=='.' || vntSpot==',')
      {
        if(datDay==null){datDay=vntCarry};
        	if(datMonth==null){datMonth=vntCarry;datDay=null};
        		vntCarry='';
      }
      else
      {
       	vntCarry='';break;
      }
   	}
  }
  
  datYear=vntCarry;

 	if(!(datYear=='00') && (parseInt(datYear,10)>9999) || datYear=='')
  {
    alert(vntDatPassed + ' is not a valid date');
    datPassed.focus();
    return false;
  }
  		
  //check leap year
  if(parseInt(datMonth,10)==2)
  {
		var intYear = parseInt(datYear,10);

		if(intYear==2012
			|| intYear==12
			|| intYear==2016
			|| intYear==16
			|| intYear==2020
			|| intYear==20
			|| intYear==2004 
  		|| intYear==4
  		|| intYear==2008
  		|| intYear==8)
		{
  		if(parseInt(datDay)>29)
			{
    		alert(vntDatPassed + ' is not a valid date');
    		datPassed.focus();
    		return false;
  		}
		}
		else
		{
  		if(parseInt(datDay)>28)
			{
    		alert(vntDatPassed + ' is not a valid date');
    		datPassed.focus();
    		return false;
  		}
		}
	}
  	
  //check valid days
  if(parseInt(datMonth, 10)==1
  	|| parseInt(datMonth, 10)==1 
  	|| parseInt(datMonth, 10)==3 
  	|| parseInt(datMonth, 10)==5 
  	|| parseInt(datMonth, 10)==7 
  	|| parseInt(datMonth, 10)==8 
  	|| parseInt(datMonth, 10)==10 
  	|| parseInt(datMonth, 10)==12)
  { 
  	if(parseInt(datDay,10)>31)
  	{
    	alert(vntDatPassed + ' is not a valid date');
    	datPassed.focus();
    	return false;
  	}	
  }
  else
  { 
  	if(parseInt(datDay,10)>30)
  	{
    	alert(vntDatPassed + ' is not a valid date');
    	datPassed.focus();
    	return false;
  	}	
  }
  		
  if(parseInt(datDay,10)<=0
     	|| parseInt(datMonth,10)>=13
      || parseInt(datMonth,10)<=0
      || datDay==null
      || datMonth==null)
  {
    alert(vntDatPassed + ' is not a valid date');
    datPassed.focus();
    return false;
  }
  else
	{
		datPassed.value=datMonth + '/' + datDay + '/' + datYear;
		return true;
	}
}

function CheckAmount(field)
{
	var curPay = field.value.replace('$', '');
	curPay = curPay.replace(',', '');
	try 
	{
		if (curPay.length == 0)
		{
			alert('Please enter a valid payment amount.');
			field.focus();
			return false;
		}
			
		curPay = parseFloat(curPay);
		if (isNaN(curPay))
		{
			alert('Please enter a valid payment amount.');
			field.focus();
			return false;
		}
		
		if (curPay <= 0) 
		{
			alert('Please enter a valid payment amount > than 0');
			field.focus();
			return false;
		}
		field.value = curPay;
		return true;
	}
	catch (e) 
	{
		alert('An error occured validating your payment amount. Please enter a valid payment amount.');
		field.focus();
		return false;
	}
}
