/*dom ready*/
var alreadyrunflag=0; //flag to indicate whether target function has already been run
var basket_order_confirmation_setup = 0; // Safari fix

if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", function(){alreadyrunflag=1; hideNav(); siteLoaded();}, false);
}
else if (document.all && !window.opera) {
	document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>')
	var contentloadtag=document.getElementById("contentloadtag")
	contentloadtag.onreadystatechange=function(){
		if (this.readyState=="complete"){
			alreadyrunflag=1;
			hideNav();
			siteLoaded();
		}
	}
}
if(/Safari/i.test(navigator.userAgent)) {
	var _timer=setInterval(function() {
		if(/loaded|complete/.test(document.readyState)) {
			clearInterval(_timer);
			alreadyrunflag=1;
			hideNav();
			siteLoaded();
  	}
	}, 10);
}
window.onload=function(){
  setTimeout("if (!alreadyrunflag){hideNav();siteLoaded();}", 0)
}

/* get elements by tag and class name*/
function getElementsByTagAndClassName(e, tagname, classname) {
	if (e == null) {
		return false;
	}
	var elems = e.getElementsByTagName(tagname);
	var ret = new Array();
	for (var i = 0, j = 0; i < elems.length; i++) {
		if (elems[i].className == classname) {
			ret[j++] = elems[i];
		}
	}
	return ret;
}

/*hide left hand side navigation*/
function hideNav() {
	var rsubs = getElementsByTagAndClassName(document, 'div', 'rsub');
	/*var hideflag = 1;
	for (var i = 0; i < rsubs.length; i++) {
		if (rsubs[i].parentNode.getElementsByTagName('a')[0].className == 'current') {
			hideflag = 0;
			break;
		}
	}
	if (hideflag) {*/
		for (var i = 0; i < rsubs.length; i++) {
			if (typeof rsubs[i].parentNode.getElementsByTagName('span')[0] != 'undefined') {
				if (rsubs[i].parentNode.getElementsByTagName('span')[0].className == 'non') {
					rsubs[i].style.display = 'none';
				}
			}
		}
	//}
	if ((typeof document.getElementById('sharethis') != 'undefined') && (document.getElementById('sharethis'))) {
		document.getElementById('sharethis').getElementsByTagName('div')[0].style.display = 'none';
	}
}

/*the left hand side navigation*/
function toggleNavTab(elem) {
	/* Open or close the selected */
	if(elem.className == 'non') {
		elem.className = 'current';
		elem.parentNode.getElementsByTagName("DIV")[0].style.display = 'block';
	} else {
		elem.className = 'non';
		elem.parentNode.getElementsByTagName("DIV")[0].style.display = 'none';
	}
}


/*for showing definitions for terms in eg. advanced search*/
function show(strText) {
      if(document.getElementById("defin")) document.getElementById("defin").innerHTML = strText;
      if(document.getElementById("defin2")) document.getElementById("defin2").innerHTML = strText;
}
/*for the product page images and thumbs*/
function display(strImage) {
	// reset the status of the current dropdowns
	currentSize = 0;
	currentOption = 0;
	currentType = 'size';
	// change the image
	if(document.getElementById("bigimage")) document.getElementById("bigimage").src = strImage;
}

/*used for the product page tabbed section of text*/
function onSwap(s) {
	/* Close the rest */
	for (i=1; i < 6; i++) {
		if(i != s) {
			closeSwap(i);
		} else {
			openSwap(s);
		}
	}
}
function closeSwap(s) {
	if(document.getElementById("open_" + s)) {
		document.getElementById("open_" + s).className = 'non';
		document.getElementById("text_" + s).style.display = 'none';
	}
}
function openSwap(s) {
	if(document.getElementById("open_" + s)) {
		document.getElementById("open_" + s).className = 'reading';
		document.getElementById("text_" + s).style.display = 'block';
	}
}
/* Product */


