// Gets the height offset for the window
 
function windowOffsetY() {
	//Get PageOffest
	var scrOfY = 0;
 
	if (typeof (window.pageYOffset) == 'number') {
		//Netscape compliant
		scrOfY = window.pageYOffset;
	} else if (document.body && document.body.scrollTop) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
	} else if (document.documentElement && (document.documentElement.scrollTop)) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
	}
	return scrOfY;
}
 
 
//	note, IE8 identifies itself as version 7
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: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			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.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]
 
};
 
 
 
 
 
 
/**	sticky tools
	ensures tools accordion remains on page when it would normally scroll off the top
	
	Info: rpH is our Resolve Position Handler.
	
	Requires:
		library.js - browserDetect and windowOffsetY functions (Included Above)
		
	You can programatically stop the accordion from moving with the page by changing the class of the scrollerContainer to accordionStatic.
	
	Tested to work in: 	IE7 +
						Firefox
						Safari
						Chrome
						Opera
**/
 
 
var rpH = {
 
	addEvent: function(elm, evType, fn, useCapture) {
		// addEvent cross-browser event handling for IE5+, NS6 and Mozilla
		// By Scott Andrew
		if (elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	},
 
	init: function() {
 
		if (!document.getElementById) {
			return;
		}
		
		//	disable for IE6
		browserDetect.init();
		if ((browserDetect.browser == "Explorer") && (browserDetect.version == "6")) {
		    return;
		}
        
        var checkClass = [];
        checkClass = document.getElementsByTagName("div");
 
        var isStatic = false;
 
        for (var i = 0; i < checkClass.length; i++) {
            if (checkClass[i].className == "accordionStatic") {
                isStatic = true;
            }
        }
 
        if (isStatic) {
            return;
        }
 
		rpH.pageContainer = document.getElementById("page");
		rpH.scrollerContainer = document.getElementById("scrollerContainer");
		rpH.totalHeightToOffSet = rpH.pageContainer.offsetTop;
 
		//Event Listener
		rpH.addEvent(window, "scroll", rpH.resolvePosition, false);
	},
 
	resolvePosition: function() {
 
		var scrOfY = windowOffsetY();
 
		if (scrOfY >= rpH.totalHeightToOffSet) {
			rpH.scrollerContainer.className = "scrollerContainerFluid";
		} else {
			rpH.scrollerContainer.className = "scrollerContainer";
		}
		
 
	},
	
	pageContainer: null,
	scrollerContainer: null,
	totalHeightToOffSet: 0
}
 
rpH.addEvent(window, "load", rpH.init, false);
