//used in the case of specifying "onclick" from javascript
function addEvtListener(ele, eventName, fx)
{
	if(window.addEventListener)
	{ // Mozilla, Netscape, Firefox
		ele.addEventListener(eventName, fx, false);
	}
	else
	{ // IE
		ele.attachEvent("on" + eventName, fx);
	}
}

//used to remove listeners from the onclick event
function removeEvtListener(ele, eventName, fx)
{
	if(window.removeEventListener != null)
	{ // Mozilla, Netscape, Firefox
		ele.removeEventListener(eventName, fx, false);
	}
	else
	{ // IE
		ele.detachEvent("on" + eventName, fx);
	}
}

//blinds please site functions functions
function selectoptions(divname)
{
	if(divname != "specifications"){ hideTabContents("specifications"); }
	if(divname != "upgrades"){ hideTabContents("upgrades");	}
	if(divname != "colors"){ hideTabContents("colors");	}
	if(divname != "discount"){ hideTabContents("discount");	}
	if(divname != "options"){ hideTabContents("options"); }
	if(divname != "review"){ hideTabContents("review");	}
	if(divname != "reviews"){ hideTabContents("reviews");	}
	
	document.getElementById(divname + "content").style.display = "block";
	document.getElementById(divname + "option").style.borderColor = "#fbb040";
	document.getElementById(divname + "option").style.borderBottom = "solid 3px #fff";
}

function hideTabContents(divname)
{
	if(document.getElementById(divname + "content") && document.getElementById(divname + "option"))
	{
		var content = document.getElementById(divname + "content");
		var option = document.getElementById(divname + "option");
		
		content.style.display = "none";
		option.style.borderColor = "#939598";
		option.style.borderBottom = "#fbb040";
	}
}

function validatequote(notifyError)
{
	txtWidth = document.getElementById("txtWidthInches");
	wValue = txtWidth.value.replace(/^\s*/, "").replace(/\s*$/, "");
	
	txtHeight = document.getElementById("txtHeightInches");
	hValue = txtHeight.value.replace(/^\s*/, "").replace(/\s*$/, "");
	
	if(isNaN(wValue) || isNaN(hValue) || wValue < 0 || hValue < 0)
	{
		if(notifyError != null){ alert("you must enter valid product dimensions to receive a quote"); }
		return false;
	}
	
	drpProduct = document.getElementById("drpSubcat");
	value = drpProduct.options[drpProduct.selectedIndex].value;
	text = drpProduct.options[drpProduct.selectedIndex].text;
	if(value < 0 || value == text)
	{
		if(notifyError != null){ alert("you must choose a product to receive a quote"); }
		return false;
	}
	
//	__doPostBack('btnQuotePlease', '');
	
	return true;
}

function validateSearch()
{
	var	txtSearch = document.getElementById("txtSearch");
	return (txtSearch.value.length > 0);
}

function changeClass(obj, className)
{
	obj.setAttribute("class",className);
	obj.setAttribute("className",className);
}

function clickButton(e, buttonid)
{
    var evt = e ? e : window.event;
    var bt = document.getElementById(buttonid);

    if(bt)
    {
		if(evt.keyCode == 13)
		{
			if(bt.click){ bt.click(); }
			if(bt.focus){ bt.focus(); }
			return false;
		}
    }
}

/* override this function on a page if you want something called */
function pageLoaded()
{
}

function formatCurrency(num)
{
	if(!isNumeric(num)){ return "invalid"; }
	
	var oldNumStr = (Math.round(parseFloat(num) * 100)/100).toFixed(2).toString();
	
	//add commas into the number
	var newNumStr = addCommas(oldNumStr);
	
	return "$" + newNumStr;
}

function addCommas(numStr)
{
	//if this currency value has no commas, or all the commas are assigned...
	if(numStr.indexOf(".") < 4 || (numStr.indexOf(",") < 3 && numStr.indexOf(",") >= 0))
	{
		return numStr;
	}
	else
	{
		var decIdx = numStr.indexOf(".");
		var commaIdx = numStr.indexOf(",");
		if(commaIdx < 0){ commaIdx = decIdx - 3; }
		while(commaIdx >= 0)
		{
			if(numStr[commaIdx] == ",")
			{
				commaIdx = commaIdx - 3;
			}
			else
			{
				numStr = numStr.substring(0, commaIdx) + "," + numStr.substring(commaIdx);
				return addCommas(numStr);
			}
		}
	}
	
	return numStr;
}

