/* 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 = "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;
    }
  }

}

function swap_gallery(category,id,remove1,remove2){
  var url   = "/ajax/gallery.ajx.php";
  var query = "cat_id=" + category;
  document.getElementById(remove1).style.backgroundPosition='0px 0px';
  document.getElementById(remove1).style.color='#6C6C6C';
  document.getElementById(remove2).style.backgroundPosition='0px 0px';
  document.getElementById(remove2).style.color='#6C6C6C';
  document.getElementById(id).style.backgroundPosition='0px 32px';
  document.getElementById(id).style.color='#FFFFFF';
  tmp_http_req   = new init_post_request();
  gal_req       = tmp_http_req.fn_request;

  gal_req.onreadystatechange = update_gallery;
  
  post_request(gal_req, url, query);
}
function update_gallery() {

  if (gal_req.readyState == 4 || gal_req.readyState == "complete") {
    data = gal_req.responseText;
    document.getElementById('thumbs').innerHTML = data;
		jQuery(document).ready(function($) {
			// We only want these styles applied when javascript is enabled
			$('div.navigation').css({'width' : '365px', 'float' : 'left'});
			$('div.content').css('display', 'block');

			// Initially set opacity on thumbs and add
			// additional styling for hover effect on thumbs
			var onMouseOutOpacity = 0.67;
			$('#thumbs ul.thumbs li').opacityrollover({
				mouseOutOpacity:   onMouseOutOpacity,
				mouseOverOpacity:  1.0,
				fadeSpeed:         'fast',
				exemptionSelector: '.selected'
			});
			
			// Initialize Advanced Galleriffic Gallery
			var gallery = $('#thumbs').galleriffic({
				delay:                     2500,
				numThumbs:                 16,
				preloadAhead:              10,
				enableTopPager:            false,
				enableBottomPager:         false,
				maxPagesToShow:            7,
				imageContainerSel:         '#slideshow',
				controlsContainerSel:      '#controls',
				captionContainerSel:       '',
				loadingContainerSel:       '#loading',
				renderSSControls:          true,
				renderNavControls:         true,
				playLinkText:              "Play Slideshow",
				pauseLinkText:             "Pause Slideshow",
				prevLinkText:              'Previous Photo',
				nextLinkText:              'Next Photo',
				nextPageLinkText:          'Next &rsaquo;',
				prevPageLinkText:          '&lsaquo; Prev',
				enableHistory:             true,
				autoStart:                 false,
				syncTransitions:           true,
				defaultTransitionDuration: 900,
				onSlideChange:             function(prevIndex, nextIndex) {
					// 'this' refers to the gallery, which is an extension of $('#thumbs')
					this.find('ul.thumbs').children()
						.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
						.eq(nextIndex).fadeTo('fast', 1.0);
				},
				onPageTransitionOut:       function(callback) {
					this.fadeTo('fast', 0.0, callback);
				},
				onPageTransitionIn:        function() {
					this.fadeTo('fast', 1.0);
				}
			});

			/**** Functions to support integration of galleriffic with the jquery.history plugin ****/

			// PageLoad function
			// This function is called when:
			// 1. after calling $.historyInit();
			// 2. after calling $.historyLoad();
			// 3. after pushing "Go Back" button of a browser
			function pageload(hash) {
				// alert("pageload: " + hash);
				// hash doesn't contain the first # character.
				if(hash) {
					$.galleriffic.gotoImage(hash);
				} else {
					gallery.gotoIndex(0);
				}
			}

			// Initialize history plugin.
			// The callback is called at once by present location.hash. 
			$.historyInit(pageload, "advanced.html");

			// set onlick event for buttons using the jQuery 1.3 live method
			$("a[rel='history']").live('click', function(e) {
				if (e.button != 0) return true;
				
				var hash = this.href;
				hash = hash.replace(/^.*#/, '');

				// moves to a new page. 
				// pageload is called at once. 
				// hash don't contain "#", "?"
				$.historyLoad(hash);

				return false;
			});

			/****************************************************************************************/
		});

  }else{
    document.getElementById('thumbs').innerHTML = "<img src='../images/lightbox/lightbox-ico-loading.gif' title='' style='position:relative;left:170px;top:200px;' />";
  }

}

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);
  
  

}