// generic js
var xmlhttp;
var illegalChars = /[\W_]/; // allow only letters and numbers
var nospaces = /^\s+|\s+$/g; //remove all spaces
var onlynumbers = /[\(\)\.\-\ a-z]/g; //only numbers
function donothing() {
}
function createxmlobject() {
	xmlhttp=null
	// code for Mozilla, etc.
	if (window.XMLHttpRequest) {
		xmlhttp = new XMLHttpRequest();
	}
	// code for IE
	else if (window.ActiveXObject) {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (xmlhttp != null) {
		return xmlhttp;
	}
	else {
		return false;
		//alert("Your browser does not support XMLHTTP.")
	}
}
function changeopac(opacity, id) {
	if (opacity >= 100) opacity = 99;
	var object = document.getElementById(id).style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}
function getPageSizeWithScroll(){
	if (window.innerHeight && window.scrollMaxY) {// Firefox
		yWithScroll = window.innerHeight + window.scrollMaxY;
		xWithScroll = window.innerWidth + window.scrollMaxX;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		yWithScroll = document.body.scrollHeight;
		xWithScroll = document.body.scrollWidth;
	} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
		yWithScroll = document.body.offsetHeight;
		xWithScroll = document.body.offsetWidth;
  	}
	arrayPageSizeWithScroll = new Array(xWithScroll,yWithScroll);
	//alert( 'The height is ' + yWithScroll + ' and the width is ' + xWithScroll );
	return arrayPageSizeWithScroll;
}
function formatcurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10) cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}
function validateemail (email) {
	var error = "";
	var emailFilter=/^.+@.+\..{2,3}$/;
	if (!(emailFilter.test(email))) { 
	   alert("'"+email+"' is an Invalid Email Address");
	   return false;
	}
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if (email.match(illegalChars) && error == "") {
	   alert("'"+email+"' Contains Illegal Characters");
	   return false;
	}
	else {
		return true;
	}
}
function selectmanufacturer(submitform) {
	var manuf_id = document.getElementById("manufacturers_id");
	var manuf_form = document.getElementById("manufacturers_form");
		 if (manuf_id.value != "" && submitform == true) return true;
	else if (manuf_id.value == "" && submitform == true) return false;
	else if (manuf_id.value != "") manuf_form.submit();
}
function selectproducttype(submitform) {
	var type_id = document.getElementById("categories_id");
	var type_form = document.getElementById("types_form");
		 if (type_id.value != "" && submitform == true) return true;
	else if (type_id.value == "" && submitform == true) return false;
	else if (type_id.value != "") type_form.submit();
}

// Home Page
function shownewslettersignup() {
	document.getElementById("newsletterthanks").style.display = "none";
	document.getElementById("newslettersignup").style.display = "block";
	document.getElementById("email").value = "";
}
function newslettersignup(email) {
	if (!validateemail(email)) return false;
	document.getElementById("newslettersignup").style.display = "none";
	document.getElementById("newslettersignupinprogress").innerHTML = "<br /><strong>&nbsp;&nbsp;&nbsp;Signing Up...<"+"/strong><br /><img src='images/inprogresscircle.gif' />";
	document.getElementById("newslettersignupinprogress").style.display = "block";
	xmlhttp = createxmlobject();//new XMLHttpRequest();
	if (!xmlhttp) {
		return true;
	}
	xmlhttp.open('GET','subscribe?js=true&email='+escape(email), true);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			theresult = xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data;
			if (theresult == "yes") {
				document.getElementById("newslettersignupinprogress").style.display = "none";
				document.getElementById("newsletterthanks").style.display = "block";
				document.getElementById("newsletterthanksemail").innerHTML = escape(email);
				var sizes = getPageSizeWithScroll();
				//document.getElementById("greyout").style.width = (sizes[0] + 10000) + "px";
				//document.getElementById("greyout").style.height = (sizes[1]+ 10000) + "px";
				//document.getElementById("greyout").style.top = "0px";
				//document.getElementById("greyout").style.left = "0px";
				document.getElementById("greyoutcontent").style.left = (sizes[0] / 2 - 60) + "px";
				document.getElementById("greyoutcontent").style.top = (sizes[1] / 2 - 60) + "px";
				//changeopac(90,"greyout");
				//document.body.style.overflow = "hidden";
				//document.getElementById("greyout").style.display = "block";
				document.getElementById("greyoutcontent").style.display = "block";
			}
			else {
				document.getElementById("newslettersignupinprogress").innerHTML = "";
				document.getElementById("newslettersignupinprogress").style.display = "none";
				document.getElementById("newslettersignup").style.display = "block";
				alert("We were not able to add your email address. Please note the result below:\n\n"+theresult);
			}
		}
	}
	xmlhttp.send(null);
	return false;
}

