function eround(number, precision) {
 var val=number*Math.pow(10,precision);
 if(val < Math.floor(val)+.5) return Math.floor(val) / Math.pow(10,precision);
 else if(val > Math.floor(val)+.5) return Math.ceil(val) / Math.pow(10,precision);
 else if(Math.floor(val) % 2) return Math.ceil(val) / Math.pow(10,precision);
 else return Math.floor(val) / Math.pow(10,precision);
}
function as_dollar(amount){
 var amt=""+eround(amount,2);
 for(var i=0; i < amt.length; i++){
  if(amt.charAt(i)=="."){
   if(i == amt.length-1) amt += "00";
   else if(i == amt.length-2) amt += "0";
   break;
  }
 }
 if(i == amt.length) amt += ".00";
 if(amt.length > 6) amt=amt.substr(0,(amt.length-6))+","+amt.substr((amt.length-6),6);
 return "$"+amt;
}
function from_dollar(amount) {
 var amt=amount.replace(/[\$,]/g, "");
 if(isNaN(amt)) return 0;
 else return amt;
}
function setCookie(name, value, expires, path, domain, secure) {
 d.cookie=escape(name)+"="+escape(value)
 +(expires?"; expires="+expires.toGMTString():"")
 +(path?"; path="+path:"")
 +(domain?"; domain="+domain:"")
 +(secure?"; secure":"");
};
function getCookie(name) {
 var value = "";
 var pn = d.cookie.indexOf(escape(name)+"=");
 if(pn != -1) {
  var pv = pn+(escape(name)+"=").length;
  var endPos = d.cookie.indexOf(";", pv);
  if (endPos != -1) value=unescape(d.cookie.substring(pv, endPos));
  else value=(d.cookie.substring(pv));
 }
 return (value);
};
function bulk_discount(id) {
 var bd=bulk["d"+bulk[id]];
 var pr=d.getElementById("bpr"+id).value;
 var qty=d.getElementById("q"+id).value;
 var min=1;
 for(var m in bd) {
  if(parseInt(m) <= parseInt(qty)) min=Math.max(min, m);
 }
 d.getElementById("pr"+id).innerHTML=as_dollar(pr-bd[min]);
}
var cart=unescape(getCookie("cart")).split(",");
var alerted=false;
function updateTotals() {
 alerted=false;
 var sub=0;
 var lpr=0;
 for(var i=0; i < ids.length; i++) {
  lpr=from_dollar(d.getElementById("pr"+ids[i]).innerHTML)*parseInt(d.getElementById("q"+ids[i]).value);
  sub+=lpr;
  d.getElementById("lpr"+ids[i]).innerHTML=as_dollar(lpr);
 }
 d.getElementById("subtotal").innerHTML=as_dollar(sub);
 if(d.getElementById("subt") && d.getElementById("subt").innerHTML != d.getElementById("subtotal").innerHTML) {
  cart[0]=sub;
  setCookie("cart",cart.join(","));
  d.getElementById("subt").innerHTML=as_dollar(sub);
 }
 var total=sub;

 sub=0;
 for(var i=0; i < ids.length; i++) {
  if(! (d.getElementById("q"+ids[i]).value == "1d" || subs[ids[i]] > 0)) {
   sub+=from_dollar(d.getElementById("pr"+ids[i]).innerHTML)*parseInt(d.getElementById("q"+ids[i]).value);
  }
 }
 if(tax_rate >= 0) {
  tax_amt=sub*(10000*tax_rate)/10000;
  d.getElementById("tax").innerHTML=as_dollar(tax_amt);
  total+=eround(tax_amt,2);
 }

 var sh_total=0;
 for(var s=0; s < shipping_cats.length && sh_total >= 0; s++) {
  var stotal=0;
  for(var i=0; i < ids.length; i++) {
   if(shipping[ids[i]] == shipping_cats[s])
    stotal+=from_dollar(d.getElementById("pr"+ids[i]).innerHTML)*parseInt(d.getElementById("q"+ids[i]).value);
  }
  var sh=shipping["s"+shipping_cats[s]];
  var max=999999999;
  for(var i in sh) {
   if(parseFloat(i) >= stotal) max=Math.min(max, sh[i]);
  }
  if(state_id > 0 && max < 999999999) {
   sh_total+=max;
   if(total >= 0) total+=max;
  }
  else {
   sh_total=-1;
   total=-1;
  }
 }

 if(sh_total < 0) {
   d.getElementById("shipping").innerHTML="T.B.D.";
   alerted=true;
 }
 else d.getElementById("shipping").innerHTML=as_dollar(sh_total);

 var bHTML=d.getElementById("chkb").innerHTML;

 if(total < 0) {
  d.getElementById("total").innerHTML="-";

  bHTML=bHTML.replace(/Check Out/,'Request Quote');
 }
 else {
  d.getElementById("total").innerHTML=as_dollar(total);

  bHTML=bHTML.replace(/Request Quote/,'Check Out');
  alerted=false;
 }
 d.getElementById("chkb").innerHTML=bHTML;
}
function updateQ(id) {
 var item;
 var qty=d.getElementById("q"+id);
 if(isNaN(qty.value)) {
  for(var i=1; i < cart.length; i++) {
   item=cart[i].split(".");
   if(item[0] == id) {
    qty.value=item[1];
    break;
   }
  }
 }
 else if(qty.value < 1) {
  window.location="cart.html?remove="+id;
 }
 else {
  if(bulk[id]) bulk_discount(id);
  updateTotals();
  for(var i=1; i < cart.length; i++) {
   item=cart[i].split(".");
   if(item[0] == id) {
    if(qty.value > stock[id] && subs[id] == 0) {
     alerted=true;
    }
    item[1]=qty.value;
    cart[i]=item.join(".");
    break;
   }
  }

  var bHTML=d.getElementById("chkb").innerHTML;
  if(alerted) {
   d.getElementById("shipping").innerHTML="T.B.D.";
   d.getElementById("total").innerHTML="-";
   bHTML=bHTML.replace(/Check Out/,'Request Quote');
  }
  else bHTML=bHTML.replace(/Request Quote/,'Check Out');

  d.getElementById("chkb").innerHTML=bHTML;
  
  cart[0]=from_dollar(d.getElementById("subtotal").innerHTML);
  setCookie("cart",cart.join(","));
 }
}
