// JavaScript Document

/* Ajax Routines */

var http_request_1  = false;
var http_request_2  = false;

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);
        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;
}

/* end of AJAX routine */

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function rgb(eid) {
  document.getElementById(eid).className = 'rgb';
}

function gray(eid) {
  document.getElementById(eid).className = 'gray';
}

function isCreditCard(textObj) {
 /*
  *  This function validates a credit card entry.
  *  If the checksum is ok, the function returns true.
  */
   var ccNum;
   var odd = 1;
   var even = 2;
   var calcCard = 0;
   var calcs = 0;
   var ccNum2 = "";
   var aChar = '';
   var cc;
   var r;
   
   ccNum = textObj.value;
   for(var i = 0; i != ccNum.length; i++) {
      aChar = ccNum.substring(i,i+1);
      if(aChar == '-') {
         continue;
      }

      ccNum2 = ccNum2 + aChar;
   }
   
   cc = parseInt(ccNum2);
   if(cc == 0) {
      return false;
   }
   r = ccNum.length / 2;
   if(ccNum.length - (parseInt(r)*2) == 0) {
      odd = 2;
      even = 1;
   }
   
   for(var x = ccNum.length - 1; x > 0; x--) {
      r = x / 2;
      if(r < 1) {
         r++;
      }
      if(x - (parseInt(r) * 2) != 0) {
         calcs = (parseInt(ccNum.charAt(x - 1))) * odd;
      }
      else {
         calcs = (parseInt(ccNum.charAt(x - 1))) * even;
      }
      if(calcs >= 10) {
         calcs = calcs - 10 + 1;
      }
      calcCard = calcCard + calcs;
   }
   
   calcs = 10 - (calcCard % 10);
   if(calcs == 10) {
      calcs = 0;
   }
   
   if(calcs == (parseInt(ccNum.charAt(ccNum.length - 1)))) {
      return true;
   }
   else {
      return false;
   }
}

active_pattern = "";

function display_pattern(filename, patterndiv, col_name) {

  if (active_pattern != "") { 
	  document.getElementById(active_pattern).style.display = 'none';
	}

	var sox = new SWFObject("flash/c3.swf", "myc2", "150", "150", "5", "#FFFFFF");
  sox.addVariable("filename", filename);
	sox.addVariable("colour_name", col_name);
	sox.addParam("wmode", "transparent");  
	sox.write(patterndiv);
	
	document.getElementById(patterndiv).style.display = 'block';
	active_pattern = patterndiv;
	
}

function hide_pattern() {

  if (active_pattern != "") {
	  document.getElementById(active_pattern).style.display = 'none'; 
	}
  
}

active_pic = "";
function enlarge(filename, pic_div) {

  if (active_pic != "") { 
	  document.getElementById(active_pic).style.display = 'none';
	}

	var sox = new SWFObject("flash/view_pic.swf", "lpic", "370", "494", "5", "#FFFFFF");
  sox.addVariable("filename", filename);
	sox.write(pic_div);
	
	document.getElementById(pic_div).style.display = 'block';
	active_pic = pic_div;

}

function hide_pic () {
  if (active_pic != "") {
	  document.getElementById(active_pic).style.display = 'none'; 
	}
}

function cbi1(eid) {
  document.getElementById(eid).src = "images/bag2.gif"; 
}

function cbi2(eid) {
  document.getElementById(eid).src = "images/bag.gif"; 
}

active_pop_up = inactive_colour = "";
form_num_pros = 0;