// Contact Page
function showother() {
	var other = document.getElementById("other");
	var subject = document.getElementById("subject");
	var thesubject = subject.options[subject.options.selectedIndex].value
	if (thesubject == "Other") {
		other.style.visibility = "visible";
	}
	else {
		other.style.visibility = "hidden";
	}
}
function validatecontact() {
	var email = document.getElementById("email").value;
	if (!validateemail(email)) return false;
	var name = document.getElementById("name").value;
	if (name.replace(nospaces, "") == "") {
		alert("Your Need To Enter Your Name");
		return false;
	}
	var subject = document.getElementById("subject").options[document.getElementById("subject").options.selectedIndex].value;
	var othersubject = document.getElementById("othersubject").value;
	if (subject == "") {
		alert("You Need To Select A Subject, Or Choose `Other` And Specify Your Own");
		return false;
	}
	else if (subject == "Other" && othersubject.replace(nospaces,"") == "") {
		alert("You Need To Specify Your Subject");
		return false;
	}
	else if (subject == "Other") subject = othersubject;
	var message = document.getElementById("message").value;
	if (message.replace(nospaces, "") == "") {
		alert("Your Need To Enter A Message");
		return false;
	}
	var phone = document.getElementById("phone1").value + document.getElementById("phone2").value + document.getElementById("phone3").value;
	var ordernum = document.getElementById("ordernum").value;
	var sessionid = document.getElementById("sessionid").value;
	var sendstring = "js=true&email[name]="+escape(name)+"&email[email]="+escape(email)+"&email[phone]="+escape(phone)+"&email[ordernum]="+escape(ordernum)+"&email[subject]="+escape(subject)+"&email[message]="+escape(message)+"&email[sessionid]="+escape(sessionid);
	xmlhttp = createxmlobject();//new XMLHttpRequest();
	if (!xmlhttp) {
		return true;
	}
	xmlhttp.open('POST','contact?js=true', true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(sendstring);
	document.getElementById("contactform").style.display = "none";
	document.getElementById("contactforminprogress").innerHTML = "<br /><strong>&nbsp;&nbsp;&nbsp;Sending Email...<"+"/strong><br /><img src='images/inprogresscircle.gif' />";
	document.getElementById("contactforminprogress").style.display = "block";
	xmlhttp.onreadystatechange = function() {
		if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
			theresult = xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data;
			if (theresult == "yes") {
				document.getElementById("contactformthanks").style.display = "block";
				document.getElementById("contactforminprogress").style.display = "none";
				var sizes = getPageSizeWithScroll();
				document.getElementById("greyout").style.width = (sizes[0] + 10000) + "px";
				document.getElementById("greyout").style.height = (sizes[1]+ 10000) + "px";
				document.getElementById("greyout").style.top = "0px";
				document.getElementById("greyout").style.left = "0px";
				document.getElementById("greyoutcontent").style.left = (sizes[0] / 2 - 60) + "px";
				document.getElementById("greyoutcontent").style.top = (sizes[1] / 2 - 60) + "px";
				changeopac(90,"greyout");
				document.body.style.overflow = "hidden";
				document.getElementById("greyout").style.display = "block";
				document.getElementById("greyoutcontent").style.display = "block";
			}
			else {
				document.getElementById("contactforminprogress").innerHTML = "";
				document.getElementById("contactforminprogress").style.display = "none";
				document.getElementById("contactform").style.display = "block";
				alert("We were not able to send your email. Please note the result below:\n\n"+theresult);
			}
			/*try
			{
				if((xmlhttp.readyState == 4)&&(xmlhttp.status == 200))
				{
					response = xmlhttp.responseXML;
					alert(response.getElementsByTagName('result')[0].firstChild.data);
				}
			}
			catch(e)
			{
				// caught an error
				alert(xmlhttp.readyState);
			}*/
		}
	}
	return false;
}



