function getObj(name){
	if(document.getElementById){
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	}
	else if(document.all){
		this.obj = document.all[name];
		this.style = document.all[name].style;
	}
	else if(document.layers){
		this.obj = document.layers[name];
		this.style = document.layers[name];
	}
}

function addLoadEvent(func){
	var oldonload = window.onload;
	if (typeof(window.onload) != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

function addEvent(elm, evType, fn, useCapture){
	if (elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent){
		var r = elm.attachEvent("on"+evType, fn);
		return r;
	} else {
		return false;
  }
}

function hideTheQuads(){
	doToggle(false);
}


function toggleQuads(){
	var quads	=	new	getObj('quads');
	var divs		=	quads.obj.getElementsByTagName('div');
	var state;

	for(i=0;i<divs.length;i++){
		if(divs[i].className == 'quadContent'){
			if(divs[i].style.display == ''){
				divs[i].style.display = 'block';
			}
			if(divs[i].style.display	== 'block'){
				divs[i].style.display	= 'none';
				state = false;
			} else if(divs[i].style.display == 'none'){
				divs[i].style.display	= 'block';
				state = true;
			}
		}
	}
	toggleImgSrc(state);
	saveCookie('quadState',state);
}


function doToggle(qDisp){
	var quads	=	new	getObj('quads');
	var divs	=	quads.obj.getElementsByTagName('div');
	var state;
	
	for(i=0;i<divs.length;i++){
		if(divs[i].className == 'quadContent'){
			if(qDisp == 'true'){
				divs[i].style.display		= 'block';
				state = true;
			} else {
				divs[i].style.display		= 'none';
				state = false;
			}
		}
	}
	toggleImgSrc(state);
	// commented out by bobj 01.26.06 because this is only called on secondary pages
	// where we are minimizing the quads for ascetic reasons not because the user requested
	//it and so we should not persist that state
	//saveCookie('quadState',state);
}

function attachToggle(){
	var quads	=	new getObj('quads');
	var ths		=	quads.obj.getElementsByTagName('th');
	
	for(h=0;h<ths.length;h++){
		oAs	=	ths[h].getElementsByTagName('a');
		for(i=0;i<oAs.length;i++){
			if(oAs[i].className == 'quadH'){
				addEvent(oAs[i], 'click', toggleQuads, true);
			}
		}
	}
}

function toggleImgSrc(qDisp){
	var quads	=	new getObj('quads');
	var ths		=	quads.obj.getElementsByTagName('th');
	
	for(h=0;h<ths.length;h++){
		var	img			=	ths[h].getElementsByTagName('img')[0];
		if(img.name.indexOf('Quad') > -1){
			var strSrc	=	img.src;
			var	newLen	=	strSrc.length - 6;
			
			if(qDisp == true){
				if(strSrc.indexOf('_alt') > -1){
					img.src	=	strSrc.substr(0,newLen - 4) + "up_alt.gif";
				} else {
					img.src	=	strSrc.substr(0,newLen) + "up.gif"
				}
			} else {
				if(strSrc.indexOf('_alt') > -1){
					img.src	=	strSrc.substr(0,newLen - 4) + "dn_alt.gif";
				} else {
					img.src	=	strSrc.substr(0,newLen) + "dn.gif";
				}
			}
		}
	}
}

function switchQuadImgSrc(img){
	strSrc	=	img.src;
	newLen	=	img.src.length-4;
	if(strSrc.indexOf('_alt') > -1){
		img.src	=	strSrc.substr(0,newLen-4) + ".gif";
	} else {
		img.src	=	strSrc.substr(0,newLen) + "_alt.gif";
	}
}

function quadInit(){
	var quadState = readCookie('quadState');
	//alert(quadState);
	if(quadState != null){
		doToggle(quadState);
	}
}

function altFlash(tgt, swf, id, w, h, ver, c, imgSrc){
	var y;

	if (self.innerHeight) 
	{
		// all except Explorer
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		// Explorer 6 Strict Mode
		y = document.documentElement.clientHeight;
	}
	else if (document.body)
	{
		// other Explorers
		y = document.body.clientHeight;
	}
	if(y<480){
		var	myFlashObject = new FlashObject(swf, id, w, h, ver, c, imgSrc);
				myFlashObject.write(tgt);
	}
}


function attachMsOver(){
// this function is not currently in use, as IE loses
// the reference to the passed image and thinks it's not
// an object... mouseovers are handled in inline events.
	var quads	=	new getObj('quads');
	var ths		=	quads.obj.getElementsByTagName('th');
	
	for(h=0;h<ths.length;h++){
		img	=	ths[h].getElementsByTagName('img')[0];
		addEvent(img, 'mouseover', switchQuadImgSrc, false);
		addEvent(img, 'mouseout', switchQuadImgSrc, false);
	}
}

// Cookie handling functions

function saveCookie(name,value,days)
{
  if (days) {
    var d = new Date();
    d.setTime(d.getTime()+(days*24*60*60*1000));
    var ex = "; expires="+date.toGMTString();
  }
  else {
    var ex = "";
  }
  document.cookie = name+"="+value+ex+"; path=/";
}

function readCookie(name)
{
  var eq = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i<ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(eq) == 0) return c.substring(eq.length,c.length);
  }
  return null;
}

function eraseCookie(name)
{
  saveCookie(name,"",-1);
}