function validation(prompt, formHTMLName, elementType, validationFunction, format) {
  this.prompt = prompt;
  this.formHTMLName = formHTMLName;
  this.elementType = elementType;
  this.validationFunction = validationFunction;
  this.format = format;
}

var requestAlertForText = " is a required field";
var beginRequestAlertGeneric = "Please choose ";
var beginMandatoryDropdown = "Select an option from the ";
var endAlert = ".";
var beginInvalidAlert = "Enter a valid format in the ";
var beginFormatAlert = "  Use this format: ";
var fieldAlert = " field";
var curDate = new Date();
var curDay = curDate.getDate();
var curMonth = curDate.getMonth() + 1;
var curYear = curDate.getFullYear();


function isMandatoryText(str) {
  str = trimString(str);
  
  if (str.length==0) return false;
  for (j=0; j<str.length; j++) {
    if (str.charAt(j) != " ") {
      return true;
    }
  }
  return false;
}

function isReqDropDown(str) {
  str = trimString(str);
  
  return (str != -1);
}

function isReqNumericValue(str) {
  str = trimString(str);
  
  if (isMandatoryText(str)) {
  	return isNumericValue(str);
  }
  else { return false }
}

function isNumericValue(str) {
  str = trimString(str);

  if (str.length == 0) { return true }

  var strNoComma = "";
  var i=0;
  var lowDigit = 0;

  if (str.charAt(0)=="-")
    lowDigit = 1;

  if (str.indexOf(",") == -1) { // no commas

    for (j=lowDigit; j<str.length; j++) 
      if (!isDigit(str.charAt(j))) { return false }
    if (str.charAt(0)=="-")
    	return false;
    else
    	return true;
    }
  else { // there are commas

    for (j=str.length-1; j>=lowDigit; j--) {
	  i++;
	  if (i==4) {
	    i = 0;
		if (str.charAt(j) != ",") { return false }
		}
	  else {
	    if (!isDigit(str.charAt(j))) { return false }
		strNoComma = str.charAt(j) + strNoComma;
        }
	  }
	if (!isDigit(str.charAt(lowDigit))) { return false }
	if (str.charAt(0)=="-")
	  return false;
	else
	  return true;
    }
}

function isNumber(str) {
  str = trimString(str);
  
  if (str.length==0) { return true }
  for (j=0; j<str.length; j++) {
    if ((str.charAt(j) < "0") || (str.charAt(j) > "9")) { return false }
  }
  return true;
}

function isMonth(str) {
  str = trimString(str);

  if (str.length == 1) {
    if ((str.charAt(0) < "1") || (str.charAt(0) > "9")) { return false }
  }
  else {
    if ((str.charAt(0) < "0") || (str.charAt(0) > "1")) { return false }
    if (str.charAt(0) == "0") {
	  if ((str.charAt(1) < "1") || (str.charAt(1) > "9")) { return false }
	}
	else {
	  if ((str.charAt(1) < "0") || (str.charAt(1) > "2")) { return false }
	}	
  }
  return true;
}

function isReqMonth(str) {
  str = trimString(str);
  
  if (isMandatoryText(str)) {
	  return isMonth(str);
  }
  else { return false }
}

function isDay(str,m,y) {
  str = parseFloat(trimString(str));

  var month =  parseFloat(m);
  if (month == 0) { month = 12 };
  var year =  parseFloat(y);
  if (year == 0) { year = 2000 };

  if (str.length > 2)  { return false }
  if (str == 0) { return false }
  if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) 
    {
    if (str > 31) { return false }
    }
  else 
    {
    if (month == 4 || month == 6 || month == 9 || month == 11) 
	  {
      if (str > 30) { return false }
      } 
	else 
	  {
      if (year%4 != 0) 
	    {
        if (str > 28) { return false }
        } 
	  else 
	    {
        if (str > 29) { return false }
        }
      }
    }
  return true;
}

