//nopERcart Version 2008-02-18 -- readable copy at http://ereimer.net/nopercart.htm
//(c) 2007,2008 NopDesign.com, Stefko, Eugene Reimer.
if(typeof strSorry=="undefined"){strSorry="I'm Sorry, your cart is full;  please proceed to checkout.";strAdded="Added to your shopping cart:";strAddedQuantity="Quantity: ";strAddedProduct="Product:  ";strRemove="Click 'OK' to remove this product from your shopping cart.";strILabel="Product ID &nbsp; &nbsp; ";strDLabel="Product Name";strQLabel="Qty";strPLabel="Price";strWLabel="Weight";strZLabel="Size";strALabel="Amount";strRLabel="&nbsp;";strRButton="Remove from Cart";strMButton="More Info";strLButton="Less Info";strSUB="SUBTOTAL";strWTSZTOT="PACKAGE ATTRIBUTES";strSHIP="SHIPPING";strTAX="TAX";strTOT="TOTAL";strErrQty="Invalid Quantity.";strNewQty="Please enter new quantity:";strSHIPPINGZONE="SHIPPING<BR>ZONE";strTAXABLEREGION="TAXABLE<BR>REGION";strEA="/ea";strCartEmpty="Your cart is empty";strAsMultiple="as multiple packages:";strAsSingle="as-one:";strBroken="our shipping-calculator is broken; please inform our webmaster";strTotalNaN="Your browser's javascript appears to be broken; another browser may help; a reboot may help; if problem persists, please inform our webmaster";strINCLUDEDINTOTAL="Included in Total";Language="en";}
OutputItemId="ID_";OutputItemQuantity="QUANTITY_";OutputItemPrice="PRICE_";OutputItemName="NAME_";OutputItemWeight="WEIGHT_";OutputItemLength="LENGTH_";OutputItemWidth="WIDTH_";OutputItemHeight="HEIGHT_";OutputOrderZone="SHIPZONE";OutputOrderRegion="TAXREGION";OutputOrderSubtotal="SUBTOTAL";OutputOrderShipping="SHIPPING";OutputOrderTax="TAX";OutputOrderTotal="TOTAL";AppendItemNumToOutput=true;CartID="";Debug=0;function DEBUG(str){if(Debug)alert(str);}
function DEBUG1(str){if(Debug&1)alert(str);}
function DEBUG2(str){if(Debug&2)alert(str);}
function DEBUG4(str){if(Debug&4)alert(str);}
function DEBUG8(str){if(Debug&8)alert(str);}
function DEBUG16(str){if(Debug&16)alert(str);}
MoneySymbol="$";DisplayPopupOnAdd=false;DisplayPopupOnRemove=false;DisplayChangeQty=false;DisplayWtColumn=false;DisplaySzColumn=false;DynamicWtSzColumns=3;WTUNITS="g";SZUNITS="cm";WTROUND=1;SZROUND=10;MoneyPLACES=2;DisplayPkgAttrRow=true;DisplayShippingRow=true;DisplayTaxRow=false;DisplayTaxIncluded=false;TaxNames=["PST","GST"];TaxRate=0;TaxRateRegional=0;RegionTable=["Manitoba Resident","Other Canadian","Other Country"];RegionFromZone=[[0,1],[2],[2]];RegionDefault=0;RegionPrompt="Please indicate whether you are a resident of Manitoba for tax purposes, before continuing";DefaultDonation=25;MinimumDonation=3.50;MinimumDonationPrompt="We're sorry but we're unable to accept a donation of less than 3.50 via PayPal; we accept arbitrarily small donations via CanadaHelps";MinimumOrder=0.01;MinimumOrderPrompt="Your cart is empty; please order something before checking out.";PrefDonation="nDO";PrefNeitherTax="n";PrefRegionalOnly="p";PrefNationalOnly="g";gcCurrency="USD";ppNotesOnItem=true;PaymentProcessor="pp";PaymentProcessor2="cgi";ShipTable=[];ShipTable[0]=new ShipEntry("Within Canada",[]);ShipTable[1]=new ShipEntry("To USA",[]);ShipTable[2]=new ShipEntry("Australia",[]);ShipTable[0].pkginfo[0]=new PkgClass(100.0,new Size(33.6,23.4,1.8),1.15,0.00,1,"");ShipTable[0].pkginfo[1]=new PkgClass(200.0,new Size(33.6,23.4,1.8),1.92,0.00,1,"");ShipTable[0].pkginfo[2]=new PkgClass(500.0,new Size(33.6,23.4,1.8),2.65,0.00,1,"*");ShipTable[0].pkginfo[3]=new PkgClass(999999,new Size(33.6,23.4,999.9),10.63,0.724,500,"");ShipTable[1].pkginfo[0]=new PkgClass(100.0,new Size(33.6,23.4,1.8),1.92,0.00,1,"");ShipTable[1].pkginfo[1]=new PkgClass(200.0,new Size(33.6,23.4,1.8),3.20,0.00,1,"");ShipTable[1].pkginfo[2]=new PkgClass(250.0,new Size(33.6,23.4,1.8),3.98,0.00,1,"");ShipTable[1].pkginfo[3]=new PkgClass(500.0,new Size(33.6,23.4,1.8),6.40,0.00,1,"");ShipTable[1].pkginfo[4]=new PkgClass(1000.0,new Size(33.6,23.4,33.0),10.72,0.00,1,"*");ShipTable[1].pkginfo[5]=new PkgClass(999999,new Size(33.6,23.4,999.9),14.10,1.594,500,"");ShipTable[2].pkginfo[0]=new PkgClass(100.0,new Size(33.6,23.4,1.8),3.75,0.00,1,"");ShipTable[2].pkginfo[1]=new PkgClass(200.0,new Size(33.6,23.4,1.8),6.40,0.00,1,"");ShipTable[2].pkginfo[2]=new PkgClass(250.0,new Size(33.6,23.4,1.8),7.53,0.00,1,"");ShipTable[2].pkginfo[3]=new PkgClass(500.0,new Size(33.6,23.4,1.8),12.80,0.00,1,"");ShipTable[2].pkginfo[4]=new PkgClass(1000.0,new Size(33.6,23.4,33.0),13.10,0.00,1,"");ShipTable[2].pkginfo[5]=new PkgClass(2000.0,new Size(33.6,23.4,33.0),19.24,0.00,1,"*");ShipTable[2].pkginfo[6]=new PkgClass(999999,new Size(33.6,23.4,999.9),29.51,3.849,500,"");ZoneDefault=2;ZonePrompt="";ShipTaxRate=0.05;ShipTaxName="";HandlingChargePerOrder=0.50;HandlingChargePerExtraPackage=0.50;PackTable=[];itmca=new Size(32.0,23.00,0.3);itmbk=new Size(23.0,15.00,1.2);itmdv=new Size(15.0,13.00,0.6);itmlg=new Size(11.5,8.00,1.8);itmsm=new Size(8.0,5.75,1.8);PKG2=new Size(32.0,23.00,1.8);packByWt=[];packByWt[0]=new PackingRule([itmsm],[2],itmlg);packByWt[1]=new PackingRule([itmbk,itmdv,itmlg],[1,3,1],PKG2);packByWt[2]=new PackingRule([itmbk,itmdv,itmlg],[1,1,4],PKG2);packByWt[3]=new PackingRule([itmdv,itmlg],[6,2],PKG2);packByWt[4]=new PackingRule([itmdv,itmlg],[3,5],PKG2);packByWt[5]=new PackingRule([itmlg],[8],PKG2);packByWt[6]=new PackingRule([itmbk,itmdv,itmca],[1,1,1],PKG2);packByWt[7]=new PackingRule([itmdv,itmca],[4,2],PKG2);packByWt[8]=new PackingRule([itmdv,itmca],[2,3],PKG2);packByWt[8]=new PackingRule([itmdv,itmca],[1,4],PKG2);PackTable[0]=packByWt;PackTable[1]=packByWt;PackTable[2]=packByWt;var PkgQueue=null;var PkgAsOne=null;var sComputeShippingNote="";var gVat=0;function PrefEQ(A,B){return A.substring(0,B.length)==B;}
function NumberZ(s){var N=Number(s);if(isNaN(N))N=0;return(N);}
function Integer(s){return Math.round(NumberZ(s));}
MoneyROUND_FRA=Math.pow(10,+MoneyPLACES);MoneyROUND_NOF=Math.pow(10,-MoneyPLACES);function CentsFRA(f){return Math.round(f*MoneyROUND_FRA)/MoneyROUND_FRA;}
function CentsNOF(f){return Math.round(f/MoneyROUND_NOF)*MoneyROUND_NOF;}
Cents=(MoneyPLACES>0?CentsFRA:CentsNOF);function WtRndUP(x){return Math.ceil(x*WTROUND)/WTROUND;}
function WtRnd(x){return Math.round(x*WTROUND)/WTROUND;}
function SzRnd(x){return Math.round(x*SZROUND)/SZROUND;}
function Element(E,S){for(var e=S.length;e--;)if(E==S[e])return true;return false;}
while(PackTable.length<ShipTable.length)PackTable.push([]);if(RegionFromZone.length&&RegionFromZone.length<ShipTable.length)DEBUG("RegionFromZone must have as many entries as ShipTable");X=[];for(Z=ShipTable.length;Z--;)X[Z]=false;for(Z=RegionFromZone.length;Z--;)X[Z]=(RegionFromZone[Z].length==1);RegionFromZoneOvA=X;X=0;Z=RegionFromZone.length;if(Z>0){X=1;while(Z--)X&=RegionFromZoneOvA[Z];}RegionFromZoneOverrides=X;if(RegionFromZone.length){X=[];for(R=0;R<RegionTable.length;++R)X.push(R);while(RegionFromZone.length<ShipTable.length)RegionFromZone.push(X);}
function ShipEntry(zone,pkginfo){this.zone=zone;this.pkginfo=pkginfo;}
function PkgClass(weight,size,costfixed,costperwtunit,wtunit,flag){this.weight=weight;this.size=size;this.costfixed=costfixed;this.costperwtunit=costperwtunit;this.wtunit=wtunit;this.flag=flag;}
function PackingRule(itmsizeinfo,itmqtyinfo,pkgsize){this.itmsizeinfo=itmsizeinfo;this.itmqtyinfo=itmqtyinfo;this.pkgsize=pkgsize;}
function Size(Length,width,height){this.Length=NumberZ(Length);this.width=NumberZ(width);this.height=NumberZ(height);}
function Qszwt(qty,size,weighteach){this.qty=Integer(qty);this.size=size;this.weight=NumberZ(weighteach)*qty;this.wt=[];for(var w=0;w<qty;++w)this.wt[w]=NumberZ(weighteach);}
function SizeStr(size){return(size.Length+"x"+size.width+"x"+size.height);}
function SizeVolume(size){return(size.Length*size.width*size.height);}
function SizeEQ(size1,size2){return(size1.Length==size2.Length&&size1.width==size2.width&&size1.height==size2.height);}
function InitPkgQueue(){PkgQueue=[];}
function AddPkgQueueEntry(qty,size,weighteach){for(var i=0;i<PkgQueue.length;++i)if(SizeEQ(PkgQueue[i].size,size)){PkgQueue[i].qty+=Integer(qty);PkgQueue[i].weight+=NumberZ(weighteach)*Integer(qty);for(var w=0;w<qty;++w)PkgQueue[i].wt.push(NumberZ(weighteach));return;}
PkgQueue.push(new Qszwt(qty,size,weighteach));}
function RemovePkgQueueEntry(i){PkgQueue.splice(i,1);}
function ShowPkgQueue(){var str="";for(var i=0;i<PkgQueue.length;++i){str+="qty:"+PkgQueue[i].qty+"; sz:"+SizeStr(PkgQueue[i].size)+"; wt:"+Math.round(PkgQueue[i].weight)+" [";for(var w=0;w<PkgQueue[i].qty;++w)str+=Math.round(PkgQueue[i].wt[w])+" ";str+="]\n";}
return str;}
function PickAndApplyPackingRule(PackingRule){var SZ=null;var P=null;var bestGoodness=0;for(var i=0;i<PkgQueue.length;++i){var sz=PkgQueue[i].size,p=null,ct=0;for(var r=0;r<PackingRule.length;++r)for(var e=0;e<PackingRule[r].itmsizeinfo.length;++e)if(SizeEQ(PackingRule[r].itmsizeinfo[e],sz)){p=r;++ct;break;}
if(ct==1){SZ=sz;P=p;break;}
}
if(SZ==null){var minRV=99999999;for(var r=0;r<PackingRule.length;++r){var RV=SizeVolume(PackingRule[r].pkgsize);if(RV<minRV)minRV=RV;}
for(var r=0;r<PackingRule.length;++r){var MV=0;for(var e=0;e<PackingRule[r].itmsizeinfo.length;++e)for(var i=0;i<PkgQueue.length;++i)if(SizeEQ(PackingRule[r].itmsizeinfo[e],PkgQueue[i].size)){MV+=SizeVolume(PkgQueue[i].size)*Math.min(PkgQueue[i].qty,PackingRule[r].itmqtyinfo[e]);}
var RV=SizeVolume(PackingRule[r].pkgsize),relRV=RV/minRV;var VE=MV/RV;var g=VE/relRV;if(g>bestGoodness){P=r;bestGoodness=g;}
}
}
if(P==null)return false;if(SZ!=null)sRule="PackingRule["+P+"] is ONLY rule for sz:"+SizeStr(SZ)+"\n";else sRule="PackingRule["+P+"] is BEST g:"+Math.round(bestGoodness*1000)/1000+"\n";sRules+=sRule;var wei=0;for(var e=0;e<PackingRule[P].itmsizeinfo.length;++e)for(var i=0;i<PkgQueue.length;++i)if(SizeEQ(PackingRule[P].itmsizeinfo[e],PkgQueue[i].size)){var Q=Math.min(PkgQueue[i].qty,PackingRule[P].itmqtyinfo[e]);for(w=0;w<Q;++w){wei+=PkgQueue[i].wt[w];PkgQueue[i].weight-=PkgQueue[i].wt[w];}
PkgQueue[i].qty-=Q;if(PkgQueue[i].qty==0)RemovePkgQueueEntry(i);else PkgQueue[i].wt.splice(0,Q);}
AddPkgQueueEntry(1,PackingRule[P].pkgsize,wei);return true;}
sRule="";sRules="";function ComputePackageSize(ZoneParam){DEBUG2(ShowPkgQueue());var PR=PackTable[ZoneParam];if(PR.length>0){sRules="Zone:"+ShipTable[ZoneParam].zone+"\n";while((PkgQueue.length>1||(PkgQueue.length==1&&PkgQueue[0].qty>1))&&PickAndApplyPackingRule(PR))DEBUG2(sRule+ShowPkgQueue());DEBUG1(sRules+"Packages:\n"+ShowPkgQueue());}
var thk=0,len=0,wid=0,wei=0;for(var i=0;i<PkgQueue.length;++i){if(PkgQueue[i].size.Length>len)len=PkgQueue[i].size.Length;if(PkgQueue[i].size.width>wid)wid=PkgQueue[i].size.width;thk+=PkgQueue[i].size.height*PkgQueue[i].qty;wei+=PkgQueue[i].weight;}
PkgAsOne=new Qszwt(1,new Size(len,wid,SzRnd(thk)),WtRndUP(wei));}
function ComputeShipping(ZoneParam){sComputeShippingNote="";if(PkgAsOne.weight==0&&PkgAsOne.size.height==0)return 0.00;var Ship=ShipTable[ZoneParam].pkginfo;function PricePkg(Ship,weight,height){for(var c=0;c<Ship.length;++c)if(weight<=Ship[c].weight&&height<=Ship[c].size.height)
{return Cents(Ship[c].costfixed+Ship[c].costperwtunit*Math.ceil(weight/Ship[c].wtunit));}
return 99999.99;}
var asOne=PricePkg(Ship,PkgAsOne.weight,PkgAsOne.size.height);var asMult=99999.99,FC=null,iN=0;for(var c=0;c<Ship.length;++c)if(Ship[c].flag=="*")FC=c;if(FC!=null){var maxHt=Ship[FC].size.height;var maxWt=Ship[FC].weight;var accHt=0,accWt=0,sW="";function R(f){return " "+Math.ceil(f)+WTUNITS;}
asMult=0;for(var i=PkgQueue.length;i--;)for(var j=PkgQueue[i].qty;j--;){var Wt=PkgQueue[i].wt[j];var Ht=PkgQueue[i].size.height;if(Wt>maxWt||Ht>maxHt){asMult=99999.99;break;}
if(accWt+Wt>maxWt||accHt+Ht>maxHt){asMult+=PricePkg(Ship,accWt,accHt);++iN;sW+=R(accWt);accHt=0;accWt=0;}
accWt+=Wt;accHt+=Ht;}
if(accWt+accHt){asMult+=PricePkg(Ship,accWt,accHt);++iN;sW+=R(accWt);}
}
var asOneVat=Cents(asOne*ShipTaxRate);var asMultVat=Cents(asMult*ShipTaxRate);asOne+=asOneVat+HandlingChargePerOrder;asMult+=asMultVat+HandlingChargePerOrder+(iN-1)*HandlingChargePerExtraPackage;var cost;if(asOne<=asMult){cost=asOne;gVat=asOneVat;}else{cost=asMult;gVat=asMultVat;if(strAsMultiple)sComputeShippingNote="("+strAsMultiple+sW+(strAsSingle?"; "+strAsSingle+MoneySymbol+moneyFormat(asOne):"")+")";}
if(cost>=99999){sComputeShippingNote=strBroken;return 99999.99;}
return cost;}
function NewZone(ZoneParam){SetCookie("ZoneSelected",ZoneParam,null,"/");var RegionCookie=iGetCookie("RegionSelected");if(RegionCookie!=null&&RegionFromZone.length&&!Element(RegionCookie,RegionFromZone[ZoneParam]))DeleteCookie("RegionSelected","/");location.href=location.href;}
function NewRegion(RegionParam){SetCookie("RegionSelected",RegionParam,null,"/");var ZoneCookie=iGetCookie("ZoneSelected");if(ZoneCookie!=null&&RegionFromZone.length&&!Element(RegionParam,RegionFromZone[ZoneCookie]))DeleteCookie("ZoneSelected","/");location.href=location.href;}
function MoreLessInfo(){var MoreState=iGetCookie("MoreState");if(MoreState==null)MoreState=(DisplayWtColumn?1:0)*2+(DisplaySzColumn?1:0);MoreState=((MoreState&DynamicWtSzColumns)==DynamicWtSzColumns?0:DynamicWtSzColumns);SetCookie("MoreState",MoreState,null,"/");location.href=location.href;}
function NumberV(checkString){var sNewString="",K=0;for(var i=0;i<checkString.length;++i){ch=checkString.substring(i,i+1);if(ch>="0"&&ch<="9")sNewString+=ch;else if(ch=="."&&++K==1)sNewString+=ch;}
return(NumberZ(sNewString));}
function CKquantity(checkString){var N=Integer(NumberV(checkString));if(N==0)N=1;return(""+N);}
function CKprice(checkString){var N=Cents(NumberV(checkString));if(N==0)N=DefaultDonation;else if(N<MinimumDonation){N=MinimumDonation;alert(MinimumDonationPrompt);}
return(moneyFormat(N));}
function AddToCart(thisForm){var iNumberOrdered=0;var bAlreadyInCart=false;var notice="";var ELE,ATR;ELE=thisForm;sID="";if(ATR=ELE._ID||ELE.ID||ELE.ID_NUM)sID=ATR.value;sQUANTITY="1";if(ATR=ELE._QUANTITY||ELE.QUANTITY)sQUANTITY=ATR.value;sPRICE="0.00";if(ATR=ELE._PRICE||ELE.PRICE)sPRICE=ATR.value;sNAME="";if(ATR=ELE._NAME||ELE.NAME)sNAME=ATR.value;sWEIGHT="0";if(ATR=ELE._WEIGHT||ELE.WEIGHT)sWEIGHT=ATR.value;sLENGTH="0";if(ATR=ELE._LENGTH||ELE.LENGTH)sLENGTH=ATR.value;sWIDTH="0";if(ATR=ELE._WIDTH||ELE.WIDTH)sWIDTH=ATR.value;sHEIGHT="0";if(ATR=ELE._HEIGHT||ELE.HEIGHT)sHEIGHT=ATR.value;sPROMPT="";for(var i=0;i<thisForm.elements.length;++i){ELE=thisForm.elements[i];if(ELE.type!="hidden")continue;if(ATR=ELE.getAttribute("_ID")||ELE.getAttribute("ID_NUM"))sID=ATR;if(ATR=ELE.getAttribute("_QUANTITY")||ELE.getAttribute("QUANTITY"))sQUANTITY=ATR;if(ATR=ELE.getAttribute("_PRICE")||ELE.getAttribute("PRICE"))sPRICE=ATR;if(ATR=ELE.getAttribute("_NAME"))sNAME=ATR;if(ATR=ELE.getAttribute("_WEIGHT")||ELE.getAttribute("WEIGHT"))sWEIGHT=ATR;if(ATR=ELE.getAttribute("_LENGTH")||ELE.getAttribute("LENGTH"))sLENGTH=ATR;if(ATR=ELE.getAttribute("_WIDTH"))sWIDTH=ATR;if(ATR=ELE.getAttribute("_HEIGHT"))sHEIGHT=ATR;}
for(var N=0;N<=2;++N)for(var n=0;n<=9;++n){var selname=["ADDITIONALINFO","USERCHOICE","_USERCHOICE"][N]+(n?n:"");var selector=thisForm[selname];if(selector==null)continue;if(typeof selector.selectedIndex=="undefined"){for(var i=0;i<selector.length;++i)if(selector[i].checked)ELE=selector[i];}else{ELE=selector[selector.selectedIndex];}
function NewStr(OLD,NEW){return(NEW.substring(0,1)=="+"?OLD+NEW.substring(1,NEW.length):NEW);}
function NewNum(OLD,NEW){return ""+(NEW.substring(0,1)=="+"?NumberZ(OLD)+NumberZ(NEW.substring(1,NEW.length)):NEW);}
if(ATR=ELE.getAttribute("_ID")||ELE.getAttribute("ID"))sID=NewStr(sID,ATR);else if(ATR=ELE.getAttribute("ID_NUM"))sID=NewStr(sID,ATR);if(ATR=ELE.getAttribute("_QUANTITY")||ELE.getAttribute("QUANTITY"))sQUANTITY=NewNum(sQUANTITY,ATR);if(ATR=ELE.getAttribute("_PRICE")||ELE.getAttribute("PRICE"))sPRICE=NewNum(sPRICE,ATR);if(ATR=ELE.getAttribute("_NAME"))sNAME=NewStr(sNAME,ATR);else if(ATR=ELE.value)sNAME+=" "+ATR;else if(ATR=ELE.getAttribute("NAME"))sNAME=NewStr(sNAME,ATR);if(ATR=ELE.getAttribute("_WEIGHT")||ELE.getAttribute("WEIGHT"))sWEIGHT=NewNum(sWEIGHT,ATR);if(ATR=ELE.getAttribute("_LENGTH")||ELE.getAttribute("LENGTH"))sLENGTH=NewNum(sLENGTH,ATR);if(ATR=ELE.getAttribute("_WIDTH")||ELE.getAttribute("WIDTH"))sWIDTH=NewNum(sWIDTH,ATR);if(ATR=ELE.getAttribute("_HEIGHT")||ELE.getAttribute("HEIGHT"))sHEIGHT=NewNum(sHEIGHT,ATR);if(ATR=ELE.getAttribute("_PROMPT")||ELE.getAttribute("PROMPT"))sPROMPT+=(sPROMPT?"; ":"")+ATR;}
if(sID+sNAME==""&&sPROMPT=="")sPrompt="Please select an option";if(sPROMPT!=""){alert(sPROMPT);return false;}
if(PrefEQ(sID,PrefDonation))sPRICE=CKprice(sPRICE);if(ATR=thisForm.USERTEXT){if(ATR.value)sNAME+="; "+ATR.value;}
else if(ATR=thisForm.USERENTRY){if(ATR.value)sNAME+="; "+ATR.value;}
iNumberOrdered=iGetCookie("NumberOrdered",0);for(var i=1;i<=iNumberOrdered;++i){GetRow(i);if(fields[0]==sID&&fields[3]==sNAME&&(fields[2]==sPRICE||!PrefEQ(sID,PrefDonation))){bAlreadyInCart=true;if(PrefEQ(sID,PrefDonation)){dbUpdatedOrder=sID+"|"+sQUANTITY+"|"+(Number(sPRICE)+Number(fields[2]))+"|"+sNAME+"|"+sWEIGHT+"|"+sLENGTH+"|"+sWIDTH+"|"+sHEIGHT;}else{dbUpdatedOrder=sID+"|"+(Integer(sQUANTITY)+Integer(fields[1]))+"|"+sPRICE+"|"+sNAME+"|"+sWEIGHT+"|"+sLENGTH+"|"+sWIDTH+"|"+sHEIGHT;}
sNewOrder="Order."+i;DeleteCookie(sNewOrder,"/");SetCookie(sNewOrder,dbUpdatedOrder,null,"/");notice=strAdded+"\n-------------------------------------\n"+strAddedQuantity+sQUANTITY+"\n"+strAddedProduct+sNAME;break;}
}
if(!bAlreadyInCart){iNumberOrdered++;if(iNumberOrdered>15)alert(strSorry);else{dbUpdatedOrder=sID+"|"+sQUANTITY+"|"+sPRICE+"|"+sNAME+"|"+sWEIGHT+"|"+sLENGTH+"|"+sWIDTH+"|"+sHEIGHT;sNewOrder="Order."+iNumberOrdered;SetCookie(sNewOrder,dbUpdatedOrder,null,"/");SetCookie("NumberOrdered",iNumberOrdered,null,"/");notice=strAdded+"\n-------------------------------------\n"+strAddedQuantity+sQUANTITY+"\n"+strAddedProduct+sNAME;}
}
if(DisplayPopupOnAdd&&notice!="")alert(notice);return true;}
function moneyFormatFRA(input){var cents=""+Math.round(input*MoneyROUND_FRA);while(cents.length<MoneyPLACES+1)cents="0"+cents;return cents.substring(0,cents.length-MoneyPLACES)+"."+cents.substring(cents.length-MoneyPLACES,cents.length);}
function moneyFormatNOF(input){return ""+Cents(input);}
moneyFormat=(MoneyPLACES>0?moneyFormatFRA:moneyFormatNOF);function SetCookie(name,value,expires,path,domain,secure){document.cookie=CartID+name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+path:"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");}
function DeleteCookie(name,path,domain){if(GetCookie(name)){document.cookie=CartID+name+"="+((path)?"; path="+path:"")+((domain)?"; domain="+domain:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";}
}
function getCookieVal(offset){var endstr=document.cookie.indexOf(";",offset);if(endstr==-1)endstr=document.cookie.length;return unescape(document.cookie.substring(offset,endstr));}
function GetCookie(name){var arg=CartID+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 iGetCookie(name,DEF){if(DEF==null)DEF=null;var r=GetCookie(name);return(r==null?DEF:Integer(r));}
function GetRow(i){RowKey="Order."+i;dbrow="";dbrow=GetCookie(RowKey);Token0=dbrow.indexOf("|",0);Token1=dbrow.indexOf("|",Token0+1);Token2=dbrow.indexOf("|",Token1+1);Token3=dbrow.indexOf("|",Token2+1);Token4=dbrow.indexOf("|",Token3+1);Token5=dbrow.indexOf("|",Token4+1);Token6=dbrow.indexOf("|",Token5+1);fields=[];fields[0]=dbrow.substring(0,Token0);fields[1]=dbrow.substring(Token0+1,Token1);fields[2]=dbrow.substring(Token1+1,Token2);fields[3]=dbrow.substring(Token2+1,Token3);fields[4]=dbrow.substring(Token3+1,Token4);fields[5]=dbrow.substring(Token4+1,Token5);fields[6]=dbrow.substring(Token5+1,Token6);fields[7]=dbrow.substring(Token6+1,dbrow.length);}
function RemoveFromCart(RemOrder){if((DisplayPopupOnRemove?confirm(strRemove):true)){NumberOrdered=iGetCookie("NumberOrdered",0);for(var 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>0?NumberOrdered-1:0),null,"/");DeleteCookie(NewOrder,"/");location.href=location.href;}
}
function EmptyTheCart(){NumberOrdered=iGetCookie("NumberOrdered",0);for(var i=1;i<=NumberOrdered;++i){NewOrder="Order."+i;DeleteCookie(NewOrder,"/");}
SetCookie("NumberOrdered",0,null,"/");}
function ChangeQuantity(OrderItem,NewQuantity){if(isNaN(NewQuantity)){alert(strErrQty);}else{GetRow(OrderItem);dbUpdatedOrder=fields[0]+"|"+NewQuantity+"|"+fields[2]+"|"+fields[3]+"|"+fields[4]+"|"+fields[5]+"|"+fields[6]+"|"+fields[7];sNewOrder="Order."+OrderItem;DeleteCookie(sNewOrder,"/");SetCookie(sNewOrder,dbUpdatedOrder,null,"/");location.href=location.href;}
}
function ReadCartComputePrices(){var Dig="0123456789",Lwr="abcdefghijklmnopqrstuvwxyz",Upr="ABCDEFGHIJKLMNOPQRSTUVWXYZ",Let=Lwr+Upr;function Is(c,pat){return pat.indexOf(c)!=-1;}
var i,k;var C,G,D,X;function Pparse(priceparm){C=0;G="";D=[];X=[];for(var price=priceparm.split(","),K=0;K<price.length;++K){var T=price[K];if(T.indexOf("=")!=-1){var x=T.split("=");X.push({q:Integer(x[0]),p:NumberZ(x[1])});}
else if(T.indexOf(":")!=-1){var x=T.split(":");D.push({q:Integer(x[0]),p:NumberZ(x[1])});}
else if(Is(T.substring(0,1),Let))G=T;else C=NumberZ(T);}
}
Cart=[];iNumberOrdered=iGetCookie("NumberOrdered",0);for(i=1;i<=iNumberOrdered;++i){GetRow(i);Pparse(fields[2]);Cart[i]={ID:fields[0],QUANTITY:Integer(fields[1]),PRICE:fields[2],NAME:fields[3],WEIGHT:NumberZ(fields[4]),LENGTH:NumberZ(fields[5]),WIDTH:NumberZ(fields[6]),HEIGHT:NumberZ(fields[7]),C:C,G:G,D:D,X:X,PRICEAVG:null
}
}
for(i=1;i<=iNumberOrdered;++i){if(Cart[i].PRICEAVG!=null)continue;C=Cart[i].C;G=Cart[i].G;D=Cart[i].D;X=Cart[i].X;function eEQ(A,B){return A.q==B.q&&A.p==B.p;}
function aEQ(A,B){if(A.length!=B.length)return false;for(var k=A.length;k--;)if(!eEQ(A[k],B[k]))return false;return true;}
function pEQ(A,B){return A.C==B.C&&aEQ(A.D,B.D)&&aEQ(A.X,B.X);}
function str(X){var s="[";for(var i=0;i<X.length;++i)s+="{"+X[i].q+","+X[i].p+"},";s+="]";return s;}
function pp(P){return(P>=0?P:C*(100+P)/100);}
var q=Cart[i].QUANTITY;var Q=q;if(G!="")for(Q=0,k=1;k<=iNumberOrdered;++k)if(Cart[k].G==G)Q+=Cart[k].QUANTITY;var g=[i];if(G!="")for(g=[],k=1;k<=iNumberOrdered;++k)if(Cart[k].G==G)g.push(k);var ix=-1;for(k=X.length;k--;)if(X[k].q<=Q){ix=k;break;}
var id=-1;for(k=D.length;k--;)if(D[k].q<=Q){id=k;break;}
DEBUG4("row:"+i+" itm:"+Cart[i].ID+" PRICE:"+Cart[i].PRICE+" C:"+C+" G:"+G+" X:"+str(X)+" D:"+str(D)+" g:"+g+" ix:"+ix+" id:"+id);if(X.length>0){var m=[];for(k=g.length;k--;)if(!pEQ(Cart[g[k]],Cart[i]))m.push(g[k]);if(m.length>0)DEBUG("group:"+G+" has exact-qty discount but PRICE on row:"+i+" conflicts with rows:"+m);if(m.length>0){for(k=g.length;k--;)Cart[g[k]].PRICEAVG=C;continue;}
}
var A,QQ,q2,I;if(ix!=-1){A=0;QQ=Q;while(Q!=0&&ix!=-1){q2=Math.floor(Q/X[ix].q)*X[ix].q;A+=q2*pp(X[ix].p);Q-=q2;DEBUG4("sell "+q2+" at:"+pp(X[ix].p)+" Q:"+Q);--ix;while(ix>=0&&X[ix].q>Q)--ix;}
if(Q>0)A+=Q*(id!=-1?pp(D[id].p):C);var priceavg=Cents(A/QQ);for(k=g.length;k--;){I=g[k];Cart[I].PRICEAVG=priceavg;}
}else if(id!=-1){var ID,QD=0;for(k=0;k<g.length;++k){I=g[k];A=0;q=Cart[I].QUANTITY;C=Cart[I].C;D=Cart[I].D;if(D.length==0||D[0].q!=1)D.unshift({q:1,p:C});while(q>0){for(ID=0;;++ID)if(ID+1==D.length||QD+1<D[ID+1].q)break;q2=q;if(ID+1<D.length)q2=Math.min(q,D[ID+1].q-1-QD);A+=q2*pp(D[ID].p);QD+=q2;q-=q2;DEBUG4("sell "+q2+" at:"+pp(D[ID].p)+" ID:"+ID+" QD:"+QD);if(q2<=0){DEBUG("ReadCartComputePrices is broken");break;}
}
Cart[I].PRICEAVG=Cents(A/Cart[I].QUANTITY);}
}else{Cart[i].PRICEAVG=Cents(C);}
}
ZoneSelected=iGetCookie("ZoneSelected");ZoneChecked=ZoneSelected;RegionSelected=iGetCookie("RegionSelected");RegionChecked=RegionSelected;if(ZoneSelected==null)ZoneSelected=ZoneDefault;if(RegionFromZone.length&&RegionSelected==null)RegionSelected=RegionFromZone[ZoneSelected][0];if(RegionFromZoneOverrides)RegionSelected=RegionFromZone[ZoneSelected][0];if(ZoneChecked!=null&&RegionFromZoneOvA[ZoneChecked])RegionSelected=RegionFromZone[ZoneChecked][0];if(RegionSelected==null)RegionSelected=RegionDefault;if(RegionFromZone.length&&!Element(RegionSelected,RegionFromZone[ZoneSelected])){if(ZoneChecked!=null||RegionChecked==null){RegionSelected=RegionFromZone[ZoneSelected][0];}else{for(var Z=RegionFromZone.length;Z--;)if(Element(RegionSelected,RegionFromZone[Z]))break;if(Z>=0)ZoneSelected=Z;else DEBUG("RegionFromZone option is invalid");}
}
if(RegionChecked!=null)RegionChecked=RegionSelected;if(ZoneChecked!=null)ZoneChecked=ZoneSelected;if(TaxRateRegional!=0&&RegionPrompt!=""&&!RegionFromZoneOverrides&&!(ZoneChecked!=null&&RegionFromZoneOvA[ZoneChecked])){}
else RegionChecked=RegionSelected;if(ShipTable.length>1&&ZonePrompt!=""){}
else ZoneChecked=ZoneSelected;InitPkgQueue();fTotal=0;fTaxG=0;fTaxP=0;g_TotalQty=0;var taxrateP=TaxRateRegional,taxrateG=TaxRate;if(RegionSelected==0){}
else if(RegionSelected==1){taxrateP=0;}
else{taxrateP=0;taxrateG=0;}
for(i=1;i<=iNumberOrdered;++i){var ProdID=Cart[i].ID,QP=Cart[i].QUANTITY*Cart[i].PRICEAVG,taxP,taxG;if(PrefEQ(ProdID,PrefNeitherTax)){taxP=0;taxG=0;}
else if(PrefEQ(ProdID,PrefRegionalOnly)){taxP=QP*taxrateP;taxG=0;}
else if(PrefEQ(ProdID,PrefNationalOnly)){taxP=0;taxG=QP*taxrateG;}
else{taxP=QP*taxrateP;taxG=QP*taxrateG;}
if(DisplayTaxIncluded){taxP=Cents(taxP);taxG=Cents(taxG);Cart[i].PRICEAVG+=(taxP+taxG)/Cart[i].QUANTITY;}
AddPkgQueueEntry(Cart[i].QUANTITY,new Size(Cart[i].LENGTH,Cart[i].WIDTH,Cart[i].HEIGHT),Cart[i].WEIGHT);fTotal+=QP;fTaxP+=taxP;fTaxG+=taxG;g_TotalQty+=Cart[i].QUANTITY;}
ComputePackageSize(ZoneSelected);fShipping=ComputeShipping(ZoneSelected);fTaxG=Cents(fTaxG);fTaxP=Cents(fTaxP);fTax=fTaxG+fTaxP;if(DisplayTaxIncluded)fTax=0;g_TotalCost=fTotal+fShipping+fTax;}
function AddPaymentProcessorFieldsForOneRow(PP,i){var sN="";if(AppendItemNumToOutput)sN=""+i;var ProdNAME=Cart[i].NAME;if(PP=="an"||PP=="wp"||PP=="lp"){sDescPP+=Cart[i].ID+", "+ProdNAME+", Qty:"+Cart[i].QUANTITY+"\n";}else if(PP=="pp"){var NAME_NOTE=ProdNAME+(i==iNumberOrdered&&ppNotesOnItem?"; "+strSHIP+" "+ShipTable[ZoneSelected].zone+" "+sComputeShippingNote:"");var NAME_NOTE1=NAME_NOTE.substring(0,127);var NAME_NOTE2=NAME_NOTE.substring(127,327);var NAME_NOTE3=NAME_NOTE.substring(327,527);sOutput+="<input type=hidden name=\"item_number_"+sN+"\" value=\""+Cart[i].ID+"\">";sOutput+="<input type=hidden name=\"item_name_"+sN+"\" value=\""+NAME_NOTE1+"\">";sOutput+="<input type=hidden name=\"amount_"+sN+"\" value=\""+moneyFormat(Cart[i].PRICEAVG)+"\">";sOutput+="<input type=hidden name=\"quantity_"+sN+"\" value=\""+Cart[i].QUANTITY+"\">";if(NAME_NOTE2)sOutput+="<input type=hidden name=\"on0_"+sN+"\" value=\""+"Info2"+"\">";if(NAME_NOTE2)sOutput+="<input type=hidden name=\"os0_"+sN+"\" value=\""+NAME_NOTE2+"\">";if(NAME_NOTE3)sOutput+="<input type=hidden name=\"on1_"+sN+"\" value=\""+"Info3"+"\">";if(NAME_NOTE3)sOutput+="<input type=hidden name=\"os1_"+sN+"\" value=\""+NAME_NOTE3+"\">";}else if(PP=="gc"){sOutput+="<input type=hidden name=\"item_name_"+sN+"\" value=\""+Cart[i].ID+"\">";sOutput+="<input type=hidden name=\"item_description_"+sN+"\" value=\""+ProdNAME+"\">";sOutput+="<input type=hidden name=\"item_price_"+sN+"\" value=\""+moneyFormat(Cart[i].PRICEAVG)+"\">";sOutput+="<input type=hidden name=\"item_quantity_"+sN+"\" value=\""+Cart[i].QUANTITY+"\">";sOutput+="<input type=hidden name=\"item_currency_"+sN+"\" value=\""+gcCurrency+"\">";}else if(PP=="cgi"){sOutput+="<input type=hidden name=\""+OutputItemId+sN+"\" value=\""+Cart[i].ID+"\">";sOutput+="<input type=hidden name=\""+OutputItemQuantity+sN+"\" value=\""+Cart[i].QUANTITY+"\">";sOutput+="<input type=hidden name=\""+OutputItemPrice+sN+"\" value=\""+moneyFormat(Cart[i].PRICEAVG)+"\">";sOutput+="<input type=hidden name=\""+OutputItemName+sN+"\" value=\""+Cart[i].NAME+"\">";sOutput+="<input type=hidden name=\""+OutputItemWeight+sN+"\" value=\""+Cart[i].WEIGHT+"\">";sOutput+="<input type=hidden name=\""+OutputItemLength+sN+"\" value=\""+Cart[i].LENGTH+"\">";sOutput+="<input type=hidden name=\""+OutputItemWidth+sN+"\" value=\""+Cart[i].WIDTH+"\">";sOutput+="<input type=hidden name=\""+OutputItemHeight+sN+"\" value=\""+Cart[i].HEIGHT+"\">";}
}
function AddPaymentProcessorFieldsFinal(PP){if(PP=="an"){sOutput+="<input type=hidden name=\"x_Version\"      value=\"3.0\">";sOutput+="<input type=hidden name=\"x_Show_Form\"    value=\"PAYMENT_FORM\">";sOutput+="<input type=hidden name=\"x_Description\"  value=\""+sDescPP+"\">";sOutput+="<input type=hidden name=\"x_Amount\"       value=\""+moneyFormat(fTotal+fShipping+fTax)+"\">";}else if(PP=="wp"){sOutput+="<input type=hidden name=\"desc\"           value=\""+sDescPP+"\">";sOutput+="<input type=hidden name=\"amount\"         value=\""+moneyFormat(fTotal+fShipping+fTax)+"\">";}else if(PP=="lp"){sOutput+="<input type=hidden name=\"mode\"           value=\"fullpay\">";sOutput+="<input type=hidden name=\"chargetotal\"    value=\""+moneyFormat(fTotal+fShipping+fTax)+"\">";sOutput+="<input type=hidden name=\"tax\"            value=\""+MoneySymbol+moneyFormat(fTax)+"\">";sOutput+="<input type=hidden name=\"subtotal\"       value=\""+MoneySymbol+moneyFormat(fTotal)+"\">";sOutput+="<input type=hidden name=\"shipping\"       value=\""+MoneySymbol+moneyFormat(fShipping)+"\">";sOutput+="<input type=hidden name=\"desc\"           value=\""+sDescPP+"\">";}else if(PP=="pp"){var ShpTaxNotes="Shipping+Tax-Notes: "+ShipTable[ZoneSelected].zone+" "+sComputeShippingNote+(TaxRateRegional?" "+RegionTable[RegionSelected]:"");sOutput+="<input type=hidden name=\"cmd\"            value=\"_cart\">";sOutput+="<input type=hidden name=\"upload\"         value=\"1\">";sOutput+="<input type=hidden name=\"custom\"         value=\""+ShpTaxNotes+"\">";sOutput+="<input type=hidden name=\"tax_cart\"       value=\""+moneyFormat(fTax)+"\">";sOutput+="<input type=hidden name=\"handling_cart\"  value=\""+moneyFormat(fShipping)+"\">";sOutput+="<input type=hidden name=\"no_note\"        value=\""+"1"+"\">";}else if(PP=="gc"){if(fTax!=0){var sN=""+(iNumberOrdered+1);sOutput+="<input type=hidden name=\"item_name_"+sN+"\" value=\""+"TAX"+"\">";sOutput+="<input type=hidden name=\"item_description_"+sN+"\" value=\""+"Tax"+(TaxRateRegional?" for "+RegionTable[RegionSelected]:"")+"\">";sOutput+="<input type=hidden name=\"item_price_"+sN+"\" value=\""+moneyFormat(fTax)+"\">";sOutput+="<input type=hidden name=\"item_quantity_"+sN+"\" value=\""+"1"+"\">";sOutput+="<input type=hidden name=\"item_currency_"+sN+"\" value=\""+gcCurrency+"\">";}
sOutput+="<input type=hidden name=\"ship_method_price_1\"     value=\""+moneyFormat(fShipping)+"\">";sOutput+="<input type=hidden name=\"ship_method_currency_1\"  value=\""+gcCurrency+"\">";sOutput+="<input type=hidden name=\"ship_method_name_1\"      value=\""+ShipTable[ZoneSelected].zone+" "+sComputeShippingNote+"\">";sOutput+="<input type=hidden name=\"_charset_\"/>";}else if(PP=="cgi"){sOutput+="<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+MoneySymbol+moneyFormat(fTotal)+"\">";sOutput+="<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+MoneySymbol+moneyFormat(fShipping)+"\">";sOutput+="<input type=hidden name=\""+OutputOrderTax+"\" value=\""+MoneySymbol+moneyFormat(fTax)+"\">";sOutput+="<input type=hidden name=\""+OutputOrderTotal+"\" value=\""+MoneySymbol+moneyFormat(fTotal+fShipping+fTax)+"\">";sOutput+="<input type=hidden name=\""+OutputOrderZone+"\" value=\""+ShipTable[ZoneSelected].zone+" "+sComputeShippingNote+"\">";sOutput+="<input type=hidden name=\""+OutputOrderRegion+"\" value=\""+(TaxRateRegional?RegionTable[RegionSelected]:"")+"\">";}
DEBUG8(sOutput);}
function AddTaxSubtotalLines(INC,COL,BEG,END){if(COL==null)COL=6;if(BEG==null)BEG="<B>";if(END==null)END="</B>";if(TaxNames.length>=2){if(fTaxP)sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN="+COL+">"+BEG+strTAX+"-"+TaxNames[0]+INC+"&nbsp; "+(TaxRateRegional?RegionTable[RegionSelected]:"")+END+"</TD>"+"<TD CLASS=\"noptotal\" ALIGN=RIGHT>"+BEG+MoneySymbol+moneyFormat(fTaxP)+END+"</TD></TR>";if(fTaxG)sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN="+COL+">"+BEG+strTAX+"-"+TaxNames[1]+INC+"&nbsp; "+(TaxRateRegional?RegionTable[RegionSelected]:"")+END+"</TD>"+"<TD CLASS=\"noptotal\" ALIGN=RIGHT>"+BEG+MoneySymbol+moneyFormat(fTaxG)+END+"</TD></TR>";}else{if(fTaxP+fTaxG)sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN="+COL+">"+BEG+strTAX+INC+"&nbsp; "+(TaxRateRegional?RegionTable[RegionSelected]:"")+END+"</TD>"+"<TD CLASS=\"noptotal\" ALIGN=RIGHT>"+BEG+MoneySymbol+moneyFormat(fTaxP+fTaxG)+END+"</TD></TR>";}
}
function ManageCart(){var MoreState=iGetCookie("MoreState");if(MoreState==null)MoreState=(DisplayWtColumn?1:0)*2+(DisplaySzColumn?1:0);ReadCartComputePrices();sDescPP="";sOutput="<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>"+"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+(MoreState&2?strWLabel:"&nbsp;")+"</B></TD>"+"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+(MoreState&1?strZLabel:"&nbsp;")+"</B></TD>"+"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strRLabel+"</B></TD></TR>";if(iNumberOrdered==0)sOutput+="<TR><TD COLSPAN=7 CLASS=\"nopentry\"><CENTER><BR><B>"+strCartEmpty+"</B><BR><BR></CENTER></TD></TR>";for(var i=1;i<=iNumberOrdered;++i){var sCLASS="nopentry";if(Math.round(i/2)==(i/2))sCLASS="nopeven";sOutput+="<TR><TD CLASS=\""+sCLASS+"\" ALIGN=CENTER>"+Cart[i].ID+"</TD>";sOutput+="<TD CLASS=\""+sCLASS+"\">"+Cart[i].NAME+"</TD>";if(DisplayChangeQty)sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=CENTER><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\""+Cart[i].QUANTITY+"\" onChange=\"ChangeQuantity("+i+", this.value);\"></TD>";else sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=CENTER>"+Cart[i].QUANTITY+"</TD>";sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>"+MoneySymbol+moneyFormat(Cart[i].PRICEAVG)+strEA+"</TD>";if(MoreState&2)sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>"+WtRnd(Cart[i].WEIGHT)+WTUNITS+"</TD>";else sOutput+="<TD CLASS=\""+sCLASS+"\"></TD>";if(MoreState&1)sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>&nbsp; "+Cart[i].LENGTH+"x"+Cart[i].WIDTH+"x"+Cart[i].HEIGHT+SZUNITS+"</TD>";else sOutput+="<TD CLASS=\""+sCLASS+"\"></TD>";sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>&nbsp; <input type=button value=\""+strRButton+"\" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD>";sOutput+="</TR>";AddPaymentProcessorFieldsForOneRow(PaymentProcessor,i);}
if(fShipping+fTax!=0){sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=6><B>"+strSUB+"</B></TD>";sOutput+="<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>"+MoneySymbol+moneyFormat(fTotal)+"</B></TD></TR>";}
if(DisplayPkgAttrRow&&(PkgAsOne.weight+PkgAsOne.size.height)&&iNumberOrdered){var MoreLessButton=(MoreState==DynamicWtSzColumns?strLButton:strMButton);var bW=MoreState&2,bw=bW^2,sW="&nbsp; "+PkgAsOne.weight+WTUNITS;var bS=MoreState&1,bs=bS^1,sS="&nbsp; "+SizeStr(PkgAsOne.size)+SZUNITS;if(DynamicWtSzColumns){bw&=DynamicWtSzColumns;bs&=DynamicWtSzColumns;}
sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strWTSZTOT+(bw?sW:"")+(bs?sS:"")+"</B></TD>";sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>"+(bW?sW:"")+"</B></TD>";sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>"+(bS?sS:"")+"</B></TD>";if(DynamicWtSzColumns)sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT>&nbsp; <input type=button value=\""+MoreLessButton+"\" onClick=\"MoreLessInfo()\" class=\"nopbutton\"></TD>";else sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT></TD>";sOutput+="</TR>";}
if(ShipTable.length>1&&(PkgAsOne.weight+PkgAsOne.size.height)&&iNumberOrdered){sOutput+="<TR><TD CLASS=\"nopship\"><B>"+strSHIPPINGZONE+"</B></TD>";sOutput+="<TD CLASS=\"nopship\" COLSPAN=6>";for(var z=0;z<ShipTable.length;z++)sOutput+="<input type=radio name=\"ZONE\" value=\""+z+"\""+(z==ZoneChecked?" checked":"")+" onClick=\"NewZone(this.value)\">"+ShipTable[z].zone+"<br>";sOutput+="</TD></TR>";}
if(DisplayShippingRow&&(PkgAsOne.weight+PkgAsOne.size.height)&&iNumberOrdered){sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=6><B>"+strSHIP+"&nbsp; "+ShipTable[ZoneSelected].zone+"</B>&nbsp;&nbsp;"+sComputeShippingNote+"</TD>";sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>"+MoneySymbol+moneyFormat(fShipping)+"</B></TD></TR>";}
if(TaxRateRegional!=0&&!RegionFromZoneOverrides&&iNumberOrdered){sOutput+="<TR><TD CLASS=\"nopship\"><B>"+strTAXABLEREGION+"</B></TD>";sOutput+="<TD CLASS=\"nopship\" COLSPAN=6>";for(var R=0;R<RegionTable.length;R++)sOutput+="<input type=radio name=\"TAX\" value=\""+R+"\""+(R==RegionChecked?" checked":"")+" onClick=\"NewRegion(this.value)\">"+RegionTable[R]+"<br>";sOutput+="</TD></TR>";}
if(DisplayTaxRow&&iNumberOrdered&&!DisplayTaxIncluded){AddTaxSubtotalLines("");}
sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=6><B>"+strTOT+"</B></TD>";sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>"+MoneySymbol+moneyFormat(fTotal+fShipping+fTax)+"</B></TD></TR>";if(DisplayTaxRow&&iNumberOrdered&&DisplayTaxIncluded){AddTaxSubtotalLines(" "+strINCLUDEDINTOTAL,6,"<i>","</i>");}
if(DisplayTaxRow&&gVat&&RegionSelected<=1&&ShipTaxName!="")sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=6><i>"+ShipTaxName+"</i></TD>"+"<TD CLASS=\"noptotal\" ALIGN=RIGHT>"+MoneySymbol+moneyFormat(gVat)+"</TD></TR>";sOutput+="</TABLE>";AddPaymentProcessorFieldsFinal(PaymentProcessor);document.write(sOutput);document.close();}
function ValidateCart(theForm){if(isNaN(g_TotalCost)){alert(strTotalNaN);return false;}
if(g_TotalCost<MinimumOrder){alert(MinimumOrderPrompt);return false;}
var N=iGetCookie("NumberOrdered",0);if(N==0)return;var ZoneCookie=iGetCookie("ZoneSelected");var RegionCookie=iGetCookie("RegionSelected");if(ZoneCookie==null&&(PkgAsOne.weight+PkgAsOne.size.height)&&ShipTable.length>1&&ZonePrompt!=""){alert(ZonePrompt);return false;}
if(RegionCookie==null&&TaxRateRegional!=0&&RegionPrompt!=""&&!RegionFromZoneOverrides&&!(ZoneCookie!=null&&RegionFromZoneOvA[ZoneCookie])){alert(RegionPrompt);return false;}
return true;}
function CheckoutCart(){ReadCartComputePrices();sDescPP="";sOutput="<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>"+"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strALabel+"</B></TD></TR>";for(var i=1;i<=iNumberOrdered;++i){var sCLASS="nopentry";if(Math.round(i/2)==(i/2))sCLASS="nopeven";sOutput+="<TR><TD CLASS=\""+sCLASS+"\" ALIGN=CENTER>"+Cart[i].ID+"</TD>";sOutput+="<TD CLASS=\""+sCLASS+"\">"+Cart[i].NAME+"</TD>";sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=CENTER>"+Cart[i].QUANTITY+"</TD>";sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>"+MoneySymbol+moneyFormat(Cart[i].PRICEAVG)+strEA+"</TD>";sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>"+MoneySymbol+moneyFormat(Cart[i].QUANTITY*Cart[i].PRICEAVG)+"</TD></TR>";AddPaymentProcessorFieldsForOneRow(PaymentProcessor2,i);}
sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strSUB+"</B></TD>";sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>"+MoneySymbol+moneyFormat(fTotal)+"</B></TD></TR>";if(DisplayShippingRow){sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strSHIP+"&nbsp; "+ShipTable[ZoneSelected].zone+"</B></TD>";sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>"+MoneySymbol+moneyFormat(fShipping)+"</B></TD></TR>";}
if(DisplayTaxRow&&!DisplayTaxIncluded){AddTaxSubtotalLines("",4);}
sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strTOT+"</B></TD>";sOutput+="<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>"+MoneySymbol+moneyFormat(fTotal+fShipping+fTax)+"</B></TD></TR>";if(DisplayTaxRow&&DisplayTaxIncluded){AddTaxSubtotalLines(" "+strINCLUDEDINTOTAL,4,"<i>","</i>");}
if(DisplayTaxRow&&gVat&&RegionSelected<=1&&ShipTaxName!="")sOutput+="<TR><TD CLASS=\"noptotal\" COLSPAN=4><i>"+ShipTaxName+"</i></TD>"+"<TD CLASS=\"noptotal\" ALIGN=RIGHT>"+MoneySymbol+moneyFormat(gVat)+"</TD></TR>";sOutput+="</TABLE>";AddPaymentProcessorFieldsFinal(PaymentProcessor2);document.write(sOutput);document.close();}
function Cart_is_empty(){iNumberOrdered=iGetCookie("NumberOrdered",0);return iNumberOrdered==0;}
function Print_total(){ReadCartComputePrices();document.write(moneyFormat(fTotal));}
function Print_number_items(Verbose){ReadCartComputePrices();sOutput=""+g_TotalQty;if(Verbose)sOutput+=(g_TotalQty==1?" item":" items");document.write(sOutput);}
Print_total_products=Print_number_items;function Print_cart_summary(B1,B2,C){if(B1==null)B1=" item";if(B2==null)B2=" items";if(C==null)C=", at a cost of ";ReadCartComputePrices();sOutput=""+g_TotalQty+(g_TotalQty==1?B1:B2)+C+moneyFormat(fTotal);document.write(sOutput);}

