/* 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 add_request;
var active_product = "";
var from_ajx = false;

function add_to_shopping_cart(product_id, qty, ajx) {
  if(qty > 0){
  if (active_product != "") {
    close_pop_up();
  }

  if(ajx == 1){
    from_ajx = true;
  }
  
  /*
  Quantity must be interger
  ------------------------------*/
  qty = Math.floor(qty);

  var url   = "index.php";
  var query = "cmd=add_to_shopping_cart&product_id=" + product_id + "&qty=" + qty;
  active_product = product_id;

  tmp_http_req = new init_post_request();
  add_request  = tmp_http_req.fn_request;

  add_request.onreadystatechange = show_alert;

  post_request(add_request, url, query);
	}else{
		alert("Please specify a quantity");	
	}

}

function show_alert() {

  if (add_request.readyState == 4 || add_request.readyState == "complete") {
    data = add_request.responseText;
	  var width  = getWindowWidth();	
    var height = getWindowHeight();
    var posx   = 0;
    var posy   = 0;
    var posx   = width*33/100;
    var posy   = height*33/100;
	
    var styleObj 	= null;
    styleObj = document.getElementById('parent_div');
    styleObj.style.position = 'fixed'; 
    styleObj.style.left = parseInt(posx)+'px';
    styleObj.style.top = parseInt(posy)+'px';
    document.getElementById('parent_div').innerHTML 	= data;
    document.getElementById('parent_div').style.display = "block";	
    //alert(data);
    update_shopping_cart();
  }

}

function close_pop_up () {
  return;
  document.getElementById('scinfo' + active_product).style.display = "none";
  document.getElementById('scinfo' + active_product).innerHTML     = "";
  if(document.getElementById('scinfo1' + active_product)){
    document.getElementById('scinfo1' + active_product).style.display = "none";
    document.getElementById('scinfo1' + active_product).innerHTML     = "";
  }
}

var sc_request_1;
var sc_request_2;

function update_shopping_cart() {

  var so = new SWFObject("/flash/main_banner.swf", "main_banner", "680", "417", "8", "#FFFFFF");
  so.addParam    ("wmode", "transparent");
  so.addVariable("home_url",       home_url);
  so.addVariable("about_us_url",   about_us_url);
  so.addVariable("faq_url",        faq_url);
  so.addVariable("contact_us_url", contact_us_url);
  so.addVariable("check_out_url",  check_out_url);
  so.write("main_banner");

  /*var url   = "index.php";
  var query = "cmd=get_total";

  tmp_http_req = new init_post_request();
  sc_request_1 = tmp_http_req.fn_request;

  sc_request_1.onreadystatechange = update_total_div;

  post_request(sc_request_1, url, query);

  var url   = "index.php";
  var query = "cmd=get_quantity";

  tmp_http_req = new init_post_request();
  sc_request_2 = tmp_http_req.fn_request;

  sc_request_2.onreadystatechange = update_quantity_div;

  post_request(sc_request_2, url, query);*/

}

function update_total_div () {
  if (sc_request_1.readyState == 4 || sc_request_1.readyState == "complete") {
    data1 = sc_request_1.responseText;
    document.getElementById('total_div').innerHTML = data1;
  }
}

function update_quantity_div () {
  if (sc_request_2.readyState == 4 || sc_request_2.readyState == "complete") {
    data2 = sc_request_2.responseText;
    document.getElementById('quantity_div').innerHTML = data2;
  }
}

var sc_request;

function display_shopping_cart() {

  if (active_product != "") {
    close_pop_up();
  }

  var url   = "index.php";
  var query = "cmd=display_shopping_cart";

  tmp_http_req = new init_post_request();
  sc_request   = tmp_http_req.fn_request;

  sc_request.onreadystatechange = show_shopping_cart;

  post_request(sc_request, url, query);

}