// Account-New Page
var loggedin = false;
var passsent = false;
function validatelogin() {
	loggedin = false;
	var user = document.getElementById("alias").value;
	if (user.replace(nospaces, "") == "") {
		alert("You Need To Enter Your Username");
		return false;
	}
	var pass = document.getElementById("pass").value;
	if (pass.replace(nospaces, "") == "") {
		alert("You Need To Enter Your Password");
		return false;
	}
	xmlhttp = createxmlobject();//new XMLHttpRequest();
	if (!xmlhttp) {
		return true;
	}
	var sendstring = "js=true&account[method]=login&account[customers_alias]="+escape(user)+"&account[customers_password]="+escape(pass);
	xmlhttp.open('POST','login.do?js=true', true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(sendstring);
	document.getElementById("loginform").style.display = "none";
	document.getElementById("loginforminprogress").innerHTML = "<br /><strong>&nbsp;&nbsp;&nbsp;Logging In...<"+"/strong><br /><img src='images/inprogresscircle.gif' />";
	document.getElementById("loginforminprogress").style.display = "block";
	xmlhttp.onreadystatechange = function() {
		if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
			theresult = xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data;
			if (theresult == "yes") {
				loggedin = true;
				handleaccount();
			}
			else {
				loggedin = false;
				document.getElementById("loginforminprogress").innerHTML = "";
				document.getElementById("loginforminprogress").style.display = "none";
				document.getElementById("loginform").style.display = "block";
				alert("We were not able to log you in. Please note the result below:\n\n"+theresult);
			}
		}
	}
	return false;
}
function validatelostpass() {
	passsent = false;
	var email = document.getElementById("lpemail").value;
	if (email.replace(nospaces, "") == "") {
		alert("You Need To Enter Your Email Address");
		return false;
	}
	xmlhttp = createxmlobject();//new XMLHttpRequest();
	if (!xmlhttp) {
		return true;
	}
	var sendstring = "js=true&account[method]=lostpassword&account[customers_email_address]="+escape(email);
	xmlhttp.open('POST','lostpassword.do?js=true', true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(sendstring);
	document.getElementById("lostpassform").style.display = "none";
	document.getElementById("lostpassforminprogress").innerHTML = "<br /><strong>&nbsp;&nbsp;&nbsp;Finding Password...<"+"/strong><br /><img src='images/inprogresscircle.gif' />";
	document.getElementById("lostpassforminprogress").style.display = "block";
	xmlhttp.onreadystatechange = function() {
		if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
			theresult = xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data;
			if (theresult == "yes") {
				passsent = true;
				document.getElementById("lostpassformthanks").style.display = "block";
				document.getElementById("lostpassforminprogress").style.display = "none";
				var sizes = getPageSizeWithScroll();
				document.getElementById("greyout").style.width = (sizes[0] + 10000) + "px";
				document.getElementById("greyout").style.height = (sizes[1]+ 10000) + "px";
				document.getElementById("greyout").style.top = "0px";
				document.getElementById("greyout").style.left = "0px";
				document.getElementById("greyoutcontent").style.left = (sizes[0] / 2 - 60) + "px";
				document.getElementById("greyoutcontent").style.top = (sizes[1] / 2 - 60) + "px";
				document.getElementById("greyoutmsg").innerHTML = "Password Sent";
				changeopac(90,"greyout");
				document.body.style.overflow = "hidden";
				document.getElementById("greyout").style.display = "block";
				document.getElementById("greyoutcontent").style.display = "block";
			}
			else {
				passsent = false;
				document.getElementById("lostpassforminprogress").innerHTML = "";
				document.getElementById("lostpassforminprogress").style.display = "none";
				document.getElementById("lostpassform").style.display = "block";
				alert("We were not able to find your password. Please note the result below:\n\n"+theresult);
			}
		}
	}
	return false;
}
function handleaccount() {
	if (loggedin == true) {
		if (document.getElementById("postlogin")) location.href = document.getElementById("postlogin").value+".html?welcome=true";
		else location.href = "account.html?welcome=true";
	}
	else if (passsent == true) {
		document.getElementById('greyout').style.display='none';
		document.getElementById('greyoutcontent').style.display='none';
		document.body.style.overflow = 'auto';
	}
}

