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 = 6
  24. var digitsInZIPCode2 = 9
  25. var creditCardDelimiters = " "
  26. var mPrefix = "你没有输入数据到"
  27. var mSuffix = " 字段,这是个需要填写的字段,请输入。"
  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 = true
  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. {
  104.    return ((s == null) || (s.length == 0) )
  105. }
  106. function isWhitespace (s)
  107. {   var i;
  108.     if (isEmpty(s)) return true;
  109.     for (i = 0; i < s.length; i++)
  110.     {
  111.         var c = s.charAt(i);
  112.         if (whitespace.indexOf(c) == -1) return false;
  113.     }
  114.     return true;
  115. }
  116. function stripCharsInBag (s, bag)
  117. {   var i;
  118.     var returnString = "";
  119.     for (i = 0; i < s.length; i++)
  120.     {
  121.         var c = s.charAt(i);
  122.         if (bag.indexOf(c) == -1) returnString += c;
  123.     }
  124.     return returnString;
  125. }
  126. function stripCharsNotInBag (s, bag)
  127. {   var i;
  128.     var returnString = "";
  129.     for (i = 0; i < s.length; i++)
  130.     {
  131.         var c = s.charAt(i);
  132.         if (bag.indexOf(c) != -1) returnString += c;
  133.     }
  134.     return returnString;
  135. }
  136. function stripWhitespace (s)
  137. {   return stripCharsInBag (s, whitespace)
  138. }
  139. function charInString (c, s)
  140. {   for (i = 0; i < s.length; i++)
  141.     {   if (s.charAt(i) == c) return true;
  142.     }
  143.     return false
  144. }
  145. function stripInitialWhitespace (s)
  146. {   var i = 0;
  147.     while ((i < s.length) && charInString (s.charAt(i), whitespace))
  148.        i++;
  149.     return s.substring (i, s.length);
  150. }
  151. function isLetter (c)
  152. {   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
  153. }
  154. function isDigit (c)
  155. {   return ((c >= "0") && (c <= "9"))
  156. }
  157. function isLetterOrDigit (c)
  158. {   return (isLetter(c) || isDigit(c))
  159. }
  160. function isTel(c)
  161. {   return (((c >= "0") && (c <= "9"))|| (c=="-"))
  162. }
  163. function isInteger (s)
  164. {   var i;
  165.     if (isEmpty(s))
  166.        if (isInteger.arguments.length == 1) return defaultEmptyOK;
  167.        else return (isInteger.arguments[1] == true);
  168.     for (i = 0; i < s.length; i++)
  169.     {
  170.         var c = s.charAt(i);
  171.         if (!isDigit(c)) return false;
  172.     }
  173.     return true;
  174. }
  175. function isTelephone(s)
  176. {   var i;
  177.     if (isEmpty(s))
  178. return true;
  179.     for (i = 0; i < s.length; i++)
  180.     {
  181.         var c = s.charAt(i);
  182.         if (!isTel(c)) return false;
  183.     }
  184.     return true;
  185. }
  186. function isSignedInteger (s)
  187. {   if (isEmpty(s))
  188.        if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
  189.        else return (isSignedInteger.arguments[1] == true);
  190.     else {
  191.         var startPos = 0;
  192.         var secondArg = defaultEmptyOK;
  193.         if (isSignedInteger.arguments.length > 1)
  194.             secondArg = isSignedInteger.arguments[1];
  195.         if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
  196.            startPos = 1;
  197.         return (isInteger(s.substring(startPos, s.length), secondArg))
  198.     }
  199. }
  200. function isPositiveInteger (s)
  201. {   var secondArg = defaultEmptyOK;
  202.     if (isPositiveInteger.arguments.length > 1)
  203.         secondArg = isPositiveInteger.arguments[1];
  204.     return (isSignedInteger(s, secondArg)
  205.          && ( (isEmpty(s) && secondArg)  || (parseInt (s) > 0) ) );
  206. }
  207. function isNonnegativeInteger (s)
  208. {   var secondArg = defaultEmptyOK;
  209.     if (isNonnegativeInteger.arguments.length > 1)
  210.         secondArg = isNonnegativeInteger.arguments[1];
  211.     return (isSignedInteger(s, secondArg)
  212.          && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
  213. }
  214. function isNegativeInteger (s)
  215. {   var secondArg = defaultEmptyOK;
  216.     if (isNegativeInteger.arguments.length > 1)
  217.         secondArg = isNegativeInteger.arguments[1];
  218.     return (isSignedInteger(s, secondArg)
  219.          && ( (isEmpty(s) && secondArg)  || (parseInt (s) < 0) ) );
  220. }
  221. function isNonpositiveInteger (s)
  222. {   var secondArg = defaultEmptyOK;
  223.     if (isNonpositiveInteger.arguments.length > 1)
  224.         secondArg = isNonpositiveInteger.arguments[1];
  225.     return (isSignedInteger(s, secondArg)
  226.          && ( (isEmpty(s) && secondArg)  || (parseInt (s) <= 0) ) );
  227. }
  228. //changed by zhang kai
  229. function isFloat(s)
  230.  {    
  231.     if(isWhitespace(s)) return false;
  232.     if(isNaN(s)) return false;
  233.     return true;
  234.  }
  235. function isSignedFloat (s)
  236.  {
  237.     return isFloat(s);
  238.  }
  239. /*
  240. function isFloat (s)
  241. {   
  242.     var i;
  243.     var seenDecimalPoint = false;
  244.     if (isEmpty(s))
  245.        if (isFloat.arguments.length == 1) return defaultEmptyOK;
  246.        else return (isFloat.arguments[1] == true);
  247.     if (s == ".") return false;
  248.     for (i = 0; i < s.length; i++)
  249.     {
  250.         // Check that current character is number.
  251.         var c = s.charAt(i);
  252.         if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;
  253.         else if (!isDigit(c)) return false;
  254.     }
  255.     return true;
  256. }
  257. function isSignedFloat (s)
  258. {   if (isEmpty(s))
  259.        if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
  260.        else return (isSignedFloat.arguments[1] == true);
  261.     else {
  262.         var startPos = 0;
  263.         var secondArg = defaultEmptyOK;
  264.         if (isSignedFloat.arguments.length > 1)
  265.             secondArg = isSignedFloat.arguments[1];
  266.         // skip leading + or -
  267.         if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
  268.            startPos = 1;
  269.         return (isFloat(s.substring(startPos, s.length), secondArg))
  270.     }
  271. }
  272. */
  273. function isAlphabetic (s)
  274. {   var i;
  275.     if (isEmpty(s))
  276.        if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
  277.        else return (isAlphabetic.arguments[1] == true);
  278.     for (i = 0; i < s.length; i++)
  279.     {
  280.         // Check that current character is letter.
  281.         var c = s.charAt(i);
  282.         if (!isLetter(c))
  283.         return false;
  284.     }
  285.     // All characters are letters.
  286.     return true;
  287. }
  288. function isAlphanumeric (s)
  289. {   var i;
  290.     if (isEmpty(s))
  291.        if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
  292.        else return (isAlphanumeric.arguments[1] == true);
  293.     for (i = 0; i < s.length; i++)
  294.     {
  295.         var c = s.charAt(i);
  296.         if (! (isLetter(c) || isDigit(c) ) )
  297.         return false;
  298.     }
  299.     return true;
  300. }
  301. function reformat (s)
  302. {   var arg;
  303.     var sPos = 0;
  304.     var resultString = "";
  305.     for (var i = 1; i < reformat.arguments.length; i++) {
  306.        arg = reformat.arguments[i];
  307.        if (i % 2 == 1) resultString += arg;
  308.        else {
  309.            resultString += s.substring(sPos, sPos + arg);
  310.            sPos += arg;
  311.        }
  312.     }
  313.     return resultString;
  314. }
  315. function isSSN (s)
  316. {   if (isEmpty(s))
  317.        if (isSSN.arguments.length == 1) return defaultEmptyOK;
  318.        else return (isSSN.arguments[1] == true);
  319.     return (isInteger(s) && s.length == digitsInSocialSecurityNumber)
  320. }
  321. function isUSPhoneNumber (s)
  322. {   if (isEmpty(s))
  323.        if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
  324.        else return (isUSPhoneNumber.arguments[1] == true);
  325.     return (isInteger(s) && s.length == digitsInUSPhoneNumber)
  326. }
  327. function isInternationalPhoneNumber (s)
  328. {   if (isEmpty(s))
  329.        if (isInternationalPhoneNumber.arguments.length == 1) return defaultEmptyOK;
  330.        else return (isInternationalPhoneNumber.arguments[1] == true);
  331.     return (isPositiveInteger(s))
  332. }
  333. function isZIPCode (s)
  334. {  if (isEmpty(s))
  335. return true;
  336.    return (isInteger(s) &&
  337.             (s.length == digitsInZIPCode1))
  338. }
  339. function isStateCode(s)
  340. {   if (isEmpty(s))
  341.        if (isStateCode.arguments.length == 1) return defaultEmptyOK;
  342.        else return (isStateCode.arguments[1] == true);
  343.     return ( (USStateCodes.indexOf(s) != -1) &&
  344.              (s.indexOf(USStateCodeDelimiter) == -1) )
  345. }
  346. function isvalidEmailChar (s)
  347. {   var i;
  348.     for (i = 0; i < s.length; i++)
  349.     {
  350.         var c = s.charAt(i);
  351.         if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {
  352.         return false;
  353. }
  354.     }
  355.     return true;
  356. }
  357. function isEmail (s)
  358. {   if (isEmpty(s))
  359.        if (isEmail.arguments.length == 1) return defaultEmptyOK;
  360.        else return (isEmail.arguments[1] == true);
  361.     if (isWhitespace(s)) return false;
  362.     if (!isvalidEmailChar(s)) return false;
  363.     atOffset = s.lastIndexOf('@');
  364.     if ( atOffset < 1 )
  365.         return false;
  366.     else {
  367.   dotOffset = s.indexOf('.', atOffset);
  368.       if ( dotOffset < atOffset + 2 ||
  369.          dotOffset > s.length - 2 ) {
  370.          return false;
  371.       }
  372.    }
  373.    return true;
  374. }
  375. function isYear (s)
  376. {   if (isEmpty(s))
  377.        if (isYear.arguments.length == 1) return defaultEmptyOK;
  378.        else return (isYear.arguments[1] == true);
  379.     if (!isNonnegativeInteger(s)) return false;
  380.     return (s.length == 4);
  381. }
  382. function isIntegerInRange (s, a, b)
  383. {   if (isEmpty(s))
  384.        if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
  385.        else return (isIntegerInRange.arguments[1] == true);
  386.     if (!isInteger(s, false)) return false;
  387.     //var num = parseInt(s);
  388.     var num = parseInt (s,10);// convert it to decimal,modified by zhangkai
  389.     return ((num >= a) && (num <= b));
  390. }
  391. function isMonth (s)
  392. {   if (isEmpty(s))
  393.        if (isMonth.arguments.length == 1) return defaultEmptyOK;
  394.        else return (isMonth.arguments[1] == true);
  395.     return isIntegerInRange (s, 1, 12);
  396. }
  397. function isDay (s)
  398. {   if (isEmpty(s))
  399.        if (isDay.arguments.length == 1) return defaultEmptyOK;
  400.        else return (isDay.arguments[1] == true);
  401.     return isIntegerInRange (s, 1, 31);
  402. }
  403. function daysInFebruary (year)
  404. {
  405.     return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
  406. }
  407. function isDate (year, month, day)
  408. {
  409.     if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;
  410.     var intYear = parseInt(year);
  411.     var intMonth = parseInt(month);
  412.     var intDay = parseInt(day);
  413.     if (intDay > daysInMonth[intMonth]) return false;
  414.     if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;
  415.     return true;
  416. }
  417. function prompt (s)
  418. {   window.status = s
  419. }
  420. function promptEntry (s)
  421. {   window.status = pEntryPrompt + s
  422. }
  423. function warnEmpty (theField, s)
  424. {   theField.focus()
  425.     alert(mPrefix + s + mSuffix)
  426.     return false
  427. }
  428. function warnInvalid (theField, s)
  429. {   theField.focus()
  430.     theField.select()
  431.     alert(s)
  432.     return false
  433. }
  434. //Special for for NAB
  435. function checkExpression(theField, sExpr, emptyOK) {
  436.     if (checkExpression.arguments.length == 2) emptyOK = defaultEmptyOK;
  437.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  438.     return theField.eval(sExpr);
  439. }
  440. //NAB
  441. function checkNumber (theField, emptyOK)
  442. {   if (checkNumber.arguments.length == 1) emptyOK = defaultEmptyOK;
  443.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  444.     else if (!isSignedFloat(theField.value, false))
  445.        return warnInvalid (theField, iNumber);
  446.     else return true;
  447. }
  448. //NAB
  449. function checkInteger (theField, emptyOK)
  450. {   if (checkInteger.arguments.length == 1) emptyOK = defaultEmptyOK;
  451.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  452.     else if (!isSignedInteger(theField.value, false))
  453.        return warnInvalid (theField, iInteger);
  454.     else return true;
  455. }
  456. //NAB
  457. function checkPositiveInteger (theField, emptyOK)
  458. {   if (checkPositiveInteger.arguments.length == 1) emptyOK = defaultEmptyOK;
  459.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  460.     else if (!isInteger(theField.value, false))
  461.        return warnInvalid (theField, iPositiveInteger);
  462.     else return true;
  463. }
  464. //NAB
  465. function checkAlphabetic (theField, emptyOK)
  466. {   if (checkAlphabetic.arguments.length == 1) emptyOK = defaultEmptyOK;
  467.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  468.     else if (!isAlphabetic(theField.value, false))
  469.        return warnInvalid (theField, iAlphabetic);
  470.     else return true;
  471. }
  472. function checkString (theField, s, emptyOK)
  473. {
  474.     if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;
  475.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  476.     if (isWhitespace(theField.value))
  477.        return warnEmpty (theField, s);
  478.     else return true;
  479. }
  480. function checkStateCode (theField, emptyOK)
  481. {   if (checkStateCode.arguments.length == 1) emptyOK = defaultEmptyOK;
  482.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  483.     else
  484.     {  theField.value = theField.value.toUpperCase();
  485.        if (!isStateCode(theField.value, false))
  486.           return warnInvalid (theField, iStateCode);
  487.        else return true;
  488.     }
  489. }
  490. function reformatZIPCode (ZIPString)
  491. {   if (ZIPString.length == 5) return ZIPString;
  492.     else return (reformat (ZIPString, "", 5, "-", 4));
  493. }
  494. function checkZIPCode (theField, emptyOK)
  495. {   if (checkZIPCode.arguments.length == 1) emptyOK = defaultEmptyOK;
  496.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  497.     else
  498.     { var normalizedZIP = stripCharsInBag(theField.value, ZIPCodeDelimiters)
  499.       if (!isZIPCode(normalizedZIP, false))
  500.          return warnInvalid (theField, iZIPCode);
  501.       else
  502.       {
  503.          theField.value = reformatZIPCode(normalizedZIP)
  504.          return true;
  505.       }
  506.     }
  507. }
  508. function reformatUSPhone (USPhone)
  509. {   return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))
  510. }
  511. function checkUSPhone (theField, emptyOK)
  512. {   if (checkUSPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
  513.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  514.     else
  515.     {  var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters)
  516.        if (!isUSPhoneNumber(normalizedPhone, false))
  517.           return warnInvalid (theField, iUSPhone);
  518.        else
  519.        {
  520.           theField.value = reformatUSPhone(normalizedPhone)
  521.           return true;
  522.        }
  523.     }
  524. }
  525. function checkInternationalPhone (theField, emptyOK)
  526. {   if (checkInternationalPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
  527.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  528.     else
  529.     {  if (!isInternationalPhoneNumber(theField.value, false))
  530.           return warnInvalid (theField, iWorldPhone);
  531.        else return true;
  532.     }
  533. }
  534. function checkEmail (theField, emptyOK)
  535. {   if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
  536.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  537.     else if (!isEmail(theField.value, false))
  538.        return warnInvalid (theField, iEmail);
  539.     else return true;
  540. }
  541. function reformatSSN (SSN)
  542. {   return (reformat (SSN, "", 3, "-", 2, "-", 4))
  543. }
  544. function checkSSN (theField, emptyOK)
  545. {   
  546.     if (checkSSN.arguments.length == 1) emptyOK = defaultEmptyOK;
  547.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  548.     else
  549.     {  
  550.        var normalizedSSN = stripCharsInBag(theField.value, SSNDelimiters)
  551.        if (!isSSN(normalizedSSN, false))
  552.           return warnInvalid (theField, iSSN);
  553.        else
  554.        {
  555.           theField.value = reformatSSN(normalizedSSN)
  556.           return true;
  557.        }
  558.     }
  559. }
  560. function checkYear (theField, emptyOK)
  561. {   
  562.     if (checkYear.arguments.length == 1) emptyOK = defaultEmptyOK;
  563.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  564.     if (!isYear(theField.value, false))
  565.        return warnInvalid (theField, iYear);
  566.     else return true;
  567. }
  568. function checkMonth (theField, emptyOK)
  569. {   
  570.     if (checkMonth.arguments.length == 1) emptyOK = defaultEmptyOK;
  571.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  572.     if (!isMonth(theField.value, false))
  573.        return warnInvalid (theField, iMonth);
  574.     else return true;
  575. }
  576. function checkDay (theField, emptyOK)
  577. {   
  578.     if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;
  579.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  580.     if (!isDay(theField.value, false))
  581.        return warnInvalid (theField, iDay);
  582.     else return true;
  583. }
  584. function checkDate (theField, emptyOK)
  585. {   
  586.     if (checkDate.arguments.length == 1) emptyOK = defaultEmptyOK;
  587.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  588.     if (!isValidDate(theField.value, false))
  589.        return warnInvalid (theField, iDate);
  590.     else return true;
  591. }
  592. function isValidDate(s) {
  593.   d = new Date(s)
  594.   if (isNaN( d.valueOf() ))
  595.     return false;
  596.   sArray = s.split("/")
  597.   if (sArray.length > 3)
  598.     return false;
  599.   md1 = sArray[0];
  600.   md2 = sArray[1];
  601.   y = sArray[2];
  602.   if ( (md1 > 31) || (md1 < 0) || (md2 > 31) || (md2 < 0) || (y < 0) || (y > 99999) )
  603.      return false;
  604.   if ( (md1 > 12) && (md2 > 12))
  605.     return false;
  606.     return true;
  607. }
  608. /*
  609. function checkDate (yearField, monthField, dayField, labelString, OKtoOmitDay)
  610. {
  611.     if (checkDate.arguments.length == 4) OKtoOmitDay = false;
  612.     if (!isYear(yearField.value)) return warnInvalid (yearField, iYear);
  613.     if (!isMonth(monthField.value)) return warnInvalid (monthField, iMonth);
  614.     if ( (OKtoOmitDay == true) && isEmpty(dayField.value) ) return true;
  615.     else if (!isDay(dayField.value))
  616.        return warnInvalid (dayField, iDay);
  617.     if (isDate (yearField.value, monthField.value, dayField.value))
  618.        return true;
  619.     alert (iDatePrefix + labelString + iDateSuffix)
  620.     return false
  621. }
  622. */
  623. function checkCreditCard (theField, emptyOK)
  624. {   if (checkCreditCard.arguments.length == 1) emptyOK = defaultEmptyOK;
  625.     if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  626.     if (!isAnyCard(theField.value))
  627.        return warnInvalid (theField, iCreditCard)
  628.     else return true;
  629. }
  630. function isCreditCard(st) {
  631.   // Encoding only works on cards with less than 19 digits
  632.   if (st.length > 19)
  633.     return (false);
  634.   sum = 0; mul = 1; l = st.length;
  635.   for (i = 0; i < l; i++) {
  636.     digit = st.substring(l-i-1,l-i);
  637.     tproduct = parseInt(digit ,10)*mul;
  638.     if (tproduct >= 10)
  639.       sum += (tproduct % 10) + 1;
  640.     else
  641.       sum += tproduct;
  642.     if (mul == 1)
  643.       mul++;
  644.     else
  645.       mul--;
  646.   }
  647.   if ((sum % 10) == 0)
  648.     return (true);
  649.   else
  650.     return (false);
  651. }
  652. function isVisa(cc)
  653. {
  654.   if (((cc.length == 16) || (cc.length == 13)) &&
  655.       (cc.substring(0,1) == 4))
  656.     return isCreditCard(cc);
  657.   return false;
  658. }
  659. function isMasterCard(cc)
  660. {
  661.   firstdig = cc.substring(0,1);
  662.   seconddig = cc.substring(1,2);
  663.   if ((cc.length == 16) && (firstdig == 5) &&
  664.       ((seconddig >= 1) && (seconddig <= 5)))
  665.     return isCreditCard(cc);
  666.   return false;
  667. }
  668. function isAmericanExpress(cc)
  669. {
  670.   firstdig = cc.substring(0,1);
  671.   seconddig = cc.substring(1,2);
  672.   if ((cc.length == 15) && (firstdig == 3) &&
  673.       ((seconddig == 4) || (seconddig == 7)))
  674.     return isCreditCard(cc);
  675.   return false;
  676. }
  677. function isDinersClub(cc)
  678. {
  679.   firstdig = cc.substring(0,1);
  680.   seconddig = cc.substring(1,2);
  681.   if ((cc.length == 14) && (firstdig == 3) &&
  682.       ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
  683.     return isCreditCard(cc);
  684.   return false;
  685. }
  686. function isCarteBlanche(cc)
  687. {
  688.   return isDinersClub(cc);
  689. }
  690. function isDiscover(cc)
  691. {
  692.   first4digs = cc.substring(0,4);
  693.   if ((cc.length == 16) && (first4digs == "6011"))
  694.     return isCreditCard(cc);
  695.   return false;
  696. }
  697. function isEnRoute(cc)
  698. {
  699.   first4digs = cc.substring(0,4);
  700.   if ((cc.length == 15) &&
  701.       ((first4digs == "2014") ||
  702.        (first4digs == "2149")))
  703.     return isCreditCard(cc);
  704.   return false;
  705. }
  706. function isJCB(cc)
  707. {
  708.   first4digs = cc.substring(0,4);
  709.   if ((cc.length == 16) &&
  710.       ((first4digs == "3088") ||
  711.        (first4digs == "3096") ||
  712.        (first4digs == "3112") ||
  713.        (first4digs == "3158") ||
  714.        (first4digs == "3337") ||
  715.        (first4digs == "3528")))
  716.     return isCreditCard(cc);
  717.   return false;
  718. }
  719. function isAnyCard(cc)
  720. {
  721.   if (!isCreditCard(cc))
  722.     return false;
  723.   if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&
  724.       !isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {
  725.     return false;
  726.   }
  727.   return true;
  728. }
  729. function isCardMatch (cardType, cardNumber)
  730. {
  731. cardType = cardType.toUpperCase();
  732. var doesMatch = true;
  733. if ((cardType == "VISA") && (!isVisa(cardNumber)))
  734. doesMatch = false;
  735. if ((cardType == "MASTERCARD") && (!isMasterCard(cardNumber)))
  736. doesMatch = false;
  737. if ( ( (cardType == "AMERICANEXPRESS") || (cardType == "AMEX") )
  738.                 && (!isAmericanExpress(cardNumber))) doesMatch = false;
  739. if ((cardType == "DISCOVER") && (!isDiscover(cardNumber)))
  740. doesMatch = false;
  741. if ((cardType == "JCB") && (!isJCB(cardNumber)))
  742. doesMatch = false;
  743. if ((cardType == "DINERS") && (!isDinersClub(cardNumber)))
  744. doesMatch = false;
  745. if ((cardType == "CARTEBLANCHE") && (!isCarteBlanche(cardNumber)))
  746. doesMatch = false;
  747. if ((cardType == "ENROUTE") && (!isEnRoute(cardNumber)))
  748. doesMatch = false;
  749. return doesMatch;
  750. }
  751. function IsCC (st) {
  752.     return isCreditCard(st);
  753. }
  754. function IsVisa (cc)  {
  755.   return isVisa(cc);
  756. }
  757. function IsVISA (cc)  {
  758.   return isVisa(cc);
  759. }
  760. function IsMasterCard (cc)  {
  761.   return isMasterCard(cc);
  762. }
  763. function IsMastercard (cc)  {
  764.   return isMasterCard(cc);
  765. }
  766. function IsMC (cc)  {
  767.   return isMasterCard(cc);
  768. }
  769. function IsAmericanExpress (cc)  {
  770.   return isAmericanExpress(cc);
  771. }
  772. function IsAmEx (cc)  {
  773.   return isAmericanExpress(cc);
  774. }
  775. function IsDinersClub (cc)  {
  776.   return isDinersClub(cc);
  777. }
  778. function IsDC (cc)  {
  779.   return isDinersClub(cc);
  780. }
  781. function IsDiners (cc)  {
  782.   return isDinersClub(cc);
  783. }
  784. function IsCarteBlanche (cc)  {
  785.   return isCarteBlanche(cc);
  786. }
  787. function IsCB (cc)  {
  788.   return isCarteBlanche(cc);
  789. }
  790. function IsDiscover (cc)  {
  791.   return isDiscover(cc);
  792. }
  793. function IsEnRoute (cc)  {
  794.   return isEnRoute(cc);
  795. }
  796. function IsenRoute (cc)  {
  797.   return isEnRoute(cc);
  798. }
  799. function IsJCB (cc)  {
  800.   return isJCB(cc);
  801. }
  802. function IsAnyCard(cc)  {
  803.   return isAnyCard(cc);
  804. }
  805. function IsCardMatch (cardType, cardNumber)  {
  806.   return isCardMatch (cardType, cardNumber);
  807. }
  808. // For NAB
  809. function checkFields(theForm) {
  810.   clientOK = false;
  811.   returnValue = true;
  812.   if ( (navigator.appName.indexOf("Microsoft")!=-1) && (navigator.appVersion.indexOf("4.")!=-1) ) {
  813.     undef = void 0;
  814.     clientOK = true;
  815.   } else if ( (navigator.appName.indexOf("Netscape")!=-1) && ( (navigator.appVersion.indexOf("4.")!=-1) || (navigator.appVersion.indexOf("3.")!=-1) )) {
  816.     undef = "undefined";
  817.     clientOK = true;
  818.   }
  819.   if (clientOK) {
  820.     for (i=0; i<theForm.elements.length; i++) {
  821.       e = theForm.elements[i]
  822.       if ( ((e.type=="text") || (e.type=="textarea") || (e.type=="password")) && e.required && (e.value=="")) {
  823.         returnValue = false
  824.         break;
  825.       }
  826.     }
  827.     if (!returnValue) {
  828.       alert("Form not submitted - please enter a value for this field")
  829.       e.focus()
  830.     } else {
  831.       for (i=0; i<theForm.elements.length; i++) {
  832.      e = theForm.elements[i]
  833.      if ( (e.type=="text") || (e.type=="textarea") || (e.type=="password")) {
  834.           if ( undef != e.onchange ) {
  835.     returnValue = e.onchange();
  836.     if (!returnValue)
  837.               break;
  838.   }
  839.         }
  840.       }
  841.     }
  842.   }
  843.   return returnValue;  
  844. }
  845. function isChecked(checkbox_name)
  846.   {
  847.       var items=checkbox_name.length;
  848.       if(items>1){
  849.          for(i=0;i<items;i++)
  850.            {
  851.            if(checkbox_name[i].checked==true) return true;
  852.            }
  853.          }       
  854.       else 
  855.          if(checkbox_name.checked==true) return true;      
  856.       return false;
  857.   }
  858.   
  859.  function isCheckedOne(checkbox_name)
  860.      {
  861.       var items=checkbox_name.length;
  862.       var count=0;
  863.       if(items>1){
  864.          for(i=0;i<items;i++)
  865.            {
  866.            if(checkbox_name[i].checked==true) count++;
  867.            }
  868.          if(count==1) return true;
  869.          else 
  870.            return false;          
  871.        }       
  872.       else 
  873.         {
  874.          if(checkbox_name.checked==true) return true;
  875.          else          
  876.            return false;          
  877.         }            
  878.      } 
  879.  function checkAll(checkbox_names,checkbox_select)
  880.      {      
  881.       var items=checkbox_names.length;
  882.       if(items>1)
  883.        {
  884.         for(i=0;i<items;i++) checkbox_names[i].checked=checkbox_select.checked;      
  885.        }
  886.       else
  887.        checkbox_names.checked=checkbox_select.checked;
  888.      }   
  889.  
  890.      
  891.  function isVNEXDate(s) // check the date like '1999-10-8'
  892.  {
  893.    sArray = s.split("-")
  894.    if (sArray.length != 3)
  895.     return false;
  896.    year = sArray[0];
  897.    month = sArray[1];
  898.    day = sArray[2];
  899.    return isDate(year,month,day);
  900.  }
  901.  
  902. // selected all the things in select list. don't delete it!!!!
  903.  function selectAll( selObj )
  904.  {
  905.      for ( var i = 0; i < selObj.options.length; i++ )
  906.      selObj.options[i].selected = true;
  907.  }