function setup_reg_form_if_exists(){
	if(typeof reg_panel_scripts_exists!="undefined" && !!reg_panel_scripts_exists){
		setup_reg_panel()
	}
}

function setup_popup_if_exists(){
	if(typeof popup_scripts_exist!="undefined" && !!popup_scripts_exist){
		popup_ob=new popup_class()
		popup_ob.setup_interface()
	}
}

function form_control_xml_loaded(thisxml){
	var form_node=thisxml.selectSingleNode("//form")
	if(typeof document.forms[form_node.getAttribute("name")]!="undefined" && !!document.forms[form_node.getAttribute("name")]){
		if(typeof form_node_arr[form_node.getAttribute("name")]=="undefined" || !form_node_arr[form_node.getAttribute("name")]){
			form_node_arr[form_node.getAttribute("name")]=new form_class(form_node,form_node_id_arr.length)
			form_node_id_arr[form_node_id_arr.length]=form_node.getAttribute("name")
		}
									   
		form_node_arr[form_node_id_arr[form_node_id_arr.length-1]].get_form_elements()		
	}
}

function reg_form_control_xml_loaded(thisxml){
	var form_node=thisxml.selectSingleNode("//form")
	if(typeof document.forms[form_node.getAttribute("name")]!="undefined" && !!document.forms[form_node.getAttribute("name")]){
		if(typeof form_node_arr[form_node.getAttribute("name")]=="undefined" || !form_node_arr[form_node.getAttribute("name")]){
			
			form_node_arr[form_node.getAttribute("name")]=new form_class(form_node,form_node_id_arr.length,reg_panel_ob_arr[form_node.getAttribute("name")])
			form_node_id_arr[form_node_id_arr.length]=form_node.getAttribute("name")
		}
									   
		form_node_arr[form_node_id_arr[form_node_id_arr.length-1]].get_form_elements()		
		
	}
}

function awaiting_form_control_xml(thisone){
	document.can_submit=false
	var errstr=""
	if(typeof form_node_arr[thisone.form.name]=="undefined" || !form_node_arr[thisone.form.name]){
		errstr+="Waiting for validation xml..."
	}
	if(errstr!=""){
		alert(errstr)
	}
}

function validate_form(){
	document.can_submit=false
	var errstr=""
	var form_name="update_form"
	if(xmlob_loaded_arr["form_validation"]==1){
		var field_nodes=xmlob_doc_arr["form_validation"].selectNodes("//field")
		if(field_nodes.length>0){
			if(typeof field_nodes[0].parentNode.getAttribute("form")!="undefined" && !!field_nodes[0].parentNode.getAttribute("form")){
				 form_name=field_nodes[0].parentNode.getAttribute("form")
			}
			for(var i=0;i<field_nodes.length;i++){
				var field_name=field_nodes[i].getAttribute("name")
				if(typeof document.forms[form_name].elements[field_name]!="undefined" && !!document.forms[form_name].elements[field_name]){
					switch(document.forms[form_name].elements[field_name].type){
						case "text":
						case "password":
							if(document.forms[form_name].elements[field_name].value==""){
								errstr+=field_nodes[i].getAttribute("display")+" is required\n"
							}else{
								
								if(typeof field_nodes[i].getAttribute("must_match")!="undefined" && !!field_nodes[i].getAttribute("must_match")){
									if(document.forms[form_name].elements[field_name].value!=document.forms[form_name].elements[field_nodes[i].getAttribute("must_match")].value){
										var match_node=xmlob_doc_arr["form_validation"].selectNodes("//field[@name='"+field_nodes[i].getAttribute("must_match")+"']")[0]
										errstr+=field_nodes[i].getAttribute("display")+" and "+match_node.getAttribute("display")+" must match\n"
										
									}
								}
								if(typeof field_nodes[i].getAttribute("must_not_match")!="undefined" && !!field_nodes[i].getAttribute("must_not_match")){
									if(document.forms[form_name].elements[field_name].value==document.forms[form_name].elements[field_nodes[i].getAttribute("must_not_match")].value){
										var match_node=xmlob_doc_arr["form_validation"].selectNodes("//field[@name='"+field_nodes[i].getAttribute("must_not_match")+"']")[0]
										errstr+=match_node.getAttribute("display")+" must be different to "+field_nodes[i].getAttribute("display")+"\n"
										
									}
								}
							}
							break;
						case "select-one":
							if(document.forms[form_name].elements[field_name].options[document.forms[form_name].elements[field_name].selectedIndex].value==""){
								errstr+=field_nodes[i].getAttribute("display")+" is required\n"
							}
							break;
					}
				}
			}
			
		}
		if(typeof criteria_node_id_arr!="undefined" && !!criteria_node_id_arr){
			var not_valid_count=0
			
			for(var i=0;i<criteria_node_id_arr.length;i++){
				//alert("crit"+criteria_node_id_arr[i])
				if(typeof criteria_node_arr["crit"+criteria_node_id_arr[i]]!="undefined" && !!criteria_node_arr["crit"+criteria_node_id_arr[i]]){
					not_valid_count+=criteria_node_arr["crit"+criteria_node_id_arr[i]].check_validation()
				}
			}
			
			if(not_valid_count>0){
				errstr+="Required criteria have been highlighted"
			}
		}
	}else{
		errstr+="Waiting for validation xml..."
	}
	
	if(errstr!=""){
		alert(errstr)
	}else{
		document.forms[form_name].confirmsubmit.value=1
	}
	document.can_submit=(errstr=="")
}

