/*==============================================================================
 Copyright (C) 2007 JPL Productions.  All Rights Reserved.
 -------------------------------------------------------------------------------
 File:  custom.js - JavaScript code required for all pages of THIS site only.
                    Delete anything your site doesn"t need
==============================================================================*/

var imgDirectory = "../../../lib/img/";
var mouseX;
var mouseY;

/*
==================================================================================
	Author: Joe Mallory
	Date Addad: 10-02-2007
	Purpose: Global Variables/Functions
==================================================================================
*/

// Init mouse tracking vars
mouseX = 0 + "px";
mouseY = 0 + "px";

// Listener for trackin pouse pos
function mouseListener(evt) {
		var evt = (evt) ? evt :(window.event) ? event : null;
		mouseX = evt.clientX;
		mouseY = evt.clientY;

		checkExpandabeBanner();
		document.onmousemove = mouseListener;

}

// Start tracking the mouse on window load
//window.onload = mouseListener;
addEvent(window, 'load', mouseListener);

function getId(evt) {
	var elemId = (evt.target) ? evt.target.id : ((evt.srcElement) ? evt.srcElement.id : null); 
	return elemId;
}

// Check the browsers current width and return it
function getBrowserWidth() {
	var browserWidth;
	// FireFox 1.0+, Safari 1.0+, NN 6.0+
	if (document.documentElement.offsetWidth) {
		browserWidth = document.documentElement.offsetWidth;
	}
	// IE 5.0+ & Opera 6.0+
	if (document.body.clientWidth) {
		browserWidth = document.body.clientWidth;
	}
	return browserWidth;
}

function getBrowserScroll() {
	var browserScroll;
	// IE 6.0+, Opera 8.0+ --> (I think with Opera)
	if (document.documentElement.scrollTop) { 
		browserScroll = document.documentElement.scrollTop
	} else {
		if (document.body.scrollTop) { // Safari, IE 5.0 and prior
			browserScroll = document.body.scrollTop;
		} else if (window.pageYOffset) { // Don't even need this really: Firefox, Netscape
			browserScroll = window.pageYOffset;
		}
	}
	
	// Bug - Some browsers return 'undefined' if no scroll instead of 0 (zero);
	if (browserScroll == undefined) {
		return 0;	
	} else {
		return browserScroll;
	}
}


/*
==================================================================================
*	Author: Joe Mallory
*	Date Added: 10-02-2007
*	Purpose: Control expandable banner
==================================================================================
*/

var panelGroupArray = new Array(
								new Array("dryfreight"), 
								new Array("refrigerated"),
								new Array("platformstake"),
								new Array("curtainsider"),
								new Array("parcelvan"),
								new Array("walkramps")
						);

function toggleExpandableBanner(state, panelSelected) {
	document.getElementById("expandableBanner").style.display = state;
	document.getElementById("picHolder").style.background = "url(" + imgDirectory + "template/expandableBanner/truck_" + panelGroupArray[panelSelected][0] + ".jpg)";
	document.getElementById("picHolder").style.backgroundRepeat = "no-repeat";
	document.getElementById("textHolder").style.background = "url(" + imgDirectory + "template/expandableBanner/header_" + panelGroupArray[panelSelected][0] + ".jpg)";
	document.getElementById("textHolder").style.backgroundRepeat = "no-repeat";
	
	for (var i in panelGroupArray) {
		if (panelGroupArray[i][0] == panelGroupArray[panelSelected][0]) {
			document.getElementById("panelInfo_" + panelGroupArray[i][0]).style.display = "block";
			document.getElementById("panelInfo_" + panelGroupArray[i][0]).style.visibility = "visible";
		} else {
			document.getElementById("panelInfo_" + panelGroupArray[i][0]).style.display = "none";
			document.getElementById("panelInfo_" + panelGroupArray[i][0]).style.visibility = "hidden";
		}
	}
}