function isReqDay(str,m,y) {
  str = trimString(str);
  
  if (isMandatoryText(str)) {
	  return isDay(str,m,y);
  }
  else { return false }
}

function isYear(str) {
  str = trimString(str);

  if (str.length != 4) { return false };
  if (str < (curYear-150) || str > (curYear+150)) { return false };

  return true;
}

function isReqYear(str) {
  str = trimString(str);
  
  if (isMandatoryText(str)) {
	  return isYear(str);
  }
  else { return false }
}

function isReqDate(str) {
  str = trimString(str);
	
  var aDateArray  = new Array();
  aDateArray = str.split("-");
  if(aDateArray.length != 3)
  {
   	aDateArray = str.split("/"); 
	if(aDateArray.length != 3)
	{
	   return false;
	}	
  }


  if ((!isReqDay(aDateArray[1],aDateArray[0],aDateArray[2])) || (!isReqMonth(aDateArray[0])) || (!isReqYear(aDateArray[2]))) { return false };

  return true;
}

function isDate(str) {
  str = trimString(str);

  if(str.length == 0) return true;
  
  var aDateArray  = new Array();
  aDateArray = str.split("-");
  
  if(aDateArray.length != 3)
  {
   	aDateArray = str.split("/"); 
	if(aDateArray.length != 3)
	{
	   return false;
	}	
  }
  
  if(!isNumber(aDateArray[0]) || !isNumber(aDateArray[1]) || !isNumber(aDateArray[2]))
  {
  	return false;	
  }
  
  if ((!isDay(aDateArray[1],aDateArray[0],aDateArray[2])) || (!isMonth(aDateArray[0])) || (!isYear(aDateArray[2]))) { return false };
  return true;
}

function isReqSSN(str) {
  str = trimString(str);
  
  var ssn;
  ssn = str;
  
  if(str.substring(3, 4) == "-" && str.substring(6, 7) == "-")
  {
  	ssn = "";
  	ssn = ssn.concat(str.substring(0, 3), str.substring(4, 6), str.substring(7, 11));	
  }


  if (!isReqFixedLengthNumeric(ssn, 9)) { return false };
  return true;
}

function isSSN(str) {
  str = trimString(str);
  
  var ssn;
  ssn = str;
  
  if(str.substring(3, 4) == "-" && str.substring(6, 7) == "-")
  {
  	ssn = "";
  	ssn = ssn.concat(str.substring(0, 3), str.substring(4, 6), str.substring(7, 11));	
  }

  if (!isFixedLengthNumeric(ssn, 9)) { return false };
  return true;
}

function isEmail(str) {
  str = trimString(str);
  
  if (str.length == 0) { return true }
  return ((str != "") && (str.indexOf("@") != -1) && (str.indexOf(".") != -1));
}

function isReqEmail(str) {
  str = trimString(str);
  
  if (isMandatoryText(str)) {
	  return isEmail(str);
  }
  else { return false }
}


function isZipCode(str) 
{
  str = trimString(str);
  str = str.replace(" ", "");
 
  var l = str.length;
  if (l == 0) { return true }
  if ((l != 5) && (l != 10) && (l != 6) && (l != 9)){ return false }
  if (l == 5)
  {
	  for (j=0; j<l; j++) 
	    {
	      if ((str.charAt(j) < "0") || (str.charAt(j) > "9")) { return false }
	    }	
	  
  }
  if (l == 10)
  {
	  for (j=0; j<l; j++) 
	  {
	    if ((l == 10) && (j == 5)) 
	    {
	      if (str.charAt(j) != "-") { return false }
	    } 
	    else 
	    {
	      if ((str.charAt(j) < "0") || (str.charAt(j) > "9")) { return false }
	    }	
	  }
  }
  
  if (l == 6)
  {
  	if (str.charAt(0) < "9") {return false }
  	if ((str.charAt(1) < "0") || (str.charAt(1) > "9")) {return false }
  	if (str.charAt(2) < "9"){return false }
  	if ((str.charAt(3) < "0") || (str.charAt(3) > "9")) {return false }
  	if (str.charAt(4) <= "9"){ return false }
  	if ((str.charAt(5) < "0") || (str.charAt(5) > "9")) { return false }
  	
  }
  
  if (l == 9)
  {
     	if(isNaN(str)) { return false; }
	  
  }
  return true;
}

