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);hfv={	error:[],	errorMessage:null,	errorClass:'error',	errorTitle:'Please fix the following problems:',	init:function(){		hfv.mandatory=[];		hfv.sendButton=document.getElementById('send');		if(!hfv.sendButton){return;}		hfv.f=document.getElementsByTagName('form')[0];		var msgs=hfv.f.elements;		for(var i=0;i<msgs.length;i++){			if(DOMhelp.cssjs('check',msgs[i],'mandatory')){				hfv.mandatory.push(msgs[i].id);			}		}		DOMhelp.addEvent(hfv.f,'submit',hfv.send,false);	},	send:function(e){		hfv.flushErrors();		for(var i=0;i<hfv.mandatory.length;i++){			if(!document.getElementById(hfv.mandatory[i])){continue;}			hfv.checkValue(hfv.mandatory[i]);		}		if(hfv.error.length>0){			hfv.errorMessage=document.createElement('div');			hfv.errorMessage.className=hfv.errorClass;			var errorTitle=document.createElement('h4');			errorTitle.appendChild(document.createTextNode(hfv.errorTitle));			hfv.errorMessage.appendChild(errorTitle);			entry=document.createElement('ul');			hfv.errorMessage.appendChild(errorTitle);			hfv.errorMessage.appendChild(entry);			for(i=0;i<hfv.error.length;i++){				entry=document.createElement('li');				entry.appendChild(document.createTextNode(hfv.error[i]));				hfv.errorMessage.getElementsByTagName('ul')[0].appendChild(entry);			}			var sendPara=hfv.sendButton.parentNode;				sendPara.parentNode.insertBefore(hfv.errorMessage,sendPara);			DOMhelp.cancelClick(e);				}	},	flushErrors:function(){		hfv.error=[];		if(hfv.errorMessage){			hfv.errorMessage.parentNode.removeChild(hfv.errorMessage);			hfv.errorMessage=null;		}				},	checkValue:function(o){		var elm=document.getElementById(o);		switch(elm.type){			case 'text':				if(elm.value==''){					hfv.error.push('Please enter your '+elm.id);				}			break;			case 'textarea':				if(elm[0].checked==false){					hfv.error.push('Please enter your '+elm.id);				}			break;			case 'radio':       if(elm.checked==false){            alert("hello");        }			break;			case 'select-one':				var curelm=elm.options[elm.selectedIndex].value;				if(elm.selectedIndex==5){					curelm=document.getElementById('otherSubject').value;				}				if(curelm==''){					hfv.error.push('Please enter a '+elm.id);				}			break;		}					}}DOMhelp.addEvent(window,'load',hfv.init,false);