function check_condition(thisone){
	if(xmlob_loaded_arr["form_validation"]==1){
		var field_nodes=xmlob_doc_arr["form_validation"].selectNodes("//condition[@test_field='"+thisone.name+"']")
		if(field_nodes.length>0){
			var result_ob=thisone.form.elements[field_nodes[0].getAttribute("result_field")]
			if(typeof result_ob!="undefined" && !!result_ob){
				var holder_ob=result_ob.parentNode
				switch(thisone.type){
					case "radio":
					case "checkbox":
						if(thisone.checked==1 && thisone.value==field_nodes[0].getAttribute("active_if_value")){
							result_ob.disabled=0
							
							if(holder_ob.className.indexOf(" disabled")!=-1){
								
								holder_ob.className=holder_ob.className.substr(0,holder_ob.className=holder_ob.className.indexOf(" disabled"))
								
							}
							
						}else{
							result_ob.disabled=1
							if(holder_ob.className.indexOf(" disabled")==-1){
								
								holder_ob.className=holder_ob.className+" disabled"
								
							}
						}
						break;
					case "select-one":
						var select_value=thisone.options[thisone.selectedIndex].value
						if(thisone.value==field_nodes[0].getAttribute("active_if_value") || (field_nodes[0].getAttribute("active_if_value")=="*" && thisone.value!="")){
							result_ob.disabled=0
							
							if(holder_ob.className.indexOf(" disabled")!=-1){
								
								holder_ob.className=holder_ob.className.substr(0,holder_ob.className=holder_ob.className.indexOf(" disabled"))
								
							}
							
						}else{
							result_ob.disabled=1
							if(holder_ob.className.indexOf(" disabled")==-1){
								
								holder_ob.className=holder_ob.className+" disabled"
								
							}
						}
						break;
				}
			}
		}
	}
}
function check_dependents(thisone,arr,setTo){

	if(thisone.checked==1){

		for(var i=0;i<arr.length;i++){
			if(typeof thisone.form.elements[arr[i]]!="undefined" && !!thisone.form.elements[arr[i]]){
				thisone.form.elements[arr[i]].disabled=setTo
			
				var holder_ob=thisone.parentNode
				if(typeof holder_ob!="undefined" && !!holder_ob){
					if(holder_ob.className=="" || holder_ob.className=="disabled"){
						holder_ob.className=setTo
					}else{
						if(holder_ob.className.indexOf(" disabled")!=-1){
							if(setTo==""){
								holder_ob.className=holder_ob.className.substr(0,holder_ob.className=holder_ob.className.indexOf(" disabled"))
							}
						}else{
							if(setTo!=""){
								holder_ob.className=holder_ob.className+" "+setTo
							}
						}
					}
				}
			}
		}
	}
}

function view_url(fieldname,formname){
	if(typeof formname=="undefined" || !formname){
		var formob=document.forms[0]	
		
	}else{
		var formob=document.forms[formname]
	}

	var val=formob.elements[fieldname].value
	if(val!=""){
		if(val.indexOf("http://")==-1){
			val="http://"+val
		}
		window.open(val,"_blank")
	}else{
		//NO ADDRESS ENTERED
		
	}
}

//CLEARS THE DEFAULT CONTENTS OF A TEXT FIELD
function clear_box(thisbox,thistext){
	if(thisbox.value==thistext){
		thisbox.value=""
	}
}

//FILLS AN EMPTY TEXT FIELD WITH ITS DEFAULT CONTENT
function fill_box(thisbox,thistext){
	if(thisbox.value==""){
		thisbox.value=thistext
	}
}

//SET HEADER LINK TO HOME
function link_header_to_home(){
	var ob=document.getElementById("header")
	if(typeof ob!="undefined" && !!ob){
		ob.onclick=function(){document.location=pthstr+"index.asp"}	
	}
}

function log_out_user(thisone){
	setup_ajax()
	
	params=""
	if(typeof thisone.form.remember_signin!="undefined" && !!thisone.form.remember_signin){
		if(thisone.form.remember_signin.checked==1){
			params="remember_signin=1"
		}
	}
	start_load_xml(pthstr+"library/log_out_user_xml.asp","log_out_user",params)
	
}