function isReqZipCode(str) {
  str = trimString(str);
  
  if (isMandatoryText(str)) {
	  return isZipCode(str);
  }
  else { return false }
}

function isReqPhoneNum(str) {
  str = trimString(str);
  
  if (isMandatoryText(str)) {
	  return isPhoneNum(str);
  }
  else { return false; }	
}

function isPhoneNum(str) {
	
  str = trimString(str);
  
  if (str.length == 0) { return true; }

  str = str.replace(" ", "");
  str = str.replace("(", "");
  str = str.replace(")", "");
  str = str.replace("x", "");
  str = str.replace("-", "");
  str = str.replace("-", "");
  
  if(str.length < 10 || str.length > 14)
  	return false;

  for (j=0; j<str.length; j++) {  // only validate the number, not the extension that may be added on
      if ((str.charAt(j) < "0") || (str.charAt(j) > "9")) { return false; }
  }
  return true;
}

function isDigit(str) {
  str = trimString(str);
  
  return ((str >= "0") && (str <= "9"));
}

function isFixedLengthNumeric(str,len) {
	
  str = trimString(str);
  
  if (str.length == 0) { return true }
  if (str.length != len) { return false }
  for (j=0; j<str.length; j++) 
    if ((str.charAt(j) < "0") || (str.charAt(j) > "9")) { return false }
  return true;
}

function isReqFixedLengthNumeric(str,len) {
	
  str = trimString(str);
  
  if (isMandatoryText(str)) {
	  return isFixedLengthNumeric(str,len);
  }
  else { return false }
}

function isCurrency(str)
{	
  	str = trimString(str);
  
	var decIndex = str.indexOf(".");
	if(decIndex != -1)
	{
	    var dollars = str.substring(0, decIndex);
	    var pennies = str.substring(decIndex+1, str.length);
	    
	    //only allow 1 or two decimal places
	    if(pennies.length < 1 || pennies.length > 2)
	    	return false;
	    	
	    return (isNumericValue(dollars) && isNumericValue(pennies))
	}
	else
	{
	    return isNumericValue(str);	
	}	
}


function isReqCurrency(str)
{
  str = trimString(str);
  
  if (isMandatoryText(str)) {
  	return isCurrency(str);
  }
  else { return false }	
}

function isPercent(str)
{
    var leftPeriod = "";
    var rightPeriod = "";
    
    var index = str.indexOf(".");
    
    str = trimString(str);
  
    str = str.replace("%", "");

    if(index != -1)
    {
    	leftPeriod = str.substring(0, index);
    	rightPeriod = str.substring(index+1, str.length);
    }
    else
    {
    	leftPeriod = str;	
    }

    if(leftPeriod.length > 2 || rightPeriod.length > 4)
    	return false;
    	
    if (!(isNumericValue(leftPeriod) && isNumericValue(rightPeriod)))
    	return false;
    	
    return true;
    
    
}

function isReqPercent(str)
{
  str = trimString(str);
	
  if (isMandatoryText(str)) {
  	return isPercent(str);
  }
  else { return false }	
}


