<!--//=====================================================================||//               NOP Design JavaScript Shopping Cart                   ||//                                                                     ||// For more information on SmartSystems, or how NOPDesign can help you ||// Please visit us on the WWW at http://www.nopdesign.com              ||//                                                                     ||// Javascript portions of this shopping cart software are available as ||// freeware from NOP Design under the GPL.  You must keep this comment ||// unchanged in your code.  For more information contact               ||// Scott@NopDesign.com                                                 ||//                                                                     ||// JavaScript Shop Module, V.3.0.2                                     ||//=====================================================================||//---------------------------------------------------------------------||// FUNCTION:    checkForm                                              ||// PARAMETERS:  Form object, and true/false if we should check for     ||//              a credit card number. You shouldn't accept credit cards||//              via email.  Only use that when you are connected to a  ||//              secure server.                                         ||// RETURNS:     boolean (True form is correct, False form is in error) ||// PURPOSE:     To check form elements                                 ||//---------------------------------------------------------------------||function checkForm(thisForm, checkForCreditCard)  {        bFormError = false;   //Boolean variable to store form state        bIsValidCard = false; //Boolean variable to store CC state        strErrorList = "";    //String list of missing/errorsum fields        if( thisForm.FIRST.value==''  ) {bFormError = true;  strErrorList += "First Name, ";}        if( thisForm.LAST.value==''   ) {bFormError = true;  strErrorList += "Last Name, ";}        if( thisForm.ADDRESS.value=='') {bFormError = true;  strErrorList += "Address, ";}        if( thisForm.CITY.value==''   ) {bFormError = true;  strErrorList += "City, ";}        if( thisForm.STATE.value==''  ) {bFormError = true;  strErrorList += "State, ";}        if( thisForm.ZIP.value==''    ) {bFormError = true;  strErrorList += "Zip, ";}        if( thisForm.PHONE.value==''  ) {bFormError = true;  strErrorList += "Phone, ";}        if( thisForm.ACCOUNT.value=='') {bFormError = true;  strErrorList += "Credit Card Number, ";}        if( thisForm.MONTH.value==''  ) {bFormError = true;  strErrorList += "Month, ";}        if( thisForm.YEAR.value==''   ) {bFormError = true;  strErrorList += "Year ";}        if( bFormError == true ) {                alert("I'm sorry, but you had one or more missing or invalid entries.\n"                     +"Please check the following fields: \n\n"                     +strErrorList                     +"\n\n");                return false;        }                //Check for valid Visa                if (((thisForm.ACCOUNT.value.length == 16) || (thisForm.ACCOUNT.value.length == 13)) &&                (thisForm.ACCOUNT.value.substring(0,1) == 4))                                bIsValidCard = true;                //Check for valid MasterCard                firstdig = thisForm.ACCOUNT.value.substring(0,1);                seconddig = thisForm.ACCOUNT.value.substring(1,2);                if ((thisForm.ACCOUNT.value.length == 16) &&                    (firstdig == 5) && ((seconddig >= 1) &&                        (seconddig <= 5))                   )                        bIsValidCard = true;                if (bIsValidCard == false){                        alert("I'm sorry, but you need to enter a valid credit card number.\n");                        return false;                }        return needComments();} //END function checkForm//---------------------------------------------------------------------||// FUNCTION:    CKquantity                                             ||// PARAMETERS:  Quantity to                                            ||// RETURNS:     Quantity as a number, and possible alert               ||// PURPOSE:     Make sure quantity is represented as a number          ||//---------------------------------------------------------------------||function CKquantity(checkString) {        strNewQuantity = "";    // String Adjusted Item Quantity        count     = 0;          // Generic Loop Counter        for (i = 0; i < checkString.length; i++) {                ch = checkString.substring(i, i+1);                if ((ch >= "0" && ch <= "9") || (ch == '.')) {                        strNewQuantity += ch;                }        }        if (strNewQuantity.length < 1)                strNewQuantity = "1";        return strNewQuantity;}//---------------------------------------------------------------------||// FUNCTION:    AddToCart                                              ||// PARAMETERS:  Form Object                                            ||// RETURNS:     Cookie to user's browser, with prompt                  ||// PURPOSE:     Adds a product to the user's shopping cart             ||//---------------------------------------------------------------------||function AddToCart(thisForm) {        iNumberOrdered = 0;  //Integer number of products already ordered        iNumberOrdered = GetCookie("NumberOrdered");        iNumberOrdered++;        if ( iNumberOrdered > 50 )                alert("I'm Sorry, your cart is full, please proceed to checkout.");        else {                dbUpdatedOrder = thisForm.QUANTITY.value + "|"                                 + thisForm.PRICE.value  + "|"                                 + thisForm.ID_NUM.value + "|"                                 + thisForm.NAME.value;                NewOrder = "Order." + iNumberOrdered;                SetCookie (NewOrder, dbUpdatedOrder, null, "/");                SetCookie ("NumberOrdered", iNumberOrdered, null, "/");                notice = thisForm.QUANTITY.value + " "                         + thisForm.NAME.value                         + " added to your shopping cart.";                alert(notice);        }}//---------------------------------------------------------------------||// FUNCTION:    getCookieVal                                           ||// PARAMETERS:  offset                                                 ||// RETURNS:     URL unescaped Cookie Value                             ||// PURPOSE:     Get a specific value from a cookie                     ||//---------------------------------------------------------------------||function getCookieVal (offset) {        var endstr = document.cookie.indexOf (";", offset);        if (endstr == -1)                endstr = document.cookie.length;        return unescape(document.cookie.substring(offset, endstr));}//---------------------------------------------------------------------||// FUNCTION:    FixCookieDate                                          ||// PARAMETERS:  date                                                   ||// RETURNS:     date                                                   ||// PURPOSE:     Fixes cookie date, stores back in date                 ||//---------------------------------------------------------------------||function FixCookieDate (date) {        var base = new Date(0);        var skew = base.getTime();        date.setTime (date.getTime() - skew);}//---------------------------------------------------------------------||// FUNCTION:    GetCookie                                              ||// PARAMETERS:  Name                                                   ||// RETURNS:     Value in Cookie                                        ||// PURPOSE:     Retrieves cookie from users browser                    ||//---------------------------------------------------------------------||function GetCookie (name) {        var arg = name + "=";        var alen = arg.length;        var clen = document.cookie.length;        var i = 0;        while (i < clen)                {                var j = i + alen;                if (document.cookie.substring(i, j) == arg) return getCookieVal (j);                i = document.cookie.indexOf(" ", i) + 1;                if (i == 0) break;                }        return null;}//---------------------------------------------------------------------||// FUNCTION:    SetCookie                                              ||// PARAMETERS:  name, value, expiration date, path, domain, security   ||// RETURNS:     Null                                                   ||// PURPOSE:     Stores a cookie in the users browser                   ||//---------------------------------------------------------------------||function SetCookie (name,value,expires,path,domain,secure) {        document.cookie = name + "=" + escape (value) +                        ((expires) ? "; expires=" + expires.toGMTString() : "") +                        ((path) ? "; path=" + path : "") +                        ((domain) ? "; domain=" + domain : "") +                        ((secure) ? "; secure" : "");}//---------------------------------------------------------------------||// FUNCTION:    DeleteCookie                                           ||// PARAMETERS:  Cookie name, path, domain                              ||// RETURNS:     null                                                   ||// PURPOSE:     Removes a cookie from users browser.                   ||//---------------------------------------------------------------------||function DeleteCookie (name,path,domain) {        if (GetCookie(name)) {                document.cookie = name + "=" +                                ((path) ? "; path=" + path : "") +                                ((domain) ? "; domain=" + domain : "") +                                "; expires=Thu, 01-Jan-70 00:00:01 GMT";        }}//---------------------------------------------------------------------||// FUNCTION:    MoneyFormat                                            ||// PARAMETERS:  Number to be formatted                                 ||// RETURNS:     Formatted Number                                       ||// PURPOSE:     Reformats Dollar Amount to #.## format                 ||//---------------------------------------------------------------------||function moneyFormat(input) {        var dollars = Math.floor(input)        var tmp = new String(input)        for (var decimalAt = 0; decimalAt < tmp.length; decimalAt++) {                if (tmp.charAt(decimalAt)==".")                        break;        }        var cents  = "" + Math.round(input * 100)        cents = cents.substring(cents.length-2, cents.length)        dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0;        return dollars + "." + cents}//---------------------------------------------------------------------||// FUNCTION:    RemoveFromCart                                         ||// PARAMETERS:  Order Number to Remove                                 ||// RETURNS:     Null                                                   ||// PURPOSE:     Removes an item from a users shopping cart             ||//---------------------------------------------------------------------||function RemoveFromCart(RemOrder) {        if (confirm("Click 'Ok' to remove this product from your shopping cart.")) {                NumberOrdered = GetCookie("NumberOrdered");                for(i=RemOrder; i <  NumberOrdered; i++) {                        NewOrder1 = "Order." + (i+1);                        NewOrder2 = "Order." + (i);                        database = GetCookie(NewOrder1);                        SetCookie (NewOrder2, database, null, "/");                }                NewOrder = "Order." + NumberOrdered;                SetCookie ("NumberOrdered", NumberOrdered-1, null, "/");                DeleteCookie(NewOrder, "/");                location.href=location.href;        }}//---------------------------------------------------------------------||// FUNCTION:    GetFromCart                                            ||// PARAMETERS:  Null                                                   ||// RETURNS:     Product Table Written to Document                      ||// PURPOSE:     Draws current cart product table on HTML page          ||//---------------------------------------------------------------------||function GetFromCart() {        NumberOrdered = 0;        Total=0;        TOTotal=0;        TOquantity = " ";        TOprice = " ";        TOid_num = " ";        TOname = " ";        NumberOrdered = GetCookie("NumberOrdered");        whattowrite = "";        for (i = 1; i <= NumberOrdered; i++) {                NewOrder = "Order." + i;                database = "";                database = GetCookie(NewOrder);                Token0 = database.indexOf("|", 0);                Token1 = database.indexOf("|", Token0+1);                Token2 = database.indexOf("|", Token1+1);                fields = new Array;                fields[0] = database.substring( 0, Token0 );                fields[1] = database.substring( Token0+1, Token1 );                fields[2] = database.substring( Token1+1, Token2 );                fields[3] = database.substring( Token2+1, database.length );                Total = Total + (fields[1] * fields[0]);                TOTotal = moneyFormat(Total);                whattowrite += "<tr><td><font face=verdana color=ffffff size=-2>" + fields[2] + "</font></td><td><font face=verdana color=ffffff size=-2>"                                + fields[3] + "</font></td><td><font face=verdana color=ffffff size=-2>£" + fields[1]                                + "</font></td><td><input type=text size=2 name=\"QUANTITY_"+ i +"\" value=\""                                + fields[0] + "\"></td>"                                + "<td><input type=button value=\"  Remove  \" onClick=\"RemoveFromCart("+i+")\"></td>"                                + "<input type=hidden font face=verdana color=ffffff size=-2 name=\"ID_"+ i +"\" value=\"" + fields[2] + "\">"                                + "<input type=hidden font face=verdana color=ffffff size=-2 name=\"NAME_"+ i +"\" value=\"" + fields[3] + "\">"                                + "<input type=hidden font face=verdana color=ffffff size=-2 name=\"PRICE_"+ i +"\" value=\"" + fields[1] + "\">";        }        document.write(whattowrite);        document.write("</td></tr><tr><td colspan=2><font face=verdana color=ffffff size=-2><b>SUBTOTAL</b></font></td><td><font face=verdana color=ff9900 size=2><b>£");        document.write(TOTotal);        document.write("</b></font></td><td></td>");}//---------------------------------------------------------------------||// FUNCTION:    WriteToForm                                            ||// PARAMETERS:  Null                                                   ||// RETURNS:     Product hidden fields Written to Document              ||// PURPOSE:     Draws current cart product hidden fields on HTML form  ||//---------------------------------------------------------------------||function WriteToForm() {        NumberOrdered = 0;        Total=0;        TOTotal=0;        TOquantity = " ";        TOprice = " ";        TOid_num = " ";        TOname = " ";        NumberOrdered = GetCookie("NumberOrdered");        whattowrite = "";        for (i = 1; i <= NumberOrdered; i++) {                NewOrder = "Order." + i;                database = "";                database = GetCookie(NewOrder);                Token0 = database.indexOf("|", 0);                Token1 = database.indexOf("|", Token0+1);                Token2 = database.indexOf("|", Token1+1);                fields = new Array;                fields[0] = database.substring( 0, Token0 );                fields[1] = database.substring( Token0+1, Token1 );                fields[2] = database.substring( Token1+1, Token2 );                fields[3] = database.substring( Token2+1, database.length );                Total = Total + (fields[1] * fields[0]);                TOTotal = moneyFormat(Total);                document.write("<input type=hidden font face=verdana color=ffffff size=-2 name=\"ID_"+ i +"\" value=\"" + fields[2] + "\">");                document.write("<input type=hidden font face=verdana color=ffffff size=-2 name=\"NAME_"+ i +"\" value=\"" + fields[3] + "\">");                document.write("<input type=hidden font face=verdana color=ffffff size=-2 name=\"PRICE_"+ i +"\" value=\"" + fields[1] + "\">");                document.write("<input type=hidden name=\"QUANTITY_"+ i +"\" value=\"" + fields[0] + "\">");        }}//=====================================================================||//               END NOP Design SmartPost Shopping Cart                ||//                              V.3.0.1                                ||//=====================================================================||function MM_goToURL() { //v3.0  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");}//-->