//CALLED AFTER A USER HAS LOGGED OUT
function post_log_out_user_action(){
	if(browser.isIE){
//document.execCommand('ClearAuthenticationCache') 
	}
	document.location.reload()
}

//SCRIPTS FOR OPENING HELP BOX
var help_click_item
var help_panel_id="glossary_panel"
var is_help_mousedown=0
var override_is_help_mousedown=0
function help_mousedown(){
	is_help_mousedown=1
}

function show_help(event,help_text){
	
	
	is_help_mousedown=0
	
	
	var ob=document.getElementById(help_panel_id)

	if(typeof ob!="undefined" && !!ob){
		
		
		if(typeof event!="undefined" && !!event){
			if(typeof event.nodeName=="undefined"  || !event.nodeName){
				//GET ELEMENT THAT HAS BEEN CLICKED ON
				if (browser.isIE){	
					var click_item=(event.srcElement);    
				}
				if (browser.isNS){
					var click_item=(event.target);
				}
			}else{
				var click_item=(event)
			}
		}else{
			var click_item=(event)
		}
		
		if(help_click_item!=click_item){
			close_help()
		}
		help_click_item=click_item
		
		//GET THE CONTAINING DIV WHICH HAS A CLASS
		click_item_holder=click_item.parentNode.parentNode
		
		if(click_item_holder.className.indexOf(" selected")==-1 || override_is_help_mousedown==1){	
			if(click_item_holder.className.indexOf(" hover")!=-1){	
				click_item_holder.className=click_item_holder.className.substring(0,click_item_holder.className.indexOf(" hover"))
			}
			
			click_item_holder.className=click_item_holder.className+" selected"
		
			//GET LOCATION OF THE ELEMENT THAT'S BEEN CLICKED ON 
			x=findPosX(click_item)
			y=findPosY(click_item)
			
			//GET DIMENSIONS OF ELEMENT THAT'S BEEN CLICKED ON
			w=click_item.offsetWidth
			h=click_item.offsetHeight
		
			//GET PAGE PROPERTIES, DEPENDENT ON BROWSER
			//PAGE WIDTH AND HEIGHT
			if(browser.isIE){	
				page_clientWidth=(window.document.documentElement.clientWidth==0)? window.document.body.clientWidth : window.document.documentElement.clientWidth
				page_clientHeight=(window.document.documentElement.clientHeight==0)? window.document.body.clientHeight : window.document.documentElement.clientHeight
			}else{
				page_clientWidth= window.document.body.clientWidth
				page_clientHeight= window.document.body.clientHeight
			}
			//PAGE SCROLL LEFT AND SCROLLTOP
			if(browser.isIE){
				page_scrollTop=(window.document.documentElement.scrollTop==0)? window.document.body.scrollTop : window.document.documentElement.scrollTop
				page_scrollLeft=(window.document.documentElement.scrollLeft==0)? window.document.body.scrollLeft : window.document.documentElement.scrollLeft
			}else{
				page_scrollTop= window.document.body.scrollTop
				page_scrollLeft= window.document.body.scrollLeft
			}
			
			//GET BOTTOM AND RIGHT EDGES OF PAGE	
			page_right=page_clientWidth+page_scrollLeft
			page_bottom=page_clientHeight+page_scrollTop
			
			
			ob.style.position="absolute"
			ob.style.zIndex="15"
			
			//ADJUST POSITION OF BOX RELATIVE TO CLICKED ITEM
			//TOP OF BOX ALIGNS WITH BOTTOM OF CLICKED ITEM
			y=y+h
			
			//RIGHT OF BOX ALIGNS WITH LEFT OF CLICKED ITEM
			x=x-(ob.offsetWidth)
			
			
			
			//IF CLICKED ITEM IS ROUND THEN IT MIGHT BE GOOD TO ADJUST THE POSITIONING BY A COUPLE OF PIXELS, TO MOVE IT CLOSER TO THE EDGE OF THE CIRCLE
			//y=y-3
			//x=x+3
			
			ob.style.left=x+"px"
			ob.style.top=y+"px"
			ob.style.visibility="visible"
			
			//if(typeof help_text=="undefined" || !help_text){
//				var matching_nodes=criteria_xml.selectNodes("//output[@criteria_type_ID="+criteria_type_ID+"]")
//				if(matching_nodes.length>0){
//					help_text=matching_nodes[0].getAttribute("help_text")	
//				}
//			}
			ob.innerHTML=help_text
			
			
			
			
			//POTENTIAL BOTTOM OVERLAP IS CALCULATED BY ADDING THE ADJUSTED Y TO THE HEIGHT OF THE POPUP AND SUBTRACTING THE PAGE_BOTTOM FROM THE TOTAL
			bottom_overlap=(y+ob.offsetHeight)-page_bottom
		
			//POTENTIAL TOP OVERLAP IS CALCULATED BY SUBTRACTING THE PAGE_SCROLLTOP FROM THE ADJUSTED Y 
			top_overlap=y-page_scrollTop
		
			if(bottom_overlap>0){
				//IF THERE IS A BOTTOM OVERLAP, TOP OVERLAP CAN BE IGNORED
				top_overlap=0
				
				//THEN ADJUST THE Y COORDINATE
				y=y-bottom_overlap
				ob.style.top=y+"px"
			}else{
				//IF THERE ISN'T A BOTTOM OVERLAP IT CAN BE IGNORED	
				bottom_overlap=0
				
				if(top_overlap<0){
					//IF TOP_OVERLAP IS NEGATIVE THE PANEL WILL NEED TO BE REPOSITIONED
					
					y=y-top_overlap
					ob.style.top=y+"px"
				}
			}
		
			//POTENTIAL RIGHT OVERLAP IS CALCULATED BY ADDING THE ADJUSTED X  TO THE WIDTH OF THE POPUP AND SUBTRACTING THE PAGE_RIGHT FROM THE TOTAL
			right_overlap=(x+ob.offsetWidth)-page_right
		
			//POTENTIAL LEFT OVERLAP IS CALCULATED BY SUBTRACTING THE PAGE_SCROLLLEFT FROM THE ADJUSTED X 
			left_overlap=x-page_scrollLeft
			
			if(right_overlap>0){
				left_overlap=0
				x=x-right_overlap
				ob.style.left=x+"px"
			}else{
				right_overlap=0
				if(left_overlap<0){
					x=x-left_overlap
					ob.style.left=x+"px"
				}
			}
			
			just_opened=1
			if(override_is_help_mousedown==0){
				if(document.addEventListener){
					document.addEventListener('mouseup',check_close_help,false);
					window.addEventListener('resize',check_close_help,false);
				}else{
					if(document.attachEvent) {
						document.attachEvent('onmouseup',check_close_help,false);
						window.attachEvent('onresize',check_close_help,false);
					}
				}
			}else{
				if(document.addEventListener){
					document.addEventListener('mouseup',setup_check_close_help,false);
				}else{
					if(document.attachEvent) {
						document.attachEvent('onmouseup',setup_check_close_help,false);
					}
				}
			}
		}else{
			
			click_item_holder.className=click_item_holder.className.substring(0,click_item_holder.className.indexOf(" selected"))
			ob.style.visibility="hidden"
			
		}
	}
	override_is_help_mousedown=0
}