function ValidateInputs(form) {

  var formHTMLName = "";
  var str          = "";
  var prompt       = "";
  var alertIndex   = 0;
  var alertEntry   = "";
  var aAlertArray  = new Array();
  var alertEntries = "";

  var docName = eval("document." + form.name);

   for(var i = 0; i < docName.length; i++)
   {

	// field is required
  	if (docName.elements[i].getAttribute("validation"))
  	{

  		var variableName = eval(docName.elements[i].name + docName.elements[i].getAttribute("validation"));
		    formHTMLName = variableName.formHTMLName;
		    prompt = variableName.prompt;

  	          if (variableName.elementType == "HIDDEN")
  	          {
      			str = docName.elements[i].value;

	  	      if (eval(variableName.validationFunction)) continue;

		      if (str == "") 
		      {
			   alertEntry = prompt + requestAlertForText + endAlert;
			   alert (alertEntry);
			   return false;
		      }
		      else
		      {
		           alertEntry = beginInvalidAlert + prompt + fieldAlert + endAlert;
		           if (variableName.format != null) {
			      alertEntry += beginFormatAlert + variableName.format;
			   }
			   alert (alertEntry);
			   return false;
		      }	
		  }
  	          else if (variableName.elementType == "TEXTBOX")
  	          {
      			str = docName.elements[i].value;

	  	      if (eval(variableName.validationFunction)) continue;

		      if (str == "") 
		      {
			   alertEntry = prompt + requestAlertForText + endAlert;
			   alert (alertEntry);
			   gotoField (form, formHTMLName);
			   return false;
		      }
		      else
		      {
		           alertEntry = beginInvalidAlert + prompt + fieldAlert + endAlert;
		           if (variableName.format != null) {
			      alertEntry += beginFormatAlert + variableName.format;
			   }
			   alert (alertEntry);
			   gotoField (form, formHTMLName);
			   return false;
		      }	
		  }
		  else if (variableName.elementType == "DROPDOWN")
  	          {
      			str = docName.elements[i].value;

	  	      if (eval(variableName.validationFunction)) continue;


	              alertEntry = beginMandatoryDropdown + prompt + fieldAlert + endAlert;
	              if (variableName.format != null) {
		          alertEntry += beginFormatAlert + variableName.format;
		      }
		      alert (alertEntry);
		      gotoField (form, formHTMLName);
		      return false;
		  }
		  else if (variableName.elementType == "RADIO") 
	          {
			if (eval(variableName.validationFunction)) continue;
			alertEntry = beginRequestAlertGeneric + prompt + endAlert;
			alert (alertEntry);
			gotoField (form, formHTMLName);
		        return false;
	          }
	          else 
	          {
			if (eval(variableName.validationFunction)) continue;
			alertEntry = prompt;
			alert (alertEntry);
			gotoField (form, formHTMLName);
		        return false;
	          }
	          
	          aAlertArray[alertIndex] = alertEntry;
    		  alertIndex = alertIndex + 1;	  
  	}
  	
  	
   }
   
  if (alertIndex > 0) 
  {
	for (i=0; i<aAlertArray.length; i++) {
		alertEntries = alertEntries + aAlertArray[i];
	} // for
  }	

  if(alertIndex > 0) 
  {
    form.ERRORS.value = alertEntries;
    alert(alertEntries);
    return false;
  }
  else return form;

}


function gotoField(form, field) {

  var formObjField = "";


  formObjField = eval("document." + form.name + "." + field);

  if (formObjField.select) {
 	formObjField.select()
	}
  else {
	if (formObjField[0].select) {
		formObjField[0].select()
		}
	}	
  if (formObjField.focus) {
	formObjField.focus()
	}
  else {
	if (formObjField[0].focus) {
		formObjField[0].focus()
		}
	}	
  }

function ValidateMemberCalcFields(form)
{
    var inputsEnteredCounter = 0;
    
    var docName = eval("document." + form.name);
  
    if(trimString(docName.AMOUNT_TO_MEMBER.value) == "")
        inputsEnteredCounter++;

    if(trimString(docName.REGULAR_PAYMENT.value) == "")
        inputsEnteredCounter++;

    if(trimString(docName.LOAN_TERM_IN_MONTHS.value) == "")
        inputsEnteredCounter++;

    if(inputsEnteredCounter > 1)
    {
        alert("Enter two of the following fields: Amount, Term, Payment.");
	return false;
    }
    
    return form;
}

