var req;
var req2;
var highlightedSuggestionIndex = -1;
var selectedIndex;
var previousSuggestedIndex = 0;
var xmlDoc;
var xmlObj;
var arRecID;
var arXmlID;
var arSearchType;
var arSearchText;
var ssContainer;
var ssInput;
var searchResultsURL = ""
var searchProcessingURL = ""

function getCurrentDomain(){
	var url = document.location.href
	var startpoint = url.indexOf("//") + 2
	var endpoint = url.indexOf("/",startpoint)
	return url.substring(0,endpoint)
}

searchResultsURL = getCurrentDomain() + "/ioEPFinderResults.aspx"
searchProcessingURL = getCurrentDomain() + "/_layouts/ioEPAutoComplete.aspx"


document.attachEvent ('onclick', HideTheDiv);

function HideTheDiv(){
	try {
		HideDiv("autocomplete")
		HideDiv("smartsearchcontainer")
	} catch(e) {}
}

function Initialize2(){
	try{
		req2=new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			req2=new ActiveXObject("Microsoft.XMLHTTP");
		}catch(oc){
			req2=null;
			}
		}

	if(!req2&&typeof XMLHttpRequest!="undefined"){
		req2=new XMLHttpRequest();
	}
}

function Initialize(){
	try{
		req=new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			req=new ActiveXObject("Microsoft.XMLHTTP");
		}catch(oc){
			req=null;
			}
		}

	if(!req&&typeof XMLHttpRequest!="undefined"){
		req=new XMLHttpRequest();
	}
}

function SendQuery(query, e, sContainer, sInput){
	ssContainer = sContainer;
	ssInput = sInput;
	var key = window.event ? e.keyCode : e.which;
	var d = document.getElementById(ssContainer)
	if(key == 40){
		// handle down arrow
		if(d.hasChildNodes()){
		var totalRecords = d.childNodes.length;
		if(highlightedSuggestionIndex == totalRecords-1){
			//GetNextRecords(d.childNodes(highlightedSuggestionIndex).id)
			highlightedSuggestionIndex = d.childNodes.length
			highlightNewSuggestion()
		} else {
			previousSuggestedIndex = highlightedSuggestionIndex
			highlightedSuggestionIndex ++
			highlightNewSuggestion()
			}
		}
	} else if(key == 38){
		// handle up arrow
		if (highlightedSuggestionIndex == 0){
			//GetPriorRecords(d.childNodes(highlightedSuggestionIndex).id)	
		} else {
			previousSuggestedIndex = highlightedSuggestionIndex
			highlightedSuggestionIndex --
			highlightNewSuggestion()
		}
	} else if(key == 13){
		// handle enter key
		submitSearch();
	} else if(key == 34){
		// handle page down
		var totalRecords = d.childNodes.length;
		if(highlightedSuggestionIndex == totalRecords-1){
			//GetNextRecords(d.childNodes(highlightedSuggestionIndex).id)
		} else {
			highlightedSuggestionIndex = totalRecords-1;
			highlightNewSuggestion()
			}
	} else if(key == 33){
		// handle page up
		if(highlightedSuggestionIndex == 0){
			//GetPriorRecords(d.childNodes(highlightedSuggestionIndex).id)
		} else {
			highlightedSuggestionIndex = 0;
			highlightNewSuggestion()
			}
	} else {
		highlightedSuggestionIndex = -1;
		Initialize();
		var url= searchProcessingURL + "?q="+query;
		if(req!=null){
			req.onreadystatechange = Process;
			req.open("GET", url, true);
			req.send(null);
		}
	}
}

function highlightNewSuggestion(){
	var d = document.getElementById(ssContainer)
	if(highlightedSuggestionIndex < 0){
		highlightedSuggestionIndex = 0
	} else if(highlightedSuggestionIndex >= d.childNodes.length){
		highlightedSuggestionIndex = d.childNodes.length - 1
	}
	unHighlightAll()

	if(typeof(d.childNodes[highlightedSuggestionIndex]) != "undefined"){
		highlight(d.childNodes[highlightedSuggestionIndex])
		document.getElementById(ssInput).value = d.childNodes[highlightedSuggestionIndex].innerHTML.replace("<NOBR>","").replace("</NOBR>","")
		document.getElementById(ssInput).focus();
	}
}

function GetNextRecords(id){
	alert("GetNextRecords("+id+")")
	highlightedSuggestionIndex = 0;
	Initialize();
	var url= searchProcessingURL + "?d=1&id="+id.replace("s","");
	if(req!=null){
		req.onreadystatechange = Process;
		req.open("GET", url, true);
		req.send(null);
	}
	highlight(document.getElementById(ssContainer).childNodes(0))
}