function setup_check_close_help(){
	if(document.addEventListener){
		document.addEventListener('mouseup',check_close_help,false);
		window.addEventListener('resize',check_close_help,false);
	}else{
		if(document.attachEvent) {
			document.attachEvent('onmouseup',check_close_help,false);
			window.attachEvent('onresize',check_close_help,false);
		}
	}
}
function check_close_help(){
	if(is_help_mousedown==0){
		close_help()	
	}
}

function close_help(){
	is_help_mousedown=0
	if(document.removeEventListener){
		document.removeEventListener('mouseup',check_close_help,false)
		window.removeEventListener('resize',check_close_help,false)
	}else{
		if(document.detachEvent) {
			document.detachEvent('onmouseup',check_close_help,false);
			window.detachEvent('onresize',check_close_help,false);
		}
	}
	
	
	var ob=document.getElementById(help_panel_id)
	
	ob.style.visibility="hidden"
	
	if(typeof help_click_item!="undefined" && !!help_click_item){
		//GET THE CONTAINING DIV WHICH HAS A CLASS
		click_item_holder=help_click_item.parentNode.parentNode
		if(click_item_holder.className.indexOf(" selected")!=-1){	
			click_item_holder.className=click_item_holder.className.substring(0,click_item_holder.className.indexOf(" selected"))
		}
	}
	

}


