home *** CD-ROM | disk | FTP | other *** search
/ Your Business Pak / BusinessPak2.iso / Netscape / CD / as.z / asw.jar / billing.js < prev    next >
Text File  |  1998-10-15  |  10KB  |  320 lines

  1. /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  *
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18. <!--  to hide script contents from old browsers
  19.  
  20.  
  21.  
  22. function go(msg)
  23. {
  24.     if (parent.parent.globals.document.vars.editMode.value == "yes")
  25.         return true;
  26.     else
  27.         return(checkData());
  28. }
  29.  
  30.  
  31.  
  32. function generateCards()
  33. {
  34.     var theFile = parent.parent.globals.getAcctSetupFilename(self);
  35.     var theCards = parent.parent.globals.GetNameValuePair(theFile,"New Acct Mode","CardTypes");
  36.     if (theCards == null || theCards == "")    {
  37.         theCards = "AX,DC,MC,VI";
  38.         }
  39.  
  40.     if (theCards.indexOf("AX")>=0)    {
  41.         document.writeln("<OPTION VALUE='American Express'>American Express");
  42.         }
  43.     if (theCards.indexOf("DC")>=0)    {
  44.         document.writeln("<OPTION VALUE='Discover Card'>Discover Card");
  45.         }
  46.     if (theCards.indexOf("MC")>=0)    {
  47.         document.writeln("<OPTION VALUE='MasterCard'>MasterCard");
  48.         }
  49.     if (theCards.indexOf("VI")>=0)    {
  50.         document.writeln("<OPTION VALUE='VISA'>VISA");
  51.         }
  52. }
  53.  
  54.  
  55.  
  56. function loadData()
  57. {
  58.     // make sure all data objects/element exists and valid; otherwise, reload.  SUCKS!
  59.     if (((document.forms[0].cardname == "undefined") || (document.forms[0].cardname == "[object InputArray]")) ||
  60.         ((document.forms[0].cards == "undefined") || (document.forms[0].cards == "[object InputArray]")) ||
  61.         ((document.forms[0].cardnumber == "undefined") || (document.forms[0].cardnumber == "[object InputArray]")) ||
  62.         ((document.forms[0].month == "undefined") || (document.forms[0].month == "[object InputArray]")) ||
  63.         ((document.forms[0].year == "undefined") || (document.forms[0].year == "[object InputArray]")))
  64.     {
  65.         parent.controls.reloadDocument();
  66.         return;
  67.     }
  68.  
  69.     document.forms[0].cardname.value = parent.parent.globals.document.vars.cardname.value;
  70.     if (document.forms[0].cardname.value == "")    {
  71.         document.forms[0].cardname.value = parent.parent.globals.document.vars.first.value + " " + parent.parent.globals.document.vars.last.value;
  72.         }
  73.     for (var i = 0; i<document.forms[0].cards.length; i++)    {
  74.         if (parent.parent.globals.document.vars.cardtype.value == document.forms[0].cards[i].value)    {
  75.             document.forms[0].cards.selectedIndex = i;
  76.             break;
  77.             }
  78.         }
  79.     document.forms[0].cardnumber.value = parent.parent.globals.document.vars.cardnumber.value;
  80.     
  81.     var month = parent.parent.globals.document.vars.month.value;
  82.     if (month == "")    month = 0;
  83.     document.forms[0].month.selectedIndex = month;
  84.     
  85.     var found = false;
  86.     var year = parent.parent.globals.document.vars.year.value;
  87.     // if (year == "")    year = document.forms[0].year[0].value;
  88.     for (var i = 0; i<document.forms[0].year.length; i++)    {
  89.         if (year == document.forms[0].year[i].value)    {
  90.             document.forms[0].year.selectedIndex = i;
  91.             found = true;
  92.             break;
  93.             }
  94.         }
  95.     if (found == false)    {
  96.         document.forms[0].year.selectedIndex = 0;
  97.         }
  98.     parent.parent.globals.setFocus(document.forms[0].cardname);
  99.     if (parent.controls.generateControls)    parent.controls.generateControls();
  100. }
  101.  
  102.  
  103.  
  104. function saveData()
  105. {
  106.     // make sure all form element are valid objects, otherwise just skip & return!
  107.     if (((document.forms[0].cardname == "undefined") || (document.forms[0].cardname == "[object InputArray]")) ||
  108.         ((document.forms[0].cards == "undefined") || (document.forms[0].cards == "[object InputArray]")) ||
  109.         ((document.forms[0].cardnumber == "undefined") || (document.forms[0].cardnumber == "[object InputArray]")) ||
  110.         ((document.forms[0].month == "undefined") || (document.forms[0].month == "[object InputArray]")) ||
  111.         ((document.forms[0].year == "undefined") || (document.forms[0].year == "[object InputArray]")))
  112.     {
  113.         parent.controls.reloadDocument();
  114.         return;
  115.     }
  116.  
  117.     parent.parent.globals.document.vars.cardname.value = document.forms[0].cardname.value;
  118.     if (document.forms[0].cards.length>0 && document.forms[0].cards.selectedIndex >=0)    {
  119.         parent.parent.globals.document.vars.cardtype.value = document.forms[0].cards[document.forms[0].cards.selectedIndex].value;
  120.         }
  121.     else    {
  122.         parent.parent.globals.document.vars.cardtype.value="";
  123.         }
  124.     parent.parent.globals.document.vars.cardnumber.value = document.forms[0].cardnumber.value;
  125.     parent.parent.globals.document.vars.month.value = document.forms[0].month.selectedIndex;
  126.     parent.parent.globals.document.vars.year.value = document.forms[0].year[document.forms[0].year.selectedIndex].value;
  127. }
  128.  
  129.  
  130.  
  131. function checkData()
  132. {
  133.     if (document.forms[0].cardname.value == "")    {
  134.         alert("You must enter a cardholder name.");
  135.         document.forms[0].cardname.focus();
  136.         document.forms[0].cardname.select();
  137.         return false;
  138.         }
  139.     if (document.forms[0].cardnumber.value == "")    {
  140.         alert("You must enter a credit card number.");
  141.         document.forms[0].cardnumber.focus();
  142.         document.forms[0].cardnumber.select();
  143.         return false;
  144.         }
  145.     
  146.     // check cardnumber validity here
  147.     
  148.     var cardNumber=document.forms[0].cardnumber.value;
  149.     for (var i=0; i<cardNumber.length; i++)    {
  150.         if ("1234567890 -".indexOf(cardNumber.substring(i,i+1)) == -1)    {
  151.             alert("'" + cardNumber + "' is not a valid card number.");
  152.             document.forms[0].cardnumber.focus();
  153.             document.forms[0].cardnumber.select();
  154.             return(false);
  155.             }
  156.         }
  157.     
  158.     // do cardnumber check-digit validity here
  159.     
  160.     var length=cardNumber.length;
  161.     var checkDigit=cardNumber.substring(length-1,length);
  162.     var    tempCardNumber="";
  163.     for (var i=0; i<cardNumber.length; i++)    {
  164.         if ("1234567890".indexOf(cardNumber.substring(i,i+1))>=0)    {
  165.             tempCardNumber+=cardNumber.substring(i,i+1);
  166.             }
  167.         }
  168.     var length=tempCardNumber.length;
  169.     var checkSum=0;
  170.     for (var i=0; i<length-1; i++)    {
  171.         var digit=tempCardNumber.substring(length-i-2,length-i-1);
  172.         var temp=digit * (1+((i+1)%2));
  173.         if (temp<10)    checkSum=checkSum+temp;
  174.         else            checkSum=checkSum+(temp-9);
  175.         }
  176.     checkSum=(10-(checkSum%10))%10;
  177.     if (checkSum != checkDigit)    {
  178.         alert("'" + cardNumber + "' is not a valid card number.");
  179.         document.forms[0].cardnumber.focus();
  180.         document.forms[0].cardnumber.select();
  181.         return(false);
  182.         }
  183.     
  184.     // do cardtype check
  185.     
  186.     var cardType="";
  187.     
  188.     if (cardNumber.substring(0,1)=="3" && cardNumber.substring(1,2)=="7")    {
  189.         cardType="American Express";
  190.         cardCode="AX";
  191.         }
  192. /*
  193.     else if (cardNumber.substring(0,1)=="5" && cardNumber.substring(1,2)=="6")    {
  194.         cardType="BankCard";
  195.         cardCode="BC";
  196.         }
  197. */
  198.  
  199. /*
  200.     else if (cardNumber.substring(0,1)=="3")    {
  201.         cardType="Diner's Club";
  202.         cardCode="DI";
  203.         }
  204. */
  205.     else if (cardNumber.substring(0,1)=="5")    {
  206.         cardType="MasterCard";
  207.         cardCode="MC";
  208.         }
  209.     else if (cardNumber.substring(0,1)=="4")    {
  210.         cardType="VISA";
  211.         cardCode="VI";
  212.         }
  213.     else if (cardNumber.substring(0,1)=="6")    {
  214.         cardType="Discover Card";
  215.         cardCode="DC";
  216.         }
  217. // else cardType="unknown";
  218.     
  219.     parent.parent.globals.document.vars.cardcode.value = cardCode;
  220.  
  221.     if (document.forms[0].cards.length>0)    {
  222.         if (cardType != document.forms[0].cards[document.forms[0].cards.selectedIndex].value)    {
  223.             var found=false;
  224.             var currentSelection = document.forms[0].cards.selectedIndex;
  225.             if (cardType!="")    {
  226.                 if (!confirm(cardNumber + " is a " + cardType + ". Correct?"))    {
  227.                     document.forms[0].cardnumber.focus();
  228.                     document.forms[0].cardnumber.select();
  229.                     return(false);
  230.                     }
  231.                 for (var i = 0; i < document.forms[0].cards.length; i++)    {
  232.                     if (document.forms[0].cards[i].value==cardType)    {
  233.                         document.forms[0].cards[i].selected=true;
  234.                         parent.parent.globals.document.vars.cardtype.value=cardType;
  235.                         found=true;
  236.                         }
  237.                     else    {
  238.                         document.forms[0].cards[i].selected=false;
  239.                         }
  240.                     }
  241.                 if (found == false && currentSelection>=0)    {
  242.                     document.forms[0].cards[currentSelection].selected=true;
  243.                     }
  244.                 }
  245.     
  246.             if (found==false)    {
  247.     
  248.                 // is the card accepted?
  249.                 
  250.                 var theFile = parent.parent.globals.getAcctSetupFilename(self);
  251.                 var theCards = parent.parent.globals.GetNameValuePair(theFile,"New Acct Mode","CardTypes");
  252.                 if (theCards == null || theCards == "")    {
  253.                     theCards = "AX,DC,MC,VI";
  254.                     }
  255.     
  256.                 if (theCards.indexOf(cardCode)<0)    {
  257.                     alert(cardType + " is not accepted for payment.");
  258.                     }
  259.                 else    {
  260.                     alert("'" + cardNumber + "' is not a valid card number.");
  261.                     }
  262.                 document.forms[0].cardnumber.focus();
  263.                 document.forms[0].cardnumber.select();
  264.                 return(false);
  265.                 }
  266.             }
  267.  
  268.         // check credit card lengths
  269.  
  270.         var length=tempCardNumber.length;
  271.         var validLength = false;
  272.         if (cardCode != "")    {
  273.             if (cardCode == "AX")    {
  274.                 if (length == 16)    validLength=true;
  275.                 }
  276.             else if (cardCode == "MC")    {
  277.                 if (length == 16)    validLength=true;
  278.                 }
  279.             else if (cardCode == "VI")    {
  280.                 if (length == 13 || length == 16)    validLength=true;
  281.                 }
  282.             else if (cardCode == "DC")    {
  283.                 if (length == 16)    validLength=true;
  284.                 }
  285.             }
  286.         if (validLength == false)    {
  287.             alert("'" + cardNumber + "' is not a valid card number. (Invalid length)");
  288.             document.forms[0].cardnumber.focus();
  289.             document.forms[0].cardnumber.select();
  290.             return(false);
  291.             }
  292.         }
  293.  
  294.     // check month and year
  295.  
  296.     var today = new Date();
  297.     var theMonth = today.getMonth();
  298.     var theYear = today.getYear()+1900;
  299.  
  300.     var expiredFlag = false;
  301.     if (theYear > document.forms[0].year[document.forms[0].year.selectedIndex].value)    {
  302.         expiredFlag = true;
  303.         }
  304.     else if (theYear == document.forms[0].year[document.forms[0].year.selectedIndex].value)    {
  305.         if (theMonth > document.forms[0].month.selectedIndex)    {
  306.             expiredFlag = true;
  307.             }
  308.         }
  309.     if (expiredFlag)    {
  310.         alert("'" + cardNumber + "' appears to have expired.");
  311.         return(false);
  312.         }
  313.  
  314.     return true;
  315. }
  316.  
  317.  
  318.  
  319. // end hiding contents from old browsers  -->
  320.