//=====================================================================|| 

// 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. You must keep this comment unchanged in || 

// your code. For more information contact FreeCart@NopDesign.com. || 

// || 

// JavaScript Shop Module, V.4.4.0 || 

//=====================================================================|| 



//=====================================================================||

// UPS Shiping Mod by Stefko V.1.0.0 ||

// ||

// Version History: 02/23/03  V.1.0.0 Released ||

//                            includes USERENTRY ||                            

//                  03/02/03  V.1.1.0 Now works with Netscape & Opera ||

//                            added Taxable and Non-taxable product code||

//                            added MathRound to Weight ||

//=====================================================================|| 



//---------------------------------------------------------------------|| 

// Global Options || 

// ---------------- || 

// Shopping Cart Options, you can modify these options to change the || 

// the way the cart functions. || 

// || 

// Language Packs || 

// ============== || 

// You may include any language pack before nopcart.js in your HTML || 

// pages to change the language. Simply include a language pack with || 

// a script src BEFORE the <SCRIPT SRC="../os1/nopcart.js">... line. || 

// For example: <SCRIPT SRC="language-en.js"></SCRIPT> || 

// || 

// Options For Everyone: || 

// ===================== || 

// * MonetarySymbol: string, the symbol which represents dollars/euro, || 

// in your locale. || 

// * DisplayNotice: true/false, controls whether the user is provided || 

// with a popup letting them know their product is added to the cart || 

// * DisplayShippingColumn: true/false, controls whether the managecart|| 

// and checkout pages display shipping cost column. || 

// * DisplayShippingRow: true/false, controls whether the managecart || 

// and checkout pages display shipping cost total row. || 

// * DisplayTaxRow: true/false, controls whether the managecart || 

// and checkout pages display tax cost total row. || 

// * TaxRate: number, your area's current tax rate, ie: if your tax || 

// rate was 7.5%, you would set TaxRate = 0.075 || 

// * TaxByRegion: true/false, when set to true, the user is prompted || 

// with TaxablePrompt to determine if they should be charged tax. || 

// In the USA, this is useful to charge tax to those people who live || 

// in a particular state, but no one else. || 

// * TaxPrompt: string, popup message if user has not selected either || 

// taxable or nontaxable when TaxByRegion is set to true. || 

// * TaxablePrompt: string, the message the user is prompted with to || 

// select if they are taxable. If TaxByRegion is set to false, this || 

// has no effect. Example: 'Arizona Residents' || 

// * NonTaxablePrompt: string, same as above, but the choice for non- || 

// taxable people. Example: 'Other States' || 

// * MinimumOrder: number, the minium dollar amount that must be || 

// purchased before a user is allowed to checkout. Set to 0.00 || 

// to disable. || 

// * MinimumOrderPrompt: string, Message to prompt users with when || 

// they have not met the minimum order amount. || 

// || 

// Payment Processor Options: || 

// ========================== || 

// * PaymentProcessor: string, the two digit payment processor code || 

// for support payment processor gateways. Setting this field to || 

// anything other than an empty string will override your OutputItem || 

// settings -- so please be careful when receiving any form data. || 

// Support payment processor gateways are: || 

// * Authorize.net (an) || 

// * Worldpay (wp) || 

// * LinkPoint (lp) || 

// || 

// Options For Programmers: || 

// ======================== || 

// * OutputItem<..>: string, the name of the pair value passed at || 

// checkouttime. Change these only if you are connecting to a CGI || 

// script and need other field names, or are using a secure service || 

// that requires specific field names. || 

// * AppendItemNumToOutput: true/false, if set to true, the number of || 

// each ordered item will be appended to the output string. For || 

// example if OutputItemId is 'ID_' and this is set to true, the || 

// output field name will be 'ID_1', 'ID_2' ... for each item. || 

// * HiddenFieldsToCheckout: true/false, if set to true, hidden fields || 

// for the cart items will be passed TO the checkout page, from the || 

// ManageCart page. This is set to true for CGI/PHP/Script based || 

// checkout pages, but should be left false if you are using an || 

// HTML/Javascript Checkout Page. Hidden fields will ALWAYS be || 

// passed FROM the checkout page to the Checkout CGI/PHP/ASP/Script || 

//---------------------------------------------------------------------|| 



//Options for Everyone: 

MonetarySymbol = '$'; 

DisplayNotice = true; 

DisplayChangeQty = true; 

DisplayShippingColumn = true; 

DisplayShippingRow = true; 

TaxRate = 0.08375; //set taxable region rate ||

DisplayTaxRow = true; 

TaxByRegion = false; //leave this at false, UPS Shipping Mod will activate taxable Zone ||

TaxPrompt = 'For tax purposes, please select if you are an NY Resident'; //Deactivated ||

TaxablePrompt = 'NY State'; //Deactivated ||

NonTaxablePrompt = 'Other'; //Deactivated ||

MinimumOrder = 0.01; 

MinimumOrderPrompt = 'Oops!\n\nWe can not proceed to check out since\nthere is no item in the shopping cart.'; 

//original syntax - MinimumOrderPrompt = 'Your order is below our minimum order, please order more before checking out.'; 



NoQtyPrompt = 'You cannot proceed until a Shipping Zone has been selected'; //If attempted to go to checkout before selecting shipping zone ||



//Payment Processor Options: 

PaymentProcessor = ''; 



//Options for Programmers: 