function remove_selected_items() {

  if (active_product != "") {
    close_pop_up();
  }

  var url   = "index.php";
  var query = "cmd=remove_selected_items&" + build_query('shopping_cart_form');

  tmp_http_req = new init_post_request();
  sc_request   = tmp_http_req.fn_request;

  sc_request.onreadystatechange = show_shopping_cart;

  post_request(sc_request, url, query);

}

function update_quantity() {

  if (active_product != "") {
    close_pop_up();
  }

  var url   = "index.php";
  var query = "cmd=update_quantity&" + build_query('shopping_cart_form');

  tmp_http_req = new init_post_request();
  sc_request   = tmp_http_req.fn_request;

  sc_request.onreadystatechange = show_shopping_cart;

  post_request(sc_request, url, query);

}

function show_shopping_cart() {

  if (sc_request.readyState == 4 || sc_request.readyState == "complete") {
    data = sc_request.responseText;

    if(document.getElementById('shopping_cart_1')){
      document.getElementById('shopping_cart_1').style.display = "block";
      document.getElementById('shopping_cart_1').innerHTML = data;
    }else{
      document.getElementById('shopping_cart').innerHTML = data;
      //center_div('shopping_cart');
      document.getElementById('shopping_cart').style.display = 'block';
      x_width  = document.getElementById('shopping_cart').offsetWidth;
      x_height = document.getElementById('shopping_cart').offsetHeight;
      document.getElementById('shopping_cart').style.display = 'none';
      document.getElementById('shopping_cart').innerHTML = "";

      Shadowbox.open({
        player:     'html',
        title:      'shopping cart',
        content:    data,
        height:     x_height,
        width:      x_width
      });
    }
    update_shopping_cart();
  }

}

var validate_req;

function validate_details() {

  if (active_product != "") {
    close_pop_up();
  }

  var url   = "index.php";
  var query = "cmd=validate_details&" + build_query('customer_details');

  tmp_http_req = new init_post_request();
  validate_req = tmp_http_req.fn_request;

  validate_req.onreadystatechange = show_error;

  post_request(validate_req, url, query);

}

function show_error() {

  if (validate_req.readyState == 4 || validate_req.readyState == "complete") {
    data = validate_req.responseText;
    if (data == "") {
      confirm_details();
    }
    else {
      alert(data);
    }
  }

}

var confirm_req;

function confirm_details() {

  if (active_product != "") {
    close_pop_up();
  }

  var url   = "index.php";
  var query = "cmd=confirm_details&" + build_query('customer_details');

  tmp_http_req = new init_post_request();
  confirm_req = tmp_http_req.fn_request;

  confirm_req.onreadystatechange = display_confirmation;

  post_request(confirm_req, url, query);

}

function display_confirmation() {

  if (confirm_req.readyState == 4 || confirm_req.readyState == "complete") {
    data = confirm_req.responseText;
    document.getElementById('shopping_cart').innerHTML = data;
    center_div('shopping_cart');
  }

}

var finalise_req;

function finalise_order() {

  if (active_product != "") {
    close_pop_up();
  }

  var url   = "index.php";
  var query = "cmd=finalise_order&" + build_query('customer_details');

  tmp_http_req = new init_post_request();
  finalise_req = tmp_http_req.fn_request;

  finalise_req.onreadystatechange = display_paypal_page;

  post_request(finalise_req, url, query);

}

function display_paypal_page() {

  if (finalise_req.readyState == 4 || finalise_req.readyState == "complete") {
    data = finalise_req.responseText;
    document.getElementById('shopping_cart').innerHTML = data;
    center_div('shopping_cart');
    document.paypal_form.submit();
  }

}

function show_newsletter_rego() {
  document.getElementById('newsletter_rego').style.display = 'block';
}

function hide_newsletter_rego() {
  document.getElementById('newsletter_rego').style.display = 'none';
}

var subs_req;

