var order = new Object();  // object to store order items in
var root  = new Object();  // selection criteria
var on    = true;
var off   = false;
var cntr  = 0;             // items in object
var opts  = 5;             // number of options to allow
var shpr  = function (wt) {return 0;} // what to charge for shipping;
var stxt  = "";            // shipping text
var spos  = -1;            // shipping position selector
var ttax  = 0;             // percent for taxes
var ttxt  = "0";           // tax text
var tpos  = -1;            // tax position selector
var tamt=0,tqty=0,twgt=0,wgt=0,thnd=0;  // totals

root.hamt = 0;     // amount, below which, handling charge applies
root.hand = 0;     // handling charge for orders less than hamt
root.shp  = on;    // shipping selection line
root.tax  = on;    // tax selection line
// place for user-specific options
root.xx_can  = ""; // place for PayPal cancel return path
root.xx_cur  = ""; // enter default currency code (or null)
root.xx_id   = ""; // PayPal ID
root.xx_img  = ""; // image URL
root.xx_lc   = ""; // enter default country code (or null)
root.xx_ret  = ""; // place for PayPal return path
root.xx_sty  = ""; // place for PayPal page style
root.xx_xtra = ""; // place for other PayPal commands

function CalcRoot () {  // calc root stuff
  if (root.shp) spos=0; 
  if (root.tax) tpos=0;
}

function DispTots () {  // display totals on the page
var tmp,d;
  d = document.orderf;
  d.totqty.value = tqty;
  d.totamt.value = 0;
  // if ((tqty = 10) || ((tqty < 126) && (tqy != 11) && (tqty != 25) && (tqty != 60) && (tqty != 125)))
  // 	{alert("Check the table.  You may be able to save some money if you buy 11, 25, 60 or 125 tickets");}
  if (tqty < 10)
  	{tamt = tqty * 5.00}
  else if (tqty < 12)
  	{tamt = 50}
  else if (tqty < 21)
  	{tamt = 50 + (tqty - 11) * 5.00}
  else
  	{tamt = tqty * 4.00}  
  d.totamt.value = Dollar (tamt);
  // d.wgt.value = twgt;
  // if (root.shp) d.shp.value = Dollar (shpr (twgt));
  // tmp = tamt * ttax/100;
  // if (root.tax) d.tax.value = Dollar (tmp);
  // thnd = 0;                    // assume the worst;
  // if (d.hnd) d.hnd.value = "0.00";
  // if (tamt*1.0 < root.hamt) {  // calculate handling charge
  //     thnd = root.hand;        // figure it out
  //     if (d.hnd) d.hnd.value = Dollar (thnd);
  // }
  // d.tot.value = Dollar (tamt + shpr (twgt) + tmp + thnd);
}

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 (".");  // should be one, but OK if not
  if (pos > 0) str = str.substring (rnd, pos + 3);
  return str;               // return valid string
}

function GetOrder (id, des, amt, wgt) {  // get all ordered items
	function qtyFocus() {
		document.orderf["qty" + nr].focus();
		}
var i,nr,val,qty,pos,qtyname,fld,tmp;
var op = new Array ();    // accumulate options here
  tamt=0,tqty=0,twgt=0;   // zero totals
  nr = id.substring (2);  // get number part of ID
  qty = document.orderf["qty" + nr].value;  // get qty
  if (isNaN (qty)) {      // test entry
  	alert (qty + " is not a number - Please enter a number");
  	tmp = setTimeout(qtyFocus, 100);
    return; }
  // Check if integer - pull out integer value, which will drop any decimal and following digits 
  // Then convert back to string and see if still same length
  var intValue = parseInt(qty).toString();
  if (qty.length != intValue.length) {
  	alert (qty + " must be a number with no decimals");
  	tmp = setTimeout(qtyFocus, 100);
    return; }
  for (i=1; i<=opts; i++) {     // see if any options
    if (document.orderf["op" + i + nr]) {
      val = document.orderf["op" + i + nr].value;  // get option
      op[i] = val;
      pos  = val.indexOf ("+"); // price increment?
      if (pos > 0) amt = amt + val.substring (pos + 1)*1.0;
      pos  = val.indexOf ("%"); // percent change?
      if (pos > 0) amt = amt + (amt * val.substring (pos + 1)/100.0);
    }
    else op[i] = "";
  }
  // document.orderf["prc" + nr].value = Dollar (qty * amt);
  // document.orderf["toz" + nr].value = qty * wgt;
  if (cntr == 0) order = new Object (); // zap object
  cntr = cntr + 1;               // bump counter so no zap next time
  order[id] = new Object ();     // create new entry
  for (i=1; i<=opts; i++)        // load options
    if (op[i] != "") des = des + ", OP" + i + "=" + op[i];
  order[id].des = des;           // load up values
  order[id].amt = Dollar (amt);
  order[id].qty = qty;
  if (wgt) order[id].wgt = wgt;
    else order[id].wgt = 0;
  for (i in order) {             // calc totals we might use
    qty = order[i].qty*1.0;
    tamt = tamt + order[i].amt * qty;  // total amount
    tqty = tqty + qty;                 // total quantity
    twgt = twgt + order[i].wgt * qty;  // total ounces
  }
  twgt = Math.floor ((twgt + 15.99)/16.0);  // get pounds
  DispTots ();                         // calc totals
}

function SendCart () {  // send the cart to PayPal
  var winpar = "width=710,height=390,scrollbars," +
               "location,resizable,status";
  var strn   = "https://www.paypal.com/cgi-bin/webscr?cmd=_cart" +
               "&upload=1" +
               "&business=" + root.xx_id + root.xx_xtra + "&tax_cart=.00&handling_cart=.00";
  strn = strn + "&item_name_1=" + document.orderf.totqty.value
  strn = strn + " tickets for 2009 Specialty Raffle&item_number_1="
  var i,j=0,inum,des;
  for (i in order) {  // send all valid data
    if (order[i].qty > 0) {
      j = j + 1;
	  des = order[i].des;
	  if (j > 1) {strn = strn + ", "}
	  inum = i.substr(2, (i.length - 2))
      strn = strn + inum + "=" + order[i].qty; 
    }
  }
  strn = strn + "&quantity_1=1&amount_1=" + document.orderf.totamt.value;
  strn = strn + "&shipping_1=.00";
  // if (j > 0) window.open (strn, "paypal", winpar);
  if (j > 0) window.location = strn;
}

function SetShp (obj) {  // set shipping on user selection
  shpr = function (wt) {return 0;}  // zap it
  spos = obj.selectedIndex;  // which option selected
  stxt = obj.options[spos].text;
  // set various shipping functions.
  if (spos == 1) shpr = function (wt) {return 0;}
  if (spos == 2) shpr = function (wt) {return 4;}
  if (spos == 3) shpr = function (wt) {return 10;}
  if (spos == 4) shpr = function (wt) {return wt * 2.50;}
  DispTots ();
}

function SetTax (obj) {
  tpos = obj.selectedIndex;  // which option selected
  ttxt = obj.options[tpos].text;
  ttax = obj.options[tpos].value*1.0;
  DispTots ();
}
