/* do not change */

function init_post_request() {

  this.fn_request = false;

  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    this.fn_request = new XMLHttpRequest();
    if (this.fn_request.overrideMimeType) {
      this.fn_request.overrideMimeType('text/html');
    }
  }
  else if (window.ActiveXObject) { // IE
    try {
      this.fn_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
       try {
         this.fn_request = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (e) {}
    }
  }
  if (!this.fn_request) {
    alert('Cannot create XMLHTTP instance');
    return false;
  }

}

function post_request(obj, url, parameters) {

  obj.open('POST', url, true);
  obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  obj.setRequestHeader("Content-length", parameters.length);
  obj.setRequestHeader("Connection", "close");
  obj.send(parameters);

}

function build_query(frm) {
  var str = "";
  var element, i = 0;
  while ((element = document.getElementById(frm).elements[i++]) != null) {
      var qc = toQueryComponent(element);
      if (qc != "") str += "&" + qc;
  }
  return str.substring(1);
}

function toQueryComponent(input) {
    if (!input.name || input.disabled)
        return "";

    var n = urlencode(input.name);

    switch (input.type) {
    case "text":
    case "password":
    case "submit":
    case "hidden":
        return n + "=" + urlencode(input.value);
    case "textarea":
        // normalize line breaks as CR LF pairs as per RFC 1866
        var v = input.value.split(/\r\n|\r|\n/).join("\r\n");
        return n + "=" + urlencode(v);
    case "checkbox":
    case "radio":
        if (!input.checked)
            return "";
        //var v = getRealValue(input);
        var v = input.value;
        if (v === null) v = "on";
        return n + "=" + urlencode(v);
    case "select-one":
    case "select-multiple":
        var nvp = [];
        var opt, i = 0;
        while ((opt = input.options[i++]) != null) {
            if (opt.selected) {
                var v = getRealValue(opt);
                if (v === null) v = opt.text;
                // older versions of IE do not support Array.push
                nvp[nvp.length] = n + "=" + urlencode(v);
            }
        }
        return nvp.join("&");
    default:
        // input types reset, button, image, and file not implemented
        return "";
    }
}

function urlencode(str) {
    var v;
    try { v = encodeURIComponent(str); } catch (e) { v = escape(str); }
    return v.replace(/%20/g,"+");
}

function getRealValue(input) {
    var attr = input.getAttributeNode("value");
    return (attr && attr.specified) ? input.getAttribute("value") : null;
}

function launch_js(data) {
  // RegExp from prototype.sonio.net

  data = data.replace("<!--", "");
  data = data.replace("-->", "");

  var ScriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';

  var match    = new RegExp(ScriptFragment, 'img');
  var scripts  = data.match(match);

    if(scripts) {
        var js = '';
        for(var s = 0; s < scripts.length; s++) {
            var match = new RegExp(ScriptFragment, 'im');
            js += scripts[s].match(match)[1];
        }
        eval(js);
    }
}

/* end of do not change  */
var sc_request;
var sc_request2;
var sc_request3;
//var active_sc_info = "";

// ADD TO CART
function add_to_cart(pro_id, color, size, qty) {

  error_msg = "";

	/*
  if (active_sc_info != "") {
    document.getElementById(active_sc_info).style.display = "none";
  }
	*/

  if(qty == "" || qty == 0){
    qty = 1;
  }

  //active_sc_info = "scinfo" + pro_id;

  var url   = "/ajax/shopping_cart.ajx.php";
  var query = "cmd=add_to_cart&pro_id=" + pro_id + "&color=" + color + "&size=" + size + "&qty=" + qty;

  tmp_http_req   = new init_post_request();
  sc_request     = tmp_http_req.fn_request;

  sc_request.onreadystatechange = function () {

		if (sc_request.readyState == 4 || sc_request.readyState == "complete") {
			data = sc_request.responseText;
			document.getElementById('add_to_cart').style.display = 'block';
			document.getElementById('add_to_cart').innerHTML = data;
		}

	}

  post_request(sc_request, url, query);

  return(false);

}

var size_request;
var active_product_id;

function get_product_sizes(pro_id) {

  active_product_id = pro_id;
  color = document.getElementById("p_" + pro_id + "_color").value;

  var url   = "/ajax/shopping_cart.ajx.php";
  var query = "cmd=get_size&pro_id=" + pro_id + "&color=" + color;

  tmp_http_req   = new init_post_request();
  size_request   = tmp_http_req.fn_request;
  size_request.onreadystatechange = update_size_selection;

  document.getElementById('p_' + active_product_id + "_sizes").innerHTML = "loading product sizes...";

  post_request(size_request, url, query);

  return(false);

}

function update_size_selection() {

  if (size_request.readyState == 4 || size_request.readyState == "complete") {
    data = size_request.responseText;
    document.getElementById('p_' + active_product_id + "_sizes").innerHTML = data;
  }

}

var month_request;
var active_product_id2;

function get_monthly_payment(pro_id, type) {

	active_product_id2 = pro_id;
  pay_plan = document.getElementById("pay_plan" + pro_id).value;

  var url   = "/ajax/shopping_cart.ajx.php";
  var query = "cmd=get_monthly_payment&pro_id=" + pro_id + "&pay_plan=" + pay_plan + "&type=" + type;

  tmp_http_req   = new init_post_request();
  month_request   = tmp_http_req.fn_request;
  month_request.onreadystatechange = update_monthly_payment;

  document.getElementById('month' + active_product_id2).innerHTML = "calculating...";

  post_request(month_request, url, query);

  return(false);

}

function update_monthly_payment() {

  if (month_request.readyState == 4 || month_request.readyState == "complete") {
    data = month_request.responseText;
    document.getElementById('month' + active_product_id2).innerHTML = data;
  }

}

var remove_cart_request;

function remove_shopping_cart(pro_cart) {

  var url   = "/ajax/shopping_cart.ajx.php";
  var query = "cmd=remove_shopping_cart&pro_cart=" + pro_cart;

  tmp_http_req = new init_post_request();
  remove_cart_request = tmp_http_req.fn_request;
  remove_cart_request.onreadystatechange = get_shopping_cart;

  post_request(remove_cart_request, url, query);

  return(false);

}

function get_shopping_cart() {

  if (remove_cart_request.readyState == 4 || remove_cart_request.readyState == "complete") {
		update_shopping_cart();
  }

}

var update_cart_request;

function update_shopping_cart() {

  var url   = "/ajax/shopping_cart.ajx.php";
  var query = "cmd=update_shopping_cart";

  tmp_http_req   = new init_post_request();
  update_cart_request   = tmp_http_req.fn_request;
  update_cart_request.onreadystatechange = show_shopping_cart;

  post_request(update_cart_request, url, query);

  return(false);

}

function show_shopping_cart() {

  if (update_cart_request.readyState == 4 || update_cart_request.readyState == "complete") {
    data = update_cart_request.responseText;
    document.getElementById('platinum_cart').innerHTML = data;
  }

}

