/*
# File: nopcart.js
#
# Purpose:
#
# Finkle Usage: /jslib2/nopcart.js
#
# History:
# 01-Jun-06 fhk; Init
# 23-Jun-06 fhk; added ClearCart() function.
# 03-Jan-07 fhk; updated Cookie statements to ensure local to code, and
#           fhk; ensured cookie domain ignores and 'www.' string
#           fhk; added nopDoCookieCheckOnErrorCB
# 18-Feb-07 fhk; added CouponCode logic.
# 14-Nov-07 fhk; changed ajax call to post to get IE to be happy.
# 05-Dec-08 fhk; updated name to use &quote; in NAME and extra info.
# 14-Dec-08 fhk; added full DOM support to ManageCart function for integration
#           fhk; see "Integration Notes"
# 10-Nov-09 fhk; added CartToXML() function.
#----------------------------------------------------------------------
*/
//---------------------------------------------------------------------||
//                       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="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  ||
// * Integration Notes: The ManageCart DOM will contain the follow     ||
//   for interrogation:                                                ||
//     nopitem_subtotal (Xvalue and Xitemsincart)                      ||
//     nopitem_shipping (Xvalue)                                       ||
//     nopitem_tax (Xvalue)                                            ||
//     nopitem_N_productid (innerHTML)                                 ||
//     nopitem_N_productname (innerHTML)                               ||
//     nopitem_N_qty (value)                                           ||
//     nopitem_N_price (Xvalue)                                        ||
//     nopitem_N_itemshippingcost (Xvalue)                             ||
//---------------------------------------------------------------------||

/*
//    For each product you wish to sell, create a small FORM tag with:
//  
//     * Quantity [QUANTITY] n
//     * Price [PRICE] dd.cc
//     * Name or Short Description [NAME]
//     * Product ID or Part Number [ID_NUM]
//     * Shipping Cost [SHIPPING] dd.cc
//     * Additional Information (Up to 4) [ADDITIONALINFO,ADDITIONALINFO2,ADDITIONALINFO3,ADDITIONALINFO4] selection boxes.
//  
//  This form will look something like:
//  
//     <!--Shopping Cart Product Begin-->
//     <FORM>
//     Quantity: <input type=text size=2 maxlength=3 name=QUANTITY onChange='this.value=CKquantity(this.value)' value="1">    
//     <input type=hidden name="PRICE" value="19.95">
//     <input type=hidden name="NAME" value="My Sample Product">
//     <input type=hidden name="ID_NUM" value="Sample ID 001">
//     <input type=hidden name="SHIPPING" value="5.95">
//     Select a color: 
//     <select name=ADDITIONALINFO>
//         <option value="Red">  Red
//         <option value="Blue"> Blue
//         <option value="White">White
//     </select>
//     Select a size: 
//     <select name=ADDITIONALINFO2>
//         <option value="Small">  Small
//         <option value="Medium"> Medium
//         <option value="Large">Large
//     </select>
//     <input type=button value='  Add to Cart  ' onClick='AddToCart(this.form)'>
//     <a href="managecart.html">Check out now</a>
//     </FORM>
//     <!--Shopping Cart Product End  -->
*/  