function GetPriorRecords(id){
	highlightedSuggestionIndex = document.getElementById(ssContainer).childNodes.length-1;
	Initialize();
	var url= searchProcessingURL + "?d=0&id="+id.replace("s","");
	if(req!=null){
		req.onreadystatechange = Process;
		req.open("GET", url, true);
		req.send(null);
	}
	highlight(document.getElementById(ssContainer).childNodes(highlightedSuggestionIndex))
}


function Process(){
	if (req.readyState == 4){
		if (req.status == 200){
			if(req.responseText=="")
            	HideDiv("autocomplete");
			else{
				XMLtoArray(req.responseXML)
			}
		} else {
			document.getElementById(ssContainer).innerHTML = "No suggestions found<br>" + req.statusText;
			}
	}
}

function XMLtoArray(sResults){
	xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
	loadXML(sResults);
	iArrayLength = xmlObj.childNodes.length;
	arRecID = new Array(iArrayLength);
	arXmlID = new Array(iArrayLength);
	arSearchType = new Array(iArrayLength);
	arSearchText = new Array(iArrayLength);
	if(xmlObj.hasChildNodes){
		var len = xmlObj.childNodes.length;
		if(len > 20){
			len = 20
		}
		
		for(var x = 0; x < len; x++){
			arRecID[x] = xmlObj.childNodes(x).getAttribute("id")
			arXmlID[x] = xmlObj.childNodes(x).getAttribute("xmlrecordid")
			arSearchType[x] = xmlObj.childNodes(x).childNodes(0).text
			arSearchText[x] = xmlObj.childNodes(x).childNodes(1).text
		}
		PopulateDiv(0,1,iArrayLength)
	}
}

function PopulateDiv(xmlStartPoint, highlightPoint, length){
	var resultsDiv = ""
	ShowDiv(ssContainer)
	for(var x = xmlStartPoint; x < length; x++){
		resultsDiv += "<div class=\"resultsdiv\" onmouseover=\"handleSearchMouseover(this);\" onmouseout=\"handleSearchMouseout(this);\" onclick=\"handleSearchClick(this)\" id=s"+arRecID[x]+"><NOBR>"+arSearchText[x]+"</NOBR></div>"
	}
	document.getElementById(ssContainer).innerHTML = resultsDiv
}

function handleSearchMouseover(e){
	unHighlightAll()
	highlight(e)
	for(var x = 0; x < arRecID.length; x++){
		if(arRecID[x] == e.id.replace("s","")){
			highlightedSuggestionIndex = x
		}
	}
}

function handleSearchMouseout(e){
	unHighlight(e)
	for(var x = 0; x < arRecID.length; x++){
		if(arRecID[x] == e.id.replace("s","")){
			previousSuggestedIndex = x
		}
	}
}

function loadXML(xmlFile) { 
	xmlDoc.async="false"; 
	xmlDoc.onreadystatechange=verify; 
	xmlDoc.load(xmlFile); 
	xmlObj=xmlDoc.documentElement; 
}

function verify() { 
	if (xmlDoc.readyState != 4) { 
		return false; 
	} 
}

function ShowDiv(divid){
   if (document.layers) document.layers[divid].visibility="show";
   else document.getElementById(divid).style.visibility="visible";
}

function HideDiv(divid){
	if (document.layers) document.layers[divid].visibility="hide";
	else document.getElementById(divid).style.visibility="hidden";
}

function BodyLoad(){}