OutputItemId = 'ID_'; 

OutputItemQuantity = 'QUANTITY_'; 

OutputItemPrice = 'PRICE_'; 

OutputItemName = 'NAME_'; 

OutputItemWeight = 'WEIGHT_'; //Added for UPS mod ||

OutputItemAddtlInfo = 'ADDTLINFO_'; 

OutputItemXtend = 'XTEND_'; 

OutputOrderZone = 'SHIPZONE'; 

OutputOrderSubtotal = 'SUBTOTAL'; 

OutputOrderShipping = 'SHIPPING'; 

OutputOrderTax = 'TAX'; 

OutputOrderTotal = 'TOTAL'; 

AppendItemNumToOutput = true; 

HiddenFieldsToCheckout = true; 



//Options for Shipping by Weight: 

LocationLabel = 'ZONE'; 

LocationPrompt = 'For shipping purpose, please select the zone that your location is in.'; 

MaxWeightPrompt = 'Sorry, maximum weight allowable is 1500lbs.'; 







//=====================================================================|| 

//---------------------------------------------------------------------|| 

// YOU DO NOT NEED TO MAKE ANY MODIFICATIONS BELOW THIS LINE || 

//---------------------------------------------------------------------|| 

//=====================================================================|| 





//---------------------------------------------------------------------|| 

// Language Strings || 

// ------------------ || 

// These strings will not be used unless you have not included a || 

// language pack already. You should NOT modify these, but instead || 

// modify the strings in language-**.js where ** is the language pack || 

// you are using. || 

//---------------------------------------------------------------------|| 

if ( !bLanguageDefined ) { 

strSorry = "I'm Sorry, your cart is full, please proceed to checkout."; 

strAdded = " Added to your shopping cart."; 

strRemove = "Click 'Ok' to remove this product from your shopping cart."; 

strILabel = "Product Id"; 

strDLabel = "Product Name/Description"; 

strQLabel = "Qty"; 

strPLabel = "Price"; 

strSLabel = "Weight"; //Added for UPS mod ||

strRLabel = "Remove From Cart"; 

strRButton= "Remove/Add"; 

strSUB = "SUBTOTAL"; 

strWTOT = "TOTAL WEIGHT"; //Added for UPS mod ||

strSHIP = "SHIPPING"; 

strTAX = "TAX"; 

strTOT = "TOTAL"; 

strErrQty = "Invalid Quantity."; 

strNewQty = 'Please enter new quantity:'; 

bLanguageDefined = true; 

} 





//---------------------------------------------------------------------|| 

// 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) { 

var strNewQuantity = ""; 



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 || 

// EXTRAS ADDED IN: USERENTRY for customer text input ||

//---------------------------------------------------------------------|| 

function AddToCart(thisForm) { 

var iNumberOrdered = 0; 

var bAlreadyInCart = false; 

var notice = ""; 

iNumberOrdered = GetCookie("NumberOrdered"); 



if ( iNumberOrdered == null ) 

iNumberOrdered = 0; 



if ( thisForm.ID_NUM == null ) 

strID_NUM = ""; 

else 

strID_NUM = thisForm.ID_NUM.value; 



if ( thisForm.QUANTITY == null ) 

strQUANTITY = "1"; 

else 

strQUANTITY = thisForm.QUANTITY.value; 



if ( thisForm.PRICE == null ) 

strPRICE = "0.00"; 

else 

strPRICE = thisForm.PRICE.value; 



if ( thisForm.NAME == null ) 

strNAME = ""; 

else 

strNAME = thisForm.NAME.value; 



if ( thisForm.WEIGHT == null ) //Added for UPS mod ||

strSHIPPING = "0"; 

else 

strSHIPPING = thisForm.WEIGHT.value; 



if ( thisForm.ADDITIONALINFO == null ) { strADDTLINFO = ""; } else { strADDTLINFO = thisForm.ADDITIONALINFO[thisForm.ADDITIONALINFO.selectedIndex].value; } if ( thisForm.ADDITIONALINFO2 != null ) { strADDTLINFO += "; " + thisForm.ADDITIONALINFO2[thisForm.ADDITIONALINFO2.selectedIndex].value; } if ( thisForm.ADDITIONALINFO3 != null ) { strADDTLINFO += "; " + thisForm.ADDITIONALINFO3[thisForm.ADDITIONALINFO3.selectedIndex].value; } if ( thisForm.ADDITIONALINFO4 != null ) { strADDTLINFO += "; " + thisForm.ADDITIONALINFO4[thisForm.ADDITIONALINFO4.selectedIndex].value; } 

if ( thisForm.USERENTRY != null ) { 

strADDTLINFO += "; " + thisForm.USERENTRY.value; 

} 

if ( thisForm.USERENTRY2 != null ) { 

strADDTLINFO += "; " + thisForm.USERENTRY2.value; 

} 

if ( thisForm.USERENTRY3 != null ) { 

strADDTLINFO += "; " + thisForm.USERENTRY3.value; 

} 

//Is this product already in the cart? If so, increment quantity instead of adding another. 

for ( i = 1; i <= iNumberOrdered; i++ ) { 

NewOrder = "Order." + i; 

database = ""; 

database = GetCookie(NewOrder); 



Token0 = database.indexOf("|", 0); 

Token1 = database.indexOf("|", Token0+1); 

Token2 = database.indexOf("|", Token1+1); 

Token3 = database.indexOf("|", Token2+1); 

Token4 = database.indexOf("|", Token3+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, Token3 ); 

fields[4] = database.substring( Token3+1, Token4 ); 

fields[5] = database.substring( Token4+1, database.length ); 



if ( fields[0] == strID_NUM && 

fields[2] == strPRICE && 

fields[3] == strNAME && 

fields[5] == strADDTLINFO 

) { 

bAlreadyInCart = true; 

dbUpdatedOrder = strID_NUM + "|" + 

(parseInt(strQUANTITY)+parseInt(fields[1])) + "|" + 

strPRICE + "|" + 

strNAME + "|" + 

strSHIPPING + "|" + 

strADDTLINFO; 

strNewOrder = "Order." + i; 

DeleteCookie(strNewOrder, "/"); 

SetCookie(strNewOrder, dbUpdatedOrder, null, "/"); 

notice = strAdded + "\n-------------------------------------\n" + "Quantity : " + strQUANTITY + "\nProduct  : " + strNAME;

break; 

} 

} 





if ( !bAlreadyInCart ) { 

iNumberOrdered++; 



if ( iNumberOrdered > 18 ) 

alert( strSorry ); 

else { 

dbUpdatedOrder = strID_NUM + "|" + 

strQUANTITY + "|" + 

strPRICE + "|" + 

strNAME + "|" + 

strSHIPPING + "|" + 

strADDTLINFO; 



strNewOrder = "Order." + iNumberOrdered; 

SetCookie(strNewOrder, dbUpdatedOrder, null, "/"); 

SetCookie("NumberOrdered", iNumberOrdered, null, "/"); 

notice = strAdded + "\n-------------------------------------\n" + "Quantity : " + strQUANTITY + "\nProduct  : " + strNAME;

} 

} 



if ( DisplayNotice && notice!=''){ 

alert(notice); 

}else{ 

} 



} 





