/* 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 (active_product != "") {
    close_pop_up();
  }
	
	if(ajx == 1){
		from_ajx = true;
	}
	
  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);

}

function show_alert() {

  if (add_request.readyState == 4 || add_request.readyState == "complete") {
    data = add_request.responseText;
    var so = new SWFObject("/flash/sc.swf", "pop_up", 180, 115, "6", "#FFFFFF");
    so.addParam("wmode", "transparent");
    so.addVariable("sc_txt", data);
		if(from_ajx){
			so.write('scinfo1' + active_product);
			document.getElementById('scinfo1' + active_product).style.display = "block";
			from_ajx = false;
		}else{
    	so.write('scinfo' + active_product);
			document.getElementById('scinfo' + active_product).style.display = "block";
		}
    
    update_shopping_cart();
  }

}

function close_pop_up () {
  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 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 = "news_name=" + document.getElementById('news_name').value + "&news_email=" + document.getElementById('news_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);

}