function trimString (str) {
  while (str.charAt(0) == ' ')
    str = str.substring(1);
  while (str.charAt(str.length - 1) == ' ')
    str = str.substring(0, str.length - 1);
  return str;
}



//******************************************************************************************************
//
// Author	: Aslam M. Rakhangi
// Date		: October 31st 2002
// Purpose	: This block of code is used to validate and put DATE, SS #, US PHONE #, and ZIP CODE in 
//			  right format.
// 04/2006   Shani Atkins   Added date range check from 01/01/1900 to 06/06/2079 for SQL Server conversion.
//******************************************************************************************************

// Global variable for err message for date validation.
var err = 0;

// This function is called onblur
function validatedate(objName) {

	var strErrorArray = new Array(11);
	strErrorArray[0] = "";
	strErrorArray[1] = "Please enter a valid date format: MM/DD/YYYY";
	strErrorArray[2] = "Please enter a valid date format: MM/DD/YYYY";
	strErrorArray[3] = "Please enter a valid date format: MM/DD/YYYY";
	strErrorArray[4] = "Please enter a valid date format: MM/DD/YYYY";
	strErrorArray[5] = "Month cannot be greater than 12, enter valid format: MM/DD/YYYY";
	strErrorArray[6] = "This month cannot have more than 31 days, enter valid format: MM/DD/YYYY";
	strErrorArray[7] = "This month cannot have more than 30 days, enter valid format: MM/DD/YYYY";
	strErrorArray[8] = "February in this year has 28 days only, enter valid format: MM/DD/YYYY";
	strErrorArray[9] = "Leap year February cannot have more than 29 days, enter valid format: MM/DD/YYYY";
	strErrorArray[10] = "February in this year has 28 days only, enter valid format: MM/DD/YYYY";
	strErrorArray[11] = "Please enter a valid date from 01/01/1900 to 6/06/2079."

	var datefield = objName;
	if (chkdate(objName) == false) {
		datefield.select();
		alert(strErrorArray[err]);
		if(window.navigator.appVersion.indexOf('MSIE') != -1)
		  datefield.focus();
		return false;
	}
	else {
		return true;
	}
}


function adjustdate(strDate){
	var strSeparatorArray = new Array("-"," ","/",".","\\");

	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) 
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
			return true;			
	if (strDate.length == 8)
		return true;
	else
	{
		err = 1;
		return	false;
	}
}