/* When the variant or size is changed we need to:

1) Get the correct variant (size/option)
- update picture for the combination
- update delivery text and returns policy
- update add to basket button (join waiting list)
- update price

*/
 

	var currentSize = 0;
	var currentOption = 0;
	var currentType = 'size';
	
	function onVariantChange(productId, tryagain, type) {
		var option = $("options")[$("options").selectedIndex].text;
		var size = $("size")[$("size").selectedIndex].text;

		if(option == currentOption && size == currentSize) return false; 
		
		currentSize = size;
		currentOption = option;
		currentType = type;
		
		
		// Set variant id to loading state
		$("variant_id").value = -1;
		$("price").innerHTML = "Loading...";

		var fragment = "/remote.php?mode=selectvariant" + 
		"&product_id=" + productId +
		"&type=" + type +
		"&size=" + size +
		"&option=" + option;
	
		if (tryagain == 1) {
			new Ajax(fragment, {
				method: 'get', 
				onComplete: onVariantChanged1
			}).request();		
		} else {
			new Ajax(fragment, {
				method: 'get', 
				onComplete: onVariantChanged
			}).request();		
		}
		
		//if( $("options")[$("options").selectedIndex].attributes["filename"].value != "") {
		//	$("bigimage").src = "data/photos/" + $("options")[$("options").selectedIndex].attributes["filename"].value;
		//}
	}

	function setSizeAndOptions(option, size) {
		var sizeLength = $("size").length;
		var optionLength = $("options").length;
		for (z=0; z<sizeLength; z++) {
			if ($("size")[z].text == size) {
				if ($("size").selectedIndex != z) {
					$("size").selectedIndex = z;
					currentSize = $("size")[$("size").selectedIndex].text;
				}
			}
		}
		for (z=0; z<optionLength; z++) {
			if ($("options")[z].text == option) {
				if ($("options").selectedIndex != z) {
					$("options").selectedIndex = z;
					currentOption = $("options")[$("options").selectedIndex].text;
				}
			}
		}
	}

	function onVariantChanged(results) {
		var arr = results.split("|");

		var type = currentType;
		var price = arr[0];
		var availability = arr[1];		
		var filename = arr[2];
		var message = arr[3];	
		var variantId = arr[4];	
		var button = arr[5];	
		var productId = arr[6];	
		var newOption = arr[7];
		var newSize = arr[8];
		setSizeAndOptions(newOption, newSize);

		$("bigimage").src = "data/photos/" + filename;
		$("price").innerHTML = price;
		if ($("infobox")) {
			$("infobox").innerHTML = message;
		}
		$("variant_id").value = variantId;
		$("basketbuttonnholder").innerHTML = button;	
		
	}

	function onVariantChanged1(results) {
		var arr = results.split("|");
		
		var type = currentType;
		var price = arr[0];
		var productId = arr[6];	
		if (price == '-') {
			var option = $("options")[$("options").selectedIndex].text;
			var size = $("size")[$("size").selectedIndex].text;
		
			currentSize = size;
			currentOption = option;
		
		
			// Set variant id to loading state
			$("variant_id").value = -1;
			$("price").innerHTML = "Loading...";

			var fragment = "/remote.php?mode=selectvariant" + 
			"&product_id=" + productId +
			"&size=" + size +
			"&option=N/A";
	
			new Ajax(fragment, {
				method: 'get', 
				onComplete: onVariantChanged2
			}).request();		
			return;
		}
		var availability = arr[1];		
		var filename = arr[2];
		var message = arr[3];	
		var variantId = arr[4];	
		var button = arr[5];	
		var newOption = arr[7];
		var newSize = arr[8];
		setSizeAndOptions(newOption, newSize);

		$("bigimage").src = "data/photos/" + filename;
		$("price").innerHTML = price;
		if ($("infobox")) {
			$("infobox").innerHTML = message;
		}
		$("variant_id").value = variantId;
		$("basketbuttonnholder").innerHTML = button;	
		
	}

	function onVariantChanged2(results) {
		var arr = results.split("|");
		
		var type = currentType;
		var price = arr[0];
		var availability = arr[1];		
		var filename = arr[2];
		var message = arr[3];	
		var variantId = arr[4];	
		var button = arr[5];	
		var productId = arr[6];	
		var newOption = arr[7];
		var newSize = arr[8];
		setSizeAndOptions(newOption, newSize);

		$("options").selectedIndex = 0;
		currentOption = 0;
		$("bigimage").src = "data/photos/" + filename;
		$("price").innerHTML = price;
		if ($("infobox")) {
			$("infobox").innerHTML = message;
		}
		$("variant_id").value = variantId;
		$("basketbuttonnholder").innerHTML = button;	
		
	}

	function addToBasket() {
		if($("variant_id").value < 1) return false;
		document.forms[0].submit();	
	}

	function updateBasket(variantId) {
		var elemQuantity = document.getElementById("quantity_" + variantId);
		if(isNaN(elemQuantity.value) || elemQuantity.value == "") {
			elemQuantity.value = 1;
		}
		// Set variant id to loading state

		var fragment = "/remote.php?mode=updatebasket" + 
		"&quantity=" + elemQuantity.value +
		"&variant_id=" + variantId;
	
		var elemBasketRows = document.getElementById('basketrows');
		
		new Ajax(fragment, {
			method: 'get', 
			update: elemBasketRows,
			onComplete: onUpdateBasket
		}).request();		
		
		//if( $("options")[$("options").selectedIndex].attributes["filename"].value != "") {
		//	$("bigimage").src = "data/photos/" + $("options")[$("options").selectedIndex].attributes["filename"].value;
		//}
	}	
	
	function onUpdateBasket() {
		//alert("updated");
	}
	
	function voteUp(elem, id) {
		var url = "/remote.php?mode=thumbsup&id=" + id;

		new Ajax(url, {
			method: 'get',
			update: elem.parentNode
		}).request();	

		return false;
	}

	function voteDown(elem, id) {
		var url = "/remote.php?mode=thumbsdown&id=" + id;

		new Ajax(url, {
			method: 'get',
			update: elem.parentNode
		}).request();	

		return false;
	}
	
	
	function selectAddressMode() {
		var disabled = document.getElementById("txtsame").checked;
		document.getElementById("txtbillname").disabled = disabled;
		document.getElementById("txtbilladdress1").disabled = disabled;
		document.getElementById("txtbilladdress2").disabled = disabled;
		document.getElementById("txtbillcity").disabled = disabled;
		document.getElementById("txtbillpostcode").disabled = disabled;
		document.getElementById("txtbillcountry").disabled = disabled;

		if(disabled) {
			document.getElementById("txtbillname").value = "";
			document.getElementById("txtbilladdress1").value = "";
			document.getElementById("txtbilladdress2").value = "";
			document.getElementById("txtbillcity").value = "";
			document.getElementById("txtbillpostcode").value = "";
			document.getElementById("txtbillcountry").selectedIndex = 0;			
		}
		
	}

