validate.js
上传用户:guhaomin
上传日期:2007-06-10
资源大小:23203k
文件大小:29k
源码类别:

电子政务应用

开发平台:

Java

  1. // Netscape?Application Builder 4.0.
  2. // Copyright ?1998-1999 Netscape Communications Corporation, All rights reserved.
  3. // Netscape and Netscape Application Builder are registered trademarks of Netscape
  4. // Communications Corporation in the United States and other countries.
  5. // Netscape's logos and Netscape product and service names are also trademarks of
  6. // Netscape Communications Corporation, which may be registered in other countries.
  7. // Other product and brand names are trademarks of their respective owners.
  8. // JavaScript library for form field validation
  9. var digits = "0123456789";
  10. var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
  11. var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  12. var whitespace = " tnr";
  13. var phoneNumberDelimiters = "()- ";
  14. var validUSPhoneChars = digits + phoneNumberDelimiters;
  15. var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";
  16. var SSNDelimiters = "- ";
  17. var validSSNChars = digits + SSNDelimiters;
  18. var digitsInSocialSecurityNumber = 9;
  19. var digitsInUSPhoneNumber = 10;
  20. var ZIPCodeDelimiters = "-";
  21. var ZIPCodeDelimeter = "-"
  22. var validZIPCodeChars = digits + ZIPCodeDelimiters
  23. var digitsInZIPCode1 = 5
  24. var digitsInZIPCode2 = 9
  25. var creditCardDelimiters = " "
  26. var mPrefix = "You did not enter a value into the "
  27. var mSuffix = " field. This is a required field. Please enter it now."
  28. var sUSLastName = "Last Name"
  29. var sUSFirstName = "First Name"
  30. var sWorldLastName = "Family Name"
  31. var sWorldFirstName = "Given Name"
  32. var sTitle = "Title"
  33. var sCompanyName = "Company Name"
  34. var sUSAddress = "Street Address"
  35. var sWorldAddress = "Address"
  36. var sCity = "City"
  37. var sStateCode = "State Code"
  38. var sWorldState = "State, Province, or Prefecture"
  39. var sCountry = "Country"
  40. var sZIPCode = "ZIP Code"
  41. var sWorldPostalCode = "Postal Code"
  42. var sPhone = "Phone Number"
  43. var sFax = "Fax Number"
  44. var sDateOfBirth = "Date of Birth"
  45. var sExpirationDate = "Expiration Date"
  46. var sEmail = "Email"
  47. var sSSN = "Social Security Number"
  48. var sCreditCardNumber = "Credit Card Number"
  49. var sOtherInfo = "Other Information"
  50. var iStateCode = "This field must be a valid two character U.S. state abbreviation (like CA for California). Please reenter it now."
  51. var iZIPCode = "This field must be a 5 or 9 digit U.S. ZIP Code (like 94043). Please reenter it now."
  52. var iUSPhone = "This field must be a 10 digit U.S. phone number (like 415 555 1212). Please reenter it now."
  53. var iWorldPhone = "This field must be a valid international phone number. Please reenter it now."
  54. var iSSN = "This field must be a 9 digit U.S. social security number (like 123 45 6789). Please reenter it now."
  55. var iEmail = "This field must be a valid email address (like foo@bar.com). Please reenter it now."
  56. var iCreditCard = "This field must be a valid credit card number. Please reenter it now."
  57. var iCreditCardPrefix = "This is not a valid "
  58. var iCreditCardSuffix = " credit card number. (Click the link on this form to see a list of sample numbers.) Please reenter it now."
  59. var iDay = "This field must be a day number between 1 and 31.  Please reenter it now."
  60. var iMonth = "This field must be a month number between 1 and 12.  Please reenter it now."
  61. var iYear = "This field must be a 2 or 4 digit year number.  Please reenter it now."
  62. var iDatePrefix = "The Day, Month, and Year for "
  63. var iDateSuffix = " do not form a valid date.  Please reenter them now."
  64. var iDate = "This field must be a valid date. Please reenter it now."
  65. var iInteger = "This field must be a whole number value. Please reenter it now."
  66. var iPositiveInteger = "This field must be a positive whole number value. Please reenter it now."
  67. var iAlphabetic = "This field must contain only letters. Please reenter it now."
  68. var iNumber = "This field must contain only numeric values. Please reenter it now."
  69. var pEntryPrompt = "Please enter a "
  70. var pStateCode = "2 character code (like CA)."
  71. var pZIPCode = "5 or 9 digit U.S. ZIP Code (like 94043)."
  72. var pUSPhone = "10 digit U.S. phone number (like 415 555 1212)."
  73. var pWorldPhone = "international phone number."
  74. var pSSN = "9 digit U.S. social security number (like 123 45 6789)."
  75. var pEmail = "valid email address (like foo@bar.com)."
  76. var pCreditCard = "valid credit card number."
  77. var pDay = "day number between 1 and 31."
  78. var pMonth = "month number between 1 and 12."
  79. var pYear = "2 or 4 digit year number."
  80. var defaultEmptyOK = false
  81. function makeArray(n) {
  82.    for (var i = 1; i <= n; i++) {
  83.       this[i] = 0
  84.    }
  85.    return this
  86. }
  87. var daysInMonth = makeArray(12);
  88. daysInMonth[1] = 31;
  89. daysInMonth[2] = 29;   // must programmatically check this
  90. daysInMonth[3] = 31;
  91. daysInMonth[4] = 30;
  92. daysInMonth[5] = 31;
  93. daysInMonth[6] = 30;
  94. daysInMonth[7] = 31;
  95. daysInMonth[8] = 31;
  96. daysInMonth[9] = 30;
  97. daysInMonth[10] = 31;
  98. daysInMonth[11] = 30;
  99. daysInMonth[12] = 31;
  100. var USStateCodeDelimiter = "|";
  101. 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"
  102. function isEmpty(s)
  103. {   return ((s == null) || (s.length == 0))
  104. }
  105. function isWhitespace (s)
  106. {   var i;
  107.     if (isEmpty(s)) return true;
  108.     for (i = 0; i < s.length; i++)
  109.     {
  110.         var c = s.charAt(i);
  111.         if (whitespace.indexOf(c) == -1) return false;
  112.     }
  113.     return true;
  114. }
  115. function stripCharsInBag (s, bag)
  116. {   var i;
  117.     var returnString = "";
  118.     for (i = 0; i < s.length; i++)
  119.     {
  120.         var c = s.charAt(i);
  121.         if (bag.indexOf(c) == -1) returnString += c;
  122.     }
  123.     return returnString;
  124. }
  125. function stripCharsNotInBag (s, bag)
  126. {   var i;
  127.     var returnString = "";
  128.     for (i = 0; i < s.length; i++)
  129.     {
  130.         var c = s.charAt(i);
  131.         if (bag.indexOf(c) != -1) returnString += c;
  132.     }
  133.     return returnString;
  134. }
  135. function stripWhitespace (s)
  136. {   return stripCharsInBag (s, whitespace)
  137. }
  138. function charInString (c, s)
  139. {   for (i = 0; i < s.length; i++)
  140.     {   if (s.charAt(i) == c) return true;
  141.     }
  142.     return false
  143. }
  144. function stripInitialWhitespace (s)
  145. {   var i = 0;
  146.     while ((i < s.length) && charInString (s.charAt(i), whitespace))
  147.        i++;
  148.     return s.substring (i, s.length);
  149. }
  150. function isLetter (c)
  151. {   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
  152. }
  153. function isDigit (c)
  154. {   return ((c >= "0") && (c <= "9"))
  155. }
  156. function isLetterOrDigit (c)
  157. {   return (isLetter(c) || isDigit(c))
  158. }
  159. function isInteger (s)
  160. {   var i;
  161.     if (isEmpty(s))
  162.        if (isInteger.arguments.length == 1) return defaultEmptyOK;
  163.        else return (isInteger.arguments[1] == true);
  164.     for (i = 0; i < s.length; i++)
  165.     {
  166.         var c = s.charAt(i);
  167.         if (!isDigit(c)) return false;
  168.     }
  169.     return true;
  170. }
  171. function isSignedInteger (s)
  172. {   if (isEmpty(s))
  173.        if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
  174.        else return (isSignedInteger.arguments[1] == true);
  175.     else {
  176.         var startPos = 0;
  177.         var secondArg = defaultEmptyOK;
  178.         if (isSignedInteger.arguments.length > 1)
  179.             secondArg = isSignedInteger.arguments[1];
  180.         if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
  181.            startPos = 1;
  182.         return (isInteger(s.substring(startPos, s.length), secondArg))
  183.     }
  184. }
  185. function isPositiveInteger (s)
  186. {   var secondArg = defaultEmptyOK;
  187.     if (isPositiveInteger.arguments.length > 1)
  188.         secondArg = isPositiveInteger.arguments[1];
  189.     return (isSignedInteger(s, secondArg)
  190.          && ( (isEmpty(s) && secondArg)  || (parseInt (s) > 0) ) );
  191. }
  192. function isNonnegativeInteger (s)
  193. {   var secondArg = defaultEmptyOK;
  194.     if (isNonnegativeInteger.arguments.length > 1)
  195.         secondArg = isNonnegativeInteger.arguments[1];
  196.     return (isSignedInteger(s, secondArg)
  197.          && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
  198. }
  199. function isNegativeInteger (s)
  200. {   var secondArg = defaultEmptyOK;
  201.     if (isNegativeInteger.arguments.length > 1)
  202.         secondArg = isNegativeInteger.arguments[1];
  203.     return (isSignedInteger(s, secondArg)
  204.          && ( (isEmpty(s) && secondArg)  || (parseInt (s) < 0) ) );
  205. }
  206. function isNonpositiveInteger (s)
  207. {   var secondArg = defaultEmptyOK;
  208.     if (isNonpositiveInteger.arguments.length > 1)
  209.         secondArg = isNonpositiveInteger.arguments[1];
  210.     return (isSignedInteger(s, secondArg)
  211.          && ( (isEmpty(s) && secondArg)  || (parseInt (s) <= 0) ) );
  212. }
  213. //changed by zhang kai
  214. function isFloat(s)
  215.  {    
  216.     if(isWhitespace(s)) return false;
  217.     if(isNaN(s)) return false;
  218.     return true;
  219.  }
  220. function isSignedFloat (s)
  221.  {
  222.     return isFloat(s);
  223.  }
  224. /*
  225. function isFloat (s)
  226. {   
  227.     var i;
  228.     var seenDecimalPoint = false;
  229.     if (isEmpty(s))
  230.        if (isFloat.arguments.length == 1) return defaultEmptyOK;
  231.        else return (isFloat.arguments[1] == true);
  232.     if (s == ".") return false;
  233.     for (i = 0; i < s.length; i++)
  234.     {
  235.         // Check that current character is number.
  236.         var c = s.charAt(i);
  237.         if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;
  238.         else if (!isDigit(c)) return false;
  239.     }
  240.     return true;
  241. }
  242. function isSignedFloat (s)
  243. {   if (isEmpty(s))
  244.        if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
  245.        else return (isSignedFloat.arguments[1] == true);
  246.     else {
  247.         var startPos = 0;
  248.         var secondArg = defaultEmptyOK;
  249.         if (isSignedFloat.arguments.length > 1)
  250.             secondArg = isSignedFloat.arguments[1];
  251.         // skip leading + or -
  252.         if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
  253.            startPos = 1;
  254.         return (isFloat(s.substring(startPos, s.length), secondArg))
  255.     }
  256. }
  257. */
  258. function isAlphabetic (s)
  259. {   var i;
  260.     if (isEmpty(s))
  261.        if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
  262.        else return (isAlphabetic.arguments[1] == true);
  263.     for (i = 0; i < s.length; i++)
  264.     {
  265.         // Check that current character is letter.
  266.         var c = s.charAt(i);
  267.         if (!isLetter(c))
  268.         return false;
  269.     }
  270.     // All characters are letters.
  271.     return true;
  272. }
  273. function isAlphanumeric (s)
  274. {   var i;
  275.     if (isEmpty(s))
  276.        if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
  277.        else return (isAlphanumeric.arguments[1] == true);
  278.     for (i = 0; i < s.length; i++)
  279.     {
  280.         var c = s.charAt(i);
  281.         if (! (isLetter(c) || isDigit(c) ) )
  282.         return false;
  283.     }
  284.     return true;
  285. }
  286. function reformat (s)
  287. {   var arg;
  288.     var sPos = 0;
  289.     var resultString = "";
  290.     for (var i = 1; i < reformat.arguments.length; i++) {
  291.        arg = reformat.arguments[i];
  292.        if (i % 2 == 1) resultString += arg;
  293.        else {
  294.            resultString += s.substring(sPos, sPos + arg);
  295.            sPos += arg;
  296.        }
  297.     }
  298.     return resultString;
  299. }
  300. function isSSN (s)
  301. {   if (isEmpty(s))
  302.        if (isSSN.arguments.length == 1) return defaultEmptyOK;
  303.        else return (isSSN.arguments[1] == true);
  304.     return (isInteger(s) && s.length == digitsInSocialSecurityNumber)
  305. }
  306. function isUSPhoneNumber (s)
  307. {   if (isEmpty(s))
  308.        if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
  309.        else return (isUSPhoneNumber.arguments[1] == true);
  310.     return (isInteger(s) && s.length == digitsInUSPhoneNumber)
  311. }
  312. function isInternationalPhoneNumber (s)
  313. {   if (isEmpty(s))
  314.        if (isInternationalPhoneNumber.arguments.length == 1) return defaultEmptyOK;
  315.        else return (isInternationalPhoneNumber.arguments[1] == true);
  316.     return (isPositiveInteger(s))
  317. }
  318. function isZIPCode (s)
  319. {  if (isEmpty(s))
  320.        if (isZIPCode.arguments.length == 1) return defaultEmptyOK;
  321.        else return (isZIPCode.arguments[1] == true);
  322.    return (isInteger(s) &&
  323.             ((s.length == digitsInZIPCode1) ||
  324.              (s.length == digitsInZIPCode2)))
  325. }
  326. function isStateCode(s)
  327. {   if (isEmpty(s))
  328.        if (isStateCode.arguments.length == 1) return defaultEmptyOK;
  329.        else return (isStateCode.arguments[1] == true);
  330.     return ( (USStateCodes.indexOf(s) != -1) &&
  331.              (s.indexOf(USStateCodeDelimiter) == -1) )
  332. }
  333. function isvalidEmailChar (s)
  334. {   var i;
  335.     for (i = 0; i < s.length; i++)
  336.     {
  337.         var c = s.charAt(i);
  338.         if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {
  339.         return false;
  340. }
  341.     }
  342.     return true;
  343. }
  344. function isEmail (s)
  345. {   if (isEmpty(s))
  346.        if (isEmail.arguments.length == 1) return defaultEmptyOK;
  347.        else return (isEmail.arguments[1] == true);
  348.     if (isWhitespace(s)) return false;
  349.     if (!isvalidEmailChar(s)) return false;
  350.     atOffset = s.lastIndexOf('@');
  351.     if ( atOffset < 1 )
  352.         return false;
  353.     else {
  354.   dotOffset = s.indexOf('.', atOffset);
  355.       if ( dotOffset < atOffset + 2 ||
  356.          dotOffset > s.length - 2 ) {
  357.          return false;
  358.       }
  359.    }
  360.    return true;
  361. }
  362. function isYear (s)
  363. {   if (isEmpty(s))
  364.        if (isYear.arguments.length == 1) return defaultEmptyOK;
  365.        else return (isYear.arguments[1] == true);
  366.     if (!isNonnegativeInteger(s)) return false;
  367.     return (s.length == 4);
  368. }
  369. function isIntegerInRange (s, a, b)
  370. {   if (isEmpty(s))
  371.        if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
  372.        else return (isIntegerInRange.arguments[1] == true);
  373.     if (!isInteger(s, false)) return false;
  374.     //var num = parseInt(s);
  375.     var num = parseInt (s,10);// convert it to decimal,modified by zhangkai
  376.     return ((num >= a) && (num <= b));
  377. }
  378. function isMonth (s)
  379. {   if (isEmpty(s))
  380.        if (isMonth.arguments.length == 1) return defaultEmptyOK;
  381.        else return (isMonth.arguments[1] == true);
  382.     return isIntegerInRange (s, 1, 12);
  383. }
  384. function isDay (s)
  385. {   if (isEmpty(s))
  386.        if (isDay.arguments.length == 1) return defaultEmptyOK;
  387.        else return (isDay.arguments[1] == true);
  388.     return isIntegerInRange (s, 1, 31);
  389. }
  390. function daysInFebruary (year)
  391. {
  392.     return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
  393. }
  394. function isDate (year, month, day)
  395. {
  396.     if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;
  397.     var intYear = parseInt(year);
  398.     var intMonth = parseInt(month);
  399.     var intDay = parseInt(day);
  400.     if (intDay > daysInMonth[intMonth]) return false;
  401.     if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;
  402.     return true;
  403. }
  404. function prompt (s)
  405. {   window.status = s
  406. }
  407. function promptEntry (s)
  408. {   window.status = pEntryPrompt + s
  409. }
  410. function warnEmpty (theField, s)
  411. {   theField.focus()
  412.     alert(mPrefix + s + mSuffix)
  413.     return false
  414. }
  415. function warnInvalid (theField, s)
  416. {   theField.focus()
  417.     theField.select()
  418.     alert(s)
  419.     return false
  420. }
  421. //Special for for NAB
  422. function checkExpression(theField, sExpr, emptyOK) {
  423.     if (checkExpression.arguments.length == 2) emptyOK = defaultEmptyOK;
  424.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  425.     return theField.eval(sExpr);
  426. }
  427. //NAB
  428. function checkNumber (theField, emptyOK)
  429. {   if (checkNumber.arguments.length == 1) emptyOK = defaultEmptyOK;
  430.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  431.     else if (!isSignedFloat(theField.value, false))
  432.        return warnInvalid (theField, iNumber);
  433.     else return true;
  434. }
  435. //NAB
  436. function checkInteger (theField, emptyOK)
  437. {   if (checkInteger.arguments.length == 1) emptyOK = defaultEmptyOK;
  438.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  439.     else if (!isSignedInteger(theField.value, false))
  440.        return warnInvalid (theField, iInteger);
  441.     else return true;
  442. }
  443. //NAB
  444. function checkPositiveInteger (theField, emptyOK)
  445. {   if (checkPositiveInteger.arguments.length == 1) emptyOK = defaultEmptyOK;
  446.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  447.     else if (!isInteger(theField.value, false))
  448.        return warnInvalid (theField, iPositiveInteger);
  449.     else return true;
  450. }
  451. //NAB
  452. function checkAlphabetic (theField, emptyOK)
  453. {   if (checkAlphabetic.arguments.length == 1) emptyOK = defaultEmptyOK;
  454.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  455.     else if (!isAlphabetic(theField.value, false))
  456.        return warnInvalid (theField, iAlphabetic);
  457.     else return true;
  458. }
  459. function checkString (theField, s, emptyOK)
  460. {
  461.     if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;
  462.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  463.     if (isWhitespace(theField.value))
  464.        return warnEmpty (theField, s);
  465.     else return true;
  466. }
  467. function checkStateCode (theField, emptyOK)
  468. {   if (checkStateCode.arguments.length == 1) emptyOK = defaultEmptyOK;
  469.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  470.     else
  471.     {  theField.value = theField.value.toUpperCase();
  472.        if (!isStateCode(theField.value, false))
  473.           return warnInvalid (theField, iStateCode);
  474.        else return true;
  475.     }
  476. }
  477. function reformatZIPCode (ZIPString)
  478. {   if (ZIPString.length == 5) return ZIPString;
  479.     else return (reformat (ZIPString, "", 5, "-", 4));
  480. }
  481. function checkZIPCode (theField, emptyOK)
  482. {   if (checkZIPCode.arguments.length == 1) emptyOK = defaultEmptyOK;
  483.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  484.     else
  485.     { var normalizedZIP = stripCharsInBag(theField.value, ZIPCodeDelimiters)
  486.       if (!isZIPCode(normalizedZIP, false))
  487.          return warnInvalid (theField, iZIPCode);
  488.       else
  489.       {
  490.          theField.value = reformatZIPCode(normalizedZIP)
  491.          return true;
  492.       }
  493.     }
  494. }
  495. function reformatUSPhone (USPhone)
  496. {   return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))
  497. }
  498. function checkUSPhone (theField, emptyOK)
  499. {   if (checkUSPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
  500.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  501.     else
  502.     {  var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters)
  503.        if (!isUSPhoneNumber(normalizedPhone, false))
  504.           return warnInvalid (theField, iUSPhone);
  505.        else
  506.        {
  507.           theField.value = reformatUSPhone(normalizedPhone)
  508.           return true;
  509.        }
  510.     }
  511. }
  512. function checkInternationalPhone (theField, emptyOK)
  513. {   if (checkInternationalPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
  514.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  515.     else
  516.     {  if (!isInternationalPhoneNumber(theField.value, false))
  517.           return warnInvalid (theField, iWorldPhone);
  518.        else return true;
  519.     }
  520. }
  521. function checkEmail (theField, emptyOK)
  522. {   if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
  523.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  524.     else if (!isEmail(theField.value, false))
  525.        return warnInvalid (theField, iEmail);
  526.     else return true;
  527. }
  528. function reformatSSN (SSN)
  529. {   return (reformat (SSN, "", 3, "-", 2, "-", 4))
  530. }
  531. function checkSSN (theField, emptyOK)
  532. {   
  533.     if (checkSSN.arguments.length == 1) emptyOK = defaultEmptyOK;
  534.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  535.     else
  536.     {  
  537.        var normalizedSSN = stripCharsInBag(theField.value, SSNDelimiters)
  538.        if (!isSSN(normalizedSSN, false))
  539.           return warnInvalid (theField, iSSN);
  540.        else
  541.        {
  542.           theField.value = reformatSSN(normalizedSSN)
  543.           return true;
  544.        }
  545.     }
  546. }
  547. function checkYear (theField, emptyOK)
  548. {   
  549.     if (checkYear.arguments.length == 1) emptyOK = defaultEmptyOK;
  550.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  551.     if (!isYear(theField.value, false))
  552.        return warnInvalid (theField, iYear);
  553.     else return true;
  554. }
  555. function checkMonth (theField, emptyOK)
  556. {   
  557.     if (checkMonth.arguments.length == 1) emptyOK = defaultEmptyOK;
  558.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  559.     if (!isMonth(theField.value, false))
  560.        return warnInvalid (theField, iMonth);
  561.     else return true;
  562. }
  563. function checkDay (theField, emptyOK)
  564. {   
  565.     if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;
  566.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  567.     if (!isDay(theField.value, false))
  568.        return warnInvalid (theField, iDay);
  569.     else return true;
  570. }
  571. function checkDate (theField, emptyOK)
  572. {   
  573.     if (checkDate.arguments.length == 1) emptyOK = defaultEmptyOK;
  574.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  575.     if (!isValidDate(theField.value, false))
  576.        return warnInvalid (theField, iDate);
  577.     else return true;
  578. }
  579. function isValidDate(s) {
  580.   d = new Date(s)
  581.   if (isNaN( d.valueOf() ))
  582.     return false;
  583.   sArray = s.split("/")
  584.   if (sArray.length > 3)
  585.     return false;
  586.   md1 = sArray[0];
  587.   md2 = sArray[1];
  588.   y = sArray[2];
  589.   if ( (md1 > 31) || (md1 < 0) || (md2 > 31) || (md2 < 0) || (y < 0) || (y > 99999) )
  590.      return false;
  591.   if ( (md1 > 12) && (md2 > 12))
  592.     return false;
  593.     return true;
  594. }
  595. /*
  596. function checkDate (yearField, monthField, dayField, labelString, OKtoOmitDay)
  597. {
  598.     if (checkDate.arguments.length == 4) OKtoOmitDay = false;
  599.     if (!isYear(yearField.value)) return warnInvalid (yearField, iYear);
  600.     if (!isMonth(monthField.value)) return warnInvalid (monthField, iMonth);
  601.     if ( (OKtoOmitDay == true) && isEmpty(dayField.value) ) return true;
  602.     else if (!isDay(dayField.value))
  603.        return warnInvalid (dayField, iDay);
  604.     if (isDate (yearField.value, monthField.value, dayField.value))
  605.        return true;
  606.     alert (iDatePrefix + labelString + iDateSuffix)
  607.     return false
  608. }
  609. */
  610. function checkCreditCard (theField, emptyOK)
  611. {   if (checkCreditCard.arguments.length == 1) emptyOK = defaultEmptyOK;
  612.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  613.     if (!isAnyCard(theField.value))
  614.        return warnInvalid (theField, iCreditCard)
  615.     else return true;
  616. }
  617. function isCreditCard(st) {
  618.   // Encoding only works on cards with less than 19 digits
  619.   if (st.length > 19)
  620.     return (false);
  621.   sum = 0; mul = 1; l = st.length;
  622.   for (i = 0; i < l; i++) {
  623.     digit = st.substring(l-i-1,l-i);
  624.     tproduct = parseInt(digit ,10)*mul;
  625.     if (tproduct >= 10)
  626.       sum += (tproduct % 10) + 1;
  627.     else
  628.       sum += tproduct;
  629.     if (mul == 1)
  630.       mul++;
  631.     else
  632.       mul--;
  633.   }
  634.   if ((sum % 10) == 0)
  635.     return (true);
  636.   else
  637.     return (false);
  638. }
  639. function isVisa(cc)
  640. {
  641.   if (((cc.length == 16) || (cc.length == 13)) &&
  642.       (cc.substring(0,1) == 4))
  643.     return isCreditCard(cc);
  644.   return false;
  645. }
  646. function isMasterCard(cc)
  647. {
  648.   firstdig = cc.substring(0,1);
  649.   seconddig = cc.substring(1,2);
  650.   if ((cc.length == 16) && (firstdig == 5) &&
  651.       ((seconddig >= 1) && (seconddig <= 5)))
  652.     return isCreditCard(cc);
  653.   return false;
  654. }
  655. function isAmericanExpress(cc)
  656. {
  657.   firstdig = cc.substring(0,1);
  658.   seconddig = cc.substring(1,2);
  659.   if ((cc.length == 15) && (firstdig == 3) &&
  660.       ((seconddig == 4) || (seconddig == 7)))
  661.     return isCreditCard(cc);
  662.   return false;
  663. }
  664. function isDinersClub(cc)
  665. {
  666.   firstdig = cc.substring(0,1);
  667.   seconddig = cc.substring(1,2);
  668.   if ((cc.length == 14) && (firstdig == 3) &&
  669.       ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
  670.     return isCreditCard(cc);
  671.   return false;
  672. }
  673. function isCarteBlanche(cc)
  674. {
  675.   return isDinersClub(cc);
  676. }
  677. function isDiscover(cc)
  678. {
  679.   first4digs = cc.substring(0,4);
  680.   if ((cc.length == 16) && (first4digs == "6011"))
  681.     return isCreditCard(cc);
  682.   return false;
  683. }
  684. function isEnRoute(cc)
  685. {
  686.   first4digs = cc.substring(0,4);
  687.   if ((cc.length == 15) &&
  688.       ((first4digs == "2014") ||
  689.        (first4digs == "2149")))
  690.     return isCreditCard(cc);
  691.   return false;
  692. }
  693. function isJCB(cc)
  694. {
  695.   first4digs = cc.substring(0,4);
  696.   if ((cc.length == 16) &&
  697.       ((first4digs == "3088") ||
  698.        (first4digs == "3096") ||
  699.        (first4digs == "3112") ||
  700.        (first4digs == "3158") ||
  701.        (first4digs == "3337") ||
  702.        (first4digs == "3528")))
  703.     return isCreditCard(cc);
  704.   return false;
  705. }
  706. function isAnyCard(cc)
  707. {
  708.   if (!isCreditCard(cc))
  709.     return false;
  710.   if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&
  711.       !isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {
  712.     return false;
  713.   }
  714.   return true;
  715. }
  716. function isCardMatch (cardType, cardNumber)
  717. {
  718. cardType = cardType.toUpperCase();
  719. var doesMatch = true;
  720. if ((cardType == "VISA") && (!isVisa(cardNumber)))
  721. doesMatch = false;
  722. if ((cardType == "MASTERCARD") && (!isMasterCard(cardNumber)))
  723. doesMatch = false;
  724. if ( ( (cardType == "AMERICANEXPRESS") || (cardType == "AMEX") )
  725.                 && (!isAmericanExpress(cardNumber))) doesMatch = false;
  726. if ((cardType == "DISCOVER") && (!isDiscover(cardNumber)))
  727. doesMatch = false;
  728. if ((cardType == "JCB") && (!isJCB(cardNumber)))
  729. doesMatch = false;
  730. if ((cardType == "DINERS") && (!isDinersClub(cardNumber)))
  731. doesMatch = false;
  732. if ((cardType == "CARTEBLANCHE") && (!isCarteBlanche(cardNumber)))
  733. doesMatch = false;
  734. if ((cardType == "ENROUTE") && (!isEnRoute(cardNumber)))
  735. doesMatch = false;
  736. return doesMatch;
  737. }
  738. function IsCC (st) {
  739.     return isCreditCard(st);
  740. }
  741. function IsVisa (cc)  {
  742.   return isVisa(cc);
  743. }
  744. function IsVISA (cc)  {
  745.   return isVisa(cc);
  746. }
  747. function IsMasterCard (cc)  {
  748.   return isMasterCard(cc);
  749. }
  750. function IsMastercard (cc)  {
  751.   return isMasterCard(cc);
  752. }
  753. function IsMC (cc)  {
  754.   return isMasterCard(cc);
  755. }
  756. function IsAmericanExpress (cc)  {
  757.   return isAmericanExpress(cc);
  758. }
  759. function IsAmEx (cc)  {
  760.   return isAmericanExpress(cc);
  761. }
  762. function IsDinersClub (cc)  {
  763.   return isDinersClub(cc);
  764. }
  765. function IsDC (cc)  {
  766.   return isDinersClub(cc);
  767. }
  768. function IsDiners (cc)  {
  769.   return isDinersClub(cc);
  770. }
  771. function IsCarteBlanche (cc)  {
  772.   return isCarteBlanche(cc);
  773. }
  774. function IsCB (cc)  {
  775.   return isCarteBlanche(cc);
  776. }
  777. function IsDiscover (cc)  {
  778.   return isDiscover(cc);
  779. }
  780. function IsEnRoute (cc)  {
  781.   return isEnRoute(cc);
  782. }
  783. function IsenRoute (cc)  {
  784.   return isEnRoute(cc);
  785. }
  786. function IsJCB (cc)  {
  787.   return isJCB(cc);
  788. }
  789. function IsAnyCard(cc)  {
  790.   return isAnyCard(cc);
  791. }
  792. function IsCardMatch (cardType, cardNumber)  {
  793.   return isCardMatch (cardType, cardNumber);
  794. }
  795. // For NAB
  796. function checkFields(theForm) {
  797.   clientOK = false;
  798.   returnValue = true;
  799.   if ( (navigator.appName.indexOf("Microsoft")!=-1) && (navigator.appVersion.indexOf("4.")!=-1) ) {
  800.     undef = void 0;
  801.     clientOK = true;
  802.   } else if ( (navigator.appName.indexOf("Netscape")!=-1) && ( (navigator.appVersion.indexOf("4.")!=-1) || (navigator.appVersion.indexOf("3.")!=-1) )) {
  803.     undef = "undefined";
  804.     clientOK = true;
  805.   }
  806.   if (clientOK) {
  807.     for (i=0; i<theForm.elements.length; i++) {
  808.       e = theForm.elements[i]
  809.       if ( ((e.type=="text") || (e.type=="textarea") || (e.type=="password")) && e.required && (e.value=="")) {
  810.         returnValue = false
  811.         break;
  812.       }
  813.     }
  814.     if (!returnValue) {
  815.       alert("Form not submitted - please enter a value for this field")
  816.       e.focus()
  817.     } else {
  818.       for (i=0; i<theForm.elements.length; i++) {
  819.      e = theForm.elements[i]
  820.      if ( (e.type=="text") || (e.type=="textarea") || (e.type=="password")) {
  821.           if ( undef != e.onchange ) {
  822.     returnValue = e.onchange();
  823.     if (!returnValue)
  824.               break;
  825.   }
  826.         }
  827.       }
  828.     }
  829.   }
  830.   return returnValue;  
  831. }
  832. function isChecked(checkbox_name)
  833.   {
  834.       var items=checkbox_name.length;
  835.       if(items>1){
  836.          for(i=0;i<items;i++)
  837.            {
  838.            if(checkbox_name[i].checked==true) return true;
  839.            }
  840.          }       
  841.       else 
  842.          if(checkbox_name.checked==true) return true;      
  843.       return false;
  844.   }
  845.   
  846.  function isCheckedOne(checkbox_name)
  847.      {
  848.       var items=checkbox_name.length;
  849.       var count=0;
  850.       if(items>1){
  851.          for(i=0;i<items;i++)
  852.            {
  853.            if(checkbox_name[i].checked==true) count++;
  854.            }
  855.          if(count==1) return true;
  856.          else 
  857.            return false;          
  858.        }       
  859.       else 
  860.         {
  861.          if(checkbox_name.checked==true) return true;
  862.          else          
  863.            return false;          
  864.         }            
  865.      } 
  866.  function checkAll(checkbox_names,checkbox_select)
  867.      {      
  868.       var items=checkbox_names.length;
  869.       if(items>1)
  870.        {
  871.         for(i=0;i<items;i++) checkbox_names[i].checked=checkbox_select.checked;      
  872.        }
  873.       else
  874.        checkbox_names.checked=checkbox_select.checked;
  875.      }   
  876.  
  877.      
  878.  function isVNEXDate(s) // check the date like '1999-10-8'
  879.  {
  880.    sArray = s.split("-")
  881.    if (sArray.length != 3)
  882.     return false;
  883.    year = sArray[0];
  884.    month = sArray[1];
  885.    day = sArray[2];
  886.    return isDate(year,month,day);
  887.  }