// Check the Expandable Banner boundaries when active to close when done.
function checkExpandabeBanner() {
	var leftBounds = ((getBrowserWidth()/2) - (900/2)) - 20;
	var rightBounds = ((getBrowserWidth()/2) + (900/2)) + 20;
	var topBounds = 57 - getBrowserScroll();
	var bottomBounds = 300 - getBrowserScroll();
	//document.getElementById("sidebar").innerHTML = mouseY + " : " + topBounds;
	if (document.getElementById("expandableBanner").style.display == "block") {
		if ((mouseX < leftBounds) || (mouseX > rightBounds) || (mouseY < topBounds) || (mouseY > bottomBounds)) {
			document.getElementById("expandableBanner").style.display = "none";
		}
	}
}

/*
==================================================================================
*	Author: Joe Mallory
*	Date Added: 10-05-2007
*	Purpose: Tracking and enlarging product thumbnails
==================================================================================
*/

function showImgEnlargement() {
	document.getElementById("imgEnlarge").style.display = "block";
	document.getElementById("imgEnlarge").style.visibility = "visible";
}

function hideImgEnlargement() {
	document.getElementById("imgEnlarge").style.display = "none";
	document.getElementById("imgEnlarge").style.visibility = "hidden";
	document.getElementById("imgEnlargeHolder").src = imgDirectory + "template/products/thumb_pixelHolder.gif"
	document.getElementById("imgEnlargeHolder").style.width = 1 + "px";
	document.getElementById("imgEnlargeHolder").style.height = 1 + "px";
}

// Get the target objects curr top & left pos, adjust according to the sites width
function setImgEnlarge(obj, lyr, offsetLeftPad, offsetTopPad, newImg) {
	var coors = findPos(obj);
	var target = document.getElementById(lyr);
	var offsetX = offsetLeftPad;
	var offsetY = offsetTopPad;
	var newImg = newImg;
	
	var browser = ((getBrowserWidth() - 982)/2); //982 = total website width goes here divided by half

	target.style.top = coors[1] + offsetY + "px";
	target.style.left = coors[0] - browser + offsetX + "px";

	document.images["imgEnlargeHolder"].src = newImg;
	document.images["imgEnlargeHolder"].style.width = 537 + "px";
	document.images["imgEnlargeHolder"].style.height = 313 + "px";
	
	showImgEnlargement();
}

// Find the top & left position of the current element within the site and return it
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

/*
==================================================================================
*	Author: Joe Mallory
*	Date Added: 9-27-2007
*	Purpose: Home Flash alternate
==================================================================================
*/



/*
==================================================================================
*	Author: Joe Mallory
*	Date Added: 9-27-2007
*	Purpose: dynamic toggle of divs with array
==================================================================================
*/

function chartDisplayToggle(n, array) {
	var num = n; 
	var group = array;
	//window.alert('called');
	// Called each time a toggle is requested
	for (var i in group) {
		// If a match is found in the group from the number sent
		if (group[i][0].indexOf(num) > -1) {
			// Id it is already closed do this...
			if (document.getElementById(group[i][0]).style.display == "none") {
				document.getElementById(group[i][0]).style.display = "block";
				document.getElementById(group[i][1]).style.background = "url(" + imgDirectory + "template/buttons/btn_toggleBar_b.jpg)";
			} else { // ...Else, close it
				document.getElementById(group[i][0]).style.display = "none";
				document.getElementById(group[i][1]).style.background = "url(" + imgDirectory + "template/buttons/btn_toggleBar.jpg)";
			}
		}
	}
}

var initChart = 0;

function chartDisplayActivate(n, array) {
	var num = n; 
	var group = array;
	
	// Need this to not have to click each one twice to activate - not sure why though?
	//====================================================
	// DO NOT DELETE THIS ACTION AS IT ACTIVATES THE PANES
	//====================================================
	for (var i in group) {
		document.getElementById(group[i][0]).style.visibility = "hidden";
		document.getElementById(group[i][0]).style.display = "block";
		document.getElementById(group[i][1]).style.background = "url(" + imgDirectory + "template/buttons/btn_toggleBar.jpg)";
	}
	for (var i in group) {
		document.getElementById(group[i][0]).style.visibility = "visible";
		document.getElementById(group[i][0]).style.display = "none";
		document.getElementById(group[i][1]).style.background = "url(" + imgDirectory + "template/buttons/btn_toggleBar.jpg)";
	}
	//====================================================
	// DO NOT DELETE THIS ACTION AS IT ACTIVATES THE PANES
	//====================================================
}