function formatPrice(amount) {
	if(amount == 0) return "FREE";
	return "&pound;" . amount.toFixed(2);	
}

function getPriceAsFloat(string) {
	if (string == 'FREE') { return 0.0; }
	return parseFloat(string.replace(/.?(\d+\.\d{2})/gi, '$1'));
}

var shipping_methods;
var gift_wrap_options;
function siteLoaded() {
	if (location.pathname == '/forgotten_password.php') {
		if (location.search == '?close') {
			self.close();
		}
	}

	if (location.pathname == '/basket_shipping_login.php') {
		errors = document.getElementById('errors');
		if (typeof(errors) != "undefined") {
			email = document.getElementById('txtemail').value;
			if (email != "") {
				link = errors.getElementsByTagName('div')[0].getElementsByTagName('p')[0].getElementsByTagName('a')[0];
				if (typeof(link) != "undefined") {
					link.onclick = function() {
						window.location = 'basket_shipping_login.php?mode=newpasswd&txtemail=' + email;
						return false;
					}
				}
			}
		}
	}

	if (location.pathname == '/basket_shipping_method.php') {
		var shm = document.getElementById('methods');
		if (shm != null) shm = shm.getElementsByTagName('input');
		var gwo = document.getElementById('gifts');
		if (gwo != null) gwo = gwo.getElementsByTagName('input');

		var e_itc = getElementsByTagAndClassName(document.getElementById('item_cost'), 'td', 'price')[0];
		var e_shc = getElementsByTagAndClassName(document.getElementById('shipping_cost'), 'td', 'price')[0];
		var e_gwc = getElementsByTagAndClassName(document.getElementById('gift_wrap_cost'), 'td', 'price')[0];
		var e_stc = getElementsByTagAndClassName(document.getElementById('subtotal_cost'), 'td', 'price')[0];

		if (shm != null) {
			for (var i = 0; i < shm.length; i++) {
				if (navigator.appName == "Microsoft Internet Explorer") {shm[i].onclick = function() {this.blur();}}
				shm[i].onchange = function() {
					var sm = shipping_methods.methods[this.value].toFixed(2);
					e_shc.innerHTML = '&pound;' + sm;
					total = getPriceAsFloat(e_itc.innerHTML) + getPriceAsFloat(e_shc.innerHTML) + getPriceAsFloat(e_gwc.innerHTML);
					e_stc.innerHTML = '&pound;' + total.toFixed(2);
				}
			}
		}

		if (gwo != null) {
			for (var i = 0; i < gwo.length; i++) {
				if (navigator.appName == "Microsoft Internet Explorer") {gwo[i].onclick = function() {this.blur();}}
				gwo[i].onchange = function() {
					wo = gift_wrap_options.options[this.value];
					var gw = 0;
					if (wo[0] > 0.0) {
						document.getElementById('gift_wrap_cost').style.display = '';
						gw = (wo[0] * wo[1]).toFixed(2);
						e_gwc.innerHTML = '&pound;' + gw;
					} else {
						document.getElementById('gift_wrap_cost').style.display = 'none';
						gw = gw.toFixed(2);
						e_gwc.innerHTML = '&pound;0.00';
					}
					total = getPriceAsFloat(e_itc.innerHTML) + getPriceAsFloat(e_shc.innerHTML) + getPriceAsFloat(e_gwc.innerHTML);
					e_stc.innerHTML = '&pound;' + total.toFixed(2);
				};
			}
		}
	}

	if (location.pathname == '/basket_order_confirmation.php') {
		if (basket_order_confirmation_setup != 1) { // Safari fix
			inputs = document.getElementById('billing').getElementsByTagName('input');
			btn_save = document.getElementById('billingsave');
			btn_save_display = btn_save.style.display;
			btn_submit = document.getElementById('submitorder');
			validationErrors = document.getElementById('validationErrors');

			if (validationErrors.value != 1) {
				for (i = 0; i < inputs.length; i++) {
					inputs[i].onfocus = function() {
						btn_save.style.display = '';
						btn_submit.style.display = 'none';
					}
				}
				btn_save.style.display = 'none';
			} else {
				for (i = 0; i < inputs.length; i++) {
						inputs[i].onfocus = function() {
						btn_save.style.display = '';
						btn_submit.style.display = 'none';
					}
				}
				btn_save.style.display = '';
			}
			basket_order_confirmation_setup = 1; // Safari fix
		}

		//var document.getElementById('billing').getElementsByTagName('input');
		
	}
}
