// JavaScript library for form field validation



var digits = "0123456789";



var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"



var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"





var whitespace = " \t\n\r";

var phoneNumberDelimiters = "()- ";

var validUSPhoneChars = digits + phoneNumberDelimiters;



var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";



var SSNDelimiters = "- ";



var validSSNChars = digits + SSNDelimiters;

var digitsInSocialSecurityNumber = 9;

var digitsInUSPhoneNumber = 10;

var ZIPCodeDelimiters = "-";

var ZIPCodeDelimeter = "-"

var validZIPCodeChars = digits + ZIPCodeDelimiters

var digitsInZIPCode1 = 5

var digitsInZIPCode2 = 9

var creditCardDelimiters = " "

var mPrefix = "You did not enter a value into the "

var mSuffix = " field. This is a required field. Please enter it now."





var sUSLastName = "Last Name"

var sUSFirstName = "First Name"

var sWorldLastName = "Family Name"

var sWorldFirstName = "Given Name"

var sTitle = "Title"

var sCompanyName = "Company Name"

var sUSAddress = "Street Address"

var sWorldAddress = "Address"

var sCity = "City"

var sStateCode = "State Code"

var sWorldState = "State, Province, or Prefecture"

var sCountry = "Country"

var sZIPCode = "ZIP Code"

var sWorldPostalCode = "Postal Code"

var sPhone = "Phone Number"

var sFax = "Fax Number"

var sDateOfBirth = "Date of Birth"

var sExpirationDate = "Expiration Date"

var sEmail = "Email"

var sSSN = "Social Security Number"

var sCreditCardNumber = "Credit Card Number"

var sOtherInfo = "Other Information"



var iStateCode = "This field must be a valid two character U.S. state abbreviation (like CA for California). Please reenter it now."

var iZIPCode = "This field must be a 5 or 9 digit U.S. ZIP Code (like 94043). Please reenter it now."

var iUSPhone = "This field must be a 10 digit U.S. phone number (like 415 555 1212). Please reenter it now."

var iWorldPhone = "This field must be a valid international phone number. Please reenter it now."

var iSSN = "This field must be a 9 digit U.S. social security number (like 123 45 6789). Please reenter it now."

var iEmail = "This field must be a valid email address (like foo@bar.com). Please reenter it now."

var iCreditCard = "This field must be a valid credit card number. Please reenter it now."

var iCreditCardPrefix = "This is not a valid "

var iCreditCardSuffix = " credit card number. (Click the link on this form to see a list of sample numbers.) Please reenter it now."

var iDay = "This field must be a day number between 1 and 31.  Please reenter it now."

var iMonth = "This field must be a month number between 1 and 12.  Please reenter it now."

var iYear = "This field must be a 2 or 4 digit year number.  Please reenter it now."

var iDatePrefix = "The Day, Month, and Year for "

var iDateSuffix = " do not form a valid date.  Please reenter them now."

var iDate = "This field must be a valid date. Please reenter it now."



var iInteger = "This field must be a whole number value. Please reenter it now."

var iPositiveInteger = "This field must be a positive whole number value. Please reenter it now."

var iAlphabetic = "This field must contain only letters. Please reenter it now."

var iNumber = "This field must contain only numeric values. Please reenter it now."

var iCustom = "Invalid value.  Please reenter."



var pEntryPrompt = "Please enter a "

var pStateCode = "2 character code (like CA)."

var pZIPCode = "5 or 9 digit U.S. ZIP Code (like 94043)."

var pUSPhone = "10 digit U.S. phone number (like 415 555 1212)."

var pWorldPhone = "international phone number."

var pSSN = "9 digit U.S. social security number (like 123 45 6789)."

var pEmail = "valid email address (like foo@bar.com)."

var pCreditCard = "valid credit card number."

var pDay = "day number between 1 and 31."

var pMonth = "month number between 1 and 12."

var pYear = "2 or 4 digit year number."



var defaultEmptyOK = false



function makeArray(n) {

   for (var i = 1; i <= n; i++) {

      this[i] = 0

   }

   return this

}







var daysInMonth = makeArray(12);

daysInMonth[1] = 31;

daysInMonth[2] = 29;   // must programmatically check this

daysInMonth[3] = 31;

daysInMonth[4] = 30;

daysInMonth[5] = 31;

daysInMonth[6] = 30;

daysInMonth[7] = 31;

daysInMonth[8] = 31;

daysInMonth[9] = 30;

daysInMonth[10] = 31;

daysInMonth[11] = 30;

daysInMonth[12] = 31;



