// JavaScript Document
function bol_bwcheck(){
	this.ver=navigator.appVersion;
	this.agent=navigator.userAgent;
	this.dom=document.getElementById?1:0;
	this.opera5=this.agent.indexOf("Opera 5")>-1;
	this.opera=this.agent.indexOf("Opera")>-1;
	this.safari=this.agent.indexOf("Safari")>-1;
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0;
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie7=(this.ver.indexOf("MSIE 7")>-1 && this.dom)?1:0;
	this.ie8=(this.ver.indexOf("MSIE 8")>-1 && this.dom)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6||this.ie7||this.ie8;
	this.mac=this.agent.indexOf("Mac")>-1;
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns4=(document.layers && !this.dom)?1:0;
	this.ff2=(this.agent.indexOf("Firefox/2")>-1 && this.agent.indexOf("Gecko")>-1)?1:0;
	this.bw=(this.ie8 || this.ie7 || this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5);
	return this;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
//function getPagefocus(obj) { document.getElementById(obj).focus(); } 

function getVersionBox(obj_name)	{
	var obj = document.getElementById(obj_name);
	var pos = findPos(obj);
	return pos;
}	
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];
}
function getSearchResult(chapter, blurb, section, hlopt)	{
	var ur = 'index.php?chapter='+chapter+'&hl=true&hlopt1='+hlopt[0]+'&hlopt2='+hlopt[1]+'&text='+blurb+'#';
	if (hlopt[1])	{ ur = ur+"hlSelText"; }
	else { ur = ur+section+'0"'; } 
	location.href=ur;
}
function getHlOptions(id)	{
	var hlopt = new Array(false, false);
	if (document.getElementById("hlopkey"+id).checked == true) { hlopt[0] = true; } 
	if (document.getElementById("hloptext"+id).checked == true) { hlopt[1] = true; }
 	return hlopt;
}

function switchTabView (st, sourceNode)	{
	divNodes = document.getElementById(sourceNode).getElementsByTagName('div');
	for (i = 0; i < divNodes.length; i++) {
		if (divNodes[i].className.indexOf('bolcurrent') != -1) { nodeNewBM = divNodes[i]; }
		if (divNodes[i].className.indexOf('bolclassic') != -1) { nodeOldBM = divNodes[i]; }
	}
	if (st == "new")	{
		nodeNewBM.className = nodeNewBM.className.replace(/\s?hidetab/ig, '');
		nodeOldBM.className += ' hidetab';
	}
	else if (st == "old")	{
		nodeNewBM.className += ' hidetab';
		nodeOldBM.className = nodeOldBM.className.replace(/\s?hidetab/ig, '');
	}
}

function manageOverlay (divID) {
	if (versionOverlay.cfg.getProperty("visible") && (versionOverlayDiv == divID || divID == null)) {
		MM_swapImgRestore();
		versionOverlay.hide();
	} else {
		MM_swapImgRestore();
		var objDiv = document.getElementById(divID);
		p = findPos(objDiv);
		MM_swapImage('info_'+divID,'','graphics/other/infoBtnOn.png',1);
		versionOverlay.cfg.setProperty('fixedcenter', false);
		versionOverlayDiv = divID;
		versionOverlay.cfg.setProperty('xy', [p[0] + 110, p[1] + 40]);
		versionOverlay.show();
	}
}