function chartDisplayToggleAll(array, state) {
	var group = array;
	// Expand all
	if (state == "expand") {
		for (var n in group) {
			document.getElementById(group[n][0]).style.display = "block";
			document.getElementById(group[n][1]).style.background = "url(" + imgDirectory + "template/buttons/btn_toggleBar_b.jpg)";
		}
	}
	// Collapse all
	if (state == "collapse") {
		for (var n in group) { 
			document.getElementById(group[n][0]).style.display = "none",
			document.getElementById(group[n][1]).style.background = "url(" + imgDirectory + "template/buttons/btn_toggleBar.jpg)";
		}
	}
}

/*
==================================================================================
	Author: Joe Mallory
	Date Added: 9-27-2007
	Purpose: Controlling content tabs in producs section
		- Img swap for rollover, rollout
		- Dynamic toggle of subNav content tabs
==================================================================================
*/
var originalImg = "";
var tabsToggle = new Array();

function tabDisplayToggle(array, tab) {
	for (var i = 0; i < array.length; i++) {
		document.getElementById(array[i]).style.display = "none";
	}
	document.getElementById(tab.toString()).style.display = "block";
}

function rolloverImg(evt, type) {
	var elemId = (evt.target) ? evt.target.id : ((evt.srcElement) ? evt.srcElement.id : null); 
	if (type == "over") {
		if (elemId != null && elemId != "") {
			originalImg = document.getElementById(elemId).src;	
			document.getElementById(elemId).src = imgDirectory + "template/buttons/btn_" + elemId + "_b.gif";			
		}
	} else {
		if (elemId != null && elemId != "") {
			document.getElementById(elemId).src = originalImg;
		}
	}
}

function changeImg(evt) {
	var elemId = (evt.target) ? evt.target.id : ((evt.srcElement) ? evt.srcElement.id : null); 
	for(var i=0; i<tabsToggle.length; i++) {
		document.getElementById(tabsToggle[i]).src = imgDirectory + "template/buttons/btn_" + tabsToggle[i] + ".gif";
	}
	document.getElementById(elemId).src = imgDirectory + "template/buttons/btn_" + elemId + "_b.gif";
	originalImg = imgDirectory + "template/buttons/btn_" + elemId + "_b.gif";
}

/* =========================================================== LOAD MULTIPLE FUNCTIONS ON WINDOW.ONLOAD */
var currentURL = window.location.search;
var msuQuery = currentURL.indexOf("tab=request");

var onLoadFunctions = new Array();
var iloadFunction = 0;

// Pass each function that needs to load
function addOnLoad(func) {
	onLoadFunctions[iloadFunction] = func;
	iloadFunction++;
}
// Loops through all of the functions that were added
function loadAllFunctions() {
	for(i=0; i < onLoadFunctions.length; i++) {
		eval(onLoadFunctions[i]+"()");
	}
}
// Load all of the functions that you've set
window.onload = loadAllFunctions;

/* =========================================================== SHOW/HIDE TABS ON HOME PAGE */
if (msuQuery >= 0) {
	function showHideTab() {	
		var tabServices = document.getElementById('content_services');
		var tabGallery = document.getElementById('content_gallery');
		var tabRequestAppt = document.getElementById('content_request-appointment');
	
		var tabServicesImg = document.getElementById('services');
		var tabGalleryImg = document.getElementById('gallery');
		var tabRequestApptImg = document.getElementById('request-appointment');
	
		if (tabServices != null && tabGallery != null && tabRequestAppt != null) {
			tabServices.style.display = "none";
			tabGallery.style.display = "none";
			tabRequestAppt.style.display = "block";

			tabServicesImg.src = "/lib/img/template/buttons/btn_services.gif";
			tabGalleryImg.src = "/lib/img/template/buttons/btn_gallery.gif";
			tabRequestApptImg.src = "/lib/img/template/buttons/btn_request-appointment_b.gif";
		}
	}
	addOnLoad("showHideTab");
}

