var blk1 = "https://www.paypal.com/cgi-bin/webscr?cmd=_cart";
var blk1a = "&add=1";
var blk1d = "&display=1";
var blk1u = "&upload=1";
var blk2 = "&business=";
var blk2a = "&quantity=";
var blk2q = 0;
var blk3 = "&item_name=";
var blk3n = "";
var bcode = "";
var blkcc = "";
var blkhn = ""; // item handling charges
var blksh = ""; // item shipping charges
var bmisc = ""; // stuff not supported anywhere else
var op1n = ""; // option name and value
var op1v = "";
var op2n = "";
var op2v = "";
var blk4 = "&amount=";
var blk4a = "6.66";
var imgx = "dummy.jpg"; // place for cart thumbnail image
var winpar = "scrollbars,location,resizable,status,menubar,toolbar";
var cartwin;
var cmax = 15; // max items in cart
var cats = 5; // max number of categories allowed
var pcat = 0; // item product category
var ctot = new Object (); // amt & qty totals by pcat
var stax = 0; // regional (state) tax percent
var ttxt = ""; // tax text.
var ttax = 0;
var thnd = 0; // item specific handling
var tshp = 0; // item specific shipping
var hand; // cart totals
var ship;
var tpkg;
var qtyd;
var tqty = 0; // the total quantity of items ordered
var cook; // place for item cookie object
var tprc = 0; // total price of items in cart
var tozs = 0; // total ounces of order
var bozs = 0; // subtotal for item
var gtot; // order grand total
var insx = 0; // insurance total
var ader = 0; // add a flat cost to an item
var adtx = ""; // text for flat add
var dqty = new Array (); // item discount qty breakpoint
var damt = new Array (); // percent discount
var dn = 0; // number of discount brkpts
var aqty = new Array (); // amount breakpoint
var aamt = new Array (); // price at breakpoint
var an = 0; // number of amt brkpts
var iqty = 0; // minimum item quantity to order
var xqty = 1000000; // maximum item quantity to order
var cdis = 0; // percent coupon discount
var camt = 0; // amount coupon discount
var coupval = ""; // coupon value user entered
var coupons = new Array (); // coupon codes
var couponp = new Array (); // percent discount from coupon
var coupona = new Array (); // amount discount from coupon
var cval = ""; // recorded coupon value
var ctxt = ""; // coupon text
var coup = -1; // cart discount coupon not active
var insu = -1; // flag for insurance
var gwtot = 0; // Gift wrapping total
// cart display options...
var on = 1; // on and off variables
var off = 0;
function AddDesc (strn) { // add to current description
var c = "";
if (strn.length < 1 || strn == " ") return;
if (blk3n.length > 0) c = ", ";
blk3n = blk3n + c + strn;
}
function AddFixed (amt, txt) { // add flat charge to item
ader = ader*1.0 + amt*1.0;
if (txt.length > 0) adtx = adtx + ", " + txt;
}
function AddMisc (strn) { // add extra stuff to PayPal params
var s = "&";
if (strn.substring(0,1) == "&") s = "";
bmisc = bmisc + s + strn;
}
function AddOpt1 (val) { // add to the value in op1v
var c = "";
if (val.length == 0 || val == " ") return;
if (op1n.length == 0) op1n = "opt1";
if (op1v.length > 0) c = ", ";
op1v = op1v + c + val;
}
function AddOpt2 (val) { // add to the value in op2v
var c = "";
if (val.length == 0 || val == " ") return;
if (op2n.length == 0) op2n = "opt2";
if (op2v.length > 0) c = ", ";
op2v = op2v + c + val;
}
function AddPrcnt (strn) { // add a percent to the price
SetPrice (blk4a * (1.0 + strn/100.0)); // add the percent
}
function AddPrice (strn) { // add to current price
blk4a = Dollar (blk4a*1.0 + strn*1.0);
}
function AddWt (ozs) { // set the weight of an item
bozs = ozs*1.0 + bozs*1.0;
}
function CalcInsu (amt) { // calculate insurance on an amount
// it equals $1 + 2%
return (1.00 + 0.02 * amt);
}
function CallView () { // call the local shopping cart view
cartwin = window.open ("cart1.html", "local29", winpar);
// cartwin.focus ();
}
function ChkCoup () { // check for a discount coupon
var i;
coup = -1; // assume the worst
coupons = root.xx_cval.split (",");
couponp = root.xx_cdis.split (",");
coupona = root.xx_camt.split (",");
for (i=0; i<coupons.length; i++) {
if (coupval == coupons[i]) {
coup = 1; // user hit the coupon value
cdis = couponp[i]; // remember the discount percent
camt = coupona[i]; // discount amount
cval = coupval; // remember entered value
if (cdis > 0) {
alert ("Valid coupon number! \n\n" +
cdis + "% discount now in effect.");
ctxt = "COUPON-" + cdis + "%" + cval;
}
if (camt > 0) {
alert ("Valid coupon number! \n\n" +
"$" + camt + " discount now in effect.");
ctxt = "COUPON-$" + camt + "-" + cval;
}
root.cval = cval; // remember entered value
root.coup = coup;
root.cdis = cdis;
root.camt = camt;
root.ctxt = ctxt;
root.xx_coup = off; // suppress display
root.store ();
document.location.reload (); // show the latest info...
return;
}
}
alert ("'" + coupval + "' not a valid code!");
}
function ChkFlg (temp) { // check for special flag chars
var j,tok,val;
var ary = new Array (); // where we break down input
ary = temp.split (" "); // divide on spaces
for (j=0; j<ary.length; j++) {
// first we do single character tokens...
if (ary[j].length < 2) continue;
tok = ary[j].substring (0,1); // first character
val = ary[j].substring (1); // get data
if (tok == "@") SetPrice (parseFloat(val));
if (tok == "+") AddPrice (parseFloat(val));
if (tok == "%") AddPrcnt (parseFloat(val));
if (tok == "#") { // record weight
AddWt (parseFloat(val));
ary[j] = ""; // zap this array element
}
// Now we do 3-character tokens...
if (ary[j].length < 4) continue;
tok = ary[j].substring (0,3); // first 3 chars
val = ary[j].substring (3); // get data
if (tok == "cd=") { // value for part number
SetCode (val);
ary[j] = ""; // clear it out
}
}
return ary.join (" "); // rebuild val with what's left
}
function ChkOpts () { // check if user has selected everything
if (tprc < root.xx_mamt || tqty < root.xx_mqty) { // check minimums
alert ("You have not yet met the minimum order requirements!");
return false;
} else
if (root.xx_chkbx == on && root.chkby == off) { // agree checkbox
alert ('You must agree to terms!');
return false;
} else
if (root.xx_tax == on && ttxt.length == 0) { // tax selection
alert ('Select tax!');
return false;
} else
if (root.xx_ship == on && root.sv0 == 0) { // shipping selection
alert ('Select Shipping!');
return false;
}
return true;
}
function ClearAll () { // wipe out the last entry
blk2q = ""; // quantity
blk3n = ""; // name
blk4a = "0"; // price
bcode = ""; // item number
bmisc = ""; // extra data
blkhn = ""; // item handling charges
blksh = ""; // item shipping charges
op1n = ""; // clear options
op1v = "";
op2n = "";
op2v = "";
imgx = "dummy.jpg";
ader = 0;
adtx = "";
bozs = 0;
dn = 0;
an = 0;
pcat = 0;
iqty = 0; // minimum item quantity
xqty = 1000000; // max item quantity
}
function ClearCart () { // zap all the cookies
var i;
for (i=1; i<cmax; i++) { // the data cookies
ClearEntry (i);
}
}
function ClearEntry (i) { // knock out a specific entry
cook = new Cookie (document, "paycart" + i);
cook.load();
InitData ();
}
function Cookie(document, name, hours, path, domain, secure) {
this.$document = document; // required
this.$name = name; // required
if (hours) this.$expiration =
new Date((new Date()).getTime() + hours * 3600000);
else this.$expiration = null;
// if (path) this.$path = path; else this.$path = null;
this.$path = "/"; // force, for now
if (domain) this.$domain = domain; else this.$domain = null;
if (secure) this.$secure = true; else this.$secure = false;
}
function _Cookie_store() { // store method of cookie object
var cookieval = ""; // clear actual cookie value
for(var prop in this) { // Ignore "$" properties, and methods
if ((prop.charAt(0) == '$') ||
((typeof this[prop]) == 'function'))
continue;
if (cookieval != "") cookieval += '&';
cookieval += prop + ':' + escape(this[prop]);
}
var cookie = this.$name + '=' + cookieval;
if (this.$expiration)
cookie += '; expires=' + this.$expiration.toGMTString();
if (this.$path) cookie += '; path=' + this.$path;
if (this.$domain) cookie += '; domain=' + this.$domain;
if (this.$secure) cookie += '; secure';
if (root.xx_cdmp == on) // cookie diagnostic dump
alert(cookie.length + " chars - " + cookie);
this.$document.cookie = cookie; // store with magic property
}
function _Cookie_load() { // cookie load function
var i;
var allcookies = this.$document.cookie;
if (allcookies == "") return false;
// Now extract just the named cookie from that list.
var start = allcookies.indexOf(this.$name + '=');
if (start == -1) return false; // Cookie not defined for this page.
start += this.$name.length + 1; // Skip name and equals sign.
var end = allcookies.indexOf(';', start);
if (end == -1) end = allcookies.length;
var cookieval = allcookies.substring(start, end);
var a = cookieval.split('&'); // array of name/value pairs.
for(i=0; i < a.length; i++) // Break each pair into an array.
a[i] = a[i].split(':');
for(i=0; i<a.length; i++)
this[a[i][0]] = unescape(a[i][1]);
return true; // We're done, so return the success code.
}
function _Cookie_remove() { // the remove method
var cookie;
cookie = this.$name + '=';
if (this.$path) cookie += '; path=' + this.$path;
if (this.$domain) cookie += '; domain=' + this.$domain;
cookie += '; expires=Fri, 02-Jan-1970 00:00:00 GMT';
this.$document.cookie = cookie; // magic store
}
function Dollar (val) { // force to valid dollar amount
var str,pos,rnd=0;
if (val < .995) rnd = 1; // for old Netscape browsers
str = escape (val*1.0 + 0.005001 + rnd); // float, round, escape
pos = str.indexOf (".");
if (pos > 0) str = str.substring (rnd, pos + 3);
return str;
}
function GetTots (indx) { // return cart totals
root.load(); // get the cookie values
}
function InitData () { // zap a data cookie
cook.pcat = 0;
cook.qty = 0;
cook.cod = "";
cook.ihnd = 0;
cook.des = "";
cook.op1n = ""; // option name and value
cook.op1v = "";
cook.op2n = "";
cook.op2v = "";
cook.prc = 0;
cook.ozs = 0;
cook.imgx = "dummy.jpg";
cook.ader = 0; // add fixed amount
cook.adtx = ""; // text for fixed amount
cook.store(); // stash it off
}
function InitRoot () { // Build the base root cookie
var i;
root.stax = stax; // stuff all base values
root.ttxt = ttxt;
root.coup = coup;
root.cval = cval;
root.ctxt = ctxt;
root.cdis = cdis;
root.camt = camt;
root.chkby = off;
root.gwtot = gwtot;
root.stxt0 = "";
root.insu = insu; // insurance flag
root.qty = 0;
root.tot = 0;
root.xx_bn = "";
root.xx_can = "";
root.xx_cbt = "";
root.xx_cc = off;
root.xx_cdis = "";
root.xx_camt = "";
root.xx_cdmp = off;
root.xx_chkbx= off;
root.xx_coup = off;
root.xx_cper = 0;
root.xx_cur = "USD";
root.xx_dadd = on;
root.xx_id = "";
root.xx_img = off;
root.xx_lc = "US";
root.xx_mamt = 0;
root.xx_mqty = 0;
root.xx_pc = off;
root.xx_prt = on;
root.xx_prtx = off;
root.xx_ret = "";
root.xx_ship = off;
root.xx_siz = on;
root.xx_sty = "";
root.xx_sum = off;
root.xx_tax = off;
root.xx_wt = off;
root.xx_wtent= "oz";
root.xx_wtrup= 10;
for (i=0; i<cats; i++) {
root["hn" + i] = 0; // qty-based handling brkpts
root["qd" + i] = 0; // qty-based percent dis brkpts
root["sn" + i] = 0; // qty-based shipping brkpts
root["pv" + 1] = 0; // cart-quantity charges
root["ad" + i] = 0; // amt-based percent dis brkpts
root["sv" + i] = 0; // amt-based shipping bkpts
root["wv" + i] = 0; // wgt-based shipping bkpts
}
root.store(); // record it all..
}
function LoadTots (obj1) { // get access to cart totals
var i;
for (i=0; i<obj1.length; i++) { // Look in all FORMs
if (obj1[i].ctot) obj1[i].ctot.value = "$" + Dollar (root.tot);
if (obj1[i].cqty) obj1[i].cqty.value = root.qty;
}
}
function PrintCart () { // print out entire cart, and get cart totals
var i,wt,p,tmp1,tmp2,s;
tprc = 0; // total price of cart
tozs = 0; // total ounces of order
gtot = 0; // Grand total
ttax = 0; // total cart tax
tqty = 0; // total qty of items
insx = 0; // insurance amount
thnd = 0; // item specific handling
tshp = 0; // item specific shipping
for (i=0; i<cats; i++) { // init pcat totals
ctot["a" + i] = 0; // amount in this cat
ctot["q" + i] = 0; // quantity in this cat
ctot["h" + i] = 0; // handling in this cat
ctot["s" + i] = 0; // shipping in this cat
ctot["d" + i] = 0; // discount in this cat
ctot["w" + i] = 0; // weight in this cat
}
for (i=1; i<cmax; i++) { // print all entries
cook = new Cookie (document, "paycart" + i);
cook.load();
if (cook.qty > 0) {
PrintItem (i);
}
}
tprc = Dollar (tprc)*1.0; // round, float
hand = 0; // line display totals
ship = 0;
tpkg = 1;
qtyd = 0;
for (p=0; p<cats; p++) { // run product categories
sh = 0; // local pcat tots
ha = 0;
qt = 0;
var q = ctot["q" + p]*1.0; // quantity this category
var a = ctot["a" + p]*1.0; // amount this category
var w = ctot["w" + p]*1.0; // weight this category
if (root.xx_wtent == "gm") // do we fix it?
w = Math.ceil(w / root.xx_wtrup) * root.xx_wtrup;
else
w = Math.ceil(w / 16);
ctot["w" + p] = w; // put back fixed version
if (root["hn" + p] > 0) {
tmp1 = root["hqty" + p].split(",");
tmp2 = root["hamt" + p].split(",");
for (i=root["hn" + p]-1; i>=0; i--) { // run the table
if (q >= tmp1[i]*1.0) { // Check the quantity
ha = tmp2[i]*1.0; // yep, set it
break; // a-dios, mo-fo
}
}
}
ctot["h" + p] = ha;
hand = hand + ha;
if (root["sn" + p] > 0) {
tmp1 = root["sqty" + p].split(",");
tmp2 = root["samt" + p].split(",");
for (i=root["sn" + p]-1; i>=0; i--) { // run the table
if (q >= tmp1[i]*1.0) { // Check the price
sh = tmp2[i]*1.0; // yep, set it
break;
}
}
}
if ((sh == 0) && root["sv" + p] > 0) { // one or the other
tmp1 = root["sval" + p].split(",");
tmp2 = root["schg" + p].split(",");
for (i=root["sv" + p]-1; i>=0; i--) { // run the table (if one)
if (a >= tmp1[i]*1.0) { // Check the price
sh = tmp2[i]*1.0; // yep, set it
break;
}
}
}
if ((sh == 0) && root["pv" + p] > 0) { // only one shipping
tmp1 = root["pval" + p].split(",");
tmp2 = root["pper" + p].split(",");
for (i=root["pv" + p]-1; i>=0; i--) { // run the table (if one)
if (a >= tmp1[i]*1.0) { // Check the price
sh = a * tmp2[i]/100; // yep, set it
break;
}
}
}
if ((sh == 0) && root["wv" + p] > 0) { // only one shipping
tmp1 = root["wval" + p].split(","); // weight based shipping
tmp2 = root["wchg" + p].split(",");
for (i=root["wv" + p]-1; i>=0; i--) { // run the table (if one)
if (w >= tmp1[i]*1.0) { // Check the weight
sh = tmp2[i]*1.0; // yep, set it
break;
}
}
}
ctot["s" + p] = sh;
ship = ship + sh;
if (root["qd" + p] > 0) {
tmp1 = root["qqty" + p].split(","); // qty based, %discount
tmp2 = root["qamt" + p].split(",");
for (i=root["qd" + p]-1; i>=0; i--) {
if (q >= tmp1[i]*1.0) {
qt = a * tmp2[i]/100.0;
break;
}
}
}
if (root["ad" + p] > 0) {
tmp1 = root["aprc" + p].split(","); // amt based, %discount
tmp2 = root["adis" + p].split(",");
for (i=root["ad" + p]-1; i>=0; i--) {
if (a >= tmp1[i]*1.0) {
qt = a * tmp2[i]/100.0;
break;
}
}
}
if (coup > 0) {
qt = qt + a * cdis/100.0; // percent discount
qt = qt + q/tqty * camt; // amount discount
}
ctot["d" + p] = qt;
qtyd = qtyd + qt;
}
if (insu > 0) insx = CalcInsu (tprc - qtyd);
hand = hand + thnd;
ship = ship + tshp;
ttax = Dollar ((tprc + hand + gwtot*tqty - qtyd) * stax/100.0);
gtot = Dollar (tprc + hand + ship + ttax*1.0 + insx
- qtyd + gwtot*tqty);
// record global totals for ref on other pages
root.qty = tqty;
root.tot = gtot;
root.store (); // save it off
}
function PrintItem (i) { // make one entry in cart
var tm,t1,t2,wt;
document.writeln ('<tr valign = "top"');
document.writeln (' align = "right">');
document.writeln (' <td>');
document.writeln (' <img src="trash_can.gif" ');
/*
document.writeln (' <input type = "checkbox" ');
document.writeln (' value = "BOX1"');
*/
document.writeln (' onclick = "ClearEntry (', i, ');');
document.writeln (' document.location.reload ();" />');
document.writeln (' </td>');
document.writeln (' <td align = "right">',
cook.qty,'</td>');
if (root.xx_pc == on) {
document.writeln (' <td align = "right">',
cook.pcat,'</td>');
}
document.writeln (' <td align = "left">',
cook.cod,'</td>');
document.writeln (' <td align = "left">',
cook.des + cook.adtx);
if (cook.ihnd > 0) { // item-specific handling charges
document.writeln (', HND=' + Dollar (cook.ihnd));
thnd = thnd + cook.ihnd*1.0;
}
if (cook.ishp > 0) { // item-specific shipping charges
document.writeln (', SHP=' + Dollar (cook.ishp));
tshp = tshp + cook.ishp * cook.qty;
}
if (cook.op1n.length > 0) { // see if we append stuff
document.writeln (', ' +
cook.op1n + ' ' +
cook.op1v + ' ' +
cook.op2n + ' ' +
cook.op2v);
}
document.writeln ('</td>');
tm = Dollar (cook.prc);
t1 = cook.qty*1.0;
t2 = cook.pcat;
document.writeln (' <td>',
tm,'</td>');
tm = Dollar (t1*cook.prc + cook.ader*1.0);
tprc = tprc*1.0 + tm*1.0;
tqty = tqty + t1;
ctot["a" + t2] = ctot["a" + t2] + tm*1.0;
ctot["q" + t2] = ctot["q" + t2] + t1;
document.writeln (' <td>',
tm,'</td>');
wt = cook.ozs*1.0 * cook.qty;
tozs = tozs + wt;
ctot["w" + t2] = ctot["w" + t2] + wt;
if (root.xx_wt == on) { // do we show weight?
document.writeln (' <td>',
cook.ozs,'</td>');
document.writeln (' <td>',
wt,'</td>');
}
if (root.xx_img == on) { // display images?
document.writeln (' <td align = "center">',
'<img src = "',
cook.imgx,
'" border="0"');
if (root.xx_siz == on)
document.writeln (' width="80" height="80"');
document.writeln (' alt = "Image: Item" />',
'</td>');
}
document.writeln ('</tr>');
}
function ReadForm (obj1, tst) { //get form data for PayPal
var i,j,obj,temp,pos,val,nam3,nam4;
var qty = 0; // default value
var dis = 0; // quantity discount
for (i=0; i<obj1.length; i++) { // run whole form
obj = obj1.elements[i]; // ref particular element
if (obj.name == "tot" || // stkp some junk
obj.name == "cqty" ||
obj.name == "ctot") continue;
nam3 = obj.name.substring (0, 3); // 3-char name (maybe)
nam4 = obj.name.substring (3, 4); // where to store it
if (obj.type == "select-one") { // dropdowns
pos = obj.selectedIndex; // which option selected
val = obj.options[pos].value; // get selection
if (val == "@-1") continue; // skip the crap
if (obj.name == "qty") { // this is the quantity
qty = val; // get user input
if ((qty == "" || qty < 1 || isNaN (qty)) && tst) { // test
alert ("Enter a valid integer quantity!");
return false;
}
} else { // this was not qty
val = ChkFlg (val); // check for flag char
if (nam3 == "opt") { // user says where to store
Where (val, nam4); // stash it
} else {
AddDesc (val); // add to data
}
}
} else
if (obj.type == "select-multiple") { // one or more
for (j=0; j<obj.options.length; j++) { // run all options
if (obj.options[j].selected) {
val = obj.options[j].value;
val = ChkFlg (val); // flag chars?
if (nam3 == "opt") { // user says where to store
Where (val, nam4); // stash it
} else {
AddDesc (val); // add to data
}
}
}
} else
if (obj.type == "checkbox" || // boxes
obj.type == "radio") {
if (obj.checked) { // was selected
val = obj.value;
val = ChkFlg (val); // flag chars?
if (nam3 == "opt") { // user says where to store
Where (val, nam4); // stash it
} else if (val.length > 0) {
AddDesc (val); // add to data
}
}
} else
if (obj.type == "text" ||
obj.type == "textarea") { // user input fields
val = obj.value; // get input
if (obj.name == "qty") { // this is the quantity
qty = val; // get user input
if ((qty == "" || qty < 1 || isNaN (qty)) && tst) { // test
alert ("Enter a valid integer quantity!");
return false;
}
} else {
if (nam3 == "opt") { // user says where to store
Where (val, nam4); // stash it
} else {
AddDesc (val); // add to data
}
}
}
if (tst == false && obj.type == "hidden" && obj.name == "initer") {
val = obj.value;
ChkFlg (val);
}
} // end of loop
if (qty == 0) qty = 1; // make sure we have something
if (qty < iqty && tst) { // minimum items ordered?
alert ("You must order at least " + iqty + " of this item!");
return false;
}
if (qty > xqty && tst) { // maximum items that can be ordered
alert ("You cannot order more than " + xqty + " of this item!");
return false;
}
blk2q = qty; // record for posterity
for (i=an-1; i>=0; i--) { // qty amount?
if (qty >= aqty[i]) { // qty brkpt
SetPrice (aamt[i]); // force it
AddDesc ("AMT");
break; // get out, now
}
}
dis = 0; // any qty discounts?
for (i=dn-1; i>=0; i--) { // run backwards
if (qty >= dqty[i]) { // qty brkpt
dis = damt[i]; // set qty amount
break; // get out, now
}
}
if (dis > 0) { // there is an item discount, here
AddPrcnt (-dis); // apply the discount
AddDesc ("DIS=" + dis + "%"); // mark it
}
if (obj1.tot) obj1.tot.value = "$" + blk4a;
if (tst) {
StoreCart ();
if (root.xx_dadd == off) {
alert("Item has been aded to cart!");
return false; // hide cart display
}
}
return true;
}
function SetAmtDC (pcat, a1, p1) { // set cart amt dis breakpoints
var i,ad;
var aprc = new Array ();
var adis = new Array ();
if (pcat >= cats) { // check him out
alert ("SetAmtDC cat arg too big!");
return;
}
ad = 0; // count of breakpoints
for (i=1; i<arguments.length; i=i+2) {
aprc[ad] = arguments[i]; // price breakpoint
adis[ad] = arguments[i+1]; // discount percent
ad = ad + 1; // number of bkpts
}
root["ad" + pcat] = ad; // stash that bad boy off
root["aprc" + pcat] = aprc;
root["adis" + pcat] = adis;
root.store(); // remember forever...
}
function SetAmtSH (pcat, a1, c1) { // set cart amt shp brkpts
var i,sv;
var sval = new Array ();
var schg = new Array ();
if (pcat >= cats) { // check him out
alert ("SetAmtSH cat arg too big!");
return;
}
sv = 0; // count of breakpoints
for (i=1; i<arguments.length; i=i+2) {
sval[sv] = arguments[i]; // price breakpoint
schg[sv] = arguments[i+1]; // discount amount
sv = sv + 1; // number of bkpts
}
root["sv" + pcat] = sv; // stash that bad boy off
root["sval" + pcat] = sval;
root["schg" + pcat] = schg;
root.store(); // remember forever...
}
function SetCartDC (pcat, q1, c1) { // set cart qty dis breakpoints
var i,qd;
var qqty = new Array ();
var qamt = new Array ();
if (pcat >= cats) { // check him out
alert ("SetCartDC cat arg too big!");
return;
}
qd = 0; // count of breakpoints
for (i=1; i<arguments.length; i=i+2) {
qqty[qd] = arguments[i]; // price breakpoint
qamt[qd] = arguments[i+1]; // discount amount
qd = qd + 1; // number of bkpts
}
root["qd" + pcat] = qd; // stash that bad boy off
root["qqty" + pcat] = qqty;
root["qamt" + pcat] = qamt;
root.store(); // remember forever...
}
function SetCartHN (pcat, q1, c1) { // set cart hand breakpoints
var i,hn;
var hamt = new Array ();
var hqty = new Array ();
if (pcat >= cats) { // check him out
alert ("SetCartHN cat arg too big!");
return;
}
hn = 0; // count of breakpoints
for (i=1; i<arguments.length; i=i+2) {
hqty[hn] = arguments[i]; // price breakpoint
hamt[hn] = arguments[i+1]; // discount amount
hn = hn + 1; // number of bkpts
}
root["hn" + pcat] = hn; // stash that bad boy off
root["hqty" + pcat] = hqty;
root["hamt" + pcat] = hamt;
root.store(); // remember forever...
}
function SetCartSH (pcat, q1, c1) { // set cart shp qty breakpoints
var i,sn;
var sqty = new Array ();
var samt = new Array ();
if (pcat >= cats) { // check him out
alert ("SetCartSH cat arg too big!");
return;
}
sn = 0; // count of breakpoints
for (i=1; i<arguments.length; i=i+2) {
sqty[sn] = arguments[i]; // price breakpoint
samt[sn] = arguments[i+1]; // handling charge
sn = sn + 1; // number of bkpts
}
root["sn" + pcat] = sn; // stash that bad boy off
root["sqty" + pcat] = sqty;
root["samt" + pcat] = samt;
root.store(); // remember forever...
}
function SetCartTX (obj1) { // set cart tax value
var i,pos;
pos = obj1.selectedIndex; // which item selected
stax = obj1.options[pos].value;
ttxt = obj1.options[pos].text;
root.stax = stax;
root.ttxt = ttxt;
root.store(); // remember forever...
document.location.reload (); // show the latest info...
}
function SetCode (cd) { // set product code
bcode = cd;
}
function SetDesc (strn) { // set the desc field
blk3n = strn;
}
function SetFixed (amt, txt) { // set flat charge to item
ader = amt*1.0;
if (txt.length > 0) adtx = ", " + txt;
else adtx = "";
}
function SetHN (amt) { // set item-specific handling charges
blkhn = amt; // set local variable
AddPrice (amt); // add in the price
}
function SetID (strn) { // set the PayPal ID of this user
blk2b = strn;
}
function SetImg (strn) { // set the image for the cart
imgx = strn;
}
function SetOpt1 (nam, val) { // set the value of 1st option
op1n = nam;
op1v = val;
}
function SetOpt2 (nam, val) { // set the value of 2nd option
op2n = nam;
op2v = val;
}
function SetPcat (val) {
if (val >= cats) {
alert ("Only " + cats + " product categories allowed!\n\n" +
"Correct your HTML!");
return;
}
pcat = val;
}
function SetPerSH (pcat, a1, p1) { // % of amt-based shipping brkpts
var i,pv;
var pval = new Array ();
var pper = new Array ();
if (pcat >= cats) { // check him out
alert ("SetPerSH cat arg too big!");
return;
}
pv = 0; // count of breakpoints
for (i=1; i<arguments.length; i=i+2) {
pval[pv] = arguments[i]; // price breakpoint
pper[pv] = arguments[i+1]; // discount amount
pv = pv + 1; // number of bkpts
}
root["pv" + pcat] = pv; // stash that bad boy off
root["pval" + pcat] = pval;
root["pper" + pcat] = pper;
root.store(); // remember forever...
}
function SetPrice (strn) { // set the current price
blk4a = 0;
AddPrice (strn);
}
function SetQA (q1, a1) { // set qty amount breakpoints
var i;
an = 0; // count of breakpoints
for (i=0; i<arguments.length; i=i+2) {
aqty[an] = arguments[i]; // quantity
aamt[an] = arguments[i+1]; // amount
an = an + 1; // number of discount bkpts
}
}
function SetQT (q) { // set minimum item quantity
iqty = q;
}
function SetQX (q) { // set maximum item quantity
xqty = q;
}
function SetQtyD (q1, d1) { // set item qty discount breakpoints
var i;
dn = 0; // count of breakpoints
for (i=0; i<arguments.length; i=i+2) {
dqty[dn] = arguments[i]; // quantity
damt[dn] = arguments[i+1]; // percent
dn = dn + 1; // number of discount bkpts
}
}
function SetSH (amt) { // set item specific shipping amount
blksh = amt; // set local variable
AddPrice (amt); // add in the price
}
function SetWgtSH (pcat, w1, c1) { // ship by weight bkpts
var i,wv;
var wval = new Array ();
var wchg = new Array ();
if (pcat >= cats) { // check him out
alert ("SetWgtSH cat arg too big!");
return;
}
wv = 0; // count of breakpoints
for (i=1; i<arguments.length; i=i+2) {
wval[wv] = arguments[i]; // price breakpoint
wchg[wv] = arguments[i+1]; // discount amount
wv = wv + 1; // number of bkpts
}
root["wv" + pcat] = wv; // stash that bad boy off
root["wval" + pcat] = wval;
root["wchg" + pcat] = wchg;
root.store(); // remember forever...
}
function SetWt (ozs) { // set the weight of an item
bozs = ozs;
}
function StoreCart () { // store data in local cart
var i;
for (i=1; i<cmax; i++) { //check for dup entry
cook = new Cookie (document, "paycart" + i); // run
cook.load(); // get values
if (cook.qty*1.0 > 0) { // check it out - combine dups
if (cook.cod == bcode && // check everything!!!
cook.des == blk3n &&
cook.prc*1.0 == blk4a*1.0 &&
cook.op1n == op1n &&
cook.op1v == op1v &&
cook.op2n == op2n &&
cook.op2v == op2v) {
cook.qty = cook.qty*1.0 + blk2q*1.0; // combine
cook.store();
ClearAll ();
return; // th-th-thats all, folks
}
}
}
for (i=1; i<cmax; i++) { // find empty entry
cook = new Cookie (document, "paycart" + i);
cook.load();
if (cook.qty*1.0 == 0 ||
isNaN (cook.qty)) {
cook.pcat = pcat
cook.qty = blk2q;
cook.cod = bcode;
cook.des = blk3n;
cook.ihnd = blkhn;
cook.ishp = blksh;
cook.op1n = op1n;
cook.op1v = op1v;
cook.op2n = op2n;
cook.op2v = op2v;
cook.prc = blk4a;
cook.imgx = imgx;
cook.ozs = bozs;
cook.ader = ader;
cook.adtx = adtx;
cook.store();
ClearAll ();
if (i == cmax - 1)
alert ("Warning - that was your last cookie!");
return;
}
}
alert ("Error 1 - out of cookies!");
}
function Where (val, loc) { // store val at opt[loc]
if (loc == 1) AddOpt1 (val);
else AddOpt2 (val);
}
function Xbild () { // build the PayPal FORM
var inp = '<input type="hidden" name=';
var ary1 = new Array ();
var ary2 = new Array ();
var i,j,pc,sx;
var tot = 0; // price total
var frst = 1; // 1st time thru marker
var str = ""; // temp string
var disc = new Array (); // price per item to subtract for discount
var tmps = root.stxt0+" "+ttxt+" "+ctxt; // the shipping text
if (bmisc.length > 0) { // apply misc codes
ary1 = bmisc.split ("&"); // individual commands
for (i=0; i<ary1.length; i++) { // process individual entries
if (ary1(i).length > 0) { // but only if something there
ary2 = ary1[i].split ("="); // get parts
document.writeln (inp, '"', ary2[0], // build line
'" value="', ary2[1], '" />');
}
}
}
if (ttax > 0) // do we have a calculated tax
document.writeln (inp, '"tax_cart" value="', Dollar(ttax), '" />');
for (i=0; i<cats; i++) { // set item discounts
disc[i] = ctot["d" + i] / ctot["a" + i]; // % discount per item
}
j = 0; // starting suffix
for (i=1; i<cmax; i++) { // run all the data cookies
cook = new Cookie (document, "paycart" + i);
cook.load(); // get contents
if (cook.qty > 0) { // something here
j = j + 1; // bump suffix
document.writeln (inp, '"quantity_',
j, '" value="', cook.qty, '" />');
document.writeln (inp, '"item_name_',
j, '" value="', cook.des, cook.adtx, '" />');
document.writeln (inp, '"amount_',
j, '" value="', Dollar (cook.prc * (1.0 - disc[cook.pcat]) + cook.ader/cook.qty), '" />');
if (gwtot > 0 && frst > 0) str = ', GIFT-WRAP';
if (cook.op1n.length > 0) { // 1st option present
document.writeln (inp, '"on0_',
j, '" value="', cook.op1n, '" />');
document.writeln (inp, '"os0_',
j, '" value="', cook.op1v + ', ' + tmps, '" />');
} else if (tmps.length > 0) {
document.writeln (inp, '"on0_',
j, '" value="Shipping" />');
document.writeln (inp, '"os0_',
j, '" value="', tmps, str, '" />');
}
tmps = ""; // zap it
str = "";
if (cook.op2n.length > 0) { // 2nd option present
document.writeln (inp, '"on1_',
j, '" value="', cook.op2n, '" />');
document.writeln (inp, '"os1_',
j, '" value="', cook.op2v, '" />');
}
if (cook.cod != "")
document.writeln (inp, '"item_number_',
j, '" value="',cook.cod, '" />');
if (frst > 0 && (hand > 0 || insx > 0 || gwtot > 0)) {
document.writeln (inp, '"handling_',
j,'" value="', Dollar (hand*1.0 + insx*1.0 + gwtot*tqty), '" />');
}
if (frst > 0 && ship > 0)
document.writeln (inp, '"shipping_',
j, '" value="', Dollar (ship), '" />');
else
document.writeln (inp, '"shipping_',
j, '" value="0" />');
frst = 0; // set to false - true only on 1st item
}
}
}
function Shipper (obj1) { // use either amt or qty based shipping1
/* Note - when using something other than SetAmtSH you must include
SetAmtSH (0,0,0); within every position to kill shipping question.
AND, every call used here must have a zero call under the worst area.*/
var pos;
SetAmtSH (0); // assume the worst
SetCartSH (0);
SetPerSH (0);
SetWgtSH (0);
insu = -1;
pos = obj1.selectedIndex; // option selected
root.stxt0 = obj1.options[pos].text;
if (pos == 1) {
SetAmtSH (0, 0, 0); // ZAP shipping
} else
if (pos == 2) { // 2nd option
SetAmtSH (0, 1, 1); // $1 for west-coast
insu = 1;
} else
if (pos == 3) { // 3rd option
SetAmtSH (0, 1, 2); // $2 for west-coast
} else
if (pos == 4) { // 4th option
SetAmtSH (0, 1, 3); // $3 for west-coast
} else
if (pos == 5) { // 5th option
SetAmtSH (0, 1, 4); // $4 for west-coast
} else
if (pos == 6) { // 6th option
SetAmtSH (0, 1, 5); // $5 for west-coast
} else
if (pos == 7) { // 7th option
SetAmtSH (0, 1, 21, 100, 12, 200, 5, 300, 0); // user code
} else
if (pos == 8) { // 8th option
SetAmtSH (0,0,0);
SetWgtSH (0, 1,2, 2,4, 3,6, 4,8, 5,10, 6,12, 7,14, 8,16, 9,18, 10,20, 11,22);
}
root.insu = insu;
root.store ();
document.location.reload (); // show the latest info...
}
function LoadIt () {
// executed at load time
Cookie.prototype.store = _Cookie_store; // load proto methods
Cookie.prototype.load = _Cookie_load;
Cookie.prototype.remove = _Cookie_remove;
cook = new Cookie (document, "paycart1");
cook.load();
if (!cook.qty) { //create the structure
root = new Cookie (document, "paycart0"); // root cookie
root.load();
InitRoot ();
for (var i=1; i<cmax; i++) { // load or init data cookies
cook = new Cookie (document, "paycart" + i);
InitData (); // create it
}
}
root = new Cookie (document, "paycart0"); // root cookie
root.load();
stax = root.stax; // load defaults
ttxt = root.ttxt;
coup = root.coup;
cdis = root.cdis;
camt = root.camt;
cval = root.cval;
ctxt = root.ctxt;
gwtot = root.gwtot;
insu = root.insu;
}