var USStateCodeDelimiter = "|";

var USStateCodes = "AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|AE|AA|AE|AE|AP"



function isEmpty(s)

{   return ((s == null) || (s.length == 0))

}



function isWhitespace (s)



{   var i;



    if (isEmpty(s)) return true;



    for (i = 0; i < s.length; i++)

    {

        var c = s.charAt(i);



        if (whitespace.indexOf(c) == -1) return false;

    }



    return true;

}



function stripCharsInBag (s, bag)



{   var i;

    var returnString = "";



    for (i = 0; i < s.length; i++)

    {

        var c = s.charAt(i);

        if (bag.indexOf(c) == -1) returnString += c;

    }



    return returnString;

}



function stripCharsNotInBag (s, bag)



{   var i;

    var returnString = "";



    for (i = 0; i < s.length; i++)

    {

        var c = s.charAt(i);

        if (bag.indexOf(c) != -1) returnString += c;

    }



    return returnString;

}



function stripWhitespace (s)



{   return stripCharsInBag (s, whitespace)

}





function charInString (c, s)

{   for (i = 0; i < s.length; i++)

    {   if (s.charAt(i) == c) return true;

    }

    return false

}





function stripInitialWhitespace (s)



{   var i = 0;



    while ((i < s.length) && charInString (s.charAt(i), whitespace))

       i++;



    return s.substring (i, s.length);

}



//Allows blanks as well as letters

function isLetter (c)

{   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) || (c==" "))

}



function isDigit (c)

{   return ((c >= "0") && (c <= "9"))

}



function isLetterOrDigit (c)

{   return (isLetter(c) || isDigit(c))

}

function is_number()

 	{



		if ((event.keyCode >=48 && event.keyCode <= 57) || event.keyCode == 8 )

				event.keyCode=event.keyCode;

		else

				event.keyCode=0;	

	

	}



function isInteger (s)

{   

    var i;

    if (isEmpty(s))

       if (isInteger.arguments.length == 1) return defaultEmptyOK;

       else return (isInteger.arguments[1] == true);



    for (i = 0; i < s.length; i++)

    {

        var c = s.charAt(i);

        if (!isDigit(c)) return false;

    }



    return true;

}





function isSignedInteger (s)

{   if (isEmpty(s))

       if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;

       else return (isSignedInteger.arguments[1] == true);



    else {

        var startPos = 0;

        var secondArg = defaultEmptyOK;



        if (isSignedInteger.arguments.length > 1)

            secondArg = isSignedInteger.arguments[1];



        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )

           startPos = 1;

        return (isInteger(s.substring(startPos, s.length), secondArg))

    }

}





function isPositiveInteger (s)

{   var secondArg = defaultEmptyOK;



    if (isPositiveInteger.arguments.length > 1)

        secondArg = isPositiveInteger.arguments[1];



    return (isSignedInteger(s, secondArg)

         && ( (isEmpty(s) && secondArg)  || (parseInt (s) > 0) ) );

}





function isNonnegativeInteger (s)

{   var secondArg = defaultEmptyOK;



    if (isNonnegativeInteger.arguments.length > 1)

        secondArg = isNonnegativeInteger.arguments[1];



    return (isSignedInteger(s, secondArg)

         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );

}





function isNegativeInteger (s)

{   var secondArg = defaultEmptyOK;



    if (isNegativeInteger.arguments.length > 1)

        secondArg = isNegativeInteger.arguments[1];



    return (isSignedInteger(s, secondArg)

         && ( (isEmpty(s) && secondArg)  || (parseInt (s) < 0) ) );

}





function isNonpositiveInteger (s)

{   var secondArg = defaultEmptyOK;



    if (isNonpositiveInteger.arguments.length > 1)

        secondArg = isNonpositiveInteger.arguments[1];



    return (isSignedInteger(s, secondArg)

         && ( (isEmpty(s) && secondArg)  || (parseInt (s) <= 0) ) );

}





function isFloat (s)

{   var i;

    var seenDecimalPoint = false;



    if (isEmpty(s))

       if (isFloat.arguments.length == 1) return defaultEmptyOK;

       else return (isFloat.arguments[1] == true);



    if (s == ".") return false;



    for (i = 0; i < s.length; i++)

    {

        // Check that current character is number.

        var c = s.charAt(i);



        if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;

        else if (!isDigit(c)) return false;

    }



    return true;

}



function isSignedFloat (s)

