// VERY IMPORTANT - DO NOT DELETE
// prevents flicker with moving background images for those IE users who have their cache
// settings for those IE users who have their cache settings to 'every visit to the page'
try { document.execCommand("BackgroundImageCache",false,true); } catch(e) {};

// node functions
if(!window.Node){
	var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
}

checkNode = function(node,filter){
	return(node==null||node.nodeType==Node[filter]||node.nodeName.toUpperCase()== filter.toUpperCase());
}

getAllChildren = function(node,filter){
	var result = new Array();
	var children = (node.all)? node.all:node.getElementsByTagName('*');
	for(i=0;i<children.length;i++){
  		if(node.all){
			var test = new Array();
			if(children[i].tagName==filter.toUpperCase()){
    			result[result.length] = children[i];
    		}
    	}else{
    		if(checkNode(children[i],filter)) result[result.length] = children[i];
		}
	}
  	return result;
}

getChildren = function(node,filter){
	var result = new Array();
	var children = (node.all)? node.all:node.getElementsByTagName('*');
 	for(i=0;i<children.length;i++){
		if(node.all){
			var test = new Array();
			if(children[i].tagName==filter.toUpperCase()){
    			result[result.length] = children[i];
    		}
    	}else{
    		if(checkNode(children[i],filter)) result[result.length] = children[i];
    	}
	}
  	return result;
}

getParent = function(el,pTagName){
	if(el==null){
		return null;
	}else if(el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()){
		return el;
	}else{
		return getParent(el.parentNode, pTagName);
	}
}

getElementsByClassName = function(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}
getNextSibling = function(node, filter){
  for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling){
    if(checkNode(sibling, filter)) return sibling;
  }
  return null;
}
// /node functions

// adds functionality to the form elements
formElements = function(){
	return;
}

formElements.addFunctions = function(){
	if(!document.getElementById||!document.createTextNode){return;}
	if(!document.getElementsByTagName){
		return;
	}
	var aInputs = document.getElementsByTagName("input");
	for(i=0; i < aInputs.length; i++){
		if(aInputs[i].type=='text'||aInputs[i].type=='password'){
			aInputs[i].onfocus = function() {
				//this.style.backgroundColor = '#FED8D1';
				//this.style.border = 'solid 1px #999';
				if(this.className=='clearText'){
					this.value = '';
				}
			}
			aInputs[i].onblur = function() {
				this.style.backgroundColor = '#fff';
				this.style.border = 'solid 1px #999';
			}
		}		
	}
	/*var aTextAreas = document.getElementsByTagName("textarea");
	for(i=0; i < aTextAreas.length; i++){
		aTextAreas[i].onfocus = function() {
			this.style.backgroundColor = '#FED8D1';
			this.style.border = 'solid 1px #999';
		}
		aTextAreas[i].onblur = function() {
			this.style.backgroundColor = '#fff';
			this.style.border = 'solid 1px #999';
		}
	}*/
}
// /adds functionality to the form elements

showUploadBox = function(obj,formElm){
	if(!document.getElementById(obj.id)){
		//return;
	}
	obj.href = "javascript:;";
	document.getElementById(formElm).value = '';
	var oRemoveLink = document.getElementById(obj.id);
	var oAddFile = document.getElementById(eval("'" + obj.id + "_box" + "'"));
	var oParentDiv = getParent(oRemoveLink,'div');
	oParentDiv.style.display = 'none';
	oAddFile.style.display = 'block';
}

// tabbed content 
tabbedContent = function(){
	return;
}

tabbedContent.toggleTabs = function(oObj,iLength,iTabNo,sContent){
	var oDiv = getParent(oObj,"div");
	oDiv.style.backgroundPosition = '-' + ((iTabNo-1)*iLength) + 'px 0';
	var oContainer = document.getElementById(sContent);
	var aContentBlocks = getElementsByClassName(oContainer, "div", "content");
	for(i=0;i<aContentBlocks.length;i++){
		aContentBlocks[i].style.display = (i==(iTabNo-1))? "block":"none"; 
	}
}