function cancel_validation_panel(){
	validation_panel_id="float"
	var ob=document.getElementById(validation_panel_id)
	if(typeof ob!="undefined" && !!ob){
		
		var blank_ob=document.getElementById("blanker")
		
		ob.style.visibility="hidden"
		blank_ob.style.visibility="hidden"
		
		ob.innerHTML=""
	}
}
function show_validation_panel(event){
	
	validation_panel_id="float"

	var ob=document.getElementById(validation_panel_id)
	var blank_ob=document.getElementById("blanker")
	
	
	
	blank_ob.style.visibility="visible"
	
	if(typeof ob!="undefined" && !!ob){
		
		
		
		//GET ELEMENT THAT HAS BEEN CLICKED ON
		if(typeof event!="undefined" && !!event){
			if(typeof event.nodeName=="undefined"  || !event.nodeName){
				//GET ELEMENT THAT HAS BEEN CLICKED ON
				if (browser.isIE){	
					var click_item=(event.srcElement);    
				}
				if (browser.isNS){
					var click_item=(event.target);
				}
			}else{
				var click_item=(event)
			}
		}else{
			var click_item=(event)
		}
		
		
		
		
		
		//GET LOCATION OF THE ELEMENT THAT'S BEEN CLICKED ON 
		x=findPosX(click_item)
		y=findPosY(click_item)
		
		//GET DIMENSIONS OF ELEMENT THAT'S BEEN CLICKED ON
		w=click_item.offsetWidth
		h=click_item.offsetHeight
	
		//GET PAGE PROPERTIES, DEPENDENT ON BROWSER
		//PAGE WIDTH AND HEIGHT
		if(browser.isIE){	
			page_clientWidth=(window.document.documentElement.clientWidth==0)? window.document.body.clientWidth : window.document.documentElement.clientWidth
			page_clientHeight=(window.document.documentElement.clientHeight==0)? window.document.body.clientHeight : window.document.documentElement.clientHeight
		}else{
			page_clientWidth= window.document.body.clientWidth
			page_clientHeight= window.document.body.clientHeight
		}
		//PAGE SCROLL LEFT AND SCROLLTOP
		if(browser.isIE){
			page_scrollTop=(window.document.documentElement.scrollTop==0)? window.document.body.scrollTop : window.document.documentElement.scrollTop
			page_scrollLeft=(window.document.documentElement.scrollLeft==0)? window.document.body.scrollLeft : window.document.documentElement.scrollLeft
		}else{
			page_scrollTop= window.document.body.scrollTop
			page_scrollLeft= window.document.body.scrollLeft
		}
		
		//GET BOTTOM AND RIGHT EDGES OF PAGE	
		page_right=page_clientWidth+page_scrollLeft
		page_bottom=page_clientHeight+page_scrollTop
		
		ob.style.position="absolute"
		ob.style.zIndex="15"
		
		//ADJUST POSITION OF BOX RELATIVE TO CLICKED ITEM
		//TOP OF BOX ALIGNS WITH BOTTOM OF CLICKED ITEM
		y=y+h
		
		//RIGHT OF BOX ALIGNS WITH LEFT OF CLICKED ITEM
		x=x-(ob.offsetWidth)
		x=x+(click_item.offsetWidth)
		
		//IF CLICKED ITEM IS ROUND THEN IT MIGHT BE GOOD TO ADJUST THE POSITIONING BY A COUPLE OF PIXELS, TO MOVE IT CLOSER TO THE EDGE OF THE CIRCLE
		//y=y-3
		//x=x+3
		
		//ob.innerHTML=help_text

			
		//POTENTIAL BOTTOM OVERLAP IS CALCULATED BY ADDING THE ADJUSTED Y TO THE HEIGHT OF THE POPUP AND SUBTRACTING THE PAGE_BOTTOM FROM THE TOTAL
		bottom_overlap=(y+ob.offsetHeight)-page_bottom
	
		//POTENTIAL TOP OVERLAP IS CALCULATED BY SUBTRACTING THE PAGE_SCROLLTOP FROM THE ADJUSTED Y 
		top_overlap=y-page_scrollTop
	
		if(bottom_overlap>0){
			//IF THERE IS A BOTTOM OVERLAP, TOP OVERLAP CAN BE IGNORED
			top_overlap=0
			
			//THEN ADJUST THE Y COORDINATE
			y=y-bottom_overlap
			ob.style.top=y+"px"
		}else{
			//IF THERE ISN'T A BOTTOM OVERLAP IT CAN BE IGNORED	
			bottom_overlap=0
			
			if(top_overlap<0){
				//IF TOP_OVERLAP IS NEGATIVE THE PANEL WILL NEED TO BE REPOSITIONED
				
				y=y-top_overlap
				ob.style.top=y+"px"
			}
		}
	
		//POTENTIAL RIGHT OVERLAP IS CALCULATED BY ADDING THE ADJUSTED X  TO THE WIDTH OF THE POPUP AND SUBTRACTING THE PAGE_RIGHT FROM THE TOTAL
		right_overlap=(x+ob.offsetWidth)-page_right
	
		//POTENTIAL LEFT OVERLAP IS CALCULATED BY SUBTRACTING THE PAGE_SCROLLLEFT FROM THE ADJUSTED X 
		left_overlap=x-page_scrollLeft
		
		if(right_overlap>0){
			left_overlap=0
			x=x-right_overlap
			ob.style.left=x+"px"
		}else{
			right_overlap=0
			if(left_overlap<0){
				x=x-left_overlap
				ob.style.left=x+"px"
			}
		}
			
		
		ob.style.left=x+"px"
		ob.style.top=y+"px"
		ob.style.visibility="visible"
			
		blank_ob.style.height=document.getElementById("container").offsetHeight+"px"
			//if(typeof help_text=="undefined" || !help_text){
//				var matching_nodes=criteria_xml.selectNodes("//output[@criteria_type_ID="+criteria_type_ID+"]")
//				if(matching_nodes.length>0){
//					help_text=matching_nodes[0].getAttribute("help_text")	
//				}
//			}
			//ob.innerHTML=help_text
			
			//if(document.addEventListener){
//				document.addEventListener('mouseup',check_close_help,false);
//				window.addEventListener('resize',check_close_help,false);
//			}else{
//				if(document.attachEvent) {
//					document.attachEvent('onmouseup',check_close_help,false);
//					window.attachEvent('onresize',check_close_help,false);
//				}
//			}
			
		
	}
	
}

