/*
	browser detection
	by Peter-Paul Koch
	http://www.quirksmode.org/js/detect.html
*/
/*
if (BrowserDetect.browser == 'Explorer') {
	if (BrowserDetect.version == 7) {
		// do a thing
	} else {
		// do another thing
	}
}
*/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

// open links in a new window
function formatLinks(){
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") &&
			anchor.getAttribute("rel") == "external")
			anchor.target = "_blank";
	}
	var forms = document.getElementsByTagName("form");
	for (var i=0; i<forms.length; i++) {
		var anchor = forms[i];
		if (anchor.getAttribute("action") &&
			anchor.getAttribute("class") == "external")
			anchor.target = "_blank";
	}
}

// popup window for video player
// james[at]cookiecrook[dot]com)
var sUserAgent = navigator.userAgent.toLowerCase();
var isIE = document.all?true:false;
var isNS4 = document.layers?true:false;
var isOp = (sUserAgent.indexOf('opera')!=-1)?true:false;

var isMoz = (sUserAgent.indexOf('mozilla/5')!=-1 && sUserAgent.indexOf('opera')==-1 && sUserAgent.indexOf('msie')==-1)?true:false;

function pop(oAnchor,sWindow,sProps){
	var sUrl = '';
	if(oAnchor.getAttribute) sUrl = oAnchor.getAttribute('href');
	if(sUrl=='' && isIE) sUrl = window.event.srcElement.getAttribute('href');
	if(sUrl=='') sUrl = oAnchor.href;
	var sWindowName = sWindow?sWindow:'_blank';
	if(!sProps) sProps = 'width=640,height=480,scrollbars,resizable,toolbar,status,menubar,location';
	if(sUrl) var oPopup = window.open(sUrl,sWindowName,sProps);
	// An Opera bug returns too early if you focus the window, so we don't focus it in that browser.
	// Only a noticable defect (in that browser) if a window is already open and hidden behind another window.
	if(oPopup && !isOp) oPopup.focus();
	// If popup was created successfully, cancel link in calling window.
	// Acts as regular link in browser that has popup blocking enabled.
	return (oPopup)?false:true;
}

// send a page to the printer
function printpage() {
	if (window.print) {
		window.print();
	} else {
		alert("Sorry, your browser doesn't support this feature. Please print from your browser's \"Print...\" menu.");
	}
}

/*
	Son of Suckerfish Dropdowns
	Patrick Griffiths and Dan Webb
	emulation of :hover pseudo class for Internet Explorer
*/

