function getStyle(element,cssRule) {
	if(document.defaultView && document.defaultView.getComputedStyle) {
		var value = document.defaultView.getComputedStyle(element,'').getPropertyValue(
				cssRule.replace(/[A-Z]/g, function(match,char) {
				return '-' + char.toLowerCase();
			} )
		);
	}
	else if (element.currentStyle) {
		var value = element.currentStyle[cssRule];
	}
	else {
		var value = false;
	}
	return value;
}

function hideTip(who) {
	var x = who.parentNode.getElementsByTagName("DIV")[0];
	if(getStyle(x,"visibility") == "visible") {
		x.style.visibility = "hidden";
	}
}

function showTip(who) {
	var x = who.parentNode.getElementsByTagName("DIV")[0];
	if(getStyle(x,"visibility") == "hidden") {
		x.style.visibility = "visible";
	}
}

function showPic(who,size) {
	if(!size) {
		size = "250";
	}
	if(document.getElementById("main")) {
		var x = who.parentNode.parentNode.getElementsByTagName("LI");
		for(i=0;i<x.length;i++) {
			x[i].className = "";
		}
		who.parentNode.className = "current";
		document.getElementById("main").src = who.href.replace("/55/","/"+size+"/");
		if(document.getElementById("zoom")) {
			document.getElementById("zoom").href = who.href.replace("/55/","/600/");
		}
	}
}

function zoomPic(who) {
	window.open(who.href);
}

function toggleLibrary(who) {
	var x = document.getElementById("productlibrary");
	if(getStyle(x,"display") != "block") {
		x.style.display = "block";
		who.style.backgroundPosition = "0px -52px";
	} else {
		x.style.display = "none";
		who.style.backgroundPosition = "";
	}
}

//start category ajax

function getSubcategories(which,who) {
	var y = document.getElementById("subcategories");
	if(who != "") {
		//Set category
		setCurrent(which);
		setCategory(who);
		//Strip old subs
		removeChildrenRecursively(y);
		y.style.display = "none";
		if(y.nextSibling && y.nextSibling.nodeType == 1) {
			y.nextSibling.style.display = "none";
		}
		//Get subs
		var http = null; 
		if(window.XMLHttpRequest) {
			http = new XMLHttpRequest();
		}
		else if (window.ActiveXObject) {
			http = new ActiveXObject("Microsoft.XMLHTTP");
		}
		http.onreadystatechange = function() { 
			if(http.readyState == 4) {
				if(http.status == 200) {
					//Append new subs
					var z = http.responseXML.childNodes[0].childNodes;
					for(j=0;j<z.length;j++) {
						var container = document.createElement('LI');
						var theLink = document.createElement('A');
						var theData = document.createTextNode(z[j].childNodes[0].nodeValue);
						theLink.appendChild(theData);
						theLink.setAttribute("href","#");
						theLink.onclick = new Function("setSubcategory(this,'"+z[j].getAttribute('id')+"');return false;");
						container.appendChild(theLink);
						y.appendChild(container);
					}
					document.getElementById('productsearch').submit();
				}	
				else {
					alert("Error: returned status code " + http.status + " " + http.statusText);
				}	
			} 
		};
		http.open("GET","subcat.php?category="+who,true);
		http.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
		http.send("");
	} else {
		//Strip subs
		removeChildrenRecursively(y);
		y.style.display = "none";
	}
}

function removeChildrenRecursively(node) {
	if(!node) {
		return;
	}
	while (node.hasChildNodes()) {
		removeChildrenRecursively(node.firstChild);
		node.removeChild(node.firstChild);
	}
}

function setCurrent(who) {
	var x = who.parentNode.parentNode.getElementsByTagName("LI");
	for(i=0;i<x.length;i++) {
		x[i].className = "";
	}
	who.parentNode.className = "current";
}

function setCategory(who) {
	if(document.getElementById("category")) {
		document.getElementById("category").value = who;
		document.getElementById("subcategory").value = "";
	}
}

function setSubcategory(which,who) {
	setCurrent(which);
	if(document.getElementById("subcategory")) {
		document.getElementById("subcategory").value = who;
		document.getElementById('productsearch').submit();
	}
}

function setValue(who) {
	if(document.getElementById("value")) {
		document.getElementById("value").value = who;
		document.getElementById("productsearch").submit();
	}
}

