
// Example: 
// addOnLoad("someFunction");
onLoadList = new Array();

function addOnLoad(func){onLoadList[onLoadList.length] = func;}

function runOnLoad(){
	for(i in onLoadList){
		var addPar = "";
		if (onLoadList[i].indexOf("(") == -1) addPar = "()";
		eval(onLoadList[i]+addPar);
	}
}
window.onload = runOnLoad;


// redefining getElementById for old browsers. Added by BCA 2004-08-08
/*
if (!document.getElementById) {
    document.getElementById = function(id) { 
		if (document.all) {
			//return document.all[id];
			return null;
		}
		else if(document.layers) {
			return document.layers[id];
		}
		return null; 
	}
}
*/
if ((document.layers) && (!document.getElementById)) {
    document.getElementById = function(id) { 
		return document.layers[id];
	}
}

/*	News Applet function to show a single news story in a pop up
/////////////////////////////////////////////////////////// */
function ShowNewsPopUpInNewWindow( NewsPopUpUrl ) {
	var myNewsPopUpWindow;
	myNewsPopUpWindow = window.open(NewsPopUpUrl,'myNewsPopUpWindow','width=300,height=400,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes');
	if (myNewsPopUpWindow == undefined || myNewsPopUpWindow == '') {
		alert("Unable to show the news story in a new window in rich format.\nYou have probably disabled popups?\n\nWill try to display news as plain text.");
		return false;
	}
	return true;
}


/*	IMG nav
/////////////////////////////////////////////////////////// */

function doNav()
{
	var image = document.getElementById("theimage");
	var newimage = document.createElement("img");
	var parent = image.parentNode;
	parent.replaceChild(newimage, image);
	newimage.setAttribute("id","theimage");
	newimage.setAttribute("src",this.href);
	newimage.setAttribute("alt",this.xtitle);
	//newimage.setAttribute("width",image.getAttribute("width"));
	//newimage.setAttribute("height",image.getAttribute("height"));
	//var bgObj = document.getElementById('top');
	//bgObj.style.backgroundImage = "url(" + this.href +")";
	curNav.className = "";
	this.className = "on";
	this.blur();
	curNav = this;
	return false;
}

function get_firstChild(o) { 
	return (o.firstChild.nodeName == "#text") ? o.firstChild.nextSibling : o.firstChild;
}

// ||||||||||||||||||||||||||||||||||||||||||||||||||

function attachNav()
{
	if (!document.getElementById) return;
	var wrap = document.getElementById("imgnav");
	if (!wrap) return;
	var i, e;
	var imageTotal = 0;
	
	for (i = 0; i < wrap.childNodes.length; i ++) {
		if ((wrap.childNodes[i].nodeName == "OL") || (wrap.childNodes[i].nodeName == "UL")){
			var nav = wrap.childNodes[i];
		}
	}
	//var nav = get_firstChild(wrap); //wrap.firstChild; //.parentNode.parentNode;
	nav.className = "imgnav";

	var navItems = new Array();
	
	for (i = 0; i < nav.childNodes.length; i ++) {
		if (nav.childNodes[i].nodeName == "LI") {
			navItems[navItems.length] = nav.childNodes[i];
			imageTotal++;
		}
	}
	
	if (document.createElement) 
	{
		var descli = document.createElement("li");
		descli.className = "desc";
		var desctxt = document.createElement("span");
			desctxt.setAttribute("id","intro");
			descli.appendChild(desctxt);		
			nav.appendChild(descli);
		//	wrap.appendChild(descdiv);
		var imgdiv = document.createElement("div");
			imgdiv.className = "photo";
		var image = document.createElement("img");
			image.setAttribute("id","theimage");
			var link = get_firstChild(navItems[0]);
		
			image.setAttribute("src",link.href);
			image.setAttribute("alt",link.title);
			image.setAttribute("id","theimage");
			imgdiv.appendChild(image);

			wrap.insertBefore(imgdiv,nav); 
	}
	
	
	
	for(i = 0; i < navItems.length; i ++){
		e = get_firstChild(navItems[i]); //document.getElementById("imgnav"+i);
		if (e) {
			
			get_firstChild(navItems[i]).title = e.firstChild.nodeValue;
			e.firstChild.nodeValue = i+1;
			
			
			e.onclick = doNav;
			if (e.title != "") {
				e.onmouseover = function() { 
					var d = document.getElementById('intro');
					if (d) d.innerHTML = this.title;
					//window.status = this.title; return true;
					}
				
				e.onmouseout = function() { 
					var d = document.getElementById('intro');
					if (d) d.innerHTML = curNav.title;
					//window.status = ''; return true;
					}
			}
			e.onfocus = e.blur;
			if(i == 0) { 
				curNav = this;
				e.onclick();
				e.onmouseover();
			}
		}
	}
}
addOnLoad("attachNav");