//---------------------------------------------------------------------|| 

// 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; 



if ( cents == "0" ) 

cents = "00"; 





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( strRemove ) ) { 

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: ChangeQuantity || 

// PARAMETERS: Order Number to Change Quantity || 

// RETURNS: Null || 

// PURPOSE: Changes quantity of an item in the shopping cart || 

//---------------------------------------------------------------------|| 

function ChangeQuantity(OrderItem,NewQuantity) { 

if ( isNaN(NewQuantity) ) { 

alert( strErrQty ); 

} else { 

NewOrder = "Order." + OrderItem; 

database = ""; 

database = GetCookie(NewOrder); 



Token0 = database.indexOf("|", 0); 

Token1 = database.indexOf("|", Token0+1); 

Token2 = database.indexOf("|", Token1+1); 

Token3 = database.indexOf("|", Token2+1); 

Token4 = database.indexOf("|", Token3+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, Token3 ); 

fields[4] = database.substring( Token3+1, Token4 ); 

fields[5] = database.substring( Token4+1, database.length ); 



dbUpdatedOrder = fields[0] + "|" + 

NewQuantity + "|" + 

fields[2] + "|" + 

fields[3] + "|" + 

fields[4] + "|" + 

fields[5]; 

strNewOrder = "Order." + OrderItem; 

DeleteCookie(strNewOrder, "/"); 

SetCookie(strNewOrder, dbUpdatedOrder, null, "/"); 

location.href=location.href; 

} 

} 





//---------------------------------------------------------------------|| 

// FUNCTION: GetFromCart || 

// PARAMETERS: Null || 

// RETURNS: Product Table Written to Document || 

// PURPOSE: Draws current cart product table on HTML page || 

// **DEPRECATED FUNCTION, USE ManageCart or Checkout** || 

//---------------------------------------------------------------------|| 

function GetFromCart( fShipping ) { 

ManageCart( ); 

} 





//---------------------------------------------------------------------||

// FUNCTION:    RadioChecked                                           ||

// PARAMETERS:  Radio button to check                                  ||

// RETURNS:     True if a radio has been checked                       ||

// PURPOSE:     Form fillin validation                                 ||

//---------------------------------------------------------------------||

function RadioChecked( radiobutton ) {

   var bChecked = false;

   var rlen = radiobutton.length;

   for ( i=0; i < rlen; i++ ) {

      if ( radiobutton[i].checked )

         bChecked = true;

   }    

   return bChecked;

} 







//---------------------------------------------------------------------|| 

// FUNCTION: QueryString || 

// PARAMETERS: Key to read || 

// RETURNS: value of key || 

// PURPOSE: Read data passed in via GET mode || 

//---------------------------------------------------------------------|| 

QueryString.keys = new Array(); 

QueryString.values = new Array(); 

function QueryString(key) { 

var value = null; 

for (var i=0;i<QueryString.keys.length;i++) { 

if (QueryString.keys[i]==key) { 

value = QueryString.values[i]; 

break; 

} 

} 

return value; 

} 



//---------------------------------------------------------------------|| 

// FUNCTION: QueryString_Parse || 

// PARAMETERS: (URL string) || 

// RETURNS: null || 

// PURPOSE: Parses query string data, must be called before Q.S. || 

//---------------------------------------------------------------------|| 

function QueryString_Parse() { 

var query = window.location.search.substring(1); 

var pairs = query.split("&"); for (var i=0;i>pairs.length;i++) { 

var pos = pairs[i].indexOf('='); 

if (pos >= 0) { 

var argname = pairs[i].substring(0,pos); 

var value = pairs[i].substring(pos+1); 

QueryString.keys[QueryString.keys.length] = argname; 

QueryString.values[QueryString.values.length] = value; 

} 

} 

} 





//---------------------------------------------------------------------|| 

// FUNCTION: ManageCart || 

// PARAMETERS: Null || 

// RETURNS: Product Table Written to Document || 

// PURPOSE: Draws current cart product table on HTML page || 

// EXTRAS ADDED IN: Code to enable UPS mod. ||

//---------------------------------------------------------------------|| 

function ManageCart( ) { 

var iNumberOrdered = 0; //Number of products ordered 

var fTotal = 0; //Total cost of order 

var fTax = 0; //Tax amount 

var fWeight = 0; //Weight 

var fShipping = 0; //Shipping amount 

var strTotal = ""; //Total cost formatted as money 

var strTax = ""; //Total tax formatted as money 

var strShipping = ""; //Total shipping formatted as money 

var strOutput = ""; //String to be written to page 

var bDisplay = true; //Whether to write string to the page (here for programmers) 



iNumberOrdered = GetCookie("NumberOrdered"); 

if ( iNumberOrdered == null ) 

iNumberOrdered = 0; 



LocationSelected = GetCookie("ZoneSelected"); 

if (LocationSelected == null) LocationSelected = 1; // Code to use Wichita as default checked if customer goes to Checkout with an empty Cart ||





if ( bDisplay ) 

strOutput = "<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=0 CLASS=\"nopcart\"><TR>" + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strILabel+"</B></TD>" + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strDLabel+"</B></TD>" + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strQLabel+"</B></TD>" + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strPLabel+"</B></TD>" + 

(DisplayShippingColumn?"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strSLabel+"</B></TD>":"") + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strRLabel+"</B></TD></TR>"; 



if ( iNumberOrdered == 0 ) { 

strOutput += "<TR><TD COLSPAN=6 CLASS=\"nopentry\"><CENTER><BR><B>Your cart is empty</B><BR><BR></CENTER></TD></TR>"; 

} 



for ( i = 1; i <= iNumberOrdered; i++ ) {

			even = Math.round(i/2);

      NewOrder = "Order." + i;

      database = "";

      database = GetCookie(NewOrder);



Token0 = database.indexOf("|", 0); 

Token1 = database.indexOf("|", Token0+1); 

Token2 = database.indexOf("|", Token1+1); 

Token3 = database.indexOf("|", Token2+1); 

Token4 = database.indexOf("|", Token3+1); 



fields = new Array; 

fields[0] = database.substring( 0, Token0 ); // Product ID 

fields[1] = database.substring( Token0+1, Token1 ); // Quantity 

fields[2] = database.substring( Token1+1, Token2 ); // Price 

fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description 

fields[4] = database.substring( Token3+1, Token4 ); // Weight 

fields[5] = database.substring( Token4+1, database.length ); //Additional Information 



fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) ); 

fWeight += (parseInt(fields[1]) * parseFloat(fields[4]) ); 

fWeight = Math.round(fWeight * 100)/100;

var strProductId = fields[0]; 

if( strProductId[0] != 'n' ) { 

fTax += (parseInt(fields[1]) * parseFloat(fields[2]) ) * TaxRate; 

} 



strTotal = moneyFormat(fTotal); 

strTax = moneyFormat(fTax); 



if ( bDisplay ){

      if ((even) ==(i/2) ) {

strOutput += "<TR><TD CLASS=\"nopeven\" ALIGN=CENTER>" + fields[0] + "</TD>"; 



if ( fields[5] == "" ) 

strOutput += "<TD CLASS=\"nopeven\">" + fields[3] + "</TD>"; 

else 

strOutput += "<TD CLASS=\"nopeven\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>"; 



if ( DisplayChangeQty ) {

strOutput += "<TD CLASS=\"nopeven\" ALIGN=CENTER><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\"" + fields[1] + "\" onChange=\"ChangeQuantity("+i+", this.value);\"></TD>"; 

} else {

strOutput += "<TD CLASS=\"nopeven\" ALIGN=CENTER>" + fields[1] + "</TD>"; 

}

strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>"; 



if ( DisplayShippingColumn ) { 



strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(parseInt(fields[1]) * parseFloat(fields[2]) ) + "</TD>"; 

}else {

strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>N/A</TD>"; 

} 



strOutput += "<TD CLASS=\"nopeven\" ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD></TR>"; 

} 

 else {

strOutput += "<TR><TD CLASS=\"nopentry\" ALIGN=CENTER>" + fields[0] + "</TD>"; 



if ( fields[5] == "" ) 

strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + "</TD>"; 

else 

strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>"; 



if ( DisplayChangeQty ) {

strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\"" + fields[1] + "\" onChange=\"ChangeQuantity("+i+", this.value);\"></TD>"; 

} else {

strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER>" + fields[1] + "</TD>"; 

}

strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>"; 



if ( DisplayShippingColumn ) { 



strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(parseInt(fields[1]) * parseFloat(fields[2]) ) + "</TD>"; 

}else {

strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>N/A</TD>"; 

} 



strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD></TR>"; 

} 

}

if ( AppendItemNumToOutput ) { 

strFooter = i; 

} else { 

strFooter = ""; 

} 

if ( HiddenFieldsToCheckout ) { 

strOutput += "<input type=hidden name=\"" + OutputItemId + strFooter + "\" value=\"" + fields[0] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemQuantity + strFooter + "\" value=\"" + fields[1] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemPrice + strFooter + "\" value=\"" + fields[2] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemName + strFooter + "\" value=\"" + fields[3] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemWeight + strFooter + "\" value=\"" + fields[4] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">"; 

} 



} 



if ( bDisplay ) { 

strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strSUB+"</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + strTotal + strSpace +"</B></TD>"; 

strOutput += "</TR>"; 



//this displays the shipping matrix and sets the value for each zone ||



if (( DisplayShippingRow ) && ( iNumberOrdered != 0)) { 

strOutput += "<TR><TD CLASS=\"nopship\" COLSPAN=1 ALIGN=CENTER><B>"+"SHIPPING<BR>ZONE"+"</B></TD>"; 

strOutput += "<TD CLASS=\"nopship\" COLSPAN=5>"; 

strOutput += "<input type=radio name=\"ZONE\" value=\"0" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+")\">"; 

strOutput += "Zone 1 - New York"; 

strOutput += "<BR><input type=radio name=\"ZONE\" value=\"1" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+")\">"; 

strOutput += "Zone 2 - Eastern US"; 

strOutput += "<BR><input type=radio name=\"ZONE\" value=\"2" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+")\">"; 

strOutput += "Zone 3 - Central US"; 

strOutput += "<BR><input type=radio name=\"ZONE\" value=\"3" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+")\">"; 

strOutput += "Zone 4 - Mountain US"; 

strOutput += "<BR><input type=radio name=\"ZONE\" value=\"4" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+")\">"; 

strOutput += "Zone 5 - Pacific US"; 

strOutput += "<BR><input type=radio name=\"ZONE\" value=\"5" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+")\">"; 

strOutput += "Zone 6 - Alaska - Free Shipping Does Not Apply*"; 

strOutput += "<BR><input type=radio name=\"ZONE\" value=\"6" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+")\">"; 

strOutput += "Zone 7 - Hawaii - Free Shipping Does Not Apply*"; 

strOutput += "<BR><input type=radio name=\"ZONE\" value=\"7" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+")\">"; 

strOutput += "Zone 8 - Canada, Mexico & South America - Free Shipping Does Not Apply*"; 

strOutput += "</TD>"; 

strOutput += "</TR>"; 



document.write(strOutput); 

strOutput = ""; 



LocationSelected = GetCookie("ZoneSelected"); 

if (LocationSelected == null) LocationSelected = 1; // Code to use Local Area as default checked, but not needed because want null selected at this time ||

//if (LocationSelected != null) document.all.ZONE[LocationSelected].checked = true; 



if (LocationSelected != null) {

    var cLocations = document.getElementsByName('ZONE');

    for (var iCtr = 0; iCtr < cLocations.length; iCtr++) {

         if (cLocations[iCtr].value == LocationSelected) cLocations[iCtr].checked = true;

    }

}





if (LocationSelected == 0) LocationLabel = "Zone 1"; 

if (LocationSelected == 1) LocationLabel = "Zone 2"; 

if (LocationSelected == 2) LocationLabel = "Zone 3"; 

if (LocationSelected == 3) LocationLabel = "Zone 4"; 

if (LocationSelected == 4) LocationLabel = "Zone 5"; 

if (LocationSelected == 5) LocationLabel = "Zone 6"; 

if (LocationSelected == 6) LocationLabel = "Zone 7"; 

if (LocationSelected == 7) LocationLabel = "Zone C"; 

if (LocationSelected == 8) LocationLabel = "Zone E"; 

if (LocationSelected == 9) LocationLabel = '<font color="#FF0000">Select Shipping Zone</font>';



if (fWeight == 0) fShipping = 0; 
//***** Begin fixed shipping calculation 
if (fTotal >= 249.99)       // If the total is 250 or more - shipping if FREE 
   fShipping = 0; 
//***** End fixed shipping calculation 

else fShipping = ComputeShipping(LocationSelected, fWeight); 



strShipping = moneyFormat(fShipping); 

strOutput += "<TR><TD CLASS=\"nopship\" COLSPAN=4><B>"+strWTOT+"</B></TD>"; 

strOutput += "<TD CLASS=\"nopship\" COLSPAN=1 ALIGN=RIGHT><B>" + fWeight + "lbs" + "</B></TD>"; 

strOutput += "<TD CLASS=\"nopship\" COLSPAN=1 ALIGN=RIGHT></TD>"; 

strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>" + strSHIP +"&nbsp;&nbsp;" + LocationLabel + "</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + strShipping + strSpace +"</B></TD>"; 

strOutput += "</TR>"; 

} 



if ( DisplayTaxRow || TaxByRegion ) { 

if ( TaxByRegion ) { 

strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strTAX+"</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1><B>"; 

strOutput += "<input type=radio name=\""+OutputOrderTax+"\" value=\"" + strTax + "\">"; 

strOutput += TaxablePrompt + ": " + MonetarySymbol + strTax; 

strOutput += "<BR><input type=radio name=\""+OutputOrderTax+"\" value=\"0.00\">"; 

strOutput += NonTaxablePrompt + ": " + MonetarySymbol + "0.00"; 

strOutput += "</B></TD>"; 

strOutput += "</TR>"; 

} 

//else { 

//strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strTAX+"</B></TD>"; 

//strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + strSpace +"</B></TD>"; 

//strOutput += "</TR>"; 

//} 

} 



if (LocationSelected != 0) //sets tax to 0.00 for all areas except 0 ||

fTax = 0.00;  



if (LocationSelected == 0)  { 

strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strTAX+"</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + strSpace +"</B></TD>"; 

strOutput += "</TR>"; 

} 



if ( !TaxByRegion ) { 

strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strTOT+"</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + strSpace +"</B></TD>"; 

strOutput += "</TR>"; 

} 

strOutput += "</TABLE>"; 



if ( HiddenFieldsToCheckout ) { 

strOutput += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ MonetarySymbol + strTotal + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+ MonetarySymbol + strShipping + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderTax+"\" value=\""+ MonetarySymbol + strTax + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\" value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "\">"; 

} 

} 

g_TotalCost = (fTotal + fShipping + fTax); 



document.write(strOutput); 

document.close(); 

} 