sfHover = function() {
	var sfEls = document.getElementById("mainnav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

/*
	tableruler()
	written by Chris Heilmann for alistapart.
	enables a rollover of rows for each table with the classname "ruler"
*/

function tableruler() {
	if (document.getElementById && document.createTextNode) {
		var tables=document.getElementsByTagName('table');
		for (var i=0;i<tables.length;i++) {
			if(tables[i].className=='ruler') {
				var trs=tables[i].getElementsByTagName('tr');
				for(var j=0;j<trs.length;j++) {
					if(trs[j].className=='odd') {
						if(trs[j].parentNode.nodeName=='TBODY') {
							trs[j].onmouseover=function(){this.className='ruled';return false}
							trs[j].onmouseout=function(){this.className='odd';return false}
						}
					}
					if(trs[j].className=='even') {
						if(trs[j].parentNode.nodeName=='TBODY') {
							trs[j].onmouseover=function(){this.className='ruled';return false}
							trs[j].onmouseout=function(){this.className='even';return false}
						}
					}
					if(trs[j].className=='selected') {
						if(trs[j].parentNode.nodeName=='TBODY') {
							trs[j].onmouseover=function(){this.className='ruled';return false}
							trs[j].onmouseout=function(){this.className='selected';return false}
						}
					}
				}
			}
		}
	}
}

// ==========================================================================			 
// @function		Complete AHAH function
// @author		Daniele Florio
// @site		www.gizax.it
// @version		1.1.3 experimental

// @thanksTo		Andrea Paiola,Walter Wlodarski,Scott Chapman

// @updated 1.1.3 ( execJS function )

// (c) 2006 Daniele Florio 

// ==========================================================================

// http://www.gizax.it/ahahsection/
var completeAHAH = {

	loading : '<img class="activity" src="img/templates/global/anim_loading.gif" alt="Loading data" title="" width="140" height="14" />',

	ahah : function (url, target, delay, method, parameters) {

	  if ( ( method == undefined ) || ( method == "GET" ) || ( method == "get" ) ){
			
			this.creaDIV(target, this.loading);
			
			if (window.XMLHttpRequest) {
				req = new XMLHttpRequest();
			} 
			else if (window.ActiveXObject) {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			if (req) {
				req.onreadystatechange = function() {
					completeAHAH.ahahDone(url, target, delay, method, parameters);
				};
				req.open(method, url, true);
				req.send("");
			}
		}
		if ( (method == "POST") || (method == "post") ){

			this.creaDIV(target, this.loading);

			if (window.XMLHttpRequest) {
				req = new XMLHttpRequest();
			} 
			else if (window.ActiveXObject) {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			if (req) {
				req.onreadystatechange = function() {
					completeAHAH.ahahDone(url, target, delay, method, parameters);
				};
				req.open(method, url, true);
				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				req.send(parameters);
			 }
		}
	},
	
	creaDIV : function (target, html){

	   if (document.body.innerHTML){
			   document.getElementById(target).innerHTML = html;
	   }
	   else if (document.getElementById){
			   var element = document.getElementById(target);
			   var range = document.createRange();

			   range.selectNodeContents(element);
			   range.deleteContents();
			   element.appendChild(range.createContextualFragment(html));

	   }
	},

	execJS : function (node) {

		var st = node.getElementsByTagName('SCRIPT');
		var strExec;

		var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
		var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
		var bMoz = (navigator.appName == 'Netscape');

		for(var i=0;i < st.length; i++) {     
			if (bSaf) {
			  strExec = st[i].innerHTML;
			}
			else if (bOpera) {
			  strExec = st[i].text;
			}
			else if (bMoz) {
			  strExec = st[i].textContent;
			}
			else {
			  strExec = st[i].text;
			}
			try {
			  eval(strExec);
			} catch(e) {
			  alert(e);
			}
		}

	},	

	ahahDone : function (url, target, delay, method, parameters) {		
		if (req.readyState == 4) { 
			element = document.getElementById(target);
			if (req.status == 200) {

				//this.creaDIV(target, req.responseText);
				output = req.responseText;
				document.getElementById(target).innerHTML = output;
				var j = document.createElement("div");
				j.innerHTML = "_" + output + "_";
				this.execJS(j);

			} 		
			else {
				this.creaDIV(target, "ahah error:\n"+req.statusText);
			}
		}
	},

	/*

	@@ parameters : 
	fileName	= name of your cgi or other
	method		= GET or POST, default is GET
	formName	= name of your form
	dynamicTarget	= name of your dynamic Target DIV or other

	@@ usage : 
	<form id="formName" action="javascript:completeAHAH.likeSubmit('fileName', 'method', 'formName', 'dynamicTarget');">

	*/

	likeSubmit : function ( file, method, formName, target ) {

		var the_form = document.getElementById(formName);
		var num = the_form.elements.length;
		var url = "";
		var radio_buttons = new Array();
		var nome_buttons = new Array();
		var check_buttons = new Array();
		var nome_buttons = new Array();


		// submit radio values
		var j = 0;
		var a = 0;
		for(var i=0; i< the_form.length; i++){
			var temp = the_form.elements[i].type;
			if ( (temp == "radio") && ( the_form.elements[i].checked) ) { 
				nome_buttons[a] = the_form.elements[i].name;
				radio_buttons[j] = the_form.elements[i].value; 
				j++; 
				a++;
			}
		}
		for(var k = 0; k < radio_buttons.length; k++) {
			url += nome_buttons[k] + "=" + radio_buttons[k] + "&";
		}

		// submit checkbox values
		var j = 0;
		var a = 0;
		for(var i=0; i< the_form.length; i++){
			var temp = the_form.elements[i].type;
			if ( (temp == "checkbox") && ( the_form.elements[i].checked) ) { 
				nome_buttons[a] = the_form.elements[i].name;
				check_buttons[j] = the_form.elements[i].value; 
				j++; 
				a++;
			}
		}
		for(var k = 0; k < check_buttons.length; k++) {
			url += nome_buttons[k] + "=" + check_buttons[k] + "&";
		}

		// submit all kind of input		
		for (var i = 0; i < num; i++){	
			var chiave = the_form.elements[i].name;
			var valore = the_form.elements[i].value;
			var tipo = the_form.elements[i].type;

			if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") ){}
			else {
				url += chiave + "=" + valore + "&";
			}
		}

		var parameters = url;
		url = file + "?" + url;

		if (method == undefined) { 
			method = "GET"; 	
		}
		if (method == "GET") { 
			this.ahah(url, target, '', method, ''); 
		}
		else { 
			this.ahah(file, target, '', method, parameters); 
		}
	},
	
	// the same as likeSubmit but it closes the widget and reload the current URL
	likeSubmitClose : function ( file, method, formName, target ) {
		var the_form = document.getElementById(formName);
		var num = the_form.elements.length;
		var url = "";
		var radio_buttons = new Array();
		var nome_buttons = new Array();
		var check_buttons = new Array();
		var nome_buttons = new Array();
		// submit radio values
		var j = 0;
		var a = 0;
		for(var i=0; i< the_form.length; i++){
			var temp = the_form.elements[i].type;
			if ( (temp == "radio") && ( the_form.elements[i].checked) ) { 
				nome_buttons[a] = the_form.elements[i].name;
				radio_buttons[j] = the_form.elements[i].value; 
				j++; 
				a++;
			}
		}
		for(var k = 0; k < radio_buttons.length; k++) {
			url += nome_buttons[k] + "=" + radio_buttons[k] + "&";
		}
		// submit checkbox values
		var j = 0;
		var a = 0;
		for(var i=0; i< the_form.length; i++){
			var temp = the_form.elements[i].type;
			if ( (temp == "checkbox") && ( the_form.elements[i].checked) ) { 
				nome_buttons[a] = the_form.elements[i].name;
				check_buttons[j] = the_form.elements[i].value; 
				j++; 
				a++;
			}
		}
		for(var k = 0; k < check_buttons.length; k++) {
			url += nome_buttons[k] + "=" + check_buttons[k] + "&";
		}
		// submit all kind of input		
		for (var i = 0; i < num; i++){	
			var chiave = the_form.elements[i].name;
			var valore = the_form.elements[i].value;
			var tipo = the_form.elements[i].type;
			if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") ){}
			else {
				url += chiave + "=" + valore + "&";
			}
		}
		var parameters = url;
		url = file + "?" + url;
		if (method == undefined) { 
			method = "GET"; 	
		}
		if (method == "GET") { 
			this.ahahClose(url, target, '', method, ''); 
		}
		else { 
			this.ahahClose(file, target, '', method, parameters); 
		}
	},
	
	ahahClose : function (url, target, delay, method, parameters) {

	  if ( ( method == undefined ) || ( method == "GET" ) || ( method == "get" ) ){
			this.creaDIV(target, this.loading);
			if (window.XMLHttpRequest) {
				req = new XMLHttpRequest();
			} 
			else if (window.ActiveXObject) {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			if (req) {
				req.onreadystatechange = function() {
					completeAHAH.ahahReload();
				};
				req.open(method, url, true);
				req.send("");
			}
		}
		if ( (method == "POST") || (method == "post") ){
			this.creaDIV(target, this.loading);
			if (window.XMLHttpRequest) {
				req = new XMLHttpRequest();
			} 
			else if (window.ActiveXObject) {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			if (req) {
				req.onreadystatechange = function() {
					completeAHAH.ahahReload();
				};
				req.open(method, url, true);
				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				req.send(parameters);
			 }
		}
	},
	
	ahahReload : function () {
		if (req.readyState == 4) { 
			if (req.status == 200) {
				window.location.reload();
			}
		}
	}
	// the same as likeSubmit but it closes the widget and reload the current URL

};

/*
	javascript to flash communication
*/

var movieName = "movie";

function thisMovie(movieName) {
	// IE and Netscape refer to the movie object differently.
	// This function returns the appropriate syntax depending on the browser.
	if (navigator.appName.indexOf ("Microsoft") !=-1) {
		return window[movieName]
	} else {
		return document[movieName]
	}
}

// Checks if movie is completely loaded.
// Returns true if yes, false if no.
function movieIsLoaded (theMovie) {
	if (typeof(theMovie) != "undefined") {
		return theMovie.PercentLoaded() == 100;
	} else {
		return false;
	}
}

function go(theFrame) {
	if (movieIsLoaded(thisMovie(movieName))) {
		thisMovie(movieName).GotoFrame(theFrame);
	}
}

function golabel(theLabel) {
	if (movieIsLoaded(thisMovie(movieName))) {
		thisMovie(movieName).TGotoLabel("_level0/",theLabel);
	}
}


/*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
	http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
*/

function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

/*
	findPosX() and findPosY()
	by Peter-Paul Koch & Alex Tingle
	http://blog.firetree.net/2005/07/04/javascript-find-position/
	finds the absolute X and Y co-ordinates of an HTML element
*/

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;
}

/*
	various event listeners
*/

function listeners() {
	listenersBasedOnLanguage();
	if (document.getElementById && document.createTextNode) {

		// article archives navigation
		/*if (document.getElementById('article-archives')) {
			var yearLinks = getElementsByClassName('year');
			for (var i=0;i<yearLinks.length;i++) {
				yearLinks[i].parentNode.className = '';
				yearLinks[i].onclick = function(){ toggleCat(this); return false }
			}
			var monthLinks = getElementsByClassName(document, "*", 'month');
			for (var i=0;i<monthLinks.length;i++) {
				monthLinks[i].parentNode.className = '';
				monthLinks[i].onclick = function(){ toggleArt(this); return false }
			}
		}*/

		/* "see full offer" link -- function show is in specials-2.jsp
		var links = getElementsByClassName(document, "*", 'offer-link');
		for (var i=0;i<links.length;i++) {
			links[i].onclick = function(){ show(this, this.id); return false }
		}*/
		
		// widget tab navigation
		if (document.getElementById('scrollleft')) {
			var tabs = getElementsByClassName(document, "*", 'tab');
			var tablinks = getElementsByClassName(document, "*", 'tablink');
			numtabs = tabs.length;
			var scrollLeft = document.getElementById('scrollleft');
			var scrollRight = document.getElementById('scrollright');
			i = 0;
			temp = tabs.length - 4;
			
			/*Local code for changing number of widgets shown after update pref*/
			for (var k=0;k<tabs.length;k++) {
				tabs[k].style.left = '-9999em';
			}
			var j = 0;
			var tabinit;
			tabinit = tabs.length;
			if(tabs.length > 4){
				tabinit = 4;
			}
			for (var k=0;k< tabinit;k++) {
			  
				var temp1 = (j * 126) + 12;
				tabs[k].style.left = temp1+'px';
				j++;
			}
			/*End local code*/
			scrollRight.onclick = function(){ if (i < temp) { i++; } nextTabs(tabs, i); return false }
			scrollLeft.onclick = function(){ if (i > 0){ i = i-1; } prevTabs(tabs, i); return false }
		}

		// "manage preferences" link
		if (document.getElementById('pref-link')) {
			var prefLink = document.getElementById('pref-link');
			prefLink.onclick = function(){ showPreferences('widgets'); return false }
		}

		// "edit profile" link
		if (document.getElementById('account-link')) {
			var accountLink = document.getElementById('account-link');
			accountLink.onclick = function(){ showPreferences('contact'); return false }
		}

		// "log in/create account" link
		if (document.getElementById('login-link')) {
			var loginLink = document.getElementById('login-link');
			loginLink.onclick = function(){ showWidget('login'); return false }
		}

		// "dealer locator" widget link
		if (document.getElementById('wl-dealer')) {
			var dealerLink = document.getElementById('wl-dealer');
			dealerLink.onclick = function(){ showWidget('dealer'); return false }
		}

		// "weather tracker" widget link
		if (document.getElementById('wl-tracker')) {
			var trackerLink = document.getElementById('wl-tracker');
			trackerLink.onclick = function(){ showWidget('tracker'); return false }
		}

		// "load locator" widget link
		if (document.getElementById('wl-load')) {
			var laodLink = document.getElementById('wl-load');
			laodLink.onclick = function(){ showWidget('load'); return false }
		}

		// "fuel prices" widget link
		if (document.getElementById('wl-fuel')) {
			var fuelLink = document.getElementById('wl-fuel');
			fuelLink.onclick = function(){ showWidget('fuel'); return false }
		}

		// "job finder" widget link
		if (document.getElementById('wl-job')) {
			var jobLink = document.getElementById('wl-job');
			jobLink.onclick = function(){ showWidget('job'); return false }
		}

		// "site links" widget link
		if (document.getElementById('wl-zip')) {
			var zipLink = document.getElementById('wl-zip');
			zipLink.onclick = function(){ showWidget('zip'); return false }
		}

		// "zip code finder" widget link
		if (document.getElementById('wl-site')) {
			var siteLink = document.getElementById('wl-site');
			siteLink.onclick = function(){ showWidget('site'); return false }
		}

		// "dealer locator" tool settings
		if (document.getElementById('dealer-link')) {
			var dealerLink = document.getElementById('dealer-link');
			dealerLink.onclick = function(){ completeAHAH.ahah('DealerLocator.do', 'dealer-settings', '', 'POST'); return false }
		}

		// "job finder" tool settings
		if (document.getElementById('job-link')) {
			var jobLink = document.getElementById('job-link');
			jobLink.onclick = function(){ completeAHAH.ahah('JobFinder.do', 'job-settings', '', 'POST'); return false }
		}

		// "load locator" tool settings
		if (document.getElementById('load-link')) {
			var loadLink = document.getElementById('load-link');
			loadLink.onclick = function(){ completeAHAH.ahah('LoadLocator.do', 'load-settings', '', 'POST'); return false }
		}

		// "site links" tool settings
		if (document.getElementById('site-link')) {
			var siteLink = document.getElementById('site-link');
			siteLink.onclick = function(){ completeAHAH.ahah('SiteLinks.do', 'site-settings', '', 'POST'); return false }
		}

	}
}

window.onresize = function() {
	if (document.getElementById("lightbox")) {
		var lbCreated = document.getElementById("lightbox");

		var lbWidth, lbHeight;
	
		if (window.innerHeight && window.scrollMaxY) {// Firefox
			lbWidth = document.body.offsetWidth;
			lbHeight = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			lbWidth = document.body.scrollWidth;
			lbHeight = document.body.scrollHeight;
		} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
			lbWidth = document.body.offsetWidth;
			lbHeight = document.body.offsetHeight;
		}

		lbCreated.style.width = lbWidth + "px";
		lbCreated.style.height = lbHeight + "px";

		xCorner = findPosX(document.getElementById('masthead'));
	
		var divs = getElementsByClassName(document, "*", 'preferences');
		var pPanel = divs[0];
		var leftPanel = xCorner + 183;
		pPanel.style.left = leftPanel + 'px';
	}
}

/*
	lightbox for preferences panel
*/
function showPreferences(target, file) {
	if (!file) {
			var file = target;
	}
	var lightbox = document.createElement('div');
	lightbox.setAttribute('id', 'lightbox');

	document.body.appendChild(lightbox);
	var lbCreated = document.getElementById("lightbox");

	var lbWidth, lbHeight;

	if (window.innerHeight && window.scrollMaxY) {// Firefox
		lbWidth = document.body.offsetWidth;
		lbHeight = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		lbWidth = document.body.scrollWidth;
		lbHeight = document.body.scrollHeight;
	} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
		lbWidth = document.body.offsetWidth;
		lbHeight = document.body.offsetHeight;
  	}

	lbCreated.style.width = lbWidth + "px";
	lbCreated.style.height = lbHeight + "px";

	xCorner = findPosX(document.getElementById('masthead'));
	
	var divs = getElementsByClassName(document, "*", 'preferences');
	var pPanel = divs[0];
	var leftPanel = xCorner + 183;
	pPanel.style.left = leftPanel + 'px';

	// show the appropriate panel
	if (target == 'contact') {
		pPanel.id = 'pcontact';
		completeAHAH.ahah('Profile.do?command=load', 'pcontent', '', 'POST');
	} else if (target == 'details') {
		pPanel.id = 'pdetails';
		completeAHAH.ahah('Details.do?command=load', 'pcontent', '', 'POST');
	} else if (target == 'password') {
		pPanel.id = 'ppassword';
		completeAHAH.ahah('ChangePassword.do', 'pcontent', '', 'POST');
	} else if (target == 'subscriptions') {
		pPanel.id = 'psubscriptions';
		completeAHAH.ahah('Subscriptions.do?command=load', 'pcontent', '', 'POST');
	} else {
		pPanel.id = 'pcustom';
		completeAHAH.ahah('CustomizeWidgets.do?command=load', 'pcontent', '', 'POST');
	}

	//lightbox.onclick = function(){ hidePreferences(); return false }
}
function hidePreferences() {
	var divs = getElementsByClassName(document, "*", 'preferences');
	var lbPanel = divs[0];
	lbPanel.style.left = '-9999em';
	var lbFade = document.getElementById('lightbox');
	lbFade.parentNode.removeChild(lbFade);
}
function changePreferences(target, file) {
	if (!file) {
			var file = target;
	}
	var divs = getElementsByClassName(document, "*", 'preferences');
	var pPanel = divs[0];

	// show the appropriate panel
	if (target == 'contact') {
		pPanel.id = 'pcontact';
		completeAHAH.ahah('Profile.do?command=load', 'pcontent', '', 'POST');
	} else if (target == 'details') {
		pPanel.id = 'pdetails';
		completeAHAH.ahah('Details.do?command=load', 'pcontent', '', 'POST');
	} else if (target == 'password') {
		pPanel.id = 'ppassword';
		completeAHAH.ahah('ChangePassword.do', 'pcontent', '', 'POST');
	} else if (target == 'subscriptions') {
		pPanel.id = 'psubscriptions';
		completeAHAH.ahah('Subscriptions.do?command=load', 'pcontent', '', 'POST');
	} else {
		pPanel.id = 'pcustom';
		completeAHAH.ahah('CustomizeWidgets.do?command=load', 'pcontent', '', 'POST');
	}

}

/*
	toggle archive categories
*/
function toggleCat(parentLink) {
	var thisCat = parentLink.parentNode.getElementsByTagName('ul');
	if (thisCat[0].style.left == '-9999em' || thisCat[0].style.left == '') {
		thisCat[0].style.position = 'static';
		thisCat[0].style.left = 'auto';
		parentLink.parentNode.className = 'selected';
	} else {
		thisCat[0].style.position = 'absolute';
		thisCat[0].style.left = '-9999em';
		parentLink.parentNode.className = '';
	}
}

/*
	toggle archive articles
*/
function toggleArt(parentLink) {
	var theseArts = parentLink.parentNode.getElementsByTagName('p');
	for (var j=0;j<theseArts.length;j++) {
		if (theseArts[j].style.left == '-9999em' || theseArts[j].style.left == '') {
			theseArts[j].style.position = 'static';
			theseArts[j].style.left = 'auto';
			parentLink.parentNode.className = 'selected';
		} else {
			theseArts[j].style.position = 'absolute';
			theseArts[j].style.left = '-9999em';
			parentLink.parentNode.className = '';
		}
	}
}

/*
	show/hide widgetss
*/
function showWidget(target, file) {
	if (!file) {
			var file = target;
	}
	// ensure all tabs are in the proper position
	var tabs = getElementsByClassName(document, "*", 'tab');
	for (var i=0;i<tabs.length;i++) {
		tabs[i].style.top = '0';
	}
	// hide all open widgets
	var divs = getElementsByClassName(document, "*", 'widget');
	var module = divs[0];
	module.style.left = '-9999em';
	// show the selected widget
	completeAHAH.ahah(file+'.do', 'wcontent', '', 'POST');
	module.id = 'w'+target;
	if (target == 'login') {
		module.style.left = 'auto';
		module.style.right = '0';
		module.style.top = '31px';
	} else if (target == 'reminder') {
		module.style.left = 'auto';
		module.style.right = '0';
	} else {
		var activeLink = document.getElementById('wl-'+target);
		var activeTab = activeLink.parentNode;
		var newLeft = findPosX(activeTab);
		var checkObj = document.getElementById('masthead');
		var checkLeft = findPosX(checkObj);
		newLeft = newLeft - checkLeft - 30;
		module.style.left = newLeft+'px';
		if (target == 'tracker') {
			activeTab.style.top = '245px';
		} else if (target == 'load') {
			activeTab.style.top = '125px';
		} else if (target == 'fuel') {
			activeTab.style.top = '165px';
		} else if (target == 'job') {
			activeTab.style.top = '95px';
		} else if (target == 'site') {
			activeTab.style.top = '185px';
		} else if (target == 'zip') {
			activeTab.style.top = '305px';
		} else {
			activeTab.style.top = '225px';
		}
	}
}
function hideWidget(target) {
	var module = document.getElementById(target);
	module.style.left = '-9999em';
	var tabs = getElementsByClassName(document, "*", 'tab');
	for (var i=0;i<tabs.length;i++) {
		tabs[i].style.top = '0';
	}
}

/*
	scroll widget tabs
*/
function nextTabs(tabs, start) {
	for (var i=0;i<tabs.length;i++) {
		tabs[i].style.left = '-9999em';
	}
	last = start + 4;
	var j = 0;
	for (var i=start;i<last;i++) {
		var temp = (j * 126) + 12;
		tabs[i].style.left = temp+'px';
		j++;
	}
}
function prevTabs(tabs, start) {
	for (var i=0;i<tabs.length;i++) {
		tabs[i].style.left = '-9999em';
	}
	last = start + 4;
	var j = 0;
	for (var i=start;i<last;i++) {
		var temp = (j * 126) + 12;
		tabs[i].style.left = temp+'px';
		j++;
	}
}

/*
	show/hide ad squares
*/
function show(tag, target) {
	// hide all open ad squares
	var divs = getElementsByClassName(document, "*", 'overlay');
	for (var i=0;i<divs.length;i++) {
		divs[i].style.left = '-9999em';
	}
	// show the selected ad square
	adsq = target.substr(4,2);
	var module = document.getElementById('module'+adsq);
	
	xCorner = findPosX(document.getElementById('wrapper'));
	yCorner = findPosY(document.getElementById('wrapper'));

	xWidth = tag.offsetWidth;

	xPos = findPosX(tag);
	yPos = findPosY(tag);

	xPos = xPos - xCorner - 7 + xWidth;
	yPos = yPos - yCorner - 41;

	module.style.left = xPos+'px';
	module.style.top = yPos+'px';
}
function hide(target) {
	adsq = target.substr(5,2);
	var module = document.getElementById('module'+adsq);
	module.style.left = '-9999em';
}

function isNoWidgetSelected() {
    var isSelected=false;
    var checkBoxes = document.getElementsByTagName("input");
    for (var i=0; i<checkBoxes.length; i++) {
        if (checkBoxes[i].checked) {
            isSelected=true;
            i=checkBoxes.length;
        }
    }
    if (!isSelected) {
        document.getElementById("error").innerHTML = "You must select at least 1 widget.";
    }
    return isSelected;
}
