var reg_panel_ob_arr=new Array()
var reg_panel_name_arr=new Array()
var reg_panel_scripts_exists=1
function reg_panel_class(_form_name,pos){
	var _me=this
	this.form_name=_form_name
	this.type=this.form_name.split("_form")[0]
	this.holder_name=this.type+"_holder"
	this.result_name=this.type+"_result"
	this.button_name=this.type+"_button"
	this.holder_state=0
	this.form_state=0
	this.form_xml_loaded=0
	this.form_ob=0
	this.xml_loader=0
	this.xml_loader_type=""
	this.new_user_ID=""
	this.timer=0
	
	this.setup_interface=function(){
		var holder_ob=document.getElementById(_me.holder_name)
		var button_ob=document.getElementById(_me.button_name)
		var form_dom_ob=holder_ob.parentNode
		
		if(typeof button_ob!="undefined" && !!button_ob){
			button_ob.onclick=_me.toggle_holder
		}
		
		if(holder_ob.style.display=="none"){
			_me.holder_state=0	
		}else{
			_me.holder_state=1	
		}
		
		if(form_dom_ob.style.display=="none"){
			_me.form_state=0	
		}else{
			_me.form_state=1	
		}
		
		if(_me.holder_state==1){
			_me.holder_state=0	
			_me.toggle_holder()
		}
	}
	
	this.toggle_holder=function(){
		var holder_ob=document.getElementById(_me.holder_name)
		if(_me.holder_state==0){
			//TURN OFF THE OTHER PANELS
			for(var i=0;i<reg_panel_name_arr.length;i++){
				if(reg_panel_ob_arr[reg_panel_name_arr[i]].holder_state==1){
					reg_panel_ob_arr[reg_panel_name_arr[i]].toggle_holder()
				}
			}
			_me.holder_state=1
			holder_ob.style.display=""
			if(_me.form_xml_loaded==0){
				
				start_load_xml(pthstr+"xml/"+_me.form_name+"_control.xml","reg_form_control","")
			}
		}else{
			_me.holder_state=0
			holder_ob.style.display="none"
		}
		
	}
	this.toggle_form=function(tothis){
		var holder_ob=document.getElementById(_me.holder_name)
		var form_dom_ob=holder_ob.parentNode
		if(typeof tothis!="undefined" && !!tothis){
			if(tothis==0){
				_me.form_state=1
			}else{
				_me.form_state=0	
			}
		}
		if(_me.form_state==0){
			_me.form_state=1
			form_dom_ob.style.display=""
		}else{
			_me.form_state=0
			form_dom_ob.style.display="none"
		}
	}
	
	this.form_ob_ready=function(thisob){
		
		_me.form_ob=thisob	
		_me.form_xml_loaded=1
	}
	
	this.form_validation_result=function(errstr){
		document.can_submit=false;
		if(errstr!=""){
			alert(errstr)
		}else{
			//BUILD A PARAM STRING FROM THE FORM ELEMENTS
			var field_nodes=_me.form_ob.node.selectNodes("//field")
			var params=""
			
			if(field_nodes.length>0){
				
				for(var i=0;i<field_nodes.length;i++){
					var elob=document.forms[_me.form_name].elements[field_nodes[i].getAttribute("name")]
					val=""
				
					if(typeof elob!="undefined" && !!elob){
						switch(elob.type){
							case "radio":
									//THERE MAY BE MORE THAN ONE RADIO ELEMENT WITH THIS NAME
									
									if(typeof elob.length!="undefined" && !!elob.length){
										for(var i=0;i<elob.length;i++){
											if(elob[i].checked==1){
												val=elob[i].value
											}
										}
									}else{
										if(elob.checked==1){
											val=elob.value
										}
									}
								break;
							case "checkbox":
									if(elob.checked==1){
										val=elob.value
									}
								
								break;
							case "select-one":
							
									val=elob.options[elob.selectedIndex].value
								
								break;
							case "text":
							case "textarea":	
							case "password":
									
									if(typeof field_nodes[i].getAttribute("must_not_match_string")!="undefined" && !!field_nodes[i].getAttribute("must_not_match_string")){
										if(val!=field_nodes[i].getAttribute("must_not_match_string")){
											val=escape(elob.value)
										}
									}else{
										val=escape(elob.value)
									}
								break;
							case "hidden":
									if(field_nodes[i].getAttribute("name")=="company_specialisms"){
										var found_spec=1
										var counter=0
										var idstr=""
										while(found_spec==1){
											counter++
											var ob=document.forms[_me.form_name].elements["specialism_"+counter]
									
											if(typeof ob!="undefined" && !!ob){
												if(ob.checked==1){
													if(idstr!=""){
														idstr=idstr+","
													}
													idstr=idstr+ob.value
												}
											}else{
												found_spec=0
											}
										}
										if(idstr!=""){
											var str=idstr.replace(/,/g,'" /><spec spec_ID="')
											str='<spec spec_ID="'+str+'"/>'
											str='<specs>'+str+'</specs>'	
											val=escape(str)
										}
										
									}else{
										val=elob.value
									}
								break;
								
								
						}
					}
					if(val!=""){
						if(params!=""){
							params=params+"&"	
						}
						params=params+field_nodes[i].getAttribute("name")+"="+val
					}
				}
				
				if(params!=""){
					if(_me.form_name=="user_registration_form"){
						if(typeof popup_ob!="undefined" && !!popup_ob){
							var arr=popup_ob.active_panel_str.split("__")
							if(arr[0]=="inline_registration" && arr[1]!=""){
								params+="&request_ids="+arr[1]
							}
						}
					}
					
					_me.toggle_form_disable(1)
					document.forms[_me.form_name].elements[_me.form_ob.submit_button_name].value="Submitting..."
					
					_me.load_xml("action",_me.form_ob.node.getAttribute("action"),params)
				}
			
			}
		}
		
	}
	
	this.toggle_form_disable=function(tothis){
		for(var i=0;i<document.forms[_me.form_name].elements.length;i++){
			document.forms[_me.form_name].elements[i].disabled=tothis	
		}
	}
	
	this.reset_specialisms_to_start=function(){
		var found_spec=1
		var counter=0
		var idstr=""
		while(found_spec==1){
			counter++
			var ob=document.forms[_me.form_name].elements["specialism_"+counter]
	
			if(typeof ob!="undefined" && !!ob){
				ob.checked=0
			}else{
				found_spec=0
			}
		}
		if(counter>0){
			document.forms[_me.form_name].company_specialisms.value=""
			document.getElementById("user_registration_button").parentNode.style.display=""
		}
	}
	this.load_xml=function(xml_loader_type,xmlpth,params){

		
		xmlpth=pthstr+xmlpth
		_me.xml_loader_type=xml_loader_type
		
	
	//	window.open(xmlpth+"?"+params)
		/*@cc_on @*/
		/*@if (@_jscript_version >= 5)
			// JScript gives us Conditional compilation, we can cope with old IE versions.
			// and security blocked creation of the objects.
	
			try {
				_me.xml_loader = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					_me.xml_loader = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (E) {
					_me.xml_loader = false;
				}
			}
	
		/*@end @*/
		
		if (!_me.xml_loader && typeof XMLHttpRequest!='undefined') {
			_me.xml_loader = new XMLHttpRequest();
		}
		
		if(params!=""){
			_me.xml_loader.open("POST", xmlpth,true);
		}else{
			_me.xml_loader.open("GET", xmlpth,true);
		}
		_me.xml_loader.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
		_me.xml_loader.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

		_me.xml_loader.onreadystatechange=function(){_me.xml_loaded()}

		if(params!=""){
			_me.xml_loader.send(params)
		}else{
			_me.xml_loader.send(null)
		}

		
	
	}
	
	this.xml_loaded=function(){
		
		if (_me.xml_loader.readyState==4) {

			
		//	alert(_me.xml_loader.responseText)
			switch(_me.xml_loader_type){
				case "action":
		
					if(browser.isIE){
						var xml_ob=new ActiveXObject('Microsoft.XMLDOM')
						xml_ob.loadXML(_me.xml_loader.responseText)
					}else{
						var xml_ob=new DOMParser().parseFromString(_me.xml_loader.responseText, 'text/xml')
					}
					
					var output_nodes=xml_ob.selectNodes("//*")
						
					if(output_nodes.length>0){
						switch(_me.form_name){
							case "user_registration_form":
								if(output_nodes[0].getAttribute("exists")=="1"){
									alert("Email not available")
									_me.toggle_form_disable(0)
									document.forms[_me.form_name].elements[_me.form_ob.submit_button_name].value=_me.form_ob.submit_button_default_value
								}else{
									//alert("user_ID: "+	output_nodes[0].getAttribute("user_ID"))
									_me.new_user_ID=output_nodes[0].getAttribute("user_ID")
									document.getElementById(_me.holder_name).style.display="none"
									document.getElementById(_me.result_name).style.display=""
									reg_panel_ob_arr["user_signin_form"].toggle_form()
									document.getElementById("reg_panel_intro").style.display="none"
									
									
									_me.form_ob.reset_form_elements_to_start()
									_me.reset_specialisms_to_start()
									
									document.getElementById("user_registration_button").parentNode.style.display="none"
									_me.timer=setTimeout(_me.check_validation,5000)
								}
								break;
							case "user_signin_form":
								if(output_nodes[0].getAttribute("user_ID")==""){
									if(output_nodes[0].getAttribute("login_failstr")!=""){
										alert(output_nodes[0].getAttribute("login_failstr"))
									}
									
									_me.toggle_form_disable(0)
									document.forms[_me.form_name].elements[_me.form_ob.submit_button_name].value=_me.form_ob.submit_button_default_value
								}else{
									_me.check_popup(1)
									li_user_found=1
									reg_panel_ob_arr["user_signout_form"].load_xml("signed_in_details","library/get_signed_in_details.asp","")
								}
									
							break;
							case "user_signout_form":
							
								reset_all_reg_panels()
								_me.toggle_form()
								_me.form_ob.reset_form_elements_to_start()
								reg_panel_ob_arr["user_signin_form"].toggle_form()
								reg_panel_ob_arr["user_registration_form"].toggle_form()
								document.getElementById("reg_panel_intro").style.display=""
								document.getElementById("full_reg_panel").className=document.getElementById("full_reg_panel").className.split(" signedin")[0]
								li_user_found=0
							break;
							
							
						}
					}
				break;
				case "check_validation":
					var val=_me.xml_loader.responseText
					if(val=="1"){
						//document.getElementById(_me.result_name).innerHTML="Validated"
						_me.check_popup(0)
						li_user_found=1
						reg_panel_ob_arr["user_signout_form"].load_xml("signed_in_details","library/get_signed_in_details.asp","")
					}else{
						//document.getElementById(_me.result_name).innerHTML+=val
						_me.timer=setTimeout(_me.check_validation,5000)
					}
				break;
				case "signed_in_details":
					if(browser.isIE){
						var xml_ob=new ActiveXObject('Microsoft.XMLDOM')
						xml_ob.loadXML(_me.xml_loader.responseText)
					}else{
						var xml_ob=new DOMParser().parseFromString(_me.xml_loader.responseText, 'text/xml')
					}
					
					reset_all_reg_panels()
					_me.toggle_form()
					_me.toggle_holder()
				
					reg_panel_ob_arr["user_signin_form"].toggle_form()
					if(reg_panel_ob_arr["user_signin_form"].form_xml_loaded==1){
						reg_panel_ob_arr["user_signin_form"].form_ob.reset_form_elements_to_start()
					}
					reg_panel_ob_arr["user_registration_form"].toggle_form()
					if(reg_panel_ob_arr["user_registration_form"].form_xml_loaded==1){
						reg_panel_ob_arr["user_registration_form"].form_ob.reset_form_elements_to_start()	
						reg_panel_ob_arr["user_registration_form"].reset_specialisms_to_start()
					}
					
					var output_nodes=xml_ob.selectNodes("//*")
					document.getElementById("user_signout_fullname").innerHTML=output_nodes[0].getAttribute("full_name")
					
					document.forms[_me.form_name].user_ID_signout.value=output_nodes[0].getAttribute("user_ID")
					
					document.getElementById("reg_panel_intro").style.display="none"
					
					document.getElementById("full_reg_panel").className=document.getElementById("full_reg_panel").className.split(" signedin")[0]+" signedin"
				break;
			}


		}
	}
	
	this.check_popup=function(and_send){
		if(typeof popup_ob!="undefined" && !!popup_ob){
			var arr=popup_ob.active_panel_str.split("__")
			if(arr[0]=="inline_registration" && arr[1]!=""){
				var arr2=arr[1].split(",")
				
				
				
				var buttons=document.getElementsByTagName("input")
				for(var ip=0;ip<buttons.length;ip++){
					if(buttons[ip].type=="button"){
						if(buttons[ip].id.indexOf("request_button_")!=-1){
							var str=buttons[ip].id.split("request_button_")[1]
							var arr3=str.split("_")
							var supplier_ID=arr3[0]
							var item_ID=arr3[1]
							
							buttons[ip].onclick=function(){buttons[ip].disabled=1;show_printer_supplier_requests(event,supplier_ID,item_ID)}
							if(and_send==1){
								if(supplier_ID==arr2[0] && item_ID==arr2[1]){
									if(buttons[ip].click){
										buttons[ip].click()
									}else{
										buttons[ip].onclick()
									}
								}
							}
						}
					}
				}
				if(and_send==0){
					document.getElementById("reg_panel_close_box").style.visibility="hidden"
					popup_ob.hide()
				}
			}
		}	
	}
	this.check_validation=function(){
		clearTimeout(_me.timer)
		_me.timer=0
		
		_me.load_xml("check_validation","library/check_if_user_validated.asp","user_ID="+_me.new_user_ID)
	}
	
	this.reset_panel=function(){
		_me.toggle_form_disable(0)
		if(_me.holder_state==1){
			_me.toggle_holder()
		}
		if(_me.form_xml_loaded==1){
			document.forms[_me.form_name].elements[_me.form_ob.submit_button_name].value=_me.form_ob.submit_button_default_value
		}
		switch(_me.form_name){
			case "user_registration_form":

				_me.new_user_ID=""
				document.getElementById(_me.result_name).style.display="none"
				
			break;
			case "user_signout_form":
				document.getElementById("user_signout_fullname").innerHTML=""
				
			break;
			
		}
	}
}

function setup_reg_panel(){
	if(document.forms.length>0){
		for(var i=0;i<document.forms.length;i++){
			if(document.forms[i].id=="user_registration"){
				
				reg_panel_ob_arr[document.forms[i].name]=new reg_panel_class(document.forms[i].name,reg_panel_name_arr.length)
				reg_panel_name_arr.push(document.forms[i].name)
			}
		}
	}
	if(reg_panel_name_arr.length>0){
		for(var i=0;i<reg_panel_name_arr.length;i++){
			
			reg_panel_ob_arr[reg_panel_name_arr[i]].setup_interface()
		}
	}
}

function reset_all_reg_panels(){
	if(reg_panel_name_arr.length>0){
		for(var i=0;i<reg_panel_name_arr.length;i++){
			
			reg_panel_ob_arr[reg_panel_name_arr[i]].reset_panel()
		}
	}
}