//---------------------------------------------------------------------|| 

// FUNCTION: ComputeShipping || 

// PARAMETERS: || 

// RETURNS: || 

// PURPOSE: Compute shipping cost due to total weight || 

//---------------------------------------------------------------------|| 

function ComputeShipping(Zone, TotWeight) { 

LocationValue = GetCookie("ZoneSelected"); 



if (LocationValue != Zone) { 

SetCookie("ZoneSelected", Zone, null, "/"); 

location.href=location.href; 

} 



if (TotWeight == 0) return 0.00; 



if (LocationValue == 0 ) { 

if (TotWeight <= 1) return 10.39; 

if ((TotWeight <= 1500) && (TotWeight > 1)) return (10.39 + (0.60 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 1 ) { 

if (TotWeight <= 1) return 10.60; 

if ((TotWeight <= 1500) && (TotWeight > 1)) return (10.60 + (0.70 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 2 ) { 

if (TotWeight <= 1) return 11.50; 

if ((TotWeight <= 70) && (TotWeight > 1)) return (11.50 + (0.80 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

if ((TotWeight <= 74) && (TotWeight > 70)) return (12.02 + (0.30 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

if ((TotWeight <= 79) && (TotWeight > 74)) return (14.02 + (0.30 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

if ((TotWeight <= 1500) && (TotWeight > 79)) return (20.00 + (0.40 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 3 ) { 

if (TotWeight <= 1) return 11.90; 

if ((TotWeight <= 1500) && (TotWeight > 1)) return (11.90 + (0.90 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 4 ) { 

if (TotWeight <= 1) return 12.99; 

if ((TotWeight <= 1500) && (TotWeight > 1)) return (12.99 + (1.00 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 5 ) { 

if (TotWeight <= 1) return 22.20; 

if ((TotWeight <= 77) && (TotWeight > 1)) return (22.20 + (1.10 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

if ((TotWeight <= 80) && (TotWeight > 77)) return (23.02 + (0.35 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

if ((TotWeight <= 85) && (TotWeight > 80)) return (24.02 + (0.35 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

if ((TotWeight <= 1500) && (TotWeight > 85)) return (25.00 + (0.40 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 6 ) { 

if (TotWeight <= 1) return 23.50; 

if ((TotWeight <= 1500) && (TotWeight > 1)) return (23.50 + (1.20 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 7 ) { 

if (TotWeight <= 1) return 24.50; 

if ((TotWeight <= 500) && (TotWeight > 1)) return (24.50 + (1.30 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 8 ) { 

if (TotWeight <= 1) return .01; 

if ((TotWeight <= 1500) && (TotWeight > 1)) return (.01 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1)))); 

} 

if (LocationValue == 9 ) return 0.00; 

} 



//---------------------------------------------------------------------||

// FUNCTION:    ValidateCart                                           ||

// PARAMETERS:  Form to validate                                       ||

// RETURNS:     true/false                                             ||

// PURPOSE:     Validates the managecart form                          ||

//---------------------------------------------------------------------||

var g_TotalCost = 0;

function ValidateCart( theForm ) {

   if ( TaxByRegion ) {

      if ( !RadioChecked(eval("theForm."+OutputOrderTax)) ) {

         alert( TaxPrompt );

         return false;

      }

   }



   if ( isNaN (g_TotalCost) ) {

      alert( NoQtyPrompt );

      return false;

   }



   if ( MinimumOrder >= 0.01 ) {

      if ( g_TotalCost < MinimumOrder ) {

         alert( MinimumOrderPrompt );

         return false;

      }

   }



   if ( !RadioChecked(theForm.ZONE) ) {

      alert( LocationPrompt );

      return false;

   }



   return true;

}



//---------------------------------------------------------------------|| 

// FUNCTION: CheckoutCart || 

// PARAMETERS: Null || 

// RETURNS: Product Table Written to Document || 

// PURPOSE: Draws current cart product table on HTML page for || 

// checkout. || 

//---------------------------------------------------------------------|| 

function CheckoutCart( ) { 

var iNumberOrdered = 0; //Number of products ordered 

var fTotal = 0; //Total cost of order 

var fTax = 0; //Tax amount 

var fWeight = 0; //Weight 

var fShipping = 0; //Shipping amount 

var strTotal = ""; //Total cost formatted as money 

var strTax = ""; //Total tax formatted as money 

var strShipping = ""; //Total shipping formatted as money 

var strOutput = ""; //String to be written to page 

var bDisplay = true; //Whether to write string to the page (here for programmers) 

var strPP = ""; //Payment Processor Description Field 



iNumberOrdered = GetCookie("NumberOrdered"); 

if ( iNumberOrdered == null ) 

iNumberOrdered = 0; 



if ( TaxByRegion ) { 

QueryString_Parse(); 

fTax = parseFloat( QueryString( OutputOrderTax ) ); 

strTax = moneyFormat(fTax); 

} 



if ( bDisplay ) 

strOutput = "<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=0 CLASS=\"nopcart\"><TR>" + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strILabel+"</B></TD>" + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strDLabel+"</B></TD>" + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strQLabel+"</B></TD>" + 

"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strPLabel+"</B></TD>" + 

(DisplayShippingColumn?"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strSLabel+"</B></TD>":"") + 

"</TR>"; 



for ( i = 1; i <= iNumberOrdered; i++ ) {

	 		even = Math.round(i/2);

NewOrder = "Order." + i; 

database = ""; 

database = GetCookie(NewOrder); 



Token0 = database.indexOf("|", 0); 

Token1 = database.indexOf("|", Token0+1); 

Token2 = database.indexOf("|", Token1+1); 

Token3 = database.indexOf("|", Token2+1); 

Token4 = database.indexOf("|", Token3+1); 



fields = new Array; 

fields[0] = database.substring( 0, Token0 ); // Product ID 

fields[1] = database.substring( Token0+1, Token1 ); // Quantity 

fields[2] = database.substring( Token1+1, Token2 ); // Price 

fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description 

fields[4] = database.substring( Token3+1, Token4 ); // Weight 

fields[5] = database.substring( Token4+1, database.length ); //Additional Information 



fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) ); 

fWeight += (parseInt(fields[1]) * parseFloat(fields[4]) ); 

fWeight = Math.round(fWeight * 100)/100;

if ( !TaxByRegion ) var strProductId = fields[0]; 

if( strProductId[0] != 'n' ) { 

fTax += (parseInt(fields[1]) * parseFloat(fields[2]) ) * TaxRate; 

}  

strTotal = moneyFormat(fTotal); 

if ( !TaxByRegion ) strTax = moneyFormat(fTax); 



if ( bDisplay ){

      if ((even) ==(i/2) ) {

strOutput += "<TR><TD CLASS=\"nopeven\" ALIGN=CENTER>" + fields[0] + "</TD>"; 



if ( fields[5] == "" ) 

strOutput += "<TD CLASS=\"nopeven\">" + fields[3] + "</TD>"; 

else 

strOutput += "<TD CLASS=\"nopeven\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>"; 



strOutput += "<TD CLASS=\"nopeven\" ALIGN=CENTER>" + fields[1] + "</TD>"; 

strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>"; 



if ( DisplayShippingColumn ) { 



strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(parseInt(fields[1]) * parseFloat(fields[2]) ) + "</TD>"; 

}else {

strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>N/A</TD>"; 

} 



strOutput += "</TR>"; 

} 

else {

strOutput += "<TR><TD CLASS=\"nopentry\" ALIGN=CENTER>" + fields[0] + "</TD>"; 



if ( fields[5] == "" ) 

strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + "</TD>"; 

else 

strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>"; 



strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER>" + fields[1] + "</TD>"; 

strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>"; 



if ( DisplayShippingColumn ) { 



strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(parseInt(fields[1]) * parseFloat(fields[2]) ) + "</TD>"; 

}else {

strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>N/A</TD>"; 

} 



strOutput += "</TR>"; 

} 

}

if ( AppendItemNumToOutput ) { 

strFooter = i; 

} else { 

strFooter = ""; 

} 

if ( PaymentProcessor != '' ) { 

//Process description field for payment processors instead of hidden values. 

//Format Description of product as: 

// ID, Name, Qty X 

strPP += fields[0] + ", " + fields[3]; 

if ( fields[5] != "" ) 

strPP += " - " + fields[5]; 

strPP += ", Qty. " + fields[1] + "\n"; 

} else { 

LocationSelected = GetCookie("ZoneSelected"); 

strOutput += "<input type=hidden name=\"" + OutputItemId + strFooter + "\" value=\"" + fields[0] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemQuantity + strFooter + "\" value=\"" + fields[1] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemPrice + strFooter + "\" value=\"" + fields[2] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemName + strFooter + "\" value=\"" + fields[3] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemWeight + strFooter + "\" value=\"" + fields[4] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">"; 

strOutput += "<input type=hidden name=\"" + OutputItemXtend + strFooter + "\" value=\"" + moneyFormat(fields[1] * fields[2]) + "\">";

strOutput += "<input type=hidden name=\"" + OutputOrderZone + strFooter + "\" value=\"" + LocationSelected + "\">"; 

} 



} 



if ( bDisplay ) { 

strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSUB+"</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTotal + "</B></TD>"; 

strOutput += "</TR>"; 



if ( DisplayShippingRow ) { 

LocationSelected = GetCookie("ZoneSelected"); 

if (LocationSelected == null) LocationSelected = 1; //Needed if checkout cart is empty



if (LocationSelected == 0) LocationLabel = "Zone 1"; 

if (LocationSelected == 1) LocationLabel = "Zone 2"; 

if (LocationSelected == 2) LocationLabel = "Zone 3"; 

if (LocationSelected == 3) LocationLabel = "Zone 4"; 

if (LocationSelected == 4) LocationLabel = "Zone 5"; 

if (LocationSelected == 5) LocationLabel = "Zone 6"; 

if (LocationSelected == 6) LocationLabel = "Zone 7"; 

if (LocationSelected == 7) LocationLabel = "Zone C"; 

if (LocationSelected == 8) LocationLabel = "Zone E"; 



fShipping = ComputeShipping(LocationSelected, fWeight);
//***** Begin fixed shipping calculation 
if (fTotal >= 249.99)       // If the total is 250 or more - shipping if FREE 
   fShipping = 0; 
//***** End fixed shipping calculation  

strShipping = moneyFormat(fShipping); 

//strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strWTOT+"</B></TD>"; 

//strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + fWeight + " lbs" + "</B></TD>"; 

strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>" + strSHIP + " for " + LocationLabel + "</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strShipping + "</B></TD>"; 

strOutput += "</TR>"; 

} 



//if ( DisplayTaxRow || TaxByRegion ) { 

//strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strTAX+"</B></TD>"; 

//strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + "</B></TD>"; 

//strOutput += "</TR>"; 

//} 



if (LocationSelected != 0) //sets tax to 0.00 for all other areas ||

fTax = 0.00; 



if (LocationSelected == 0)  { 

strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strTAX+"</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=3 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + "</B></TD>"; 

strOutput += "</TR>"; 

} 



strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strTOT+"</B></TD>"; 

strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "</B></TD>"; 

strOutput += "</TR>"; 



strOutput += "</TABLE>"; 





if ( PaymentProcessor == 'an') { 

//Process this for Authorize.net WebConnect 

strOutput += "<input type=hidden name=\"x_Version\" value=\"3.0\">"; 

strOutput += "<input type=hidden name=\"x_Show_Form\" value=\"PAYMENT_FORM\">"; 

strOutput += "<input type=hidden name=\"x_Description\" value=\""+ strPP + "\">"; 

strOutput += "<input type=hidden name=\"x_Amount\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">"; 

} else if ( PaymentProcessor == 'wp') { 

//Process this for WorldPay 

strOutput += "<input type=hidden name=\"desc\" value=\""+ strPP + "\">"; 

strOutput += "<input type=hidden name=\"amount\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">"; 

} else if ( PaymentProcessor == 'lp') { 

//Process this for LinkPoint 

strOutput += "<input type=hidden name=\"mode\" value=\"fullpay\">"; 

strOutput += "<input type=hidden name=\"chargetotal\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">"; 

strOutput += "<input type=hidden name=\"tax\" value=\""+ MonetarySymbol + strTax + "\">"; 

strOutput += "<input type=hidden name=\"subtotal\" value=\""+ MonetarySymbol + strTotal + "\">"; 

strOutput += "<input type=hidden name=\"shipping\" value=\""+ MonetarySymbol + strShipping + "\">"; 

strOutput += "<input type=hidden name=\"desc\" value=\""+ strPP + "\">"; 

} else if (LocationSelected != 0){ 

strOutput += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ MonetarySymbol + strTotal + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+ MonetarySymbol + strShipping + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderTax+"\" value=\""+ MonetarySymbol + "0.00" + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\" value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderZone+"\" value=\""+ LocationLabel + "\">"; 

} else {

strOutput += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ MonetarySymbol + strTotal + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+ MonetarySymbol + strShipping + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderTax+"\" value=\""+ MonetarySymbol + strTax + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\" value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "\">"; 

strOutput += "<input type=hidden name=\""+OutputOrderZone+"\" value=\""+ LocationLabel + "\">"; 

} 

}



document.write(strOutput); 

document.close(); 

} 



//---------------------------------------------------------------------|| 

// FUNCTION: Print_total || 

// PARAMETERS: none || 

// RETURNS: Total cost currently racked up by shopper || 

// PURPOSE: Aesthetics || 

//---------------------------------------------------------------------|| 

function Print_total( ) { 

var strOutput = ""; //String to be written to page 

var strTotal = ""; //Total cost formatted as money 

var fTotal = 0; 

var iNumberOrdered = 0; //Number of products ordered 





iNumberOrdered = GetCookie("NumberOrdered"); 

if ( iNumberOrdered == null ) 

iNumberOrdered = 0; 





for ( i = 1; i <= iNumberOrdered; i++ ) { 



NewOrder = "Order." + i; 

database = ""; 

database = GetCookie(NewOrder); 



Token0 = database.indexOf("|", 0); 

Token1 = database.indexOf("|", Token0+1); 

Token2 = database.indexOf("|", Token1+1); 

Token3 = database.indexOf("|", Token2+1); 

Token4 = database.indexOf("|", Token3+1); 



fields = new Array; 

fields[0] = database.substring( 0, Token0 ); // Product ID 

fields[1] = database.substring( Token0+1, Token1 ); // Quantity 

fields[2] = database.substring( Token1+1, Token2 ); // Price 

fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description 

fields[4] = database.substring( Token3+1, Token4 ); // Weight 

fields[5] = database.substring( Token4+1, database.length ); //Additional Information 



fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) ); 



} 



strTotal = moneyFormat(fTotal); 

strOutput+=strTotal; 

document.write(strOutput); 



} 



//=====================================================================|| 

// END NOP Design SmartPost Shopping Cart || 

//=====================================================================||


