//-- Preload images to cure the browser flickering issue
if (document.images) {
	var aryImages = new Array();
	aryImages[0] = new Image();
	aryImages[0].src = "/images/spacer.gif";
	aryImages[1] = new Image();
	aryImages[1].src = "/images/icon_cart_over.png";
	aryImages[2] = new Image();
	aryImages[2].src = "/images/icon_close_over.png";
	aryImages[3] = new Image();
	aryImages[3].src = "/images/btn_red.png";
	aryImages[4] = new Image();
	aryImages[4].src = "/images/btn_orange.png";
	aryImages[5] = new Image();
	aryImages[5].src = "/images/btn_yellow.png";
	aryImages[6] = new Image();
	aryImages[6].src = "/images/btn_green.png";
	aryImages[7] = new Image();
	aryImages[7].src = "/images/btn_blue.png";
	aryImages[8] = new Image();
	aryImages[8].src = "/images/btn_aqua.png";
	aryImages[9] = new Image();
	aryImages[9].src = "/images/btn_gray.png";
	aryImages[10] = new Image();
	aryImages[10].src = "/images/btn_disabled.png";
}

function formatPhone(field, event) {
	if (field.value.replace(/^\s+|\s+$/g, "") == "") {
		return true;
	}
	event = event || window.event;
	code = event.which || event.keyCode;
	//-- ignore backspace, tab, shift, ctrl, home, end, arrows, del
	var aryCodes = [ 8, 9, 16, 17, 35, 36, 37, 38, 39, 46 ];
	if (!aryCodes.contains(code)) {
		if (field.value.match(/^[01]?\s?\(\d{1,2}$/) ||
			field.value.match(/^[01]?\s?\(\d{3}\)\s\d{1,2}$/) ||
			field.value.match(/^[01]?\s?\(\d{3}\)\s\d{3}-\d{1,4}$/) || 
			field.value.match(/^[01]?\s?\(\d{3}\)\s\d{3}-\d{4}\s[x]{1}\s[\d]{1,5}$/)
		) {
			return true;
		}
		var proceed = true;
		if (proceed) proceed = !field.value.match(/^([01])\s$/);
		if (proceed) proceed = !field.value.match(/^([01]?\s?)(\()$/);
		if (proceed) proceed = !field.value.match(/^([01]?\s?)(\([0-9]{3}\))\s$/);
		if (proceed) proceed = !field.value.match(/^([01]?\s?)(\([0-9]{3}\))\s([0-9]{3})\-$/);
		if (proceed) proceed = !field.value.match(/^([01]?\s?)(\([0-9]{3}\))\s([0-9]{3})\-([0-9]{4})([ex\s])$/);
		if (proceed) {
			var temp = field.value.replace(/[^0-9]/g, "");
			var cursor = temp.length;
			var prefix = temp.replace(/^([01]?)([0-9]*)$/, "$1").length;
			temp = temp.replace(/^([01]?)([0-9]{0,3})([0-9]{0,3})([0-9]{0,4})([0-9]*)$/, "$1 ($2) $3-$4 x $5");
			if (cursor < (11+prefix)) temp = temp.replace(/\s*x\s*$/, "");
			if (cursor < (6+prefix)) temp = temp.replace(/\-\s*$/, "");
			if (cursor < (3+prefix)) temp = temp.replace(/\)\s*$/, "");
			if (cursor < (1+prefix)) temp = temp.replace(/\s\(*$/, "");
			if (!cursor) temp = "";
			if (cursor > (15+prefix)) temp = temp.substring(0,temp.length-(cursor-(15+prefix)));
			temp = temp.replace(/^\s+|\s+$/g, "");
			field.value = temp;
		} else {
			if (field.value.match(/^([01]?\s?)(\([0-9]{3}\))\s([0-9]{3})\-([0-9]{4})([ex\s])$/)) {
				field.value = field.value.replace(/([ex\s])$/, " x ");
			} else {
				field.value = field.value;
			}
		}
		field.focus();
	}
	return true;
}

Array.prototype.contains = function(obj) {
	var i = this.length;
	while (i--) {
		if (this[i] === obj) {
			return true;
		}
	}
	return false;
}

//-- Opens links with the "external" rel attribute in a new window (CSS Compliant)
function initLinks() {
	if (document.getElementsByTagName) {
		var a = document.getElementsByTagName("A");
		for (var i=0; i<a.length; i++) {
			if (a[i].getAttribute("href") && a[i].getAttribute("rel") == "external") {
				a[i].target = "_blank";
			}
		}
	}
}

function showMenu(element) {
	try {
		var children = element.getElementsByTagName("UL");
		for (var i=0; i<children.length; i++) {
			children[i].style.display = "block";
		}
	} catch (err) { }
}

function hideMenu(element) {
	try {
		var children = element.getElementsByTagName("UL");
		for (var i=0; i<children.length; i++) {
			children[i].style.display = "none";
		}
	} catch (err) { }
}

function hideElement(strElement) {
	if (document.getElementById(strElement)) {
		document.getElementById(strElement).style.display = "none";
	}
}

function showElement(strElement) {
	if (document.getElementById(strElement)) {
		document.getElementById(strElement).style.display = "";
	}
}

function setInnerText(element, text) {
	if (element) {
		try { element.innerText = text; } catch (er) { }
	}
}

function setInnerTextById(id, text) {
	if (document.getElementById(id)) {
		try { document.getElementById(id).innerText = text; } catch (er) { }
	}
}

function setInnerHtml(element, text) {
	if (element) {
		try { element.innerHTML = text; } catch (er) { }
	}
}

function setInnerHtmlById(id, text) {
	if (document.getElementById(id)) {
		try { document.getElementById(id).innerHTML = text; } catch (er) { }
	}
}

function selectPrevShipping(objCheckbox, intAddressID) {
	if (objCheckbox.checked && document.getElementById("previousShippingAddress")) {
		var foundMatch = false;
		var parent = document.getElementById("previousShippingAddress");
		var children = parent.getElementsByTagName("INPUT");
		for (var i=0; i<children.length; i++) {
			if (children[i].name == "ship_AddressID") {
				children[i].checked = false;
				if (children[i].value == intAddressID.toString()) {
					children[i].checked = true;
					foundMatch = true;
				}
			}
		}
		if (foundMatch) {
			hideElement("newShippingAddress");
			document.getElementById("previousShippingNo").checked = false;
			document.getElementById("previousShippingYes").checked = true;
			showElement("previousShippingAddress");
		}

		try {
			setTimeout(function() { objCheckbox.checked = false; }, 3000);
		} catch (err) { }
	} else {
		clearShipping(objCheckbox);
	}
}

function copyNewShipping(objCheckbox, firstName, middleInitial, lastName, companyName, address1, address2, city, state, zip, phone1, phone2) {
	if (objCheckbox.checked) {
		theForm = objCheckbox.form;
		theForm.ship_FirstName.value = firstName;
		theForm.ship_MiddleInitial.value = middleInitial;
		theForm.ship_LastName.value = lastName;
		theForm.ship_CompanyName.value = companyName;
		theForm.ship_Address1.value = address1;
		theForm.ship_Address2.value = address2;
		theForm.ship_City.value = city;
		theForm.ship_State.value = state;
		theForm.ship_Zip.value = zip;
		theForm.ship_Phone1.value = phone1;
		theForm.ship_Phone2.value = phone2;

		hideElement("previousShippingAddress");
		document.getElementById("previousShippingNo").checked = true;
		document.getElementById("previousShippingYes").checked = false;
		showElement("newShippingAddress");

		try {
			setTimeout(function() { objCheckbox.checked = false; }, 3000);
		} catch (err) { }
	} else {
		clearShipping(objCheckbox);
	}
}

function clearShipping(objCheckbox) {
	if (!objCheckbox.checked) {
		if (document.getElementById("previousShippingAddress")) {
			var parent = document.getElementById("previousShippingAddress");
			var children = parent.getElementsByTagName("INPUT");
			for (var i=0; i<children.length; i++) {
				if (children[i].name == "ship_AddressID") {
					children[i].checked = false;
				}
			}
		}

		theForm = objCheckbox.form;
		theForm.ship_FirstName.value = "";
		theForm.ship_MiddleInitial.value = "";
		theForm.ship_LastName.value = "";
		theForm.ship_CompanyName.value = "";
		theForm.ship_Address1.value = "";
		theForm.ship_Address2.value = "";
		theForm.ship_City.value = "";
		theForm.ship_State.value = "";
		theForm.ship_Zip.value = "";
		theForm.ship_Phone1.value = "";
		theForm.ship_Phone2.value = "";

		hideElement("previousShippingAddress");
		document.getElementById("previousShippingNo").checked = true;
		document.getElementById("previousShippingYes").checked = false;
		showElement("newShippingAddress");
	}
}

function checkAddresses(objElement) {
	var foundChecked = false;
	var parent, inputName;
	if (objElement.getAttribute("name") == "previousBilling") {
		parent = document.getElementById("previousBillingAddress");
		inputName = "bill_AddressID";
	} else if (objElement.getAttribute("name") == "previousShipping") {
		parent = document.getElementById("previousShippingAddress");
		inputName = "ship_AddressID";
	}
	
	var children = parent.getElementsByTagName("INPUT");
	if (children.length > 0) {
		//-- check if any addresses are already selected
		for (var i=0; i<children.length; i++) {
			if (children[i].name == inputName) {
				if (!foundChecked && children[i].checked) {
					foundChecked = true;
				}
			}
		}
		if (!foundChecked) {
			//-- find the first address and mark it checked
			for (var j=0; j<children.length; j++) {
				if (children[j].name == inputName) {
					if (!foundChecked) {
						children[j].checked = true;
						foundChecked = true;
					}
				}
			}
		}
	}
}

function checkRequiresDetail(objSelect) {
	var req = false;
	var sel = objSelect.selectedIndex;
	var val = document.getElementById("label_ShippingMethodDetail").getAttribute("rel");

	if (objSelect.options[sel].getAttribute("rel")) {
		req = true;
		val = objSelect.options[sel].getAttribute("title");
	}

	document.getElementById("label_ShippingMethodDetail").innerHTML = val;
	if (req) {
		showElement("shippingMethodDetail");
	} else {
		hideElement("shippingMethodDetail");
		document.getElementById("other_ShippingMethodDetail").value = "";
	}
}

$(document).ready(function(){
	$("#navlist li.navitem").has("ul").hover(
		function() {
			$(this).clearQueue();
			$(this).delay(250);
			$(this).queue(function(){
				$(this).addClass("hover");
				$(this).children("a.navlink").addClass("selected");
				$(this).dequeue();
			});
		},
		function() {
			$(this).clearQueue();
			$(this).delay(250);
			$(this).queue(function(){
				$(this).removeClass("hover");
				$(this).children("a.navlink").removeClass("selected");
				$(this).dequeue();
			});
		}
	);
	//-- makes drop-down navigation work on iOS devices
	if (navigator.userAgent.match(/Mobile/i) && navigator.userAgent.match(/Safari/i)) {
		//$("body").css("background-position", "left top");
		$(document).bind("touchmove", function(){
			$("#navlist li.hover").mouseout();
		});
		$("#navlist li.navitem").has("ul").unbind("mouseenter");
		$("#navlist li.navitem").has("ul").children("a.navlink").click(function() {
			var parent = $(this).parent("li.navitem");
			if (parent.hasClass("hover")) {
				return true;
			}
			parent.clearQueue();
			parent.delay(250);
			parent.queue(function(){
				parent.addClass("hover");
				parent.children("a.navlink").addClass("selected");
				parent.dequeue();
			});
			return false;
		});
	}
	
	initLinks();
});