function chkdate(objName) {
	// Set this variable to generate date in different style
	var strDatestyle = "US"; //United States date style
	//var strDatestyle = "EU";  //European date style
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".","\\");
	var intElementNr;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";

	// The string value entered in date field
	strDate = datefield.value;

	// Return true if nothing entered in date field
	if (strDate.length < 1) {
	return true;
	}

	// Check to see if seperator exist or the length of string makes a valid date
	if(adjustdate(strDate) == false)
		return false;
		
	// Find out what seperator is used in date
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) {
				err = 1;
				return false;
			}
			else {
				// Get date component in diff variables
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			// seperators found
			booFound = true;
		}
	}

	// if seperators not found then parse the string to get date components in diff variable
	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
	   }
	}

	// This is where the century is added to the year
	if (strYear.length == 4){
	}
	// generate error 
	else {
		err = 4;
		return false;
	}


	// US style
	if (strDatestyle == "US") {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}

	// Check to see if day is a number
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}

	// Check to see if month is a number
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		// if month is not a number then compare the string to the 3 char month Abb to see if valid month.
		for (i = 0;i<12;i++) {		
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {	
				// if valid month abb, then get numeric equivalent		
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;			
			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
	   }
	}

	// Check if the year is a number
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}

	// Check to see if month is greater than 12
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}

	// Check to see if dates are greater than 31 for these months
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}

	// Check to see if dates are greater than 31 for these months
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}

	// Handle Feb seperately
	if (intMonth == 2) {
		if (intday < 1) {
			err = 8;
			return false;
		}
		// Leap year 29 days
		if (LeapYear(intYear) == true) {
			if (intday > 29) {
				err = 9;
				return false;
			}
		}
		else {
			if (intday > 28) {
				err = 10;
				return false;
			}
		}
	}
	//validate date range is between 01/01/1900 and 06/06/2079
	if (intYear < 1900 || intYear > 2079){
		err = 11;
		return false;
	}
		
	if (intYear == 2079){
		if (intMonth >= 6 && intday > 6){
				err = 11;
				return false;
		}
	}
	
    
	// Add a 0 before a single digit month and day
	var strTempMonth;
	var strTempDay;
	if (intMonth < 10)
		strTempMonth = "0" + intMonth;
	else
		strTempMonth = intMonth;
	if (intday < 10)
		strTempDay = "0" + intday;
	else
		strTempDay = intday;
		
	// US style Output
	if (strDatestyle == "US") {
		datefield.value = strTempMonth + "/" + strTempDay + "/" + strYear;
	}
	// European style Output
	else {
		datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
	}
	return true;
}


function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	}
	else {
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}


function doDateCheck(from, to) {
	if (Date.parse(from.value) <= Date.parse(to.value)) {
		alert("The dates are valid.");
	}
	else {
	if (from.value == "" || to.value == "") 
		alert("Both dates must be entered.");
	else 
		alert("To date must occur after the from date.");
	}
}


function validateInteger(str){
      str = strip(' \n\r\t',str);
      //remove leading zeros, if any
      while(str.length > 1 && str.substr(0,1) == '0'){
         str = str.substr(1,str.length);
      }  
//      var val = parseInt(str, 10);
      if(isNaN(str))
         return false;
      else
         return true;
}

function strip(filter,str){
	var i,curChar;
	var retStr = '';
	var len = str.length;
	for(i=0; i < len; i++){
	   curChar = str.charAt(i);
	   if(filter.indexOf(curChar) < 0) 
	     //not in filter, keep it
	      retStr += curChar;
	}
	return retStr;
}
   

function validatessnumber(objName){
	var SSfield = objName;
	var strSSNumber = SSfield.value;
	
	if (strSSNumber.length < 1) {
	return true;
	}		
	strSSNumber = strip(" -.\n\r\t", strSSNumber);	
    if((validateInteger(strSSNumber) == true) && (strSSNumber.length == 9))
    {
	  SSfield.value = strSSNumber.substr(0,3) + "-" + strSSNumber.substr(3,2) + "-" + strSSNumber.substr(5,4);
       return true;
    }
    else
    {
	  SSfield.select();
	  alert("Enter valid social security number format: ###-##-####");
	  if(window.navigator.appVersion.indexOf('MSIE') != -1)
        SSfield.focus();
        
      return false;		
    }   
}

function validatezipcode(objName){
	var str = objName.value;
	
	if (str.length < 1)
		return true;
		
	str = strip("- \n\r\t",str);
	
    if(validateInteger(str) && (str.length == 9 || str.length == 5)){
		if (str.length == 9)
			objName.value = str.substr(0, 5) + "-" + str.substr(5, 4);
		return true;	
		}
    else{
		objName.select();
		alert("Enter a valid zip code : ######-#### or #####");
		if(window.navigator.appVersion.indexOf('MSIE') != -1)
		  objName.focus();
		return false;
	}   
}