tabbedContent.getTabs = function(sTabsId){
	if(!document.getElementById||!document.createTextNode){return;}
	if(!document.getElementsByTagName||!document.getElementById(sTabsId)){
		return;
	}
	var oContainer = document.getElementById(sTabsId);
	var aFoo = sTabsId.split('tabs_')[1];
	var sContent = 'tabsContent';
	if(aFoo.indexOf('_')){
		var aBar = aFoo.split('_');
		var iTabsLength = aBar[0];
		var sContent = sContent + "_" + aBar[1];
	}
	var aTabs = getAllChildren(oContainer,'a')
	if(!aTabs.length){
		return;
	}
	for(i=0;i<aTabs.length;i++){
		aTabs[i].onclick = function(){
			this.href = 'javascript:;';	
			sFoo = getParent(this,"li").className;
			aBar = sFoo.split('tab');
			iTabNo = parseInt(aBar[1]);
			tabbedContent.toggleTabs(this,iTabsLength,iTabNo,sContent);
			this.blur();
		}
	}
}
// /tabbed content on the homepage

// lead stories toggle stuff
leadStory = function(){
	return;
}

leadStory.toggleFeatures = function(iIndex){
	iIndex = Math.floor((parseInt(iIndex)+1)/2);
	if(!document.getElementById){
		return;	
	}
	var sObjBox = document.getElementById('LeadStoryContainer');
	var sSelectedSrc = document.getElementById('LeadStory0'+iIndex);
	if(!sObjBox||!sSelectedSrc){
		return;
	}
	sObjBox.innerHTML = sSelectedSrc.innerHTML;
}

leadStory.getStories = function(){
	if(!document.getElementById||!document.createTextNode){return;}
	if(!document.getElementsByTagName){
		return;
	}
	if(!document.getElementById('LeadStoryContainer')||!document.getElementById('LeadStories')){
		return;
	}
	var container = document.getElementById('LeadStories');
	var aLinks = getAllChildren(container,'a')
	for(i=0;i<aLinks.length;i++){
		aLinks[i].id = i+1;
		aLinks[i].onclick = function(){
			leadStory.toggleFeatures(this.id);
			return false;
		}
	}
}
// /lead stories toggle stuff

// blurs all anchors
blurAnchors = function (){
  if(document.getElementsByTagName){
    var a = document.getElementsByTagName("a");
    for(var i = 0; i < a.length; i++){
      a[i].onfocus = function(){this.blur()};
    }
  }
}
// /blurs all anchors

// change the text area size of the rich text areas (for IE)
changeTextAreaSize = function(){
	if(!document.getElementsByTagName){
		return;
	}
	var aTemp = document.getElementsByTagName("textarea");
	for(i=0; i < aTemp.length; i++){
		if(aTemp[i].className=="doChangeSize"){
			if(navigator.appName.toLowerCase().indexOf('internet explorer')!=-1){
				aTemp[i].cols = '80';
			}
		}
	}
}
// /change the text area size of the rich text areas (for IE)


// refine by search stuff
refineBy = function(){
	return;
}

refineBy.getLists = function(){
	if(!document.getElementsByTagName||!document.getElementById('filterArticles')){
		return;
	}
	var oRefine = document.getElementById('filterArticles');
	var aHeaders = getChildren(oRefine,'h3');
	for(i=0;i<aHeaders.length;i++){
		aHeaders[i].onclick = function(){
			this.className = (this.className=='on')? '':'on';
			var oList = getNextSibling(this,'ul');
			if(oList.className!='chosen'){
				oList.className = (this.className=='on')? 'hide':'';
			}
			var aLink = getChildren(this,'a');
			aLink[0].href = 'javascript:;';	
			this.blur();
		}
	}
}
// /refine by search stuff

// add our functions
var WindowListener = {
  add : function(event,func){
    var e = this.Functions[event];
    e[func] = func;
  },
  remove : function(event,func){
    var e = this.Functions[event];
    delete e[func];
  },
  addEvent : function(event){
    window["on"+event] = function(){WindowListener.run(event)};
    this.Functions[event] = {};
  },
  removeEvent : function(event){
    window["on"+event] = null;
    delete this.Functions[event];
  },
  run : function(event){// Private
    var e = this.Functions[event];
    for(var i in e) eval(e[i]);
  },
  Functions : {}
};

WindowListener.addEvent("load");
WindowListener.add("load","formElements.addFunctions()");
WindowListener.add("load","leadStory.getStories()");
WindowListener.add("load","changeTextAreaSize()");
WindowListener.add("load","refineBy.getLists()");
// /add our functions