function save_validation(panel_type){
	var params=""
	if(panel_type!=""){
		switch(panel_type){
			case "validation":
			case "annotation":
				if(document.forms[panel_type+"_form"].gp_ID.value!=""){		
					
					switch(panel_type){
						case "validation":
							params="gp_ID="+document.forms[panel_type+"_form"].gp_ID.value
							params+="&type=V"
							break;
						case "annotation":
							if(document.forms[panel_type+"_form"].annotation_text.value=="" || document.forms[panel_type+"_form"].annotation_text.value=="Annotation text..."){
								alert("You haven't entered an annotation")
							}else{
								params="gp_ID="+document.forms[panel_type+"_form"].gp_ID.value
								params+="&type=A"
								params+="&annotation_text="+escape(document.forms[panel_type+"_form"].annotation_text.value)
								//alert(params)
								
							}
							break;
					}
					if(params!=""){
						//window.open(pthstr+"validation/resources/save_validation.asp?"+params)
						start_load_xml("validation/resources/save_validation.asp","save_validation",params)	
					}
				}
				break;
			case "general_annotation":
					if(document.forms[panel_type+"_form"].annotation_text.value=="" || document.forms[panel_type+"_form"].annotation_text.value=="Annotation text..."){
						alert("You haven't entered an annotation")
					}else{
						params="pct_ID="+document.forms[panel_type+"_form"].pct_ID.value
						params+="&type=GA"
						params+="&annotation_text="+escape(document.forms[panel_type+"_form"].annotation_text.value)
						//window.open(pthstr+"validation/resources/save_general_annotation.asp?"+params)
						start_load_xml("validation/resources/save_general_annotation.asp","save_validation",params)	
						
						
					}
				break;
			case "change_password":
					if(document.forms[panel_type+"_form"].p1.value=="" || document.forms[panel_type+"_form"].p1.value=="Current password..."){
						alert("You haven't entered your current password")
					}else{
						if(document.forms[panel_type+"_form"].p2.value=="" || document.forms[panel_type+"_form"].p2.value=="New password..."){	
							alert("You haven't entered a new password")
						}else{
							if(document.forms[panel_type+"_form"].p2.value==document.forms[panel_type+"_form"].p1.value){
								alert("The password you have chosen is the same as your current password")	
							}else{
								if(document.forms[panel_type+"_form"].p3.value=="" || document.forms[panel_type+"_form"].p3.value=="Repeat new password..."){	
									alert("You need to repeat your new password ")
								}else{
									if(document.forms[panel_type+"_form"].p3.value!=document.forms[panel_type+"_form"].p2.value){
										alert("The passwords don't match")	
									}else{
										params="type=CP"
										params+="&p1="+escape(document.forms[panel_type+"_form"].p1.value)
										params+="&p2="+escape(document.forms[panel_type+"_form"].p2.value)
										params+="&p3="+escape(document.forms[panel_type+"_form"].p3.value)
										
										start_load_xml("validation/resources/change_user_password.asp","save_validation",params)	
									}
								}
							}
						}
	
					}
				break;
			
		}
	}
}

function validation_saved(yesno){
	if(yesno=="1"){
		alert("saved")
		document.location.reload()
	}else{
		
		if(yesno.indexOf("logged out")!=-1){
			post_log_out_user_action()
		}else{
			alert("failed")
		}
	}
}