function validatephone(objName){
	var str = objName.value;
	
	if (str.length < 1) 
		return true;
	
	str = strip("*() -./_\n\r\t\\",str);	
	if(validateInteger(str)){
		if(str.length == 10){
			objName.value = "(" + str.substr(0, 3) + ")" + str.substr(3, 3) + "-" + str.substr(6, 4);
		   	return true;	      
		}      
		if(str.length == 7){
			objName.value = str.substr(0, 3) + "-" + str.substr(3, 4);
			return true;
		}
		else{
			objName.select();
			alert("Enter a valid phone number format: (###)###-####");
			if(window.navigator.appVersion.indexOf('MSIE') != -1)
			  objName.focus();
			return false;
		}					
	}
	else{
		objName.select();
		alert("Enter a valid phone number format: (###)###-####");
		if(window.navigator.appVersion.indexOf('MSIE') != -1)
		  objName.focus();
		return false;
	}		
}

function validateCurrency(objName)
{
 var str = trimString(objName.value);
  
  if (isCurrency(str)) {
  	return true;
  }
  else { 
  	objName.select();
  	alert("Enter a valid amount.");
	if(window.navigator.appVersion.indexOf('MSIE') != -1)
	  objName.focus();
  	return false 
  	}	
}


function validateNumber(objName)
{
 var str = trimString(objName.value); 
  
 // Switched to isNumeric to allow commas in number field.
 // isNumericValue //validateInteger
  if (isNumericValue(str)) {    		
  	return true;	
  }
  else { 
  	objName.select();
  	alert("Enter a valid number.");
	if(window.navigator.appVersion.indexOf('MSIE') != -1)
	  objName.focus();
  	return false 
  	}	
}


function validatePercent(objName)
{
 var str = trimString(objName.value);
  
  if (isPercent(str)) {
  	return true;
  }
  else { 
  	objName.select();
  	alert("Enter a valid percent.");
	if(window.navigator.appVersion.indexOf('MSIE') != -1)
	  objName.focus();
  	return false 
  	}	
}

function validateZip(objName)
{
 var str = trimString(objName.value);
  
  if (isZipCode(str)) 
  {
  	if (str.length == 9)
	    objName.value = str.substr(0, 5) + "-" + str.substr(5, 4);
  	return true;
  }
  else { 
  	objName.select();
  	alert("Enter a valid zip/postal code.");
	if(window.navigator.appVersion.indexOf('MSIE') != -1)
	  objName.focus();
  	return false 
  	}	
}

function validateEmail(objName)
{
var str = trimString(objName.value);
if (str.length < 1) 
	return true;
  var result = false
  
  var index = str.indexOf("@");
  if (index > 0)
  {
    var pindex = str.indexOf(".",index);
    if ((pindex > index+1) && (str.length > pindex+1))
	result = true;	
  }
  if (!(result)){
  	
	objName.select();
	alert("Enter a valid Email address.");
	if(window.navigator.appVersion.indexOf('MSIE') != -1)
	  objName.focus();
	return result;
  }
}

// The Canadian Province array is declared as Global Variable so that it can be accessed by other function outside this file
var strCanadianPro = new Array(13);	
strCanadianPro[0] = "AB";
strCanadianPro[1] = "BC";
strCanadianPro[2] = "MB";
strCanadianPro[3] = "NB";
strCanadianPro[4] = "NL";
strCanadianPro[5] = "NT";
strCanadianPro[6] = "NS";
strCanadianPro[7] = "NU";
strCanadianPro[8] = "ON";
strCanadianPro[9] = "PE";
strCanadianPro[10] = "QB";
strCanadianPro[11] = "SK";
strCanadianPro[12] = "YK";

function canadianProvinceCheck(objName)
{	
	var strSelectedPro = objName.options[objName.selectedIndex].value;	
	
	for (var i = 0; i < strCanadianPro.length; i++)
	{
		if (strCanadianPro[i].toUpperCase() == strSelectedPro.toUpperCase())
		{
			
			alert("Coverage is not available in this state/province. ");			
			if(window.navigator.appVersion.indexOf('MSIE') != -1)
			  objName.focus();
			return false;
		}
	}
	return true;	
}


