$(function(){
  $(".errorlist").replaceWith('<div class="error">Required</div>');
  calcTot();
  $(".itemcnt,.accessorycnt").change(function(){
    var _t = $(this);
    var i = $.trim(_t.parent().siblings(".name").text()).split(" ")[0];
    var c = _t.find("option:selected").text();
    _t.attr("disabled", "disabled");
    $.ajax({
      url: "/store/updatecart/" +i +"/" +c +"/",
      success: function(txt){
        $("#shipping_value").attr("mtb_shipping1", txt)
          .attr("mtb_shipping2", "0.00");
        _t.attr("disabled", "");
        calcTot();
      }
    });
    calcTot();
  });
  $("#zipcode").change(function(){
    var _t = $(this);
    var val = _t.val();
    if(val == "pickup"){
      $("#shipping_value").attr("mtb_shipping1", "0.00")
        .attr("mtb_shipping2", "0.00");
      calcTot();
      return;
    }
    var pos = val.search(/\D/);
    if(pos > -1){
      alert("Digits only please.");
      _t.val("");
      $("#shipping_value").attr("mtb_shipping1", "0.00")
        .attr("mtb_shipping2", "0.00");
      calcTot();
      return;
    }
    pos = val.search(/\d{3,}/);
    if(pos < 0){
      $("#shipping_value").attr("mtb_shipping1", "0.00")
        .attr("mtb_shipping2", "0.00");
      calcTot();
      return;
    }
    $.ajax({
      url: "/store/shipping/" +val +"/",
      success: function(txt){
        $("#shipping_value").attr("mtb_shipping1", txt)
          .attr("mtb_shipping2", "0.00");
        calcTot();
      }
    });
  });
  if($.browser.msie){
    $("#zipcode").keypress(function(e){
      if(e.which==13){
        $(this).change();
      }
    });
  }
});

function calcTot(){
  var cnt = 0;
  var tot = 0.0;
  var shp = 0.0;
  var ppi = 1;
  var pp = $("form");
  var sv = $("#shipping_value");
  var shp1 = parseFloat(sv.attr("mtb_shipping1"));
  var shp2 = parseFloat(sv.attr("mtb_shipping2"));
  pp.empty();
  pp.append('<input type="hidden" name="cmd" value="_cart">');
  pp.append('<input type="hidden" name="upload" value="1">');
  pp.append('<input type="hidden" name="business" value="payment@mytutubag.com">');
  pp.append('<input type="hidden" name="return" value="http://www.mytutubag.com/store/start/">');
  pp.append('<input type="hidden" name="notify_url" value="http://www.mytutubag.com/store/ipn/">');
  pp.append('<input type="hidden" name="cancel_return" value="http://www.mytutubag.com/store/checkout/">');
  pp.append('<input type="hidden" name="shopping_url" value="http://www.mytutubag.com/">');
  $("#item_list > div").each(function(){
    var c = parseInt($(this).find(".count option:selected").text());
    var a = parseFloat($(this).find(".price").text().substr(1));
    var t = a *c;
    $(this).find(".total").text("$"+t.toFixed(2));
    tot += t;
    cnt += c;
    if(c > 0){
      var itm = $(this).find(".name").text().split("-");
      pp.append('<input type="hidden" name="item_number_' +ppi +'" value="' +$.trim(itm[0]) +'">');
      pp.append('<input type="hidden" name="item_name_' +ppi +'" value="' +$.trim(itm[1]) +'">');
      pp.append('<input type="hidden" name="quantity_' +ppi +'" value="' +c +'">');
      pp.append('<input type="hidden" name="amount_' +ppi +'" value="' +a.toFixed(2) +'">');
      if(ppi == 1){
        pp.append('<input type="hidden" name="shipping_' +ppi +'" value="' +shp1.toFixed(2) +'">');
      }else{
        pp.append('<input type="hidden" name="shipping_' +ppi +'" value="' +shp2.toFixed(2) +'">');
      }
      ppi += 1;
    }
  });
  $("#accessory_list > div").each(function(){
    var s = $(this).find(".count select");
    var x = parseInt(s.attr("mtb_max")) *cnt +1;
    var r = parseInt(s.attr("mtb_current"));
    var o = s.find("option");
    var c = parseInt(s.find("option:selected").text());
    if(o.length != x){
      if(c >= x){
        c = x -1;
        $.get("/store/updatecart/" +$(this).find(".name").text().split(" ")[0] +
              "/" +c +"/");
      }
      s.empty();
      for(var i = 0; i < x; i += 1){
        s.addOption(i, i, i == c);
      }
      c = parseInt(s.find("option:selected").text());
    }
    var a = parseFloat($(this).find(".price").text().substr(1));
    var t = a *c;
    $(this).find(".total").text("$"+t.toFixed(2));
    tot += t;
    if(c > 0){
      var itm = $(this).find(".name").text().split("-");
      pp.append('<input type="hidden" name="item_number_' +ppi +'" value="' +$.trim(itm[0]) +'">');
      pp.append('<input type="hidden" name="item_name_' +ppi +'" value="' +$.trim(itm[1]) +'">');
      pp.append('<input type="hidden" name="quantity_' +ppi +'" value="' +c +'">');
      pp.append('<input type="hidden" name="amount_' +ppi +'" value="' +a.toFixed(2) +'">');
      pp.append('<input type="hidden" name="shipping_' +ppi +'" value="0.00">');
      ppi += 1;
    }
  });
  $("#subtotal_value").text("$"+tot.toFixed(2));
  if(cnt > 0){
    shp = shp1 +shp2 *(cnt-1);
    tot += shp;
  }
  $("#shipping_value").text("$"+shp.toFixed(2));
  $("#grandtotal_value").text("$"+tot.toFixed(2));
  if($("#zipcode").val() == "pickup" || (shp > 0.0 && shp < 999.99))
    pp.append('<input type="submit" value="Place Order">');
  else
    pp.append('<input type="submit" value="Place Order" disabled="disabled">');
};