function ad_flash_class(pos,advert_ID,w,h,target,action){
	
	var _me=this
	this.pos=pos //primary,top,bottom
	this.holder_name="ad_"+pos+"_flash_holder"
	this.flash_name="ad_"+pos+"_flash"
	this.advert_ID=advert_ID
	this.width=w
	this.height=h
	this.target=target
	if(typeof action!="undefined" && !!action){
		this.action=action
		
	}else{
		this.action=""
	}
	
	this.timer=0
	
	this.link_when_ready=function(){
		clearTimeout(_me.timer)
		_me.timer=0
		var ob=document.getElementById(_me.holder_name)
		var ready=0
		if(typeof ob!="undefined" && !!ob){
			var ob2=document.getElementById(_me.flash_name)
			if(typeof ob2!="undefined" && !!ob2){
				var parentob=ob2.parentNode
				ready=1
			}else{
				var parentob=ob
				var embed_nodes=parentob.getElementsByTagName("embed")
				if(embed_nodes.length>0){
					ready=1
				}
			}
			if(ready==1){
				var div=document.createElement("div")

				div.style.display="block"
				div.style.zIndex="20"
				div.style.left="0px"
				div.style.top="0px"
				div.style.marginTop="-"+_me.height+"px"
				div.style.width=_me.width+"px"
				div.style.height=_me.height+"px"
			
				if(_me.action==""){
				
					div.innerHTML='<a href="'+_me.target+'" target="_blank" onclick="ad_clicked('+_me.advert_ID+')" style="background-image:none;padding-left:0px"><img src="'+pthstr+'assets/interface/spacer.gif" width="'+_me.width+'" height="'+_me.height+'"/></a>'
				}else{
					//div.innerHTML='<img src="'+pthstr+'assets/interface/spacer.gif" width="'+_me.width+'" height="'+_me.height+'" onclick="'+_me.action+'();ad_clicked('+_me.advert_ID+')"/>'
					
					div.innerHTML='<a href="javascript:;"  onclick="'+_me.action+'();ad_clicked('+_me.advert_ID+')" style="background-image:none;padding-left:0px"><img src="'+pthstr+'assets/interface/spacer.gif" width="'+_me.width+'" height="'+_me.height+'"/></a>'
				}
				div.style.cursor="pointer"
	
				parentob.appendChild(div)
			}
		}
		if(ready==0){
			_me.timer=setTimeout(_me.link_when_ready,20)	
		}
	}
		
}

function ad_show_user_registration_form(){
	var ob=document.getElementById("user_registration_button")
	if(typeof ob!="undefined" && !!ob){
		if(li_user_found==1){
			alert("Sorry, you're already registered")
		}else{
			reset_all_reg_panels()
			if(ob.click){
				ob.click()
			}else{
				ob.onclick()
			}
		}
	}
}

function ad_clicked(advert_ID){
	if(typeof advert_ID!="undefined" && !!advert_ID){
		params="ad_ID="+advert_ID
		start_load_xml(pthstr+"library/update_advert_clicked.asp","ad_clicked",params)
		
	}
}

function ad_clicked_result(res){
	
}