function add_to_cart(num_pros, obj_id) {

  error_msg = "";
	valid_for_submission = false;
	
	counter = 0;
	product_selected = false;
	
	form_num_pros = num_pros;
	
	for (i = 0; i < num_pros; i++) {
	 
	  procolor = document.getElementById('procolor' + i).value;
		prosize  = document.getElementById('prosize'  + i).value;
		proqty	 = document.getElementById('proqty' 	+ i).value;
		
		if (procolor != "" || prosize != "" || proqty != "0") {
		  product_selected = true; 
		  if (procolor == "") { 
    	  error_msg += " - select the item colour.\n";
				document.getElementById('procolor' + i).focus();
				break;
    	}
    	else if (prosize == "") { 
    	  error_msg += " - select the item size.\n";
				document.getElementById('prosize' + i).focus();
				break;
    	}
    	else if (proqty == "0") { 
    	  error_msg += " - select number of item to be purchased.\n";
				document.getElementById('proqty' + i).focus();
				break;
    	}
			else { 
			  
			}
		}		
		
	}
	
	if (!product_selected) { 
	  error_msg += " - select at least one product.\n";
	}
	
	if (error_msg != "") {
	  valid_for_submission = false;
	  error_msg = "To add this item to your shopping cart, please make sure to: \n" + error_msg; 
	  alert(error_msg);
		return(false);
	}
	else { 
	  valid_for_submission = true;
	}
	if (valid_for_submission) {
	
	  document.getElementById('pp' + obj_id).style.display = 'block';
		document.getElementById('pcol' + obj_id).style.display = 'none';
	
	  var spop = new SWFObject("flash/sc.swf", "popswf", "300", "130", "5", "#FFFFFF");
  	spop.addParam("wmode", "transparent");  
  	spop.write('scpp' + obj_id);
		
		active_pop_up   = 'pp' + obj_id;
		inactive_colour = 'pcol' + obj_id;
		
		var url   = "ajax/shopping_bag.php";
		var query = build_query('product_form');
  	
  	tmp_http_req   = new init_post_request();
  	http_request_2 = tmp_http_req.fn_request;
    
    http_request_2.onreadystatechange = update_sc_info;
		
  	post_request(http_request_2, url, query);
  	 
	  //document.product_form.submit();
	}
	
	return(false);

}

function update_sc_info() {

  if (http_request_2.readyState == 4 || http_request_2.readyState == "complete") {	 
    data = http_request_2.responseText;
		document.getElementById('sc_num_items').innerHTML = data;
		
		for (i = 0; i < form_num_pros; i++) {
  		document.getElementById('procolor' + i).value = "";
  		document.getElementById('prosize' + i).value 	= "";
  		document.getElementById('proqty' + i).value 	= "0";
		}
				
	}	

}

function hide_pop_up() {
  document.getElementById(active_pop_up).style.display = 'none';
	document.getElementById(inactive_colour).style.display = 'block'; 
}

function tick_boxes(total) {

  check_val = false;
  if (document.getElementById('tick_all').checked) { 
	  check_val = true;
	}
	
	for (i = 0; i < total; i++) { 
	  document.getElementById('tick' + i).checked = check_val;
	} 

}

function update_delivery_details () {

  delivery_address = document.getElementById('delivery_address').value;
	
	if (delivery_address == 1) {	
	
	  document.getElementById('rec_first_name').value = document.getElementById('first_name').value;
		document.getElementById('rec_last_name').value  = document.getElementById('last_name').value;
		document.getElementById('rec_phone').value 	    = document.getElementById('phone').value;
		document.getElementById('rec_email').value      = document.getElementById('email').value;
	
		document.getElementById('rec_address_1').value  = document.getElementById('address_1').value;
		document.getElementById('rec_address_2').value  = document.getElementById('address_2').value;
		document.getElementById('rec_suburb').value 	  = document.getElementById('suburb').value;
		document.getElementById('rec_postcode').value   = document.getElementById('postcode').value;
		document.getElementById('rec_state').value  	  = document.getElementById('state').value;
		document.getElementById('rec_country').value 	  = document.getElementById('country').value;
		
		document.getElementById('rec_address_1').readOnly = true;
		document.getElementById('rec_address_2').readOnly = true;
		document.getElementById('rec_suburb').readOnly 		= true;
		document.getElementById('rec_postcode').readOnly	= true;
		document.getElementById('rec_country').readOnly		= true; 	  
	}
	else { 
	  document.getElementById('rec_address_1').readOnly = false;
		document.getElementById('rec_address_2').readOnly = false;
		document.getElementById('rec_suburb').readOnly 		= false;
		document.getElementById('rec_postcode').readOnly 	= false;
		document.getElementById('rec_state').readOnly 		= false;
		document.getElementById('rec_country').readOnly 	= false;
	}
	
	country = document.getElementById('country').value;
  if (delivery_address == 2) { 
	  country = document.getElementById('rec_country').value;
	} 
	
	if (country == "Australia") { 
	  html_str  = "<div class=\"lalign\"><input type=\"hidden\" name=\"shipping_mode\" id=\"shipping_mode1\" value=\"1\" /></div>";
		html_str += "<div class=\"padtop2\">Express Mail</div>";	  
	}
	else { 
	  html_str  = "<div class=\"newrow\"><div class=\"lalign\"><input type=\"radio\" name=\"shipping_mode\" id=\"shipping_mode2\" value=\"2\" checked /></div>";
		html_str += "<div class=\"padtop2\">Air Mail</div> </div> ";
		html_str += "<div class=\"newrow\"><div class=\"lalign\"><input type=\"radio\" name=\"shipping_mode\" id=\"shipping_mode3\" value=\"3\" /></div>";
		html_str += "<div class=\"padtop2\">Express Courier</div> </div> ";
	}
	
	document.getElementById('shippingoption').innerHTML = html_str;
	
}

