/*	DOMhelp 1.0	written by Chris Heilmann	http://www.wait-till-i.com	To be featured in "Beginning JavaScript for Practical Web Development, Including  AJAX" */DOMhelp={	debugWindowId:'DOMhelpdebug',	init:function(){		if(!document.getElementById || !document.createTextNode){return;}	},	lastSibling:function(node){		var tempObj=node.parentNode.lastChild;		while(tempObj.nodeType!=1 && tempObj.previousSibling!=null){			tempObj=tempObj.previousSibling;		}		return (tempObj.nodeType==1)?tempObj:false;	},	firstSibling:function(node){		var tempObj=node.parentNode.firstChild;		while(tempObj.nodeType!=1 && tempObj.nextSibling!=null){			tempObj=tempObj.nextSibling;		}		return (tempObj.nodeType==1)?tempObj:false;	},	getText:function(node){		if(!node.hasChildNodes()){return false;}		var reg=/^\s+$/;		var tempObj=node.firstChild;		while(tempObj.nodeType!=3 && tempObj.nextSibling!=null || reg.test(tempObj.nodeValue)){			tempObj=tempObj.nextSibling;		}		return tempObj.nodeType==3?tempObj.nodeValue:false;	},	setText:function(node,txt){		if(!node.hasChildNodes()){return false;}		var reg=/^\s+$/;		var tempObj=node.firstChild;		while(tempObj.nodeType!=3 && tempObj.nextSibling!=null || reg.test(tempObj.nodeValue)){			tempObj=tempObj.nextSibling;		}		if(tempObj.nodeType==3){tempObj.nodeValue=txt}else{return false;}	},	createLink:function(to,txt){		var tempObj=document.createElement('a');		tempObj.appendChild(document.createTextNode(txt));		tempObj.setAttribute('href',to);		return tempObj;	},	createTextElm:function(elm,txt){		var tempObj=document.createElement(elm);		tempObj.appendChild(document.createTextNode(txt));		return tempObj;	},	closestSibling:function(node,direction){		var tempObj;		if(direction==-1 && node.previousSibling!=null){			tempObj=node.previousSibling;			while(tempObj.nodeType!=1 && tempObj.previousSibling!=null){				 tempObj=tempObj.previousSibling;			}		}else if(direction==1 && node.nextSibling!=null){			tempObj=node.nextSibling;			while(tempObj.nodeType!=1 && tempObj.nextSibling!=null){				 tempObj=tempObj.nextSibling;			}		}		return tempObj.nodeType==1?tempObj:false;	},	initDebug:function(){		if(DOMhelp.debug){DOMhelp.stopDebug();}		DOMhelp.debug=document.createElement('div');		DOMhelp.debug.setAttribute('id',DOMhelp.debugWindowId);		document.body.insertBefore(DOMhelp.debug,document.body.firstChild);	},	setDebug:function(bug){		if(!DOMhelp.debug){DOMhelp.initDebug();}		DOMhelp.debug.innerHTML+=bug+'\n';	},	stopDebug:function(){		if(DOMhelp.debug){			DOMhelp.debug.parentNode.removeChild(DOMhelp.debug);			DOMhelp.debug=null;		}	},	getKey:function(e){		if(window.event){	      var key = window.event.keyCode;	    } else if(e){	      var key=e.keyCode;	    }		return key;	},/* helper methods */	getTarget:function(e){		var target = window.event ? window.event.srcElement : e ? e.target : null;		if (!target){return false;}		while(target.nodeType!=1 && target.nodeName.toLowerCase()!='body'){			target=target.parentNode;		}		return target;	},	stopBubble:function(e){		if(window.event && window.event.cancelBubble){			window.event.cancelBubble = true;		} 		if (e && e.stopPropagation){			e.stopPropagation();		}	},	stopDefault:function(e){		if(window.event && window.event.returnValue){			window.event.returnValue = false;		} 		if (e && e.preventDefault){			e.preventDefault();		}	},	cancelClick:function(e){		if (window.event){			window.event.cancelBubble = true;			window.event.returnValue = false;		}		if (e && e.stopPropagation && e.preventDefault){			e.stopPropagation();			e.preventDefault();		}	},	addEvent: function(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 {			elm['on' + evType] = fn;		}	},	cssjs:function(a,o,c1,c2){		switch (a){			case 'swap':				o.className=!DOMhelp.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);			break;			case 'add':				if(!DOMhelp.cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}			break;			case 'remove':				var rep=o.className.match(' '+c1)?' '+c1:c1;				o.className=o.className.replace(rep,'');			break;			case 'check':				var found=false;				var temparray=o.className.split(' ');				for(var i=0;i<temparray.length;i++){					if(temparray[i]==c1){found=true;}				}				return found;			break;		}	},    safariClickFix:function(){      return false;    }}DOMhelp.addEvent(window, 'load', DOMhelp.init, false);var loadedobjects=""var rootdomain="http://"+window.location.hostnamefunction ajaxpage(url, containerid){var page_request = falseif (window.XMLHttpRequest) // if Mozilla, Safari etcpage_request = new XMLHttpRequest()else if (window.ActiveXObject){ // if IEtry {page_request = new ActiveXObject("Msxml2.XMLHTTP")} catch (e){try{page_request = new ActiveXObject("Microsoft.XMLHTTP")}catch (e){}}}elsereturn falsepage_request.onreadystatechange=function(){loadpage(page_request, containerid)}page_request.open('GET', url, true)page_request.send(null)}function loadpage(page_request, containerid){if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))document.getElementById(containerid).innerHTML=page_request.responseText}function loadobjs(){if (!document.getElementById)returnfor (i=0; i<arguments.length; i++){var file=arguments[i]var fileref=""if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceedingif (file.indexOf(".js")!=-1){ //If object is a js filefileref=document.createElement('script')fileref.setAttribute("type","text/javascript");fileref.setAttribute("src", file);}else if (file.indexOf(".css")!=-1){ //If object is a css filefileref=document.createElement("link")fileref.setAttribute("rel", "stylesheet");fileref.setAttribute("type", "text/css");fileref.setAttribute("href", file);}}if (fileref!=""){document.getElementsByTagName("head").item(0).appendChild(fileref)loadedobjects+=file+" " //Remember this object as being already added to page}}}// for images galleries	function showPic (whichpic) {		if (document.getElementById) {			document.getElementById('placeholder').src = whichpic.href;			return false;		} else {			return true;		}	}	function showPic2 (whichpic) {		if (document.getElementById) {			document.getElementById('placeholder').src = whichpic.href;		if (whichpic.title) { 			document.getElementById('desc').childNodes[0].nodeValue = whichpic.title; 		} else { 			document.getElementById('desc').childNodes[0].nodeValue = whichpic.childNodes[0].nodeValue; 		} 			return false;		} else {			return true;		}	}	sfHover = function() {		var sfEls = document.getElementById("nav").getElementsByTagName("LI");		for (var i=0; i<sfEls.length; i++) {			sfEls[i].onmouseover=function() {				this.className+=" sfhover";			}			sfEls[i].onmouseout=function() {				this.className=this.className.replace(new RegExp(" sfhover\\b"), "");			}		}	}	if (window.attachEvent) window.attachEvent("onload", sfHover);