//ROLL OVER SCRIPTS FRO NON-CRITERIA ROWS
function row_mouseover(row_ob){
	if(row_ob.className.indexOf(" hover")==-1 && row_ob.className.indexOf(" disabled")==-1){
		row_ob.className=row_ob.className+" hover"
	}
}
function row_mouseout(row_ob){
	if(row_ob.className.indexOf(" hover")!=-1){
		row_ob.className=row_ob.className.replace(/ hover/,"")
	}
}
	
	
//SCRIPTS FOR ABSOLUTE POSITIONING
function findPosX(obj)
	//FIND X COORDINATES OF AN OBJECT
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
	//FIND Y COORDINATES OF AN OBJECT
{
	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 addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function removeCommas(aNum) {
	aNum=aNum.replace(/,/g,"");
	aNum=aNum.replace(/\s/g,"");
	return aNum;
}

//DATE VALIDATION AND MANIPULATION SCRIPTS
var monthnamelist=new Array("January","February","March","April","May","June","July","August","September","October","November","December")
function check_date(val,fieldarr,formnn,short_year){

	
	var val_arr=new Array()
	var date_str=""
	if(typeof short_year=="undefined" || !short_year){
		short_year=0	
	}
	
	if(val==""){
		if(fieldarr.length==1){
			var val=get_form_val(formnn+"."+fieldarr[0],1)
		}
	}
	if(val!=""){
		if(val!=""){
			if(val.indexOf("/")!=-1){
				//ASSUME IT'S IN dd/mm/yyyy OR dd/mm/yy format
				val_arr=val.split("/")
			}else{
				if(val.indexOf("-")!=-1){
					//ASSUME IT'S IN dd-mm-yyyy, dd-mm-yy OR dd-mmm-yyyy FORMAT
					val_arr=val.split("-")
				}else{
					if(val.indexOf(" ")!=-1){
						//ASSUME ITS IN dd mmmmmm yyyy or dd mmm yyyy format
						val_arr=val.split(" ")
					}
				}
			}
		}
	}else{
		for(var i=0;i<fieldarr.length;i++){
			
			var val=get_form_val(formnn+"."+fieldarr[i],1)
			if(val!=""){
				if(i==1){
					val_arr.push(val-1)
				}else{
					if(i==2){
						if(val.length==4){
							val_arr.push(val)
						}
					}else{
						val_arr.push(val)
					}
				}
			}
		}
		
	}
	if(val_arr.length==3){
		var dt=new Date()
		dt.setDate(val_arr[0])
		dt.setMonth(month_to_number(val_arr[1]))
		dt.setYear(val_arr[2])
		
		if(short_year==0){
			date_str=dt.getDate()+" "+monthnamelist[dt.getMonth()-1]+" "+dt.getFullYear()
		}else{
			date_str=dt.getDate()+" "+monthnamelist[dt.getMonth()-1]+" '"+dt.getFullYear().toString().substr(2,2)
		}
		
	}
	
	return date_str;
}

function date_str_to_obj(datestr){
	var val=datestr
	var val_arr=new Array()
	if(val!=""){
		if(val.indexOf("/")!=-1){
			//ASSUME IT'S IN dd/mm/yyyy OR dd/mm/yy format
			val_arr=val.split("/")
		}else{
			if(val.indexOf("-")!=-1){
				//ASSUME IT'S IN dd-mm-yyyy, dd-mm-yy OR dd-mmm-yyyy FORMAT
				val_arr=val.split("-")
			}else{
				if(val.indexOf(" ")!=-1){
					//ASSUME ITS IN dd mmmmmm yyyy or dd mmm yyyy format
					val_arr=val.split(" ")
				}
			}
		}
	}
	if(val_arr.length==3){
		var dt=new Date()
		dt.setDate(val_arr[0])
		dt.setMonth(month_to_number(val_arr[1]))
		dt.setYear(val_arr[2])
	}
	
	return dt;
}

function check_date_diff(){
	var errstr=""
	var diff=-1
	var val1=check_date("start_date")
	if(val1!=""){
		var val2=check_date("end_date")
		if(val2!=""){
			var val1_arr=val1.split(" ")
			
			var val1_str=val1_arr[2]+add_leading_zero(month_to_number(val1_arr[1]))+add_leading_zero(val1_arr[0])
			
			var val2_arr=val2.split(" ")
			var val2_str=val2_arr[2]+add_leading_zero(month_to_number(val2_arr[1]))+add_leading_zero(val2_arr[0])
			
			diff=parseInt(val2_str)-parseInt(val1_str)
			if(diff<0){
				errstr="- End date cannot be earlier than start date.\n"
			}
		}else{
			errstr="- End date is not a valid date.\n"
		}
	}else{
		errstr="- Start date is not a valid date.\n"
	}

	return new Array(errstr,diff);
	
}

function month_to_number(mnth){
	var val=mnth
	for(var i=0;i<monthnamelist.length;i++){
		if(monthnamelist[i]==mnth || monthnamelist[i].substr(0,3)==mnth){
			val=i
		}
	}
	return val
}
function add_leading_zero(thisval){

	var thisstr=parseInt(thisval).toString()
	
	if(thisstr.length==1){
		thisstr="0"+thisstr
	}
	
	return thisstr;
}

Date.prototype.add = function (sInterval, iNum){
	var dTemp = this;
	if (!sInterval || iNum == 0) return dTemp;
	switch (sInterval.toLowerCase()){
		case "ms":
			dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
			break;
		case "s":
			dTemp.setSeconds(dTemp.getSeconds() + iNum);
			break;
		case "mi":
			dTemp.setMinutes(dTemp.getMinutes() + iNum);
			break;
		case "h":
			dTemp.setHours(dTemp.getHours() + iNum);
			break;
		case "d":
			dTemp.setDate(dTemp.getDate() + iNum);
			break;
		case "mo":
			dTemp.setMonth(dTemp.getMonth() + iNum);
			break;
		case "y":
			dTemp.setFullYear(dTemp.getFullYear() + iNum);
			break;
	}
	return dTemp;
}

//STRING FUNCTIONS
function ltrim ( str, charlist ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // *     example 1: ltrim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld    '
 
    charlist = !charlist ? ' \s\xA0' : (charlist+'').replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+', 'g');
    return (str+'').replace(re, '');
}

function rtrim ( str, charlist ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // *     example 1: rtrim('    Kevin van Zonneveld    ');
    // *     returns 1: '    Kevin van Zonneveld'
 
    charlist = !charlist ? ' \s\xA0' : (charlist+'').replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('[' + charlist + ']+$', 'g');
    return (str+'').replace(re, '');
}

//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2008 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
	var version;
	var axo;
	var e;
	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}
	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";
			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";
			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }
  document.write(str);
}
function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    
    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
		
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}