/* =========================================================== SHOW/HIDE TABS ON DISTRIBUTOR ISSUES AREA*/
/*
var currentPageURL = window.location.toString();
var onForumPage = currentPageURL.indexOf("/corporate/forum/");

if (onForumPage >= 0) {
	function showForumTabs() {	
		var tabOpen = document.getElementById('open');
		var tabSubmitted = document.getElementById('submitted');
		var tabResolved = document.getElementById('resolved');
		var tabRejected = document.getElementById('rejected');
		var tabArchived = document.getElementById('archived');
	
		var currentURL = window.location.search;
		
		if (currentURL.indexOf("archived=1") >= 0) { 
			tabArchived.className = "archived active";
		} else if (currentURL.indexOf("status=1") >= 0) { 
			tabSubmitted.className = "submitted active"; 
		} else if (currentURL.indexOf("status=3") >= 0) { 
			tabResolved.className = "resolved active"; 
		} else if (currentURL.indexOf("status=4") >= 0) { 
			tabRejected.className = "rejected active";
		} else { 
			tabOpen.className = "open active";
		}
	}
	addOnLoad("showForumTabs");
}
*/

/*
==================================================================================
	Author: Joe Mallory
	Date Added: 9-27-2007
	Purpose: Controlling image change in the gallery
		- Img swap
==================================================================================
*/

function changeOneImg(imgId, newImg) {
	document.images[imgId].src = imgDirectory + newImg;
}


/*
==================================================================================
*	Author: Joe Mallory
*	Date Added: 10-02-2007
*	Purpose: Control Login status and navigation positioning
==================================================================================
*/

function changeClass(el, arg) {
		document.getElementById(el).className = arg;
}


/*
==================================================================================
*	Author: Joe Mallory
*	Date Added: 2-05-2008
*	Purpose: Control gallery tabs
==================================================================================
*/

var firstTabActive = false;
function showTab(id) {
	//window.alert(id);
	document.getElementById("tab_" + id).style.display = "block";
	document.getElementById("tab_" + id).style.visibility = "visible";

	if (firstTabActive === false) {
		document.getElementById(id).src = imgDirectory + "template/buttons/btn_" + id + "_b.gif";
		document.getElementById("content_" + id).style.display = "block";
		firstTabActive = true;
	}
}


/*
==================================================================================
*	Author: Joe Mallory
*	Date Added: 4-17-2008
*	Purpose: Control gallery iFrame content
* Updated: 5-2-2008, Larry Daughenbaugh
*          added ability to change style of "view 360" buttons to show active state
==================================================================================
*/
function change360Content(url,showDiv,hideDivs) {
    document.getElementById("360Frame").src = url;

    var displayDiv = showDiv + "-id";
    var cssClassName = "view360 " + showDiv + "-active";
    document.getElementById(displayDiv).className = cssClassName;
				
				if (hideDivs != '') {
				    var arrHideDivs = hideDivs.split(",");
				    for (var i=0, arrLength=arrHideDivs.length; i < arrLength; ++i) {
					       cssClassName = "view360 " + arrHideDivs[i]
					       displayDiv = arrHideDivs[i] + "-id";
            document.getElementById(displayDiv).className = cssClassName;
        }
				}
}

/*
==================================================================================
*	Author: Thom Fogie
*	Date Added: 1-20-2008
*	Purpose: preload select group of images from array
==================================================================================

	FIX ME: allow setting add-in position determined by an argument flag (append|prepend)

*/

var imgPreLoadedArr = new Array();

function imgPreloader(myArr, imgPath, addin) {

	if (myArr.constructor.toString().indexOf("Array") == -1) {
		// alert('not an array');
		return false;
	}

	var append = new Array();
	var i = 0;
	var j = 0;

	// advance internal pointer to current length of loaded images
	// to avoid refilling any data slots... and re-downloading later
	var k = imgPreLoadedArr.length;

	if (typeof addin == 'undefined') {
		// means no value supplied for this arg
		// think php style default args
		append[0] = '';
	} else if (addin.constructor.toString().indexOf("Array") == -1) {
		// could be empty, could be a string... so what.
		append[0] = addin;	
	} else {
		// is an array, copy by reference
		append = addin;
	}

	for (i=0; i<append.length; i++) {
		for (j=0; j<myArr.length; j++) {
			imgPreLoadedArr[k] = new Image();
			imgPreLoadedArr[k].src = imgPath+myArr[j]+append[i];
			k++;
		}
	}
}