// This function is added to validate and format MM/DD field as in Loan Calculator. i.e. Skip Pmt Start and Skip Pmt End.
function validateFourDigitDate(objName) {

	var strErrorArray = new Array(8);
	strErrorArray[0] = "";
	strErrorArray[1] = "Please enter a valid date format: MM/DD";
	strErrorArray[2] = "Please enter a valid date format: MM/DD";
	strErrorArray[3] = "Please enter a valid date format: MM/DD";
	strErrorArray[4] = "Please enter a valid date format: MM/DD";
	strErrorArray[5] = "Month cannot be greater than 12, enter valid format: MM/DD";
	strErrorArray[6] = "This month cannot have more than 31 days, enter valid format: MM/DD";
	strErrorArray[7] = "This month cannot have more than 30 days, enter valid format: MM/DD";
	

	var datefield = objName;
	if (formatFourDigitDate(objName) == false) {
		datefield.select();
		alert(strErrorArray[err]);
		if(window.navigator.appVersion.indexOf('MSIE') != -1)
		  datefield.focus();
		return false;
	}
	else {
		return true;
	}
}

function formatFourDigitDate(objName)
{
	// The string value entered in date field
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".","\\");
	var intElementNr;
	var strDay;
	var strMonth;
	var booFound = false;
	var intday;
	var intMonth;	
	var strDateArray;
	
	var strDate = trimString(datefield.value);

	if (strDate.length < 1) {
	return true;
	}	
	
	if ((strDate.length == 3) || (strDate.length == 4) || (strDate.length == 5))
	{}
	else
	{
		err = 1;
		return	false;
	}
	
	
	// Find out what seperator is used in date
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 2) {
				err = 1;
				return false;
			}
			else {
				// Get date component in diff variables
				strMonth = strDateArray[0];
				strDay = strDateArray[1];				
			}
			// seperators found
			booFound = true;
		}
	}
	
	
	// if seperators not found then parse the string to get date components in diff variable
	if (booFound == false) {
		if (strDate.length > 3) {
			strMonth = strDate.substr(0, 2);
			strDay = strDate.substr(2, 2);			
	   }
	}
	
	// Check to see if day is a number
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}

	// Check to see if month is a number
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		err = 3;
		return false;
	}
	
	
	
	// Check to see if month is greater than 12
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	
	// Check to see if dates are greater than 31 for these months
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}

	// Check to see if dates are greater than 31 for these months
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}	
	
	
	
	// Add a 0 before a single digit month and day
	var strTempMonth;
	var strTempDay;
	if (intMonth < 10)
		strTempMonth = "0" + intMonth;
	else
		strTempMonth = intMonth;
	if (intday < 10)
		strTempDay = "0" + intday;
	else
		strTempDay = intday;	
	
	datefield.value = strTempMonth + "/" + strTempDay;	
	return true;	
}


//********************************************************************************************************************
//
//					Added formating for dates - Dan Schmalz
//
//********************************************************************************************************************

function FormatFunctionDateonKeyPress(txtField , e) 
{
  var key;
  if (e && e.which)
  {        
	key = e.which;
  } 
  else if (window.event && window.event.keyCode) 
  {
        key = window.event.keyCode;    
  } 
  if (txtField.value.length == 1 && key == 47)  
  {
        txtField.value = ('0'+txtField.value ).replace('//','/');  
  }  
  if (txtField.value.length == 2 && (key > 47 && key < 58) || (txtField.value.length == 5 && (key > 47 && key < 58)))  
  {  
        txtField.value = (txtField.value + '/').replace('//','/');  
  }  
  if (txtField.value.length == 4 && key == 47)  
  {
        txtField.value = (txtField.value.substring(0,(txtField.value.length - 1))+'0'+(txtField.value.substring(txtField.value.length,txtField.value.length-1)));  
  }  
} 