MonetarySymbol='$';DisplayNotice=true;DisplayShippingColumn=true;DisplayShippingRow=true;DisplayTaxRow=true;TaxRate=0.07;TaxByRegion=true;TaxPrompt='For tax purposes, please select if you are an Arizona resident before continuing.';TaxablePrompt='Arizona Residents';NonTaxablePrompt='Other States';MinimumOrder=100.00;MinimumOrderPrompt='Your order is below our minimum order of $MINORDER, please order more before checking out.';MinimumShippingCharge=6.00;PaymentProcessor='';OutputItemId='nopcart_ID_';OutputItemQuantity='nopcart_QUANTITY_';OutputItemPrice='nopcart_PRICE_';OutputItemName='nopcart_NAME_';OutputItemShipping='nopcart_SHIPPING_';OutputItemAddtlInfo='nopcart_ADDTLINFO_';OutputOrderSubtotal='nopcart_SUBTOTAL';OutputOrderShipping='nopcart_SHIPPING';OutputOrderTax='nopcart_TAX';OutputOrderTotal='nopcart_TOTAL';OutputCouponCode='nopcart_COUPONCODE';AppendItemNumToOutput=true;HiddenFieldsToCheckout=false;CartErrorTagId=null;window.nop_domain=document.location.href.replace(/^https{0,1}:\/\//,'');window.nop_domain=window.nop_domain.replace(/w{3,3}\./,'');window.nop_domain=window.nop_domain.replace(/:.*$/,'');window.nop_domain=window.nop_domain.replace(/\/.*$/,'');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="Quantity";strPLabel="Price";strSLabel="Shipping";strRLabel="&nbsp;";strRButton="X";strUButton="Update";strSUB="SUBTOTAL";strSHIP="SHIPPING";strTAX="TAX";strCOUPON="Promotional Discount Code";strTOT="TOTAL";strErrQty="Invalid Quantity.";strNewQty='Please enter new quantity:';bLanguageDefined=true;}
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(thisForm){var iNumberOrdered=0;var bAlreadyInCart=false;var notice="";iNumberOrdered=nopGetCookie("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.SHIPPING==null)
strSHIPPING="0.00";else
strSHIPPING=thisForm.SHIPPING.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;}
for(i=1;i<=iNumberOrdered;i++){NewOrder="Order."+i;database="";database=nopGetCookie(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;nopDeleteCookie(strNewOrder,"/");nopSetCookie(strNewOrder,dbUpdatedOrder,null,"/");notice=strQUANTITY+" "+strNAME+strAdded;break;}}
if(!bAlreadyInCart){iNumberOrdered++;if(iNumberOrdered>100)
alert(strSorry);else{dbUpdatedOrder=strID_NUM+"|"+
strQUANTITY+"|"+
strPRICE+"|"+
strNAME+"|"+
strSHIPPING+"|"+
strADDTLINFO;strNewOrder="Order."+iNumberOrdered;nopSetCookie(strNewOrder,dbUpdatedOrder,null,"/");nopSetCookie("NumberOrdered",iNumberOrdered,null,"/");notice=strQUANTITY+" "+strNAME+strAdded;}}
if(!nopGetCookie("NumberOrdered")){if(typeof(nopDoCookieCheckOnErrorCB)=='string'){eval(nopDoCookieCheckOnErrorCB+'()');}else{alert("I'm sorry. Adding an item to your cart has failed. Please be sure you have cookies enabled in your browser to shop online. Thank you.");}}else{if(DisplayNotice)alert(notice);if(typeof(AddToCartCB)=='string'){var cb=new Object();cb.notice=notice;cb.itemName=strNAME;cb.numInCart=strQUANTITY;eval(AddToCartCB+'(cb)');}}}
function nopgetCookieVal(offset){var endstr=document.cookie.indexOf(";",offset);if(endstr==-1)
endstr=document.cookie.length;return(unescape(document.cookie.substring(offset,endstr)));}
function nopFixCookieDate(date){var base=new Date(0);var skew=base.getTime();date.setTime(date.getTime()-skew);}
function nopGetCookie(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(nopgetCookieVal(j));i=document.cookie.indexOf(" ",i)+1;if(i==0)break;}
return(null);}
function nopSetCookie(name,value,expires,path,domain,secure){document.cookie=name+"="+escape(value)+
((expires)?"; expires="+expires.toGMTString():"")+
((path)?"; path="+path:"")+"; domain="+window.nop_domain+
((secure)?"; secure":"");}
function nopDeleteCookie(name,path,domain){if(nopGetCookie(name)){document.cookie=name+"="+
((path)?"; path="+path:"")+"; domain="+window.nop_domain+"; expires=Thu, 01-Jan-70 00:00:01 GMT";}}
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(RemOrder){if(confirm(strRemove)){NumberOrdered=nopGetCookie("NumberOrdered");for(i=RemOrder;i<NumberOrdered;i++){NewOrder1="Order."+(i+1);NewOrder2="Order."+(i);database=nopGetCookie(NewOrder1);nopSetCookie(NewOrder2,database,null,"/");}
NewOrder="Order."+NumberOrdered;nopSetCookie("NumberOrdered",NumberOrdered-1,null,"/");nopDeleteCookie(NewOrder,"/");location.href=location.href;}}
function swapButton(OrderItem,s){var id='removeFromCartButton'+OrderItem;if(s&&s==1){document.getElementById(id).value=strUButton;document.getElementById(id).setAttribute('onclick',"void(0)");}else{document.getElementById(id).value=strRButton;document.getElementById(id).setAttribute('onclick',"this.blur();RemoveFromCart("+OrderItem+")");}}
function ChangeQuantity(OrderItem,NewQuantity){if(isNaN(NewQuantity)){alert(strErrQty);}else{NewOrder="Order."+OrderItem;database="";database=nopGetCookie(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;nopDeleteCookie(strNewOrder,"/");nopSetCookie(strNewOrder,dbUpdatedOrder,null,"/");location.href=location.href;}}
function RadioChecked(radiobutton){var bChecked=false;var rlen=radiobutton.length;for(i=0;i<rlen;i++){if(radiobutton[i].checked)
bChecked=true;}
return bChecked;}
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(){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 VerifyPromoCode(fTotal,fShipping,fTaxRate){var code=document.getElementById('nopcartpromofield').value.replace(/\s+/g,'');if(code=='')return;var myajax=new Ajax.Request('/_ajax/getcouponcodediscountamt.xml',{method:'post',parameters:{code:code,amountoforder:fTotal+""},onSuccess:function(transport){if(transport.responseXML.getElementsByTagName('status')[0].getAttribute('result')!='minordernotreached'){var discount=moneyFormat(transport.responseXML.getElementsByTagName('status')[0].firstChild.data);document.getElementById('nopcartpromoamount').innerHTML='(-'+MonetarySymbol+discount+')';var newTaxable=0;if(fTaxRate)newTaxable=((fTotal-discount)*fTaxRate);document.getElementById('nopcarttaxamount').innerHTML=MonetarySymbol+moneyFormat(newTaxable);document.getElementById('hiddenCouponCode').value=MonetarySymbol+discount;document.getElementById('hiddenCouponCodeused').value=code;document.getElementById('hiddenTaxAmt').value=MonetarySymbol+moneyFormat(newTaxable);document.getElementById('hiddenOrderTotal').value=MonetarySymbol+moneyFormat((fTotal-discount)+fShipping+newTaxable);document.getElementById('nopcarttotalvalue').innerHTML=MonetarySymbol+moneyFormat((fTotal-discount)+fShipping+newTaxable);nopSetCookie("CouponDiscount",discount,null);nopSetCookie("CouponCodeUsed",code,null);}else{}}});}
function ManageCart(){var iNumberOrdered=0;var fTotal=0;var fTax=0;var fShipping=0;var strTotal="";var strTax="";var strShipping="";var strOutput="";var bDisplay=true;iNumberOrdered=nopGetCookie("NumberOrdered");if(iNumberOrdered==null)
iNumberOrdered=0;if(bDisplay)
strOutput="<TABLE CLASS=\"nopcart\"><TR>"+"<TD CLASS=\"nopheader\"><B>"+strILabel+"</B></TD>"+"<TD CLASS=\"nopheader\"><B>"+strDLabel+"</B></TD>"+"<TD CLASS=\"nopheader\"><B>"+strQLabel+"</B></TD>"+"<TD CLASS=\"nopheader\"><B>"+strPLabel+"</B></TD>"+
(DisplayShippingColumn?"<TD CLASS=\"nopheader\"><B>"+strSLabel+"</B></TD>":"")+"<TD CLASS=\"nopheader\"><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++){NewOrder="Order."+i;var domtoken="nopitem_"+i+"_";database="";database=nopGetCookie(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);fTotal+=(parseInt(fields[1])*parseFloat(fields[2]));fShipping+=(parseInt(fields[1])*parseFloat(fields[4]));fTax=(fTotal*TaxRate);strTotal=moneyFormat(fTotal);strTax=moneyFormat(fTax);strShipping=moneyFormat(fShipping);if(bDisplay){strOutput+="<TR><TD CLASS=\"nopentry\" id=\""+domtoken+"productid\">"+fields[0]+"</TD>";if(fields[5]=="")
strOutput+="<TD CLASS=\"nopentry\" id=\""+domtoken+"productname\">"+fields[3]+"</TD>";else
strOutput+="<TD CLASS=\"nopentry\" id=\""+domtoken+"productname\">"+fields[3]+" - <I>"+fields[5]+"</I></TD>";strOutput+="<TD CLASS=\"nopentry\"><INPUT TYPE=TEXT NAME=\""+domtoken+"qty\" ID=\""+domtoken+"qty\" SIZE=2 VALUE=\""+fields[1]+"\" onblur=\"setTimeout('swapButton("+i+",0)',300)\" onKeyPress=\"swapButton("+i+",1)\" onChange=\"ChangeQuantity("+i+", this.value);\"></TD>";strOutput+="<TD CLASS=\"nopentry\" id=\""+domtoken+"price\" Xvalue=\""+moneyFormat(fields[2])+"\" >"+MonetarySymbol+moneyFormat(fields[2])+"/ea</TD>";if(DisplayShippingColumn){if(parseFloat(fields[4])>0)
strOutput+="<TD CLASS=\"nopentry\" id=\""+domtoken+"itemshippingcost\" Xvalue=\""+moneyFormat(fields[4])+"\" >"+MonetarySymbol+moneyFormat(fields[4])+"/ea</TD>";else
strOutput+="<TD CLASS=\"nopentry\" id=\""+domtoken+"itemshippingcost\" Xvalue=\"0.00\">N/A</TD>";}
strOutput+="<TD CLASS=\"nopentry\" ALIGN=CENTER><input type=button title=\"Remove this item from the cart.\" value=\" "+strRButton+" \" id=\"removeFromCartButton"+i+"\" onclick=\"this.blur();RemoveFromCart("+i+")\" class=\"nopbutton\" style=\"XXXwidth:100px\"></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].replace(/"/g,"&quote;")+"\">";strOutput+="<input type=hidden name=\""+OutputItemShipping+strFooter+"\" value=\""+fields[4]+"\">";strOutput+="<input type=hidden name=\""+OutputItemAddtlInfo+strFooter+"\" value=\""+fields[5].replace(/"/g,"&quote;")+"\">";}}
if(parseFloat(fShipping)<MinimumShippingCharge){fShipping=parseFloat(MinimumShippingCharge);strShipping=moneyFormat(fShipping);}
if(bDisplay){var n2=(MinimumOrder>=0.01&&strTotal<MinimumOrder)?' <span style="color:red">(Must order a minimum of '+MonetarySymbol+MinimumOrder+'.)</span>':'';strOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strSUB+"</B></TD>";strOutput+="<TD CLASS=\"noptotal\" COLSPAN=2><B id=\"nopcart_subtotal\" Xitemsincart=\""+iNumberOrdered+"\" Xvalue=\""+strTotal+"\">"+MonetarySymbol+strTotal+"</B>"+n2+"</TD>";strOutput+="</TR>";if(DisplayShippingRow){strOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strSHIP+"</B></TD>";strOutput+="<TD CLASS=\"noptotal\" COLSPAN=2><B id=\"nopcart_shipping\" Xvalue=\""+strShipping+"\">"+MonetarySymbol+strShipping+"</B></TD>";strOutput+="</TR>";}
if(DisplayTaxRow||TaxByRegion){if(TaxByRegion){strOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strTAX+"</B></TD>";strOutput+="<TD CLASS=\"noptotal\" COLSPAN=2><B>";strOutput+="<input type=radio id=\"nopcart_tax\" Xvalue=\""+((nopGetCookie('TaxRegionSelect')==1)?strTax:"0.00")+"\" name=\""+OutputOrderTax+"\" "+((nopGetCookie('TaxRegionSelect')==1)?'checked="yes"':'')+" onclick=\"this.blur();nopSetCookie('TaxRegionSelect',1,null);this.setAttribute('Xvalue',this.value)\" value=\""+strTax+"\">";strOutput+=TaxablePrompt+": "+MonetarySymbol+strTax;strOutput+="<BR><input type=radio name=\""+OutputOrderTax+"\" "+((nopGetCookie('TaxRegionSelect')==2)?'checked="yes"':'')+" onclick=\"this.blur();nopSetCookie('TaxRegionSelect',2,null);document.getElementById('nopcart_tax').setAttribute('Xvalue',this.value)\" value=\"0.00\">";strOutput+=NonTaxablePrompt+": "+MonetarySymbol+"0.00";strOutput+="</B></TD>";strOutput+="</TR>";}else{strOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strTAX+"</B></TD>";strOutput+="<TD CLASS=\"noptotal\" COLSPAN=2><B>"+MonetarySymbol+strTax+"</B></TD>";strOutput+="</TR>";}}
if(!TaxByRegion){strOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strTOT+"</B></TD>";strOutput+="<TD CLASS=\"noptotal\" COLSPAN=2><B>"+MonetarySymbol+moneyFormat((fTotal+fShipping+fTax))+"</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 CartToXML(){var iNumberOrdered=0;var fTotal=0;var fTax=0;var fShipping=0;var strTotal="";var strTax="";var strShipping="";var strOutput="";var bDisplay=true;iNumberOrdered=nopGetCookie("NumberOrdered");if(iNumberOrdered==null)iNumberOrdered=0;strOutput="<cartxml>";if(iNumberOrdered==0){strOutput+="<numberofitems>0</numberofitems><items/><subtotal>0.00</subtotal><shipping>0.00</shipping><tax>0.00</tax></cartxml><ordertotal>0.00</ordertotal>";return strOutput;}
strOutput+="<items>";var item="";for(i=1;i<=iNumberOrdered;i++){item="<item>";NewOrder="Order."+i;var domtoken="nopitem_"+i+"_";database="";database=nopGetCookie(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);fTotal+=(parseInt(fields[1])*parseFloat(fields[2]));fShipping+=(parseInt(fields[1])*parseFloat(fields[4]));fTax=(fTotal*TaxRate);strTotal=moneyFormat(fTotal);strTax=moneyFormat(fTax);strShipping=moneyFormat(fShipping);item+="<id>"+fields[0].replace("&","&amp;").replace("<","&lt;").replace(">","&gt;")+"</id>";item+="<description>"+fields[3].replace("&","&amp;").replace("<","&lt;").replace(">","&gt;")+"</description>";item+="<quantity>"+fields[1]+"</quantity>";item+="<price>"+moneyFormat(fields[2])+"</price>";item+="<shipping>"+moneyFormat(parseInt(fields[1])*parseFloat(fields[4]))+"</shipping>";item+="</item>";strOutput+=item;}
strOutput+="</items>";strOutput+="<subtotal>"+moneyFormat(fTotal)+"</subtotal>";strOutput+="<shipping>"+moneyFormat(fShipping)+"</shipping>";strOutput+="<tax>"+moneyFormat(fTax)+"</tax>";strOutput+="<ordertotal>"+moneyFormat(fTotal+fShipping+fTax)+"</ordertotal>";strOutput+="</cartxml>";return strOutput;}
var g_TotalCost=0;function ValidateCart(theForm){ValidateCart_Message="";if(CartErrorTagId)document.getElementById(CartErrorTagId).innerHTML='';if(TaxByRegion){if(!RadioChecked(eval("theForm."+OutputOrderTax))){ValidateCart_Message+=TaxPrompt+"<br>";}}
if(MinimumOrder>=0.01){if(g_TotalCost<MinimumOrder){ValidateCart_Message+=MinimumOrderPrompt.replace(/MINORDER/,MinimumOrder)+"<br>";}}
if(CartErrorTagId)document.getElementById(CartErrorTagId).innerHTML=ValidateCart_Message;if(ValidateCart_Message!='')return false;return true;}
function ClearCart(){nopSetCookie("NumberOrdered",0,null,"/");}
function CheckoutCart(args){var iNumberOrdered=0;var fTotal=0;var fTax=0;var fShipping=0;var strTotal="";var strTax="";var strShipping="";var strOutput="";var bDisplay=true;var strPP="";var doWrite=true;if(args){if(args.returntype=='string')doWrite=false;}
iNumberOrdered=nopGetCookie("NumberOrdered");if(iNumberOrdered==null)
iNumberOrdered=0;if(TaxByRegion){QueryString_Parse();fTax=parseFloat(QueryString(OutputOrderTax));strTax=moneyFormat(fTax);}
if(bDisplay)
strOutput="<TABLE CLASS=\"nopcart\"><TR>"+"<TD CLASS=\"nopheader\"><B>"+strILabel+"</B></TD>"+"<TD CLASS=\"nopheader\"><B>"+strDLabel+"</B></TD>"+"<TD CLASS=\"nopheader\"><B>"+strQLabel+"</B></TD>"+"<TD CLASS=\"nopheader\"><B>"+strPLabel+"</B></TD>"+
(DisplayShippingColumn?"<TD CLASS=\"nopheader\"><B>"+strSLabel+"</B></TD>":"")+"</TR>";for(i=1;i<=iNumberOrdered;i++){NewOrder="Order."+i;database="";database=nopGetCookie(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);fTotal+=(parseInt(fields[1])*parseFloat(fields[2]));fShipping+=(parseInt(fields[1])*parseFloat(fields[4]));if(!TaxByRegion)fTax=(fTotal*TaxRate);strTotal=moneyFormat(fTotal);if(!TaxByRegion)strTax=moneyFormat(fTax);strShipping=moneyFormat(fShipping);if(bDisplay){strOutput+="<TR><TD CLASS=\"nopentry\">"+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\">"+fields[1]+"</TD>";strOutput+="<TD CLASS=\"nopentry\">"+MonetarySymbol+moneyFormat(fields[2])+"/ea</TD>";if(DisplayShippingColumn){if(parseFloat(fields[4])>0)
strOutput+="<TD CLASS=\"nopentry\">"+MonetarySymbol+moneyFormat(fields[4])+"/ea</TD>";else
strOutput+="<TD CLASS=\"nopentry\">N/A</TD>";}
strOutput+="</TR>";}
if(AppendItemNumToOutput){strFooter=i;}else{strFooter="";}
if(PaymentProcessor!=''){strPP+=fields[0]+", "+fields[3];if(fields[5]!="")
strPP+=" - "+fields[5];strPP+=", Qty. "+fields[1]+"\n";}else{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].replace(/"/g,"&quote;")+"\">";strOutput+="<input type=hidden name=\""+OutputItemShipping+strFooter+"\" value=\""+fields[4]+"\">";strOutput+="<input type=hidden name=\""+OutputItemAddtlInfo+strFooter+"\" value=\""+fields[5].replace(/"/g,"&quite;")+"\">";}}
if(parseFloat(fShipping)<MinimumShippingCharge){fShipping=parseFloat(MinimumShippingCharge);strShipping=moneyFormat(fShipping);}
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>";strOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=1><B>"+strCOUPON+"</B></TD>";strOutput+="<TD CLASS=\"noptotal\" STYLE=\"BORDER-RIGHT:none;BORDER-LEFT:none\" COLSPAN=1><INPUT TYPE=\"TEXT\" ID=\"nopcartpromofield\" /></TD>";strOutput+="<TD CLASS=\"noptotal\" STYLE=\"BORDER-RIGHT:none;BORDER-LEFT:none\" COLSPAN=1><INPUT ONCLICK=\"VerifyPromoCode("+fTotal+","+fShipping+","+((fTax>0)?TaxRate:false)+")\" TYPE=\"BUTTON\" VALUE=\"VERIFY\" /></TD>";strOutput+="<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B ID=\"nopcartpromoamount\">"+MonetarySymbol+" 0.00</B></TD>";strOutput+="</TR>";if(DisplayShippingRow){strOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSHIP+"</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 ID=\"nopcarttaxamount\" >"+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 ID=\"nopcarttotalvalue\">"+MonetarySymbol+moneyFormat((fTotal+fShipping+fTax))+"</B></TD>";strOutput+="</TR>";strOutput+="</TABLE>";if(PaymentProcessor=='an'){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'){strOutput+="<input type=hidden name=\"desc\" value=\""+strPP+"\">";strOutput+="<input type=hidden name=\"amount\" value=\""+moneyFormat((fTotal+fShipping+fTax))+"\">";}else if(PaymentProcessor=='lp'){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{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+"\" id=\"hiddenTaxAmt\" >";strOutput+="<input type=hidden name=\""+OutputOrderTotal+"\"    value=\""+MonetarySymbol+moneyFormat((fTotal+fShipping+fTax))+"\" id=\"hiddenOrderTotal\" >";strOutput+="<input type=hidden name=\""+OutputCouponCode+"\"    value=\"\" id=\"hiddenCouponCode\">";strOutput+="<input type=hidden name=\""+OutputCouponCode+"used\"    value=\"\" id=\"hiddenCouponCodeused\">";}}
if(doWrite==true){document.write(strOutput);document.close();}else return strOutput;}













































































































//=====================================================================||
//               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                                     ||
//=====================================================================||




























































































































