function formatDimension(dim)
{
	var num = parseFloat(dim);
	return convertDecimalToFractionStr(num, 16) + "\"";
}

function isNumeric(val)
{
	return (val.toString().match(/^[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?$/) != null);
}

function flipVisibility(ele)
{
	var divEle = ele.parentNode.getElementsByTagName("div")[0];
	if(divEle.className && divEle.className != "visibleblock")
	{
		divEle.setAttribute("className", "visibleblock");
		divEle.setAttribute("class", "visibleblock");
		
		leftIndex = ele.innerHTML.indexOf(" [");
		if(leftIndex == -1)
		{
			ele.innerHTML += " [-]";
		}
		else
		{
			txt = ele.innerHTML;
			ele.innerHTML = txt.substr(0, leftIndex) + " [-]";
		}
	}
	else
	{
		divEle.setAttribute("className", "hidden");
		divEle.setAttribute("class", "hidden");
		
		leftIndex = ele.innerHTML.indexOf(" [");
		if(leftIndex == -1)
		{
			ele.innerHTML += " [+]";
		}
		else
		{
			txt = ele.innerHTML;
			ele.innerHTML = txt.substr(0, leftIndex) + " [+]";
		}
	}
}

function getElementsByClassName(parentEle, tagName, className)
{
	var tmp = new Array();
	tmp[0] = className;
	return getElementsByClassNames(parentEle, tagName, tmp);
}

function getElementsByClassNames(parentEle, tagName, classNames)
{	
	var returnEles = new Array();
	var eles;
	
	try
	{
		eles = parentEle.getElementsByTagName(tagName);
	}
	catch(e)
	{
		alert(tagName + " - " + classNames);
	}
	
	j=0;
	for(i=0; i<eles.length; i++)
	{
		ele = eles[i];
		cName = getClassName(ele);
		for(var k in classNames)
		{
			var className = classNames[k];
			if(cName == className)
			{
				returnEles[j] = ele;
				j++;
				break;
			}
		}
	}
	
	return returnEles;
}

function getClassName(obj)
{
	if(obj && obj.nodeType && obj.nodeType == 1)
	{
		if(obj.getAttribute("class") && obj.getAttribute("class") != ""){ return obj.getAttribute("class"); }
		else if(obj.getAttribute("className") && obj.getAttribute("className") != ""){ return obj.getAttribute("className"); }
		else { return ""; }
	}
}

function printNodeInfo(divEle)
{
	var str = "";
	str += "element: " + divEle + "\n";
	str += "id: " + divEle.id + "\n";
	str += "class: " + getClassName(divEle) + "\n";
	str += "node value: " + divEle.nodeValue + "\n";
	if(divEle.innerHTML && divEle.innerHTML.length <= 50){ str += "inner html: " + divEle.innerHTML + "\n"; }
	str += "node type: " + divEle.nodeType + "\n";
	str += "parent node: " + divEle.parentNode + "\n";
	if(divEle.type != null) { str += "type: " + divEle.type + "\n"; }
	if(divEle.checked != null) { str += "checked: " + divEle.checked + "\n"; }
	if(divEle.disabled != null) { str += "disabled: " + divEle.disabled + "\n"; }
	if(divEle.childNodes){ str += "num children: " + divEle.childNodes.length + "\n"; }
	if(divEle.value != null) { str += "value: " + divEle.value + "\n"; }
	if(divEle.text != null) { str += "text: " + divEle.text + "\n"; }
	if(divEle.style != null && divEle.style.cssText != null) { str += "style: " + divEle.style.cssText + "\n"; }
	alert(str);
}

function hideElement(ele)
{
	setStyle(ele,"display","none");
}

function showBlockElement(ele)
{
	setStyle(ele,"display","block");
}

function showInlineElement(ele)
{
	setStyle(ele,"display","inline");
}

//doesn't work on block elements, or something...
function showElement(ele)
{
	removeStyle(ele,"display");
}

function setStyle(ele, attribute, value)
{
	try
	{
		ele.style.setAttribute(attribute, value);
	}
	catch(e)
	{
		ele.setAttribute("style", attribute + ": " + value);
	}
}

function removeStyle(ele, attribute)
{
	try
	{
		ele.style.removeAttribute(attribute);
	}
	catch(e)
	{
		ele.removeAttribute(attribute);
	}
}

function trim(str)
{
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); //fast, good all-around string replace method
}