function createTabs (divID) {
	objDiv = document.createElement('div');
	// IE prior to version 8 did not set the class correctly.
	objDiv.setAttribute((document.all && !window.opera && !bol_browsers.ie8 ? 'className' : 'class'), 'gTabs');
	
	objLinkNew = document.createElement('a');
	objLinkNew.setAttribute('href', '#');
	objLinkNew.onclick = new Function('switchTabView(\'new\', \'' + divID + '\'); return false;');
	objImgNew = document.createElement('img');
	objImgNew.setAttribute('src', 'graphics/bmGoalsTabs/bmgoals2001_tabbtn.gif');
	objImgNew.setAttribute((document.all && !window.opera ? 'className' : 'class'), 'tabPos');
	if (document.all) { objImgNew.className = 'tabPos'; }
	objImgNew.setAttribute('border', '0');
	objImgNew.setAttribute('height', '27');
	objImgNew.setAttribute('width', '237');
	objImgNew.setAttribute('alt', 'Current Version');
	objLinkNew.appendChild(objImgNew);
	objDiv.appendChild(objLinkNew);
	
	objLinkOld = document.createElement('a');
	objLinkOld.setAttribute('href', '#');
	objLinkOld.onclick = new Function('switchTabView(\'old\', \'' + divID + '\'); return false;');
	objImgOld = document.createElement('img');
	objImgOld.setAttribute('src', 'graphics/bmGoalsTabs/bmgoals1993_tabbtn.gif');
	objImgOld.setAttribute((document.all && !window.opera ? 'className' : 'class'), 'tabPos');
	if (document.all) { objImgOld.className = 'tabPos'; }
	objImgOld.setAttribute('border', '0');
	objImgOld.setAttribute('height', '27');
	objImgOld.setAttribute('width', '237');
	objImgOld.setAttribute('alt', '1993 Version');
	objLinkOld.appendChild(objImgOld);
	objDiv.appendChild(objLinkOld);
	
	objLinkInfo = document.createElement('a');
	objLinkInfo.setAttribute('href', '#');
	objLinkInfo.setAttribute((document.all && !window.opera ? 'className' : 'class'), 'infoBtn');
	objLinkInfo.setAttribute('title', 'Click for Information on Benchmarks versions');
	objLinkInfo.onclick = new Function('manageOverlay("'+divID+'"); return false;');
	objImgInfo = document.createElement('img');
	objImgInfo.setAttribute('src', 'graphics/other/infoBtnOff.png');
	objImgInfo.setAttribute('id', 'info_'+divID);
	objImgInfo.setAttribute('border', '0');
	objImgInfo.setAttribute('height', '20');
	objImgInfo.setAttribute('width', '20');
	objImgInfo.setAttribute('alt', 'Version Explanation');
	objLinkInfo.appendChild(objImgInfo);
	objDiv.appendChild(objLinkInfo);
	
	return objDiv
}

function createRounded (objDiv) {
	objDiv.className += ' roundedCorners';
	objDiv.innerHTML = '<div><div><div>' + objDiv.innerHTML + '</div></div></div>';
}

