//---CORE LIBRARY---
//"Simply JavaScript"
//Kevin Yank and Cameron Adams; SitePoint; 2007
var Core={};
if(document.addEventListener){
  Core.addEventListener=function(target,type,listener){
	  target.addEventListener(type,listener,false);
  };
  Core.removeEventListener=function(target,type,listener){
	  target.removeEventListener(type,listener,false);
  };
  Core.preventDefault=function(event){
	  event.preventDefault();
  };
  Core.stopPropagation=function(event){
	  event.stopPropagation();
  };
}else if(document.attachEvent){
  Core.addEventListener=function(target,type,listener){
    if(Core._findListener(target,type,listener)!=-1){
		return;
	}
    var listener2=function(){
      var event=window.event;
      if(Function.prototype.call){
		  listener.call(target,event);
	  }else{
        target._currentListener=listener;
        target._currentListener(event);
        target._currentListener=null;
      }
    };
    target.attachEvent("on"+type,listener2);
    var listenerRecord={};
	listenerRecord.target=target;
	listenerRecord.type=type;
	listenerRecord.listener=listener;
	listenerRecord.listener2=listener2;
    var targetDocument=target.document||target;
    var targetWindow=targetDocument.parentWindow;
    var listenerId="l"+Core._listenerCounter++;
    if(!targetWindow._allListeners){
		targetWindow._allListeners={};
	}
    targetWindow._allListeners[listenerId]=listenerRecord;
    if(!target._listeners){
		target._listeners=[];
	}
    target._listeners[target._listeners.length]=listenerId;
    if(!targetWindow._unloadListenerAdded){
      targetWindow._unloadListenerAdded=true;
      targetWindow.attachEvent("onunload",Core._removeAllListeners);
    }
  };
  Core.removeEventListener=function(target,type,listener){
    varlistenerIndex=Core._findListener(target,type,listener);
    if(listenerIndex==-1){
		return;
	}
    var targetDocument=target.document || target;
    var targetWindow=targetDocument.parentWindow;
    var listenerId=target._listeners[listenerIndex];
    var listenerRecord=targetWindow._allListeners[listenerId];
    target.detachEvent("on"+type,listenerRecord.listener2);
    target._listeners.splice(listenerIndex,1);
    delete targetWindow._allListeners[listenerId];
  };
  Core.preventDefault=function(event){
    event.returnValue=false;
  };
  Core.stopPropagation=function(event){
    event.cancelBubble=true;
  };
  Core._findListener=function(target,type,listener){
    var listeners=target._listeners;
    if(!listeners){
		return -1;
	}
    var targetDocument=target.document||target;
    var targetWindow=targetDocument.parentWindow;
    for(var i=listeners.length-1;i>=0;i--){
      var listenerId=listeners[i];
      var listenerRecord=targetWindow._allListeners[listenerId];
      if(listenerRecord.type==type&&listenerRecord.listener==listener){
		  return i;
	  }
    }
    return -1;
  };
  Core._removeAllListeners=function(){
    var targetWindow=this;
    for(id in targetWindow._allListeners){
      var listenerRecord=targetWindow._allListeners[id];
      listenerRecord.target.detachEvent("on"+listenerRecord.type,listenerRecord.listener2);
      delete targetWindow._allListeners[id];
    }
  };
  Core._listenerCounter=0;
}
Core.addClass=function(target,theClass){
  if(!Core.hasClass(target,theClass)){
    if(target.className==""){
		target.className=theClass;
	}else{
		target.className+=" "+theClass;
	}
  }
};
Core.getElementsByClass=function(theClass){
  var elementArray=[];
  if(typeof document.all!="undefined"){
	  elementArray=document.all;
  }else{
	  elementArray=document.getElementsByTagName("*");
  }
  var matchedArray=[];
  var pattern=new RegExp("(^| )"+theClass+"( |$)");
  for(var i=0;i<elementArray.length;i++){
    if(pattern.test(elementArray[i].className)){
		matchedArray[matchedArray.length]=elementArray[i];
	}
  }
  return matchedArray;
};
Core.hasClass=function(target,theClass){
  var pattern=new RegExp("(^| )"+theClass+"( |$)");
  if(pattern.test(target.className)){
	  return true;
  }
  return false;
};
Core.removeClass=function(target,theClass){
  var pattern=new RegExp("(^| )"+theClass+"( |$)");
  target.className=target.className.replace(pattern,"$1");
  target.className=target.className.replace(/ $/,"");
};
Core.start=function(runnable){Core.addEventListener(window,"load",runnable.init);};
//---SETTING THE COLUMNS AT EQUAL HEIGHT---
//Dynamic Drive Equal Columns Height script v1.01 (Nov 2nd, 06)
//http://www.dynamicdrive.com/style/blog/entry/css-equal-columns-height-script/
var EqualColumns={};
EqualColumns.columnsArray=["navigation","bodycontent"];
EqualColumns.init=function(reset){
	var tallest=0;
	var resetIt=(typeof reset=="string")?true:false;
	for(var i=0;i<2;i++){
		if(resetIt){
			document.getElementById(EqualColumns.columnsArray[i]).style.height="auto";
		}
		if(document.getElementById(EqualColumns.columnsArray[i]).offsetHeight>tallest){
			tallest=document.getElementById(EqualColumns.columnsArray[i]).offsetHeight;
		}
	}
	if(tallest>0){
		for(var j=0;j<2;j++){
			document.getElementById(EqualColumns.columnsArray[j]).style.height=tallest+"px";
		}
	}
};
Core.start(EqualColumns);
//---OPENING EXTERNAL LINKS IN A NEW WINDOW---
//http://www.sitepoint.com/article/standards-compliant-world/
var ExternalLinks={};
ExternalLinks.init=function(){
	var anchors=Core.getElementsByClass("external");
	for(var i=0;i<anchors.length;i++){
		var anchor=anchors[i];
		anchor.target="_blank";
	}
};
Core.start(ExternalLinks);
//---ROLLOVER EFFECT---
//"Simply JavaScript"; Kevin Yank and Cameron Adams; SitePoint; 2007
var Tooltips={};
Tooltips.init=function(){
	var step1=Core.getElementsByClass("itemProfilePic");
	for(var i=0;i<step1.length;i++){
		Core.addEventListener(step1[i],"mouseover",Tooltips.mouseIsOver);
		Core.addEventListener(step1[i],"mouseout",Tooltips.mouseIsOut);
	}
};
Tooltips.mouseIsOver=function(){
	var newImage=document.createElement("img");
	newImage.setAttribute("src",this.getAttribute("src").substr(0,this.getAttribute("src").indexOf("Sm.jpg"))+"Lg.jpg");
	var newImageDiv=document.createElement("div");
	newImageDiv.className="rollover";
	newImageDiv.appendChild(newImage);
	this.parentNode.parentNode.appendChild(newImageDiv);
	this._tooltip=newImageDiv;
	document.documentElement.style.position="relative";
};
Tooltips.mouseIsOut=function(){
	if(this._tooltip){
		this.parentNode.parentNode.removeChild(this._tooltip);
		this._tooltip=null;
		document.documentElement.style.position="static";
	}
};
Core.start(Tooltips);
//---ACCORDION EFFECT---
//"Simply JavaScript"; Kevin Yank and Cameron Adams; SitePoint; 2007
var Accordion={};
Accordion.init=function(){
	var accordion=document.getElementById("accordion");
	var folds=accordion.childNodes;
	for(var i=0;i<folds.length;i++){
		if(folds[i].nodeType==1){
			Accordion.collapse(folds[i]);
			var foldLink=folds[i].getElementsByTagName("h4")[0];
			Core.addEventListener(foldLink,"click",Accordion.clickListener);
			Core.addEventListener(foldLink,"focus",Accordion.focusListener);
		};
	};
	var theLink=document.getElementById("help").childNodes[0];
	Core.addEventListener(theLink,"click",Accordion.allExpand);
};
Accordion.collapse=function(fold){
	Core.removeClass(fold,"expanded");
	Core.addClass(fold,"collapsed");
	EqualColumns.init("reset");
};
Accordion.expand=function(fold){
	Core.removeClass(fold,"collapsed");
	Core.addClass(fold,"expanded");
	EqualColumns.init("reset");
};
Accordion.clickListener=function(){
	var fold=this.parentNode;
	if(Core.hasClass(fold,"collapsed")){
		Accordion.expand(fold);
	}else{
		Accordion.collapse(fold);
	};
};
Accordion.focusListener=function(){
	var element=this;
	while(element.parentNode){
		var theAccordion=document.getElementById("accordion");
		if(theAccordion==element.parentNode){
			Accordion.expand(element);
			return;
		};
		element=element.parentNode;
	};
};
Accordion.allExpand=function(){
	var accordion=document.getElementById("accordion");
	var folds=accordion.childNodes;
	for(var i=0;i<folds.length;i++){
		if(folds[i].nodeType==1){
			Accordion.expand(folds[i]);
		};
	};
};
Core.start(Accordion);