{   if (isEmpty(s))

       if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;

       else return (isSignedFloat.arguments[1] == true);



    else {

        var startPos = 0;

        var secondArg = defaultEmptyOK;



        if (isSignedFloat.arguments.length > 1)

            secondArg = isSignedFloat.arguments[1];



        // skip leading + or -

        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )

           startPos = 1;

        return (isFloat(s.substring(startPos, s.length), secondArg))

    }

}





function isAlphabetic (s) {   

    var i;

    if (isEmpty(s))

       if (isAlphabetic.arguments.length == 1) 

           return defaultEmptyOK;

       else 

           return (isAlphabetic.arguments[1] == true);



    for (i = 0; i < s.length; i++) {

        // Check that current character is letter.

        var c = s.charAt(i);



        if (!isLetter(c))

            return false;

    }



    // All characters are letters.

    return true;

}



function isAlphanumeric (s) {   

    var i;

    if (isEmpty(s))

       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;

       else return (isAlphanumeric.arguments[1] == true);



    for (i = 0; i < s.length; i++)

    {

        var c = s.charAt(i);



        if (! (isLetter(c) || isDigit(c) ) )

        return false;

    }



    return true;

}



function reformat (s) {   

    var arg;

    var sPos = 0;

    var resultString = "";



    for (var i = 1; i < reformat.arguments.length; i++) {

       arg = reformat.arguments[i];

       if (i % 2 == 1) resultString += arg;

       else {

           resultString += s.substring(sPos, sPos + arg);

           sPos += arg;

       }

    }

    return resultString;

}





function isSSN (s)

{   if (isEmpty(s))

       if (isSSN.arguments.length == 1) return defaultEmptyOK;

       else return (isSSN.arguments[1] == true);

    return (isInteger(s) && s.length == digitsInSocialSecurityNumber)

}





function isUSPhoneNumber (s)

{

	

   if (isEmpty(s))

       if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;

       else return (isUSPhoneNumber.arguments[1] == true);

    return (isInteger(s) && s.length == digitsInUSPhoneNumber)

}





function isInternationalPhoneNumber (s)

{   if (isEmpty(s))

       if (isInternationalPhoneNumber.arguments.length == 1) return defaultEmptyOK;

       else return (isInternationalPhoneNumber.arguments[1] == true);

    return (isPositiveInteger(s))

}



function isZIPCode (s)

{  if (isEmpty(s))

       if (isZIPCode.arguments.length == 1) return defaultEmptyOK;

       else return (isZIPCode.arguments[1] == true);

   return (isInteger(s) &&

            ((s.length == digitsInZIPCode1) ||

             (s.length == digitsInZIPCode2)))

}





function isStateCode(s)

{   if (isEmpty(s))

       if (isStateCode.arguments.length == 1) return defaultEmptyOK;

       else return (isStateCode.arguments[1] == true);

    return ( (USStateCodes.indexOf(s) != -1) &&

             (s.indexOf(USStateCodeDelimiter) == -1) )

}



function isvalidEmailChar (s)

{   var i;



    for (i = 0; i < s.length; i++)

    {

        var c = s.charAt(i);



        if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {

       	return false;

		}

    }



    return true;

}





function isEmail (s)

{   if (isEmpty(s))

       if (isEmail.arguments.length == 1) return defaultEmptyOK;

       else return (isEmail.arguments[1] == true);



    if (isWhitespace(s)) return false;

    if (!isvalidEmailChar(s)) return false;



    atOffset = s.lastIndexOf('@');



    if ( atOffset < 1 )

        return false;

    else {

 	dotOffset = s.indexOf('.', atOffset);



      if ( dotOffset < atOffset + 2 ||

         dotOffset > s.length - 2 ) {

         return false;

      }

   }

   return true;

}



function isIntegerInRange (s, a, b)

{   if (isEmpty(s))

       if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;

       else return (isIntegerInRange.arguments[1] == true);



    if (!isInteger(s, false)) return false;



    var num = parseInt (s);

    return ((num >= a) && (num <= b));

}



function isYear (s)

{   if (isEmpty(s))

       if (isYear.arguments.length == 1) return defaultEmptyOK;

       else return (isYear.arguments[1] == true);

    if (!isNonnegativeInteger(s)) return false;

    return ((s.length == 2) || (s.length == 4));

}



function isMonth (s)

{   if (isEmpty(s))

       if (isMonth.arguments.length == 1) return defaultEmptyOK;

       else return (isMonth.arguments[1] == true);

    return isIntegerInRange (s, 1, 12);

}





function isDay (s)