active_id = ""

function get_sizes(eid) {

  active_id = eid;
	
	pid    = document.getElementById('proid'    + eid).value;
	pgid   = document.getElementById('pgid'     + eid).value;
	colour = document.getElementById('procolor' + eid).value;
	
	if (colour != "") { 

  	var url = "ajax/product_sizes.php?counter=" + active_id + "&pid=" + pid + "&pgid=" + pgid + "&colour=" + colour;
  	
  	document.getElementById('span' + active_id).innerHTML = "Loading size... &nbsp; &nbsp;";
  	
  	tmp_http_req   = new init_post_request();
  	http_request_1 = tmp_http_req.fn_request;
    
    http_request_1.onreadystatechange = update_size_selection;
  	
  	post_request(http_request_1, url, '');
	
	}
	
}

function update_size_selection() { 

  if (http_request_1.readyState == 4 || http_request_1.readyState == "complete") {	 
    data = http_request_1.responseText;		
		document.getElementById('span' + active_id).innerHTML = data;
	}	

}

function update_payment_type() {

  document.getElementById('cc_name').readOnly   = false;
	document.getElementById('cc_name').value   		= "";
	document.getElementById('cc_number').readOnly = false;
	document.getElementById('cc_number').value   	= "";
	document.getElementById('ccv').readOnly       = false;
	document.getElementById('ccv').value   				= "";
	
  if (document.getElementById('cc_type').value == "Direct Deposit or EFT") {
	  document.getElementById('cc_name').value      = "N/A"; 
	  document.getElementById('cc_name').readOnly   = true;
		document.getElementById('cc_number').value    = "N/A";
  	document.getElementById('cc_number').readOnly = true;
		document.getElementById('ccv').value      		= "N/A";
  	document.getElementById('ccv').readOnly       = true;
	}

}

function validate_payment(mode) {

  error_msg = ""
	
	if (document.getElementById('cc_type').value != "Direct Deposit or EFT") { 
	  if(document.getElementById('cc_name').value == "") {
  	  error_msg += " - Please provide the name of the credit card holder.\n";
  	}
    if (Number(document.getElementById('exp_year').value) <= current_year && Number(document.getElementById('exp_month').value) < current_month) { 
  	  error_msg += " - Please enter valid expiry date.\n";
  	}	
  	if (!isCreditCard(document.getElementById('cc_number'))) { 
  	  error_msg += " - Please enter valid credit card number.\n";
  	}
  	if (document.getElementById('ccv').value.length < 3) { 
  	  error_msg += " - Please enter valid security/ccv number.\n";
  	}
	}
	
	if (mode == 1) { 
	  if (!document.getElementById('terms').checked) { 
  	  error_msg += " - Please make sure you read and understand the Terms & Conditions.\n";
  	}
	}
	
	if (error_msg != "") { 
	  error_msg = "Error found in your submission! \n" + error_msg;
		alert(error_msg);
		return(false);
	}
	else { 
	  document.checkout_form.submit();
	  return(true);
	}

}

function update_payment_fields() {

  document.getElementById('cc_name').readOnly   = false;
	document.getElementById('cc_number').readOnly = false;
	document.getElementById('exp_month').readOnly = false;
	document.getElementById('exp_year').readOnly  = false;
	document.getElementById('ccv').readOnly       = false;

  if (document.getElementById('cc_type').value == "Direct Deposit or EFT") {
	  document.getElementById('cc_name').readOnly   = true;
		document.getElementById('cc_name').value   		= "";
		
  	document.getElementById('cc_number').readOnly = true;
		document.getElementById('cc_number').value 		= "";
		
  	document.getElementById('exp_month').readOnly = true;
		document.getElementById('exp_month').value 		= "";
		
  	document.getElementById('exp_year').readOnly  = true;
		document.getElementById('exp_year').value  		= "";
		
  	document.getElementById('ccv').readOnly       = true;
		document.getElementById('ccv').value       		= ""; 
	}

}