function subscribe_to_newsletter() {

  var url   = "/ajax/newsletter_subscription.ajx.php";
  var query = "subs_name=" + document.getElementById('subs_name').value + "&subs_email=" + document.getElementById('subs_email').value;

  tmp_http_req   = new init_post_request();
  subs_req       = tmp_http_req.fn_request;

  subs_req.onreadystatechange = update_subscription_box;

  post_request(subs_req, url, query);

}

function update_subscription_box() {

  if (subs_req.readyState == 4 || subs_req.readyState == "complete") {
    data = subs_req.responseText;
    if (data.indexOf('Thank you')) {
      alert(data);
    }
    else {
      document.getElementById('newsletter_rego').innerHTML = data;
    }
  }

}

var product_image_req;
var image_mode = "front";

function show_product_image(img) {

  var url   = "index.php";
  var query = "cmd=get_product_image&img=" + img;
  image_mode = "front";

  tmp_http_req      = new init_post_request();
  product_image_req = tmp_http_req.fn_request;

  product_image_req.onreadystatechange = update_product_image;

  post_request(product_image_req, url, query);

}

function update_product_image() {
  if (product_image_req.readyState == 4 || product_image_req.readyState == "complete") {
    data = product_image_req.responseText;
    document.getElementById('product_image').innerHTML = data;
    document.getElementById('product_image').style.display = 'block';
    x_width  = document.getElementById('product_image').offsetWidth;
    x_height = document.getElementById('product_image').offsetHeight;
    document.getElementById('product_image').style.display = 'none';
    document.getElementById('product_image').innerHTML = "";

    Shadowbox.open({
      player:       'html',
      title:        'product details',
      content:      data,
      height:       x_height,
      width:        x_width
    });


  }
}

var back_image_req;

function swap_image (img) {

  if (image_mode == "front") {
    image_mode = "back";
    document.getElementById('swap_button').src = "/images/front.gif";
  }
  else {
    image_mode = "front";
    document.getElementById('swap_button').src = "/images/back.gif";
  }


  var url   = "index.php";
  var query = "cmd=swap_image&img=" + img + "&mode=" + image_mode;

  tmp_http_req   = new init_post_request();
  back_image_req = tmp_http_req.fn_request;

  back_image_req.onreadystatechange = display_new_image;

  post_request(back_image_req, url, query);

}

function display_new_image() {
  if (back_image_req.readyState == 4 || back_image_req.readyState == "complete") {
    data = back_image_req.responseText;
    document.getElementById('large_pic').innerHTML = data;
    //center_div('product_image');
  }
}

function show_gallery_image(gallery_id, pic_id, pic, pic_title, pic_width, pic_height) {

  var so = new SWFObject("/flash/gallery.swf", "gallery", "440", "255", "6", "#FFFFFF");
  so.addVariable('pic', "/downloads/Image/gallery/large/" + pic);
  so.addVariable('pic_width', pic_width);
  so.addVariable('pic_height', pic_height);
  so.addVariable('pic_title', pic_title);
  so.addParam("wmode", "transparent");
  so.write("flash_gallery_" + gallery_id);

}
function close_box(){	
	document.getElementById('parent_div').style.display = "none";	
}

function getWindowWidth() {
 var winwid = 0;
 if (self.innerWidth)
  winwid = self.innerWidth;
 else if (document.documentElement && document.documentElement.clientWidth)
  winwid = document.documentElement.clientWidth;
 else if (document.body)
  winwid = document.body.clientWidth;
  return winwid;
}
function getWindowHeight() {
var windowHeight=0;
	if ( typeof( window.innerHeight ) == 'number' ) {
		windowHeight=window.innerHeight;
	}
	else {
		if ( document.documentElement && document.documentElement.clientHeight) {
			 windowHeight = document.documentElement.clientHeight;
		 }
		 else {
			 if (document.body&&document.body.clientHeight) {
				windowHeight=document.body.clientHeight;
			}
		}
   }
	return windowHeight;
}
