function GetEl(layer){if(document.getElementById) return document.getElementById(layer);else if(document.all) return document.all[layer];else if(document.layers) return document.layers[layer];}

function show(layer){GetEl(layer).style.display = "inline";}
function show_2(layer){GetEl(layer).style.display = "block";}
function hide(layer){GetEl(layer).style.display = "none";}

function getVal(layer){return GetEl(layer).value;}

function getHTML(layer){return GetEl(layer).innerHTML;}
function setHTML(layer, val){try{GetEl(layer).innerHTML = val;}catch(e){}}
function setSelectVal(layer,iIndex){GetEl(layer).selectedIndex=iIndex;}

function getOurBuilderKitOff(){hide("getOurBuilderKitOff");show("getOurBuilderKitOn");}
function getOurBuilderKitOn(){hide("getOurBuilderKitOn");show("getOurBuilderKitOff");}
function findAPropaneRetailerOff(){hide("findAPropaneRetailerOff");show("findAPropaneRetailerOn");}
function findAPropaneRetailerOn(){hide("findAPropaneRetailerOn");show("findAPropaneRetailerOff");}

function displayStimulusLayer(layer_id)
{
	hide("stim_tab_1");
	hide("stim_tab_2");
	hide("stim_tab_3");
	show_2("stim_tab_"+layer_id);
	return false;
}
function jsNewWindow(file,onclick)
{
	if(onclick!= null && onclick!="")
	{
		try{eval(onclick);}
		catch(er){}
	}
	window.open(file);
}

window.onresize = function() {resizeOverlay();}
function resizeOverlay()
{
    var overlay = GetEl("overlay");
    var map = GetEl("FlashMap");
    if(overlay.style.display != "none")
    {
        var pageWidth = document.body.clientWidth;
        if(document.body.scrollWidth > pageWidth) pageWidth = document.body.scrollWidth;
        var pageHeight = document.body.clientHeight;
        if(document.body.scrollHeight > pageHeight) pageHeight = document.body.scrollHeight;
        if(window.scrollMaxY && window.scrollMaxY > 0) pageHeight += window.scrollMaxY ;
        if(pageWidth < 925) pageWidth = 925;
        overlay.style.width = pageWidth + "px";
        overlay.style.height = pageHeight + "px";
        //width - 722
        //height - 584
        pageHeight = document.documentElement.clientHeight;
        if(pageHeight < 584) map.style.top = 0;
        else map.style.top = ((pageHeight - 584) / 2) + "px";
        
        pageWidth = document.documentElement.clientWidth;
        if(pageWidth < 722) map.style.left = 0;
        else map.style.left = ((pageWidth - 722) / 2) + "px";
    }
}
function setHTML(layer, val){try{GetEl(layer).innerHTML = val;}catch(e){}}
function ViewMap()
{
    show_2("overlay");
    show_2("FlashMap");
    resizeOverlay();
    urchinTracker('/track/media/interactive_map');
}

function HideMap(){hide("FlashMap");hide("overlay");}

function googleTrack(val){urchinTracker(val);}

function redirectAndTrack(track, loc){googleTrack(track);window.location = loc;}

function ProductDirectoryPrevious(layer)
{
	hide(layer);
	var previous = GetEl(layer).previousSibling;
	previous.style.display = "block";
	currentProduct = previous.id;
}
function ProductDirectoryNext(layer)
{
	hide(layer);
	var next = GetEl(layer).nextSibling;
	next.style.display = "block";
	currentProduct = next.id;
}

function filterManufacturer(catID)
{
	var man = GetEl("manufacturer");
	if(catID != "") man.disabled = "";
	else man.disabled = "disabled";
	
	man.options.length=0;
	man.options[man.length] = new Option("ALL");
	
	if(catID != "") for(var i=0, len=categoryArray[catID].length; i<len; i++){man.options[man.length] = new Option(categoryArray[catID][i]);}
}

var currentSearch = "SearchResults";
function SearchResultsTabClicked(layer, nav)
{
	hide(currentSearch);
	GetEl(currentSearch + "Tab").className = "off";
	currentSearch = layer;
	show_2(currentSearch);
	GetEl(currentSearch + "Tab").className = "on";
	GetEl("SearchResultsTabs").className = "SearchResultsTab" + nav;
}

var currentProduct;
function ShowProduct(layer)
{
	currentProduct = layer;
	hide("SearchResultsProducts");
	show_2(currentProduct);
	if(navigator.appVersion.toLowerCase().indexOf("safari") > -1) window.location.hash="SearchResultsContentNot";
	window.location.hash="#SearchResultsContent";
}
function HideProduct()
{
	hide(currentProduct);
	show_2("SearchResultsProducts");
	if(navigator.appVersion.toLowerCase().indexOf("safari") > -1) window.location.hash="SearchResultsContentNot";
	window.location.hash="#SearchResultsContent";
}

function Filter(el, div, className)
{
	var filter = el[el.selectedIndex].text.replace("&", "&amp;");
	var oDiv = GetEl(div);
	var curNode;
	var id;
	var iCount = 0;
	for(var i=0; i < oDiv.childNodes.length; i++)
	{
		curNode = oDiv.childNodes[i];
		id = curNode.id.replace("div_", "");
		if(filter == "" || getHTML(className + "_" + id) == filter)
		{
			if(iCount % 2 == 0) curNode.className = "DivTableRow Grey";
			else curNode.className = "DivTableRow White";
			curNode.style.display = "block";
			iCount ++;
		}
		else curNode.style.display = "none";
	}
}