{   if (isEmpty(s))

       if (isDay.arguments.length == 1) return defaultEmptyOK;

       else return (isDay.arguments[1] == true);

    return isIntegerInRange (s, 1, 31);

}





function daysInFebruary (year)

{

    return ( ((year % 4 == 0) && (!(year % 100 == 0) || (year % 400 == 0) ) ) ? 29 : 28 );

}



function isDate (year, month, day)

{

    if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;



    var intYear = parseInt(year);

    var intMonth = parseInt(month);

    var intDay = parseInt(day);



    if (intDay > daysInMonth[intMonth]) return false;    

    if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;



    return true;

}



//function prompt (s)

//{   window.status = s

//}





function promptEntry (s)

{   window.status = pEntryPrompt + s

}





function warnEmpty (theField, s)

{   theField.focus()

    alert(mPrefix + s + mSuffix)

    return false

}





function warnInvalid (theField, s)

{   theField.focus()

    theField.select()

    alert(s)

    return false

}



//Special for for NAB

function checkExpression(theField, sExpr, emptyOK) {

    if (checkExpression.arguments.length == 2) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    if (!theField.eval(sExpr))

       return warnInvalid(theField, iCustom)

    else

    	return true;

}



//NAB

function checkNumber (theField, emptyOK)

{   if (checkNumber.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else if (!isSignedFloat(theField.value, false))

       return warnInvalid (theField, iNumber);

    else return true;

}



//NAB

function checkInteger (theField, emptyOK)

{   if (checkInteger.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else if (!isSignedInteger(theField.value, false))

       return warnInvalid (theField, iInteger);

    else return true;

}



//NAB

function checkPositiveInteger (theField, emptyOK)

{   if (checkPositiveInteger.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    if (theField.value.substring(0,1)=="+")

       sNum = theField.value.substring(1);

    else

       sNum = theField.value;

       

    if (!isInteger(sNum, false))

       return warnInvalid (theField, iPositiveInteger);

    else return true;

}



//NAB

function checkAlphabetic (theField, emptyOK)

{   if (checkAlphabetic.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else if (!isAlphabetic(theField.value, false))

       return warnInvalid (theField, iAlphabetic);

    else return true;

}







function checkString (theField, s, emptyOK)

{

    if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    if (isWhitespace(theField.value))

       return warnEmpty (theField, s);

    else return true;

}





function checkStateCode (theField, emptyOK)

{   if (checkStateCode.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else

    {  theField.value = theField.value.toUpperCase();

       if (!isStateCode(theField.value, false))

          return warnInvalid (theField, iStateCode);

       else return true;

    }

}



function reformatZIPCode (ZIPString)

{   if (ZIPString.length == 5) return ZIPString;

    else return (reformat (ZIPString, "", 5, "-", 4));

}





function checkZIPCode (theField, emptyOK)

{   if (checkZIPCode.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else

    { var normalizedZIP = stripCharsInBag(theField.value, ZIPCodeDelimiters)

      if (!isZIPCode(normalizedZIP, false))

         return warnInvalid (theField, iZIPCode);

      else

      {

         theField.value = reformatZIPCode(normalizedZIP)

         return true;

      }

    }

}





function reformatUSPhone (USPhone)

{   return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))

}





function checkUSPhone (theField, emptyOK)

{   if (checkUSPhone.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else

    {  var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters)

       if (!isUSPhoneNumber(normalizedPhone, false))

          return warnInvalid (theField, iUSPhone);

       else

       {

          theField.value = reformatUSPhone(normalizedPhone)

          return true;

       }

    }

}





function checkInternationalPhone (theField, emptyOK)

{   if (checkInternationalPhone.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else

    {  if (!isInternationalPhoneNumber(theField.value, false))

          return warnInvalid (theField, iWorldPhone);

       else return true;

    }

}





function checkEmail (theField, emptyOK)

{   if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else if (!isEmail(theField.value, false))

       return warnInvalid (theField, iEmail);

    else return true;

}





function reformatSSN (SSN)

{   return (reformat (SSN, "", 3, "-", 2, "-", 4))

}





function checkSSN (theField, emptyOK)

{   if (checkSSN.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    else

    {  var normalizedSSN = stripCharsInBag(theField.value, SSNDelimiters)

       if (!isSSN(normalizedSSN, false))

          return warnInvalid (theField, iSSN);

       else

       {

          theField.value = reformatSSN(normalizedSSN)

          return true;

       }

    }

}



function checkYear (theField, emptyOK)

{   if (checkYear.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    if (!isYear(theField.value, false))

       return warnInvalid (theField, iYear);

    else return true;

}





function checkMonth (theField, emptyOK)

{   if (checkMonth.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    if (!isMonth(theField.value, false))

       return warnInvalid (theField, iMonth);

    else return true;

}





function checkDay (theField, emptyOK)

{   if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    if (!isDay(theField.value, false))

       return warnInvalid (theField, iDay);

    else return true;

}



//-----------------------------------------------



// Date of format month/day/year

function checkUSDate (theField, emptyOK) {   



    if (checkUSDate.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    

    if (theField.value==null) return defaultEmptyOK;

     

    sArray = theField.value.split("/")

    

    if ( (sArray.length < 3) || (sArray.length > 3))

        sArray = theField.value.split("-")

    

    if ( (sArray.length < 3) || (sArray.length > 3))

        return warnInvalid (theField, iDate);        

    

    month = sArray[0];

    day = sArray[1];

    year = sArray[2];



    if (isDate(year, month, day))

        return true;

    else

       return warnInvalid (theField, iDate);        

}



// Date of format day/month/year

function checkIntlDate (theField, emptyOK) {   

    if (checkIntlDate.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    

    if (theField.value==null) return defaultEmptyOK;

    

    sArray = theField.value.split("/")

    

    if ( (sArray.length < 3) || (sArray.length > 3))

        sArray = theField.value.split("-")

    

    if ( (sArray.length < 3) || (sArray.length > 3))

        return warnInvalid (theField, iDate);        



    day = sArray[0];

    month = sArray[1];

    year = sArray[2];



    if (isDate(year, month, day))

        return true;

    else

       return warnInvalid (theField, iDate);        

}



// For backward-compatibility

function checkDate(theField, emptyOK) {

    return checkUSDate(theField, emptyOK)

}





function checkCreditCard (theField, emptyOK)

{   if (checkCreditCard.arguments.length == 1) emptyOK = defaultEmptyOK;

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    if (!isAnyCard(theField.value))

       return warnInvalid (theField, iCreditCard)

    else return true;

}





function isCreditCard(st) {

  // Encoding only works on cards with less than 19 digits

  if (st.length > 19)

    return (false);



  sum = 0; mul = 1; l = st.length;

  for (i = 0; i < l; i++) {

    digit = st.substring(l-i-1,l-i);

    tproduct = parseInt(digit ,10)*mul;

    if (tproduct >= 10)

      sum += (tproduct % 10) + 1;

    else

      sum += tproduct;

    if (mul == 1)

      mul++;

    else

      mul--;

  }



  if ((sum % 10) == 0)

    return (true);

  else

    return (false);



}





function isVisa(cc)

{

  if (((cc.length == 16) || (cc.length == 13)) &&

      (cc.substring(0,1) == 4))

    return isCreditCard(cc);

  return false;

}





function isMasterCard(cc)

{

  firstdig = cc.substring(0,1);

  seconddig = cc.substring(1,2);

  if ((cc.length == 16) && (firstdig == 5) &&

      ((seconddig >= 1) && (seconddig <= 5)))

    return isCreditCard(cc);

  return false;



}







function isAmericanExpress(cc)

{

  firstdig = cc.substring(0,1);

  seconddig = cc.substring(1,2);

  if ((cc.length == 15) && (firstdig == 3) &&

      ((seconddig == 4) || (seconddig == 7)))

    return isCreditCard(cc);

  return false;



}





function isDinersClub(cc)

{

  firstdig = cc.substring(0,1);

  seconddig = cc.substring(1,2);

  if ((cc.length == 14) && (firstdig == 3) &&

      ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))

    return isCreditCard(cc);

  return false;

}







function isCarteBlanche(cc)

{

  return isDinersClub(cc);

}





function isDiscover(cc)

{

  first4digs = cc.substring(0,4);

  if ((cc.length == 16) && (first4digs == "6011"))

    return isCreditCard(cc);

  return false;



}





function isEnRoute(cc)

{

  first4digs = cc.substring(0,4);

  if ((cc.length == 15) &&

      ((first4digs == "2014") ||

       (first4digs == "2149")))

    return isCreditCard(cc);

  return false;

}



function isJCB(cc)

{

  first4digs = cc.substring(0,4);

  if ((cc.length == 16) &&

      ((first4digs == "3088") ||

       (first4digs == "3096") ||

       (first4digs == "3112") ||

       (first4digs == "3158") ||

       (first4digs == "3337") ||

       (first4digs == "3528")))

    return isCreditCard(cc);

  return false;



}



function isAnyCard(cc)

{

  if (!isCreditCard(cc))

    return false;

  if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&

      !isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {

    return false;

  }

  return true;



}



function isCardMatch (cardType, cardNumber)

{



	cardType = cardType.toUpperCase();

	var doesMatch = true;



	if ((cardType == "VISA") && (!isVisa(cardNumber)))

		doesMatch = false;

	if ((cardType == "MASTERCARD") && (!isMasterCard(cardNumber)))

		doesMatch = false;

	if ( ( (cardType == "AMERICANEXPRESS") || (cardType == "AMEX") )

                && (!isAmericanExpress(cardNumber))) doesMatch = false;

	if ((cardType == "DISCOVER") && (!isDiscover(cardNumber)))

		doesMatch = false;

	if ((cardType == "JCB") && (!isJCB(cardNumber)))

		doesMatch = false;

	if ((cardType == "DINERS") && (!isDinersClub(cardNumber)))

		doesMatch = false;

	if ((cardType == "CARTEBLANCHE") && (!isCarteBlanche(cardNumber)))

		doesMatch = false;

	if ((cardType == "ENROUTE") && (!isEnRoute(cardNumber)))

		doesMatch = false;

	return doesMatch;



}



function IsCC (st) {

    return isCreditCard(st);

}



function IsVisa (cc)  {

  return isVisa(cc);

}



function IsVISA (cc)  {

  return isVisa(cc);

}



function IsMasterCard (cc)  {

  return isMasterCard(cc);

}



function IsMastercard (cc)  {

  return isMasterCard(cc);

}



function IsMC (cc)  {

  return isMasterCard(cc);

}



function IsAmericanExpress (cc)  {

  return isAmericanExpress(cc);

}



function IsAmEx (cc)  {

  return isAmericanExpress(cc);

}



function IsDinersClub (cc)  {

  return isDinersClub(cc);

}



function IsDC (cc)  {

  return isDinersClub(cc);

}



function IsDiners (cc)  {

  return isDinersClub(cc);

}



function IsCarteBlanche (cc)  {

  return isCarteBlanche(cc);

}



function IsCB (cc)  {

  return isCarteBlanche(cc);

}



function IsDiscover (cc)  {

  return isDiscover(cc);

}



function IsEnRoute (cc)  {

  return isEnRoute(cc);

}



function IsenRoute (cc)  {

  return isEnRoute(cc);

}



function IsJCB (cc)  {

  return isJCB(cc);

}



function IsAnyCard(cc)  {

  return isAnyCard(cc);

}



function IsCardMatch (cardType, cardNumber)  {

  return isCardMatch (cardType, cardNumber);

}



// For NAB

function checkFields(theForm) {

  clientOK = false;

  returnValue = true;



  if ( (navigator.appName.indexOf("Microsoft")!=-1) && (navigator.appVersion.indexOf("4.")!=-1) ) {

    undef = void 0;

    clientOK = true;

  } else if ( (navigator.appName.indexOf("Netscape")!=-1) && ( (navigator.appVersion.indexOf("4.")!=-1) || (navigator.appVersion.indexOf("3.")!=-1) )) {

    undef = "undefined";

    clientOK = true;

  }



  if (clientOK) {



    for (i=0; i<theForm.elements.length; i++) {

      e = theForm.elements[i]

      if ( ((e.type=="text") || (e.type=="textarea") || (e.type=="password")) && e.required && (e.value=="")) {

        returnValue = false

        break;

      }

    }



    if (!returnValue) {

      alert("Form not submitted - please enter a value for this field")

      e.focus()



    } else {

      for (i=0; i<theForm.elements.length; i++) {

    	e = theForm.elements[i]

    	if ( (e.type=="text") || (e.type=="textarea") || (e.type=="password")) {

          if ( undef != e.onchange ) {

	    returnValue = e.onchange();

	    if (!returnValue)

              break;

	  }

        }

      }

    }

  }

  return returnValue;

}

//this function made by bhavik

function isPhone(txtObj){



var Phoneno=Trim(txtObj.value);

var Phonelen=Phoneno.length;

  var Err=0;

  var array;

  if(!(Phoneno.search("[^0-9()-]")>=0)){

   //regarding - character

   aChar=Phoneno.substring(Phonelen-1,Phonelen);

	if (aChar=="-" ){

	    Err=1;

	  }

	  if (Phoneno.indexOf("-")!=-1){

		 array=Phoneno.split("-");

		if (array.length>2) 

			Err=1;

		if (Phoneno.indexOf("-")==(Phoneno.indexOf(")")+1))

			Err=1;	

	  }

	  	  

	//regarding ()characters  

	if(Phoneno.indexOf("(")>0){

	    Err=1;

	  }

  	if(Phoneno.indexOf("(")!=Phoneno.lastIndexOf("(")){

		Err=1;

	  }

	if(Phoneno.indexOf(")")!=Phoneno.lastIndexOf(")")){

		Err=1;

	  }

	  	  

	if(Phoneno.indexOf("(")!=-1){

		 if(Phoneno.indexOf(")")==-1){

		    Err=1

		 }

		 else 

			if ((Phoneno.indexOf("-")>Phoneno.indexOf("(")) && (Phoneno.indexOf("-")<Phoneno.indexOf(")")))

			Err=1;

	}

	if(Phoneno.indexOf(")")!=-1){

		 if(Phoneno.indexOf("(")==-1){

		 Err=1

		 }	

	}	

	if (Phoneno.indexOf(")")==(Phoneno.indexOf("(")+1)){

		Err=1;

	}

	

	if (Err==1){

	    alert("Please Enter the phone no in proper Format e.g.(123)456-7890");

	    return false;

	}

	

	return true;

/*	for(var i=0;i!=Phonelen;i++)

	{

      aChar=Phoneno.substring(i,i+1);

      if ((aChar<"0" || aChar>"9") && (aChar!="(" ||aChar!=")"||aChar!="-"))

	}*/

	}

	else

	alert("in phone only digits allowed");

	return false;

	



}







//this is for date from rajni

function checkdate(objName) {

var datefield = objName;

if (CheckDate(objName) == false) {

datefield.select();

//alert("This date is invalid.  Please try again.");

datefield.focus();

return false;

}

else {

return true;

   }

}



// This function is for Date Validation from Bhavik with all

// the problems,faced previously solved



function CheckDate(objName){

	

	var strDay,strMonth,strYear;

	var intDay,intMonth,intYear;

	var strDate;

	var MonthType;

	var strSeparatorArray = new Array("-","/",".");

	var intElementNr;

	var err = 0;

	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";

	

	

	strDate = Trim(objName.value);





	if (strDate.length < 1) {

		return true;

	}

	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++)

	 {

		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {

			strDateArray = strDate.split(strSeparatorArray[intElementNr]);

	

			if (strDateArray.length != 3) {

				err = 1;

				continue;

				}

			else{

				strMonth = strDateArray[0];

				strDay = strDateArray[1];

				strYear = strDateArray[2];			

				err = 0;

				break;

			}//If --Else

				

	    }//If

	    err = 1;

	}//For



// If format is not valid then err == 1 

	if (err==1)	{

		

		return false;

	}



	for (var intIndex=0;intIndex<strMonthArray.length;intIndex++)	{

			

			if (strMonth.toUpperCase()==(String(strMonthArray[intIndex]).toUpperCase())){

					

					strMonth=""+(intIndex+1);

				}

		}

	

	if ((isInteger(strDay)==false) || (isInteger(strMonth)==false) || (isInteger(strYear)==false)){

		return false;

	}



	intday = parseInt(strDay, 10);

	intMonth = parseInt(strMonth,10);

	if (strYear.length==2){

		intYear = parseInt(strYear, 10);

		if (intYear>99 || intYear <=00) {

			return false;

		}

	}

	else{

	 	intYear = parseInt(strYear, 10);

		if (intYear>9999 || intYear <999) {

			return false;

		}

	} 

	

	

		

		if (intMonth>12 || intMonth<1) {

			return false;

		}

		if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {

			return false;

		}

		if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {

			return false;

		}

		if (intMonth == 2) {

			if (intday < 1) {

				return false;

			}

			if (LeapYear(intYear) == true) {

				if (intday > 29) {

					return false;

				}

			}

			else {

			if (intday > 28) {

				return false;

			}

		   }

		}

}



function chkdate(objName) {

var strDatestyle = "US"; //United States 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 err = 0;

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";



strDate = datefield.value;



if (strDate.length < 1) {

return true;

}

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 {

		strDay = strDateArray[0];

		strMonth = strDateArray[1];

		strYear = strDateArray[2];

	}

			booFound = true;

}

}



	

if (booFound == false) {

return false;

}

// US style

if (strDatestyle == "US") {

strTemp = strDay;

strDay = strMonth;

strMonth = strTemp;

}

intday = parseInt(strDay, 10);

if (isNaN(intday)) {

err = 2;

return false;

}

intMonth = parseInt(strMonth, 10);

if (isNaN(intMonth)) {

for (i = 0;i<12;i++) {

if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {

intMonth = i+1;

strMonth = strMonthArray[i];

i = 12;

   }

}

if (isNaN(intMonth)) {

err = 3;

return false;

   }

}

intYear = parseInt(strYear, 10);

if (isNaN(intYear)) {

err = 4;

return false;

}

if (intMonth>12 || intMonth<1) {

err = 5;

return false;

}

if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {

err = 6;

return false;

}

if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {

err = 7;

return false;

}

if (intMonth == 2) {

if (intday < 1) {

err = 8;

return false;

}

if (LeapYear(intYear) == true) {

if (intday > 29) {

err = 9;

return false;

}

}

else {

if (intday > 28) {

err = 10;

return false;

}

}

}

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 Trim(strInput) {

    /* Check to see if the length of the input string is zero. */

    if(strInput.length == 0) {

        /* If the length is zero, return a zero length sting. */

        return "";

    }

    else {

        /* If the length is greater than zero, find out what the

           last character in the string is */

        strTemp = strInput.substring(strInput.length - 1)

    }



    /* If the last character is a space, trim it from the string */

    while (strTemp == " ") {

        /* Set the input string equal to the input sting, minus the last charater */

        strInput = strInput.substring(0, strInput.length - 1)



        /* Check to see if the string has a zero length again. */

        if (strInput.length == 0) {

            /* If the length is zero, return a zero length sting. */

            strTemp = "";

        }

        else {

            /* If the length is greater than zero, find out what the

               last character in the string is */

            strTemp = strInput.substring(strInput.length - 1)

        }

    }

	

    /* Do the same thing, but for the beginning of the string */

    if (strInput.length == 0) {

        strTemp = "";

    }

    else {

        strTemp = strInput.substring(0, 1)

    }

		

    while (strTemp == " ") {

        strInput = strInput.substring(1)

			

        if (strInput.length == 0) {

            strTemp = "";

        }

        else {

            strTemp = strInput.substring(0, 1)

        }

    }

    return strInput;

}



function TrimAllBlanks(strInput) {

    /* Check to see if the length of the input string is zero. */

    if(strInput.length == 0) {

        /* If the length is zero, return a zero length sting. */

        return "";

    }

    else {

        /* If the length is greater than zero, find out what the

           last character in the string is */

        strTemp = strInput.substring(strInput.length - 1)

    }



    /* If the last character is a space, trim it from the string */

    while (strTemp == " ") {

        /* Set the input string equal to the input sting, minus the last charater */

        strInput = strInput.substring(0, strInput.length - 1)



        /* Check to see if the string has a zero length again. */

        if (strInput.length == 0) {

            /* If the length is zero, return a zero length sting. */

            strTemp = "";

        }

        else {

            /* If the length is greater than zero, find out what the

               last character in the string is */

            strTemp = strInput.substring(strInput.length - 1)

        }

    }

	

    /* Do the same thing, but for the beginning of the string */

    if (strInput.length == 0) {

        strTemp = "";

    }

    else {

        strTemp = strInput.substring(0, 1)

    }

		

    while (strTemp == " ") {

        strInput = strInput.substring(1)

			

        if (strInput.length == 0) {

            strTemp = "";

        }

        else {

            strTemp = strInput.substring(0, 1)

        }

    }

    var len=strInput.length

    var str=strInput

    strInput=""

    for (var i=0;i<len;i++){

		strTemp = str.substring(i, i+1)



		if (strTemp!=" "){

			strInput=strInput+str.substring(i, i+1) 

			

		}	

    }

    return strInput;

}



function SetChecked(formName,fieldName,cState)

{

	var doc = "document."+formName+".";

	var fieldName = fieldName;

	var toDo = cState;

	var len1 = parseInt(eval(doc+"Count.value"));

//	alert("value is :" + len);

	for( var i=1 ; i<=len1 ; i++) 

	{

		eval(doc+fieldName+i+".checked="+toDo);

	}

}

var checkflag = "false";

function clearAll()

{

	for(i=0;i<form2.elements.length; i++)

				{

					var elm  = form2.elements[i];

					if(elm.type == "checkbox" ) 

					{

						elm.checked =false;

					}

				}



}

function check() {

for(i=0;i<form2.elements.length; i++)

				{

					var elm  = form2.elements[i];

					if(elm.type == "checkbox" && elm.name != "maincheck" ) 

					{

						elm.checked =form2.maincheck.checked;

					}

				}

}

function uncheck(){

	form2.maincheck.checked=false;

}