function initTabs (e) {
	var araDivRefs = document.getElementsByTagName('div');
	var araSubDivs;
	var i = 0;
	var bmtabver = 2007;
	if (YAHOO.Tools.getQueryStringVar('bmtabver') == 2007) {
		// Previously I was just deleting the cookie. However, this did not appear to be working.
		// So now we'll set the cookie to 2007 prior to deleting it.
		YAHOO.Tools.setCookie('bmtabver', 2007);
		YAHOO.Tools.deleteCookie('bmtabver');
	} else if (YAHOO.Tools.getCookie('bmtabver') == 1993 || YAHOO.Tools.getQueryStringVar('bmtabver') == 1993) {
		YAHOO.Tools.setCookie('bmtabver', 1993);
		bmtabver = 1993
	}
	
	for (i = 0; i < araDivRefs.length; i++) {
		if (araDivRefs[i].className.indexOf('goaltext') != -1) {
			araDivRefs[i].className += ' tabbed';
			araDivRefs[i].insertBefore(createTabs(araDivRefs[i].id), araDivRefs[i].firstChild);
			bmtabver == 1993 ? switchTabView('old', araDivRefs[i].id) : switchTabView('new', araDivRefs[i].id);
			
			// Make rounded corners for IE and Opera
			if (document.all) {
				araSubDivs = araDivRefs[i].getElementsByTagName('div');
				for (j = 0; j < araSubDivs.length; j++) {
					if (araSubDivs[j].className.indexOf('bolcurrent') != -1 || araSubDivs[j].className.indexOf('bolclassic') != -1) {
						createRounded(araSubDivs[j]);
					}
				}
			}
		}
	}
	// Since the page elements have shifted due to the hiding of content let's reload the page anchor.
	// If the anchor is for a 1993 benchmark we need to display that tab.
	if (location.hash.length > 1) {
		if (location.hash.indexOf('bm93') != -1) {
			regex = /bm93_(\d{1,2}\w\w)\d{1,2}\w{0,3}/ig;
			regexMatch = regex.exec(location.hash);
			switchTabView('old', 'bm_' + regexMatch[1]);
		}
		if (location.hash.indexOf('bm') != -1 && bmtabver == 1993) {
			regex = /bm_(\d{1,2}\w\w)\d{1,2}\w{0,3}/ig;
			regexMatch = regex.exec(location.hash);
			switchTabView('new', 'bm_' + regexMatch[1]);
		}
		if (window.scrollTo && findPos(document.getElementById(location.hash.replace(/#/, '')))[1] != 0) {
			window.scrollTo(0, findPos(document.getElementById(location.hash.replace(/#/, '')))[1]);
		} else if (document.getElementById(location.hash.replace(/#/, '')).focus) {
			setTimeout("document.getElementById('"+location.hash.replace(/#/, '')+"').focus()", 500);
		} else {
			location.hash = location.hash;
		}
	}
	
	// Set up the version information overlay
	if (objVersionOverlay = document.getElementById('versionInfo')) {
		versionOverlay = new YAHOO.widget.Overlay("versionInfo", { fixedcenter:true, visible:false, width:"550px" } );
		versionOverlay.render();
		
		objLinkClose = document.createElement('a');
		objLinkClose.setAttribute('href', '#');
		objLinkClose.setAttribute((document.all && !window.opera ? 'className' : 'class'), 'closeBtn');
		objLinkClose.setAttribute('title', 'close');
		objLinkClose.onclick = new Function('manageOverlay(); return false;');
		objImgClose = document.createElement('img');
		objImgClose.setAttribute('src', 'graphics/other/closeBtn.png');
		objImgClose.setAttribute('border', '0');
		objImgClose.setAttribute('height', '16');
		objImgClose.setAttribute('width', '16');
		objImgClose.setAttribute('alt', 'close');
		objLinkClose.appendChild(objImgClose);
		objDiv = objVersionOverlay.getElementsByTagName('div')[0];
		objDiv.insertBefore(objLinkClose, objDiv.firstChild);
	}
}

function initHilite (e) {
	//qsValues = location.search
	//hlNode = document.getElementById(location.hash.substring(1, location.hash.length)).parentNode;
	//hlNode.className += ' hilite';
}

function fulltextSwitch(onoff, row_ref, s)	{
	var x, src = ['bm', 'bm93'];
	var si = document.getElementById('start_index').innerHTML;
	var ei = document.getElementById('end_index').innerHTML;
	
	switch (onoff)	{
		case 'on':
			if (row_ref && s)	{ showFulltext(row_ref, s); }
			else {				
				for (x in src)	{
					var a = si;					
					while (a <= ei)	{
						showFulltext(a, src[x]);
						a++;
					}
				}
			}
			break;
		case 'off':
			if (row_ref && s)	{ hideFulltext(row_ref, s); }
			else {				
				for (x in src)	{
					var a = si;					
					while (a <= ei)	{
						hideFulltext(a, src[x]);
						a++;
					}	
				}
			}
			break;	
	}
}
function showFulltext(row_ref, src)	{
	if (document.getElementById('result_'+row_ref+'_'+src))	{
		document.getElementById('result_'+row_ref+'_'+src).style.display = 'none';
		document.getElementById('result_'+row_ref+'_ft_'+src).style.display = '';
		document.getElementById('fulltext_switch_'+row_ref+'_'+src).innerHTML = '(<a href="Javascript: fulltextSwitch(\'off\', '+row_ref+', \''+src+'\')">hide fulltext</a>)';
	}
}
function hideFulltext(row_ref, src)	{
	if (document.getElementById('result_'+row_ref+'_'+src))	{
		document.getElementById('result_'+row_ref+'_'+src).style.display = '';
		document.getElementById('result_'+row_ref+'_ft_'+src).style.display = 'none';
		document.getElementById('fulltext_switch_'+row_ref+'_'+src).innerHTML = '(<a href="Javascript: fulltextSwitch(\'on\', '+row_ref+', \''+src+'\')">fulltext</a>)';
	}
}
function updateResultView(val)	{
	var x, y;
	var src = ['bm', 'bm93', 'bp'];
	var formats = ['standard', 'custom1'];
	var v = (val == 'fulltext')	? 'standard' : val;
	var si = document.getElementById('start_index').innerHTML;
	var ei = document.getElementById('end_index').innerHTML;

	for (y in formats)	{
		var d = (formats[y] == v) ? '' : 'none';		
		for (x in src)	{
			var a = si;			
			while (a <= ei)	{	
				if (document.getElementById(formats[y]+'_output_'+a+'_'+src[x]))	{
					document.getElementById(formats[y]+'_output_'+a+'_'+src[x]).style.display = d;
				}
				a++;
			}
		}
	}
	document.getElementById('custom1_header').style.display = 'none'; 
	switch (val)	{
		case 'standard': fulltextSwitch('off'); break;
		case 'fulltext': fulltextSwitch('on'); break;
		case 'custom1':
			document.getElementById('custom1_header').style.display = ''; 
			break;
	}
}


var bol_browsers = new bol_bwcheck();
var versionOverlay;
var versionOverlayDiv;
YAHOO.util.Event.addListener(window, "load", initTabs);

if (location.search.indexOf('hlnode') != -1) {
	YAHOO.util.Event.addListener(window, "load", initHilite);
}

