//Default functions, include for every web page

var DetectIE = {
	isie: false,
	init: function() {
		if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
			DetectIE.isie = true;
			DetectIE.ver = new Number(RegExp.$1); // capture x.x portion and store as a number
		}
	}
};
DetectIE.init();

var Core = {};

Core.addLoadFunction = function(func) {
  var oldonload = window.onload;
  if (typeof window.onload !== "function")	{window.onload = func;} 
	else {
  	window.onload = function() {
  		if (oldonload) {
  			oldonload();
    	}
  		func();
    }
	}
};

Core.hasClass = function(elem, theClass) {
  return new RegExp("(^| )" + theClass + "( |$)").test(elem.className);    
};

Core.addClass = function(elem, theClass) {
  if (Core.hasClass(elem, theClass)) {
		return;
	}
  (elem.className === "")? elem.className = theClass: elem.className += " " + theClass;	
};

Core.removeClass = function(elem, theClass) {  
	var pattern = new RegExp("(^| )" + theClass + "( |$)");
	if(pattern.test(elem.className)) {
  	elem.className = elem.className.replace(pattern, "$1");	
  	elem.className = elem.className.replace(/ $/, "");		
	}	
};

Core.mergeProps = function(thisObject, thatObject) {
	if(thisObject == null) {
		thisObject = {};
	}
	for(var i = 1; i < arguments.length; i++) {
		var obj = arguments[i];
		if (typeof(obj) !== 'undefined' && obj !== null) {
			for (var j in obj) {
				thisObject[j] = obj[j];
			}
		}
	}
	return thisObject;
};

function IE6SubMenu() {	
	var li = document.getElementById("mainNav").getElementsByTagName("li"), subMen;		
	for (var i = 0; li[i]; i++) {
		subMen = li[i].getElementsByTagName("ul")[0];
		if(subMen) {			
			li[i].ul = subMen;							
			li[i].onmouseover = function() {this.ul.style.display = "block"; Core.addClass(this, "over");};				
			li[i].onmouseout = function() {this.ul.style.display = "none"; Core.removeClass(this, "over");};
		}
	}	
}

function externalLinks (element, ww, wh, chrome) {	 
	var left = (screen.width - ww)/2 || 0;
	var top = (screen.height - wh)/2 || 0;
	var ancs;
	(element)? ancs = document.getElementById(element).getElementsByTagName("a"): ancs = document.getElementsByTagName("a");	 
	for (var i = 0, j = ancs.length; i < j; i++)
	{
	 var anc = ancs[i];
	 if (anc.getAttribute("href") && anc.getAttribute("rel") === "external") {			
			Core.addClass(anc, "external");
			anc.title = (anc.title) ? anc.title + " - link opens in new window" : "Link opens in new window";
			anc.onclick = function() {(chrome)?
				window.open(this.href, '', 'scrollbars=yes, resizable=yes, width='+ww+', height='+wh+', top='+top+', left='+left):
				window.open(this.href, '', 'width='+ww+', height='+wh+', top='+top+', left='+left, false);
				return false;
			};			
	 }
	}
}

function GetXmlHttpObject()
{
	if (window.XMLHttpRequest) {		
		return new XMLHttpRequest();
	}
	if (window.ActiveXObject) {
		//IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
  }
	return null;
}

//Call functions on page load
window.onload = function(e) {
  if (document.getElementsByTagName) {		
		highlight();
		if (DetectIE.ver < 7) {IE6SubMenu();}
	}
};

