//Create browser detection object
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"
		}
	]

};



// run the initialization so it sets up the links
window.onload = initialize;
var globalWidth = 0;

function initialize() {
	var bod = document.getElementsByTagName("body")[0];
	var container = document.createElement("div");
	//create the container and overlay div elements
	container.id = "container";
	container.style.display = "none";
	bod.appendChild(container);
	var zuBoxOverlay = document.createElement("div");
	zuBoxOverlay.id = "zuBoxOverlay";
	zuBoxOverlay.style.display = "none";
	BrowserDetect.init();	
	if(BrowserDetect.browser!="Firefox" || BrowserDetect.OS!="Mac") {
		zuBoxOverlay.style.top = "0";
		zuBoxOverlay.style.left = "0";
	}
	bod.appendChild(zuBoxOverlay);
	
	YAHOO.namespace("zuBox.container");
		//draggable:false
	// Instantiate a Panel from script
	//modal:true
	YAHOO.zuBox.container.panel2 = new YAHOO.widget.Panel("panel2", { width:670, visible:false, constraintoviewport:false } );
	YAHOO.zuBox.container.panel2.setHeader("&nbsp;");	
}

function showZuBoxOverlay() {		
	document.getElementById("container").style.display = "block";
	document.getElementById("container").style.zIndex = '2000';
	
	document.getElementById("container").style.position = 'absolute';
	if ( window.pageYOffset == undefined ) {
		document.getElementById("container").style.top = (document.documentElement.scrollTop + 50)+"px";
	}
	else {
		document.getElementById("container").style.top = (window.pageYOffset + 50)+"px";
	}
	
	var viewWidth = YAHOO.util.Dom.getViewportWidth();	
	viewWidth = Math.floor((viewWidth - globalWidth)/2);
	
	document.getElementById("container").style.left = viewWidth+'px';	
	document.getElementById("zuBoxOverlay").style.display = "block";
}

function hideZuBoxOverlay() {
	document.getElementById("container").style.display = "none";
	document.getElementById("zuBoxOverlay").style.display = "none";
}	

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");

	for (var i = 0, j = 0; i < elsLen; i++ ) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}

	return classElements;
}

//return an associative array of  all get variables in the url
function getGETVars(url) {      
	if(!url)
		return;
	var vars = [], hash;
	var hashes = url.slice(url.indexOf('?') + 1).split('&');
	
	for(var i = 0; i < hashes.length; i++) {
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = hash[1];
	} 	
	return vars;       
}

function launchZuBox(zuBoxHref, width, height) {	
	var ypos = YAHOO.util.Dom.getViewportHeight();
	width = !width ? 650 : width;	
	height = !height ? (ypos-170) : height;
	globalWidth = width;
	if(width!="" && height!="")
		var iframeStyle = "style=\"width:"+width+"px;height:"+height+"px;\"";
	else
		var iframeStyle = "";
	
	if(zuBoxHref.indexOf('#')!=-1) {		
		var splits = zuBoxHref.split('#');
		if(splits.length>1) {			
			var anchorText = '?window=1#'+splits[1];
			zuBoxHref = splits[0]+anchorText;
		}
	} else {
		zuBoxHref += '?window=1';
	}
		
	var iframe = "<iframe "+iframeStyle+" id=\"zuBoxIFrame\" frameborder=\"0\" scrolling=\"auto\" src=\""+zuBoxHref+"\"></iframe>\n";
	
	//add the print link
	
	YAHOO.zuBox.container.panel2.setHeader("<a href=\""+zuBoxHref+"\" onclick=\"window.open(this.href,'','width="+width+",height="+height+",toolbar=yes,menubar=yes,scrollbars=yes,resizable=yes'); return false;\">print</a> - Notes to Consolidated Financial Statements");
	YAHOO.zuBox.container.panel2.width = (width);
	YAHOO.zuBox.container.panel2.setBody(iframe);
	YAHOO.zuBox.container.panel2.render("container");
	YAHOO.zuBox.container.panel2.hideEvent.subscribe(hideZuBoxOverlay);
	YAHOO.zuBox.container.panel2.showEvent.subscribe(showZuBoxOverlay);	
	
	YAHOO.zuBox.container.panel2.show();
	
	var additionalHeight = 0;
	//var ypos = YAHOO.util.Dom.getY('footerNavigation');		
	ypos = YAHOO.util.Dom.getViewportHeight();
	if(ypos < height) {
		additionalHeight = (height - ypos)+40;										
		document.getElementById("zuBoxOverlay").style.height = (additionalHeight+ypos+40)+"px";				
	} 
}


function redirectPage(url) {	
	if(!url)
		return;
	if(opener) {		
		opener.location.href = url;		
		opener.focus();			
		window.close();
		return false;
	}		
}