function char_count(eid, maxlen, max_lines) {
    
  var inputstr;
  var strlen;
  var charleft;
  var numcr;
  var temp = new Array();
	
  if (document.getElementById(eid).value != "") {
    inputstr = document.getElementById(eid).value;
    strlen = inputstr.length;
    
    if (strlen > maxlen) {          
      document.getElementById(eid).value = document.getElementById(eid).value.substring(0,maxlen);
      charleft = 0;
      alert("Exceeds maximum number of characters!");
    }
    else {
      charleft = maxlen - strlen;
    }         
    
		document.getElementById('charleft' + eid).innerHTML = charleft + " / " + maxlen;
		
  }
	
	if (max_lines > 0) {
		
		var temp2 = document.getElementById(eid).value.split('\r\n');
    var temp_val = "";
    counter = 0;
    if (temp2.length > max_lines) { 
      alert("Exceeds maximum number of lines!");
      for (i = 0; i < max_lines; i++) { 
        temp_val = temp_val + temp2[i];
        if (i < (max_lines - 1)) {
          temp_val = temp_val + "\n";
        }             
      }
      document.getElementById(eid).value = temp_val;
    }
		 
	}
  
}

function name_subscribe(obj)
{	
	if(obj.value != '' && obj.value != 'Name')
	{
		if(/^(([A-Za-z]+\s?\'?[A-Za-z]*)\s?)+[\d]{0,10}$/.test(obj.value))
		{
			return true;
		}
		else
		{
		   alert('Please enter a valid name');
		   return false;
		} 
	} else {
	   	alert('Please enter name');
		return false;
	}

}

function email_subscribe(obj)
	{
		if (obj.value)
		{
			if (obj.value.indexOf('@') != -1)
				{
					return true;
				}else{
					alert('Please enter a valid email address');
					return false;
				}  
			} else {
					alert('Please enter email address');
					return false;
			}
	  return true;
	}

function validate_subscriber(page_name,form_name,div_id)
{
	if(name_subscribe(document.subscribe_form.name) && email_subscribe(document.subscribe_form.email))
	{
		yconnect(page_name,form_name,div_id);
	}

	return false;
	
}


	var fldsarr=Array();
	var msgsarr=Array();
	var msgtype;
	 msgtype='all'; 

	var i=0;
	fldsarr[i]=Array('firstname',Array('required', 'name'));
	i++;
	fldsarr[i]=Array('lastname',Array('required', 'name'));
	i++;
	fldsarr[i]=Array('email',Array('required','email'));
	i++;
	fldsarr[i]=Array('phone',Array('required','phno'));
	i++;
	fldsarr[i]=Array('word_verification',Array('required'));

	
	var j=0;
	msgsarr[j]=Array('firstname',Array('&nbsp;&nbsp;&raquo; First Name is a required field','&nbsp;&nbsp;&raquo; Kindly enter valid First Name'));
	j++;
	msgsarr[j]=Array('lastname',Array('&nbsp;&nbsp;&raquo; Last Name is a required field','&nbsp;&nbsp;&raquo; Kindly enter valid Last Name'));
	j++;
	msgsarr[j]=Array('email',Array('&nbsp;&nbsp;&raquo; Email Address is a required field','&nbsp;&nbsp;&raquo; Kindly enter valid Email Address'));
	j++;
	msgsarr[j]=Array('phone',Array('&nbsp;&nbsp;&raquo; Contact Number is a required field','&nbsp;&nbsp;&raquo; Kindly enter valid Contact Number'));
	j++;
	msgsarr[j]=Array('word_verification',Array('&nbsp;&nbsp;&raquo; Please enterthe word verification text'));
	ny = new DomValidate(fldsarr,msgsarr);
	ny.txtClass = '1px solid #016B67';

function validate_contactus(frm)
{

	

	if(ny.validateForm(frm))
	{
		document.getElementById(frm).submit();
		return true;
	}
	else
	{
		window.location = "#errors";
	}
	return false;
	
}

function show_popup(URLStr, width, height)
{
	loginwindow=window.open(URLStr, "loginwindow",'status=0,toolbar=0,menubar=no,scrollbars=yes,width='+width+',height='+height+'');
	loginwindow.moveTo(400,100);
	 
}