//ZoomSearch
var JumpToFirstOccurance=true;var CatchJSErrors=true;var SkipZoomStops=true;var IsZoomStop=0;function catcherror(){return true;}if(CatchJSErrors){window.onerror=catcherror;}function QueryString(key){var value=null;for(var i=0;i<QueryString.keys.length;i++){if(QueryString.keys[i]==key){value=QueryString.values[i];break;}}return value;}function QueryString_Parse(){var query=window.location.search.substring(1);var pairs=query.split("&");for(var i=0;i<pairs.length;i++){var pos=pairs[i].indexOf('=');if(pos>=0){var argname=pairs[i].substring(0,pos);var value=pairs[i].substring(pos+1);QueryString.keys[QueryString.keys.length]=argname;QueryString.values[QueryString.values.length]=value;}}}QueryString.keys=new Array();QueryString.values=new Array();QueryString_Parse();function getElement(id){if(document.getElementById){return(document.getElementById(id));}else if(document.all){return(document.all[id]);}}function findPosY(obj){var curtop=0;if(obj.offsetParent){while(obj.offsetParent){curtop+=obj.offsetTop;obj=obj.offsetParent;}}else if(obj.y){curtop+=obj.y;}return curtop;}function ZRetrieveQuery(){var SearchAsSubstring=0;var hl;var terms;hl=QueryString("zoom_highlight");if(hl==""||hl==null){hl=QueryString("zoom_highlightsub");if(hl==""||hl==null){return false;}else{SearchAsSubstring=1;}}if((document.charset&&document.charset=="utf-8")||(document.characterSet&&document.characterSet=="UTF-8")){hl=decodeURIComponent(hl);}else{hl=unescape(hl);}hl=hl.toLowerCase();var re=/\"(.*?)\"|[^\\+\"]+/g;terms=hl.match(re);for(var i=0;i<terms.length;i++){if(terms[i]!=""){if(terms[i].indexOf("\"")!=-1){terms[i]=terms[i].replace(/\"/g,"");terms[i]=terms[i].replace(/\+/g," ");}else{terms[i]=terms[i].replace(/\+/g,"");}if(terms[i].indexOf("*")!=-1||terms[i].indexOf("?")!=-1){terms[i]=terms[i].replace(/\\/g, " ");terms[i]=terms[i].replace(/\^/g, " ");terms[i]=terms[i].replace(/\#/g," ");terms[i]=terms[i].replace(/\$/g," ");terms[i]=terms[i].replace(/\./g," ");var wildcards=/\w/;if(wildcards.test(terms[i])){terms[i]=terms[i].replace(/\*/g, "[^\\s]*");terms[i]=terms[i].replace(/\?/g, "[^\\s]");}else{terms[i]="";}}if(terms[i]!=""){if(SearchAsSubstring==0){terms[i]="(>[\\s]*|>[^<]+[\\b\\W])("+terms[i]+")(<|[\\b\\W][^>]*<)";}else{var strWB="";if(terms[i].substr(0,7)=="[^\\s]*")strWB="\\b";terms[i]="(>|>[^<]+)"+strWB+"("+terms[i]+")([^>]*<)";}}}}return terms;}function ZHighlightText(terms,text){text=text.replace(/&amp;/ig, '&');text=text.replace(/&nbsp;/ig,'');for(var i=0;i<terms.length;i++){if(terms[i]!=""){var l=0;re=new RegExp(terms[i],"gi");var count=0;text=">"+text+"<";do{l=text.length;text=text.replace(re, '$1<span class="highlight" id="highlight" name="highlight">$2</span id="highlight">$3');count++;}while(l!=text.length&&count<100);text=text.substring(1,text.length-1);}}text=text.replace(eval("//g"), '');text=text.replace(eval("//g"), '&nbsp;');return(text);}function jumpHL(){var d=getElement("highlight");if(d){var y=findPosY(d);if(y < 100){window.scrollTo(0,0);}else{window.scrollTo(0,y-50);}}}function ZHighlightReplace(q,node){var node_value=node.nodeValue;var newtext=ZHighlightText(q,node_value);if(newtext!=node_value){var repl=document.createElement('span');repl.innerHTML=newtext;node.parentNode.replaceChild(repl,node);}}function ZHighlightSearch(q,root){if(!root){root=document.body.childNodes;}for(var i=0,j=root.length;i<j;i++){ZHighlightSearch(q,root[i].childNodes);if(SkipZoomStops&&root[i].nodeType===8){if(root[i].nodeValue=="ZOOMSTOP"){IsZoomStop=1;}else if(root[i].nodeValue=="ZOOMRESTART"){IsZoomStop=0;}}if(IsZoomStop==0&&root[i].nodeType===3){ZHighlightReplace(q,root[i]);}}}function highlight(){if(!"".match){return;}if(document.body){var terms = ZRetrieveQuery();if(terms!=false){IsZoomStop=0;ZHighlightSearch(terms);if(JumpToFirstOccurance){jumpHL();}}}}