function findPosX(obj){
	var curleft = 0;
	if(obj.offsetParent)
		while(1) {
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
	            break;
    		obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj){
	var curtop = 0;
	if(obj.offsetParent)
		while(1){
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}

function highlight(e){
	e.style.color = "#FFFFFF"
	e.style.background = "#316AC5"
	e.style.cursor = "pointer"
}

function unHighlight(e){
	e.style.color = "#000000"
	e.style.background = "#FFFFFF"
	e.style.cursor = ""
}

function unHighlightAll(){
	var d = document.getElementById(ssContainer)
	for(var x = 0; x < d.childNodes.length; x++){
		unHighlight(d.childNodes(x))
	}
}

function handleSearchClick(e){
	HideDiv(ssContainer)
	submitSearch()
}

function submitSearch(sInput){
	var sRecID = ""
	var sQuery = document.getElementById(ssInput).value
	try {
		HideDiv(ssContainer)
	} catch(e) {}
	
	try {
		sRecID = xmlObj.childNodes(highlightedSuggestionIndex).getAttribute("id");
	} catch (e) {}
	if(sRecID.length > 0){
		document.location.href = searchResultsURL + "?iossrecid="+sRecID;
	} else {
		document.location.href = searchResultsURL  + "?iokeywordlong="+sQuery
		}
	
}

function handleShowHideProductImages(e){
	if(e.checked){
		alert("Show product images")		
	} else {
		alert("Hide product images")
		}
}

function handleShippingReady(e){
	document.location.replace(document.getElementById("cbShipReadyRedirectUrl").value)
}

//switch the current state of a specific element.
function toggle(elem)
{
	document.getElementById(elem).style.display = document.getElementById(elem).style.display == 'none'? document.all?"block":"table-row":"none";
}

function MM_goToURL() 
{	//v3.0
	var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
	for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_preloadImages() 
{	//v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)

    if (a[i].indexOf("#")!=0)
		{ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() 
{	//v3.0
	var i,x,a=document.MM_sr; 
	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_openBrWindow(theURL,winName,features) 
{	//v2.0
 	window.open(theURL,winName,features);
}

function MM_findObj(n, d) 
{	//v4.01
	var p,i,x;  
	if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) 
		{d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

	if(!(x=d[n])&&d.all) x=d.all[n]; 
	
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}


function MM_swapImage() 
{	//v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; 
	for(i=0;i<(a.length-2);i+=3)

	if ((x=MM_findObj(a[i]))!=null)
		{document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function handleLeftNavFilterTextSearch(){
	var sUrl = document.getElementById('leftNavFilterTextCurrentUrl').value
	var sKeyword = document.getElementById('leftNavFilterTextCurrentKeyword').value
	var sNewKeyword = document.getElementById('txtLeftNavFilterText').value
	if(sNewKeyword.length > 0){
		var sNewUrl = 	sUrl + "&iokeywordlong=" + sKeyword + " " + sNewKeyword
		document.location.href = sNewUrl
	}
}

function handleLeftNavFilterKeyUp(e){
	var key = window.event ? e.keyCode : e.which;
	if(key == 13){
		handleLeftNavFilterTextSearch()
	}
}

function handleCartUpdate(){
	sItemString = ""
	var y=document.getElementsByName("txtItemQuantity");
	for (var i=0;i<y.length;i++){
		if(y[i].value > 0){
			sItemString += y[i].id + "|" + y[i].value + "||"
		}
	}
	document.location.href = "ioEPCart.aspx?ioEPCartActionStr=4&ioitemstr=" + sItemString;
}

function handleCartCheckout(){
	var f = document.frmCart;

}

function handleProvinceChange(e){
	var province = e.options[e.selectedIndex].value;
	if(province.length > 0){
		document.location.href = "ioEPCart.aspx?addressstateid=" + province;
	}
}

function handleShippingLocationChange(e){
	var location = e.options[e.selectedIndex].value;
	if(location.length > 0){
		document.location.href = "ioEpCheckoutLocation.aspx?ioepbr=" + location;
	}
}

function handleShippingContactChange(e){
	var contact = e.options[e.selectedIndex].value;
	if(contact.length > 0){
		document.location.href = "ioEpCheckoutLocation.aspx?ioepcp=" + contact;
	}
}


function handleAddItemToCartFromItemDetails(e,sItemID){
	var qty = document.getElementById(e).value
	if(qty > 0 && sItemID.length > 0){
		document.location.href = "ioEPCart.aspx?ioEPCartActionStr=1&ioitemstr=" + sItemID + "|" + qty + "||"
	}
}
function handleAddAccessoriesToCart(e){
	var sItemString = ""
	var arIDs = document.getElementsByName(e);
	for(var x = 0; x < arIDs.length; x++){
		if(arIDs[x].checked){
			sItemString += arIDs[x].value + "|1||"
		}
	}
	if(sItemString.length > 0){
		document.location.href = "ioEPCart.aspx?ioEPCartActionStr=1&ioitemstr=" + sItemString
	} else {
		return false;
		}
}

function handleChangePaymentMethod(e){
	var paymentid = e.options[e.selectedIndex].value;
	if(paymentid .length > 0){
		document.location.href = "ioEpCheckoutPayment.aspx?iopaymentmethodid=" + paymentid ;
	}
}

var headerImages = new Array(
	'images1/header-ad-515977.gif',
	'images1/header-ad-515977.gif',
	'images1/header-ad-115828.gif',
	'images1/header-ad-260634.gif',
	'images1/header-ad-279983.gif');
	
var headerLinks = new Array(
	'ioEpItemDetail.aspx?itemId=515977',
	'ioEpItemDetail.aspx?itemId=515977',
	'ioEpItemDetail.aspx?itemId=115828',
	'ioEpItemDetail.aspx?itemId=260634',
	'ioEpItemDetail.aspx?itemId=279983');
	


var current = 0;
var old = 0;

function initHeaderImage(){
	if (!document.images) return
	while (current == old){
		current = Math.floor(Math.random()*headerImages.length);
	}
	old = current;
	document.getElementById("headerBannerImage").src = headerImages[current]
	document.getElementById("headerBannerLink").href = headerLinks[current]
}

function handleCartKeyUp(e){
	var key = window.event ? e.keyCode : e.which;
	if(key == 13){
		handleCartUpdate()
	}
}

function loadInventory(itemID){
	Initialize();
	var url = ""

	url = getCurrentDomain() + "/ioEpXmlStock.aspx?itemid=" + itemID

	if(req!=null){
		req.onreadystatechange = getInventoryXML;
		req.open("GET", url, true);
		req.send(null);
	}
}


	var url = ""
function loadBetterForLess(itemID){
	Initialize2();
	if(document.location.href.indexOf("www") > 0){
		url = getCurrentDomain() + "/ioepxmlbfl.aspx?itemid=" + itemID
	} else {
		url = getCurrentDomain() + "/ioepxmlbfl.aspx?itemid=" + itemID
		}
	if(req2!=null){
		req2.onreadystatechange = getBetterForLessXML;
		req2.open("GET", url, true);
		req2.send(null);
	}
}

function getInventoryXML(){
	if (req.readyState == 1){
		//req.waitforresponse
	} else if (req.readyState == 4){
		if (req.status == 200){
			var fullText = req.responseText
			var firstIndex = fullText.indexOf('<ITV_Stock>')
			var lastIndex = fullText.indexOf('</ITV_Stock>') + 12
			displayInventory('<?xml version="1.0"?>' + fullText.substring(firstIndex, lastIndex))
		} else {
			document.getElementById("inventorySpaceholder").innerHTML = "Inventory unavailable.<br><br>Please call us at 1-800-434-1815 for assistance.";
			}
	}
}

function getBetterForLessXML(){
	if (req2.readyState == 1){
		//req.waitforresponse
	} else if (req2.readyState == 4){
		if (req2.status == 200){
			var fullText = req2.responseText
			var firstIndex = fullText.indexOf('<ITV_BFL>')
			var lastIndex = fullText.indexOf('</ITV_BFL>') + 10
			displayBetterForLess('<?xml version="1.0"?>' + fullText.substring(firstIndex, lastIndex))
		} else {
			document.getElementById("inventorySpaceholder").innerHTML = "Inventory unavailable.<br><br>Please call us at 1-800-434-1815 for assistance.";
			}
	}
}

function displayBetterForLess(sXml){
	var errorString = ""
	var displayString = "<table border=\"0\">"
	var doc=new ActiveXObject("Microsoft.XMLDOM");
	doc.async="false";
	doc.loadXML(sXml);
	var de = doc.documentElement;
	if(de.hasChildNodes){
		var len = de.childNodes.length;
		var count = parseInt(de.childNodes(0).text)
		var link = de.childNodes(1).text
		link = link.replace("<![CDATA[","");
		link = link.replace("]]>","")
		if(count > 0){
			displayString += "<tr valign=\"middle\"><td style=\"padding: 4px 4px 4px 4px\"><a href=\""+link+"\"><img src=\"/images/greencheck.gif\" border=\"0\"></a></td><td style=\"padding-right: 4px;\"><strong><a href=\""+link+"\">Found " + count + " better items at a lower cost.</a></strong></td></tr>"
		} else {
			displayString += "<tr><td>No better items found</td></tr>"
			}
		displayString += "</table>"
		document.getElementById("bflSpaceholder").innerHTML = displayString
	}
}

function displayInventory(sXml){
	var errorString = ""
	var displayString = "<table border=0>";
	displayString += "<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><u>Warehouse Location</b></u></td><td><img src=\"images/spacer.gif\" border=0 height=1 width=20><td><b><u>Quantity</b></u></td><td><img src=\"images/spacer.gif\" border=0 height=1 width=20></td><td><b><u>Incoming</b></u></td>"
	var doc=new ActiveXObject("Microsoft.XMLDOM");
	doc.async="false";
	doc.loadXML(sXml);
	var de = doc.documentElement; 
	var totalQuantity = 0;
	var totalIncoming = 0;
	if(de.hasChildNodes){
		var len = de.childNodes.length;
		for(var x = 0; x < len; x++){
			errorCode = de.childNodes(x).getAttribute("E")
			if(errorCode == null){
				quantity = parseInt(de.childNodes(x).getAttribute("Q"));
				incoming = parseInt(de.childNodes(x).getAttribute("I"));
				if(quantity > 0){
					totalQuantity += quantity;
				}
				if(incoming > 0){
					totalIncoming += incoming;
				}
				displayString += "<tr>"
				displayString += "<td class=\"productFeaturesListItem\">" + de.childNodes(x).getAttribute("L") + "</td>"
				displayString += "<td></td>"
				displayString += "<td align=center>" + addCommas(quantity) + "</td>"
				displayString += "<td></td>"
				displayString += "<td align=center>" + addCommas(incoming) + "</td>"
				displayString += "</tr>"
			} else {
				errorString = "Inventory unavailable.<br><br>Please call us at 1-800-434-1815 for assistance."
				}
		}
	}
	displayString += "<tr><td colspan=\"5\">&nbsp;</tr>"
	displayString += "<tr><td align=\"right\"><b>Total:</b></td><td></td><td align=\"center\"><b>"+addCommas(totalQuantity)+"</b></td><td></td><td align=\"center\"><b>"+addCommas(totalIncoming)+"</b></td></tr>"
	displayString += "</table>"
	if(errorString.length > 0){
		document.getElementById("inventorySpaceholder").innerHTML = errorString;		
	} else {
		document.getElementById("inventorySpaceholder").innerHTML = displayString;
		}

}







function addCommas(nStr){
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function handleStartCompare(){
	var checkedCount = 0
	var sItemString = ""
	var arIDs = document.getElementsByName("cbItemID");
	for(var x = 0; x < arIDs.length; x++){
		if(arIDs[x].checked){
			checkedCount++;
			sItemString += arIDs[x].id + "|"
		}
	}
	if(sItemString.length > 0 && checkedCount > 1){
		document.location.href = "ioepCompare.aspx?ioEpItemList=" + sItemString
	} else {
		return false;
		}
}

function showHideCompareButton(){
	var imgComparison = document.getElementById("imgIconCompare")
	checkedCount = 0;
	var arIDs = document.getElementsByName("cbItemID");
	for(var x = 0; x < arIDs.length; x++){
		if(arIDs[x].checked){
			checkedCount++;
		}
	}
	if(checkedCount > 1){
		imgComparison.src = "/images1/icon-compare.gif"
	} else {
		imgComparison.src = "/images1/icon-compare-off.gif"
		}
}

function highlight(e){
	e.style.background = "#E2E7EA"
	//e.style.color = "white"
}

function unHighlight(e){
	e.style.background = "white"
	//e.style.color = "black"
}

function handleCompareOptions(sUrl){
	//alert('test')
	//alert(sUrl)
	document.location.href = sUrl
}


// FINDER FUNCTION

function getAbsolutePosition(element){
    var ret = new Point();
    for(; 
        element && element != document.body;
        ret.translate(element.offsetLeft, element.offsetTop), element = element.offsetParent
        );
        
    return ret;
}

function Point(x,y){
        this.x = x || 0;
        this.y = y || 0;
        this.toString = function(){
            return '('+this.x+', '+this.y+')';
        };
        this.translate = function(dx, dy){
            this.x += dx || 0;
            this.y += dy || 0;
        };
        this.getX = function(){ return this.x; }
        this.getY = function(){ return this.y; }
        this.equals = function(anotherpoint){
            return anotherpoint.x == this.x && anotherpoint.y == this.y;
        };
}

function clearText(thefield){
	if (thefield.defaultValue==thefield.value)
	thefield.value = ""
}

function handleFinderKeywords(){
	var url = document.getElementById("searchUrl").value
	var currentKeywords = document.getElementById("currentKeywords").value
	var newKeywords = document.getElementById("newKeywords").value
	if(newKeywords == "Keyword Search"){
		newKeywords = ""
	}
	var fullUrl = url + "&ioKeywordLong=" + currentKeywords + " " + newKeywords
	document.location.href = fullUrl
}

function handleKeywordKeyUp(e){
	var key = window.event ? e.keyCode : e.which;
	if(key == 13){
		handleFinderKeywords()
	}
}

function handlePurchaseOrder(url){
	var po = document.getElementById("txtPO").value
	if(po.length > 0){
		document.location.href = url + "&iopo=" + po
	} else {
		document.location.href = url
		}
}