function setSize(which) {
	if(document.getElementById("size")) {
		document.getElementById("size").value = which;
		document.getElementById("productsearch").submit();
	}
}

function setMarket(which,who) {
	setCurrent(which);
	if(document.getElementById("market")) {
		document.getElementById("market").value = who;
	}
}

function setVendor(who) {
	if(document.getElementById("vendor")) {
		document.getElementById("vendor").value = who;
		document.getElementById("productsearch").submit();
	}
}

//end category ajax

//gallery functions

function addImage(img) {
	if(typeof(images) == "undefined") {
		images = new Array();
	}
	images.push(img);
}

function getImage(which) {
	var newimage;
	//create indexOf method for IE
	if(!Array.indexOf){
	    Array.prototype.indexOf = function(obj){
	        for(var i=0; i<this.length; i++){
	            if(this[i]==obj){
	                return i;
	            }
	        }
	        return -1;
	    }
	}
	if(which.id == "next") {
		newimage = images.indexOf(document.getElementById("main").src.substring(document.getElementById("main").src.lastIndexOf("/")+1)) + 1;
	} else if(which.id == "last") {
		newimage = images.indexOf(document.getElementById("main").src.substring(document.getElementById("main").src.lastIndexOf("/")+1)) - 1;
	} else {
		newimage = which.rel;
	}
	
	document.getElementById("progress").style.display = "block";
	
	var pic = new Image();
	pic.src = "images/gallery/"+images[newimage];
	if(pic.complete) {
		document.getElementById("main").src = pic.src;
		document.getElementById("progress").style.display = "none";
		
	} else {
		pic.onload = function() { 
			document.getElementById("main").src = pic.src;
			document.getElementById("progress").style.display = "none";
		};
	}
	
	if(newimage == 0) {
		document.getElementById("last").style.display = "none";
	} else {
		document.getElementById("last").style.display = "block";
	}
	if (newimage > images.length - 2) {
		document.getElementById("next").style.display = "none";
	} else {
		document.getElementById("next").style.display = "block";
	}	
	//outline thumb
	var x = document.getElementById("thumbs").getElementsByTagName("LI");
	for(i=0;i<x.length;i++) {
		x[i].className = "";
		if(x[i].getElementsByTagName("A")[0].rel == newimage) {
			x[i].className = "current";
		}
	}
}

//end gallery function

function checkInput(who) {
	if(who.value == "Search...") {
		who.className = "";
		who.value = "";
	} else if(who.value == "") {
		who.className = "label";
		who.value = "Search...";
	}
}

function validateSearch(who) {
	if(who.elements['keywords'].value && who.elements['keywords'].value != "Search...") {
		return true;
	} else {
		alert("Please enter your search criteria.");
		return false;
	}
}

function validateLibrary(who) {
	if(who.elements['category'].value) {
		return true;
	} else {
		alert("Please choose a category.");
		return false;
	}
}

function validate(form) {
	var f = form;
	var missing = new Array();
	var msg = "Please be sure to fill out all of the fields marked in red.";
	for(i=0;i<f.elements.length;i++) {
		if(f.elements[i].value.length < 1 && f.elements[i].className == "required") {
			missing.push(f.elements[i].name);
		}
		if(f.elements[i].name == "email" && f.elements[i].className == "required") {
			if(!validateEmail(f.elements[i].value)) {
				missing.push(f.elements[i].name);
				missing.length > 1 ? msg += " Also, please make sure you have entered a valid email address." : msg = "Please make sure you have entered a valid email address.";
			}
		}
	}
	if (missing.length > 0) {
		labels = document.getElementsByTagName("LABEL");
		for(h=0;h<labels.length;h++) {
			labels[h].className = "";
		}
		for(j=0;j<missing.length;j++) {
			document.getElementById(missing[j]).className = "required";
		}
		alert(msg);
		return false;
	}
	else {
		return true;
	}
}

function validateEmail(str) {
	return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}

function setTips() {
	if(document.getElementById("size")) {
		var x = document.getElementsByTagName("A");
		for(i=0;i<x.length;i++) {
			if(x[i].parentNode.parentNode.id == "size") {
				x[i].onmouseover = function() {
					showTip(this);
				};
				x[i].onmouseout = function() {
					hideTip(this);
				};
			}
		}
	}
}