function CutRows(oDiv, id_prefix, sort_type)
{
    var nbRows = oDiv.childNodes.length;
    var div_rows = new Array();
    var curNode = oDiv.childNodes[0];
    var sort_val;
    var id;
    var i = 0;
    while(curNode!=null)
    {
		i++;
		if(id_prefix != null)
		{
			id = curNode.id.replace("div_", "");
			if(sort_type == null || sort_type == "html") sort_val = getHTML(id_prefix + "_" + id);
			else if(sort_type == "checkbox") sort_val = GetEl(id_prefix + "_" + id).checked;
			else sort_val = getVal(id_prefix + "_" + id);
        }
        else sort_val = i;
        div_rows[div_rows.length] = new Array(sort_val, curNode);
        oDiv.removeChild(curNode);
        curNode = oDiv.childNodes[0];
    }
    return div_rows;
}

function SortDiv(div, id_prefix, hr_link, sort_type)
{
    var oDiv = GetEl(div);
	var div_rows = CutRows(oDiv, id_prefix, sort_type);
    div_rows.sort();
    if(hr_link.className == "UpArrow") hr_link.className = "DownArrow";
    else 
    {
        hr_link.className = "UpArrow";
        div_rows.reverse();
    }
    for(var i = 0; i < div_rows.length; i++)
    {
		curNode = div_rows[i][1];
		if(i % 2 == 0) curNode.className = "DivTableRow Grey";
		else curNode.className = "DivTableRow White";
        oDiv.appendChild(curNode);
    }
}

function UpdateFeatured(id, val)
{
	var params = "action=updatefeatured&id=" + id + "&val=" + val;
	Http.get("default.aspx?page=productadmin", params, FeatureUpdated, null);
}

function FeatureUpdated(xmlReply){}

function UpdateHidden(id, val)
{
	var params = "action=updatehidden&id=" + id + "&val=" + val;
	Http.get("default.aspx?page=productadmin", params, HiddenUpdated, null);
}

function HiddenUpdated(xmlReply){}

function CategoryChanged(val)
{
	switch(val)
	{
		case "1": hideByArray([false,true,false,false,false,false,true,false,false,true,false,false,true,false,false,true,true]);break;
		case "2": hideByArray([false,false,false,false,false,false,true,false,false,false,true,false,false,false,false,false,false]);break;
		case "3": hideByArray([false,false,false,false,false,false,false,true,false,false,false,false,false,true,true,true,false]);break;
		case "4": hideByArray([true,false,true,true,true,true,false,false,true,false,false,false,false,false,false,true,false]);break;
		case "5": hideByArray([true,true,false,false,false,false,true,false,true,false,false,true,false,false,false,true,false]);break;
		case "6": hideByArray([true,true,false,false,false,false,false,false,true,false,false,true,false,false,false,true,false]);break;
	}
}

function hideByArray(ar)
{
	for (var i=0, len=ar.length-1; i<len; i++ )
	{
		if(ar[i]) show_2("Row_" + (11 + i));
		else hide("Row_" + (11 + i));
	}
}

var Http = {
    ReadyState: {Uninitialized: 0,Loading: 1,Loaded:2,Interactive:3,Complete: 4},
	Status: {OK: 200,Created: 201,Accepted: 202,NoContent: 204,BadRequest: 400,Forbidden: 403,NotFound: 404,Gone: 410,ServerError: 500},
	Cache: {Get: 1,GetCache: 2,GetNoCache: 3,FromCache: 4},
	Method: {Get: "GET", Post: "POST", Put: "PUT", Delete: "DELETE"},
	enabled: true,
	logging: true,
	_get: null,
	_cache: new Object(),
	
	Init: function(){Http._get = Http._getXmlHttp();Http.enabled = (Http._get != null);},
	
	_getXmlHttp: function(){
	    try {
	        if (window.XMLHttpRequest) return new XMLHttpRequest();
            else if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {alert(e);}
        return null;},
	
	get: function(url, params, callback, callback_params){	
	    try{
		    if (!Http.enabled) throw "Http: XmlHttpRequest not available.";
		    if (!url) throw "Http: A URL must be specified";
		    var method = Http.Method.Post;
		    if(!params) method = Http.Method.Get;
		    else if(params=="") method = Http.Method.Get;
		    if ((Http._get.readyState != Http.ReadyState.Uninitialized) && (Http._get.readyState != Http.ReadyState.Complete)) this._get.abort();
    		
		    Http._get.open(method, url, true);
            
		    if(method==Http.Method.Post)
		    {
		        Http._get.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                Http._get.setRequestHeader("Content-length", params.length);
                Http._get.setRequestHeader("Connection", "close");
		    }
		    Http._get.onreadystatechange =  function() {
			    if (Http._get.readyState != Http.ReadyState.Complete) return;
			    var cb_params = new Array();
			    cb_params.push(Http._get);
			    if(callback_params) for(var i=0; i < callback_params.length; i++) cb_params.push(callback_params[i]);
			    if(callback) callback.apply(null, cb_params);
		    }
		    Http._get.send(params || null);
		}
		catch(er){alert(er);}
	}	
}
Http.Init()