// product detail page
function switchdetailimage(theid) {
	var dimg = document.getElementById("dimg");
	var mimg = document.getElementById("mimg");
	var dcaption = document.getElementById("dcaption");
	var mcaption = document.getElementById("mcaption");
	dimg.src = dimgs[theid].src;
	mimg.src = mimgs[theid].src;
	dcaption.innerHTML = captions[theid];
	mcaption.innerHTML = captions[theid];
}
function magnifydetailimage(theid) {
	var productmain = document.getElementById("productmain");
	var productimages = document.getElementById("productimages");
	productmain.style.display = "none";
	productimages.style.display = "block";
}
function unmagnifydetailimage(theid) {
	var productmain = document.getElementById("productmain");
	var productimages = document.getElementById("productimages");
	productmain.style.display = "block";
	productimages.style.display = "none";
}

// view cart
function updatecart() {
	var cart = document.getElementById("cartform");
	document.getElementById("cartaction").value = "update";
	cart.submit();
}
function deleteselected() {
	var cart = document.getElementById("cartform");
	xmlhttp = createxmlobject();//new XMLHttpRequest();
	if (!xmlhttp) {
		document.getElementById("cartaction").value = "delete";
		cart.submit();
	}
	var returnstring = "";
	document.getElementById("delete").href="javascript:donothing();";
	document.getElementById("update").href="javascript:donothing();";
	for (var i = 0; i<cart.elements.length; i++) {
		if ((cart.elements[i].type == 'checkbox')) {
			if (cart.elements[i].checked) {
				returnstring += cart.elements[i].id + ";";
			}
			cart.elements[i].disabled = true;
		}
	}
	var sendstring = "js=true&cartaction=delete&products="+returnstring;
	xmlhttp.open('POST','cart.do?js=true', true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(sendstring);
	document.getElementById("spinner").style.visibility = "visible";
	xmlhttp.onreadystatechange = function() {
		if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
			theresult = xmlhttp.responseXML.getElementsByTagName('theresult')[0].firstChild.data;
			if (theresult == "yes") {
				document.getElementById("subtotal").innerHTML = xmlhttp.responseXML.getElementsByTagName('thesubtotal')[0].firstChild.data;
				var id = "";
				for (var i = 0; i<cart.elements.length; i++) {
					if ((cart.elements[i].type == 'checkbox')) {
						cart.elements[i].disabled = false;
						if (cart.elements[i].checked) {
							id = cart.elements[i].id.substr(5);
							document.getElementById("row"+id).style.display = "none";
						}
					}
				}
			}
			else {
				alert("We were not able to delete the items from your cart. Please try again.");
			}
			for (var i = 0; i<cart.elements.length; i++) {
				if ((cart.elements[i].type == 'checkbox')) {
					cart.elements[i].disabled = false;
				}
			}
			document.getElementById("spinner").style.visibility = "hidden";
			document.getElementById("delete").href="javascript:deleteselected();";
			document.getElementById("update").href="javascript:updatecart();";
		}
	}
}