function getElementsByAttr (aName, aValue, tName, wildCards){
/*
getElementsByAttr by Travis Beckham | squidfingers.com
Returns an array of elements that match the arguments. If no elements are found, an empty array is returned.
Arguments: Attribute Name, Attribute Value (optional), Tag Name (optional)

Example/Usage:
elms = getElementsByAttr ("class", "className");
for(var i = 0; i < elms.length; i++){
  elms[i].style.color = "#f00";
}
*/
var i, elms, attr, rslt = [];
  if(document.all || document.getElementsByTagName){
    if(tName){
      elms = document.all ? document.all.tags(tName.toUpperCase()) : document.getElementsByTagName(tName);
    }else{
      elms = document.all ? document.all : document.getElementsByTagName("*");
    }
    for(i = 0; i < elms.length; i++){
      // Note: in IE5/Mac, element.getAttribute("class") returns null even when the class attribute contains a value. 
      // However, element.className will return the correct value.
      attr = aName == "class" ? elms[i].className : elms[i].getAttribute(aName);
      if(attr){
      	if (wildCards) {
			if(aValue && (attr.indexOf(aValue) == -1) ){
			  continue;
			}
		} else {
			if(aValue && attr != aValue){
			  continue;
			}
		}
		rslt[rslt.length] = elms[i];
      }
    }
  }
  return rslt;
}

/* //////////////////////////////////////////////////////////////////////// 
*/
function getChildElementsByAttr (root, aName, aValue, tName, wildCards){
	var i, elms, attr, rslt = [];	
	if( document.getElementById && (document.all || document.getElementsByTagName)){
		root = document.getElementById(root);
		if (!root) root = document;
		if(tName){
			elms = document.all ? root.all.tags(tName.toUpperCase()) : root.getElementsByTagName(tName);
		}else{
			elms = document.all ? root.all : root.getElementsByTagName("*");
		}
		for(i = 0; i < elms.length; i++){
			// Note: in IE5/Mac, element.getAttribute("class") returns null even when the class attribute contains a value. 
			// However, element.className will return the correct value.
			attr = aName == "class" ? elms[i].className : elms[i].getAttribute(aName);
			if(attr){
				if (wildCards) {
					if(aValue && (attr.indexOf(aValue) == -1) ){
						continue;
					}
				} else {
					if(aValue && attr != aValue){
						continue;
					}
				}
				rslt[rslt.length] = elms[i];
			}
		}
	}
	return rslt;
}

// fixes the toggle sidebar link, 
// only shows if there's a breadcrumb and a #related element on the page.

function initToggleSidebar () { 
	if(document.getElementById && document.getElementById("related") && document.getElementById("breadcrumb"))
	{
		bc = document.getElementById("breadcrumb");
		var btn = document.createElement("SPAN");
		btn.className = "preferences";
		btn.style.textAlign = "right"
		var tog = document.createElement("A");
		tog.href = "#";
		tog.innerHTML = "hide sidebar";
		tog.onclick = function() {
			if (document.getElementById("related").style.display=="none") {
				document.getElementById("related").style.display="block";
				this.innerHTML = "hide sidebar";
			} else {
				document.getElementById("related").style.display="none";
				this.innerHTML = "show sidebar";
			}							
		}
		btn.appendChild(tog);
		bc.insertBefore(btn, bc.firstChild);
	}
}
addOnLoad("initToggleSidebar");


////////////////////////////////////////////////////////////////////////
// generic toggle display function. MAKE THIS INTO A CLASS!

	var bActive = new Object;

	function createLink(trigger, o, active) 
	{
		if (!document.getElementById) return;
		trigger = document.getElementById(trigger);
		obj = document.getElementById(o);
		var a, text;
		text = trigger.firstChild;
		a = document.createElement("A");
		a.href = "javascript://";
		a.onclick = function() 
		{ 
			this.blur();
			toggle(o, this);
		}
		trigger.replaceChild(a, text);
		a.appendChild(text);
		obj.style.display = "none";
		if (active) {
			bActive.obj = obj;
			bActive.trigger = a;
			bActive.obj.style.display = "block";
			bActive.trigger.className="active";
		}
		return a;
	}
	
	function toggle(o,t) 
	{
		obj = document.getElementById(o);
		if (obj == bActive.obj) return false;
		
		trigger = t;
		obj.style.display = 'block';
		t.className = "active";
		
		//hide the last shown element
		bActive.obj.style.display='none';
		bActive.trigger.className = '';
		//set the current element to active... 
		bActive.obj = obj;
		bActive.trigger = trigger;
	}

////////////////////////////////////////////////////////////////////////
// Write out IE-version in the window-title. DEVELOPMENT ONLY!
/*
if (document.all) {
	var detect = navigator.userAgent.toLowerCase();
	var browser,thestring;
	var version = 0;
	if (checkIt('msie')) {
		browser = "IE ";
		browser += detect.substr(place + thestring.length,3);
		document.title = browser + ' - ' + document.title;
	}
}

function checkIt(string) {
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}
*/