function countElements(ele)
{
	count = 0;
	for(var i in ele)
	{
		count++;
	}
	return count;
}

function disableEnterKey(ipt, event)
{
    var key = (window.event) ? window.event.keyCode : event.which; //IE : firefox 
	if(key == 13)
	{
		ipt.blur();
		return false;
	}

	return true;
}

function preventTextFieldsFromPostback(parentElementID)
{
	var pe = document.getElementById(parentElementID);
	var inputs = pe.getElementsByTagName("input");
	for(i=0; i<inputs.length; i++)
	{
		var ipt = inputs[i];
		if(ipt.type != "hidden")
		{
			ipt.onkeypress = function(event) { return disableEnterKey(ipt, event); };
		}
	}
}

function getQueryString(idStr, source)
{
	try
	{
		var docString = source.split("?");
		var queryString = docString[1];
		var variables = queryString.split("&");
		for(i=0; i<variables.length; i++)
		{
			var variable = variables[i].split("=");
			if(variable[0] == idStr)
			{
				return variable[1];
			}
		}
		
		return "";
	}
	catch(e)
	{
		return "";
	}
}

function removeAllChildNodes(node) 
{
	if(node && node.hasChildNodes && node.removeChild) 
	{
		while (node.hasChildNodes())
		{
			node.removeChild(node.firstChild);
		}
	}
}

function convertDecimalToFractionStr(decimal, denominator)
{
	var fracStr = "";
	var wholeNumber = parseInt(decimal);
	var fraction = (parseFloat(decimal) - wholeNumber);
	var numerator = Math.ceil(fraction * denominator);
	var reducedFraction = reduceFraction(numerator, denominator);
	if(numerator == denominator){ wholeNumber++; } //account for the case of a fraction of .9999
	
	var fracStr = ((fraction > 0 && numerator != denominator) ? " " + reducedFraction[0] + "/" + reducedFraction[1] : "");
	var returnStr = ((wholeNumber > 0) ? wholeNumber : "") + fracStr;
	
	return returnStr;
}

function reduceFraction(num, denom)
{
	var result = new Array();
	result[0] = num;
	result[1] = denom;
	
	for(var i=num; i>0; i--)
	{
		if(num%i == 0 && denom%i == 0)
		{
			result[0] = num/i;
			result[1] = denom/i;
			break;
		}
	}
	
	return result;
}

function removeElements(parentEle, tagName)
{
	var childList = parentEle.getElementsByTagName(tagName);
	for(var i=0; i<childList.length; i++)
	{
		parentEle.removeChild(childList[i]);
	}
}

function getWindowWidth()
{
	var myWidth = 0;
	if( typeof( window.innerWidth ) == 'number' ) 
	{
		//Non-IE
		myWidth = window.innerWidth;
	}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
	{
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
	}
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	{
		//IE 4 compatible
		myWidth = document.body.clientWidth;
	}
	
	return myWidth;
}

function getWindowHeight()
{
	var myHeight = 0;
	if(typeof( window.innerWidth ) == 'number' ) 
	{
		myHeight = window.innerHeight;
	}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
	{
		myHeight = document.documentElement.clientHeight;
	}
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	{
		myHeight = document.body.clientHeight;
	}

	return myHeight;
}

function openPopup(path, title, width, height)
{
	if(width == null){ width="1000"; }
	if(height == null){ height="800"; }
	window.open(path,title,"width=" + width + ",height=" + height + ",scrollbars=yes");
}

function switchMenuTab(img)
{
	var ext = ".png"
	img.src = (img.src.indexOf("-hover") >= 0) ? img.src.replace("-hover" + ext, ext) : img.src.replace(ext, "-hover" + ext);
}