var obj;
var field_0;
var field_1;
var field_2;
var field_loading;
function fillSelect(host,obj,fk_value,form){
	this.obj=obj;
	this.field_0 = form.country_id;
	if(obj.name=="state_id" || obj.name=="region_id"){
		this.field_1=form.state_id;
		this.field_2=form.region_id;
	}else if(obj.name=="office1_state_id" || obj.name=="office1_region_id"){
		this.field_1=form.office1_state_id;
		this.field_2=form.office1_region_id;
	}else if(obj.name=="office2_state_id" || obj.name=="office2_region_id"){
		this.field_1=form.office2_state_id;
		this.field_2=form.office2_region_id;
	}else if(obj.name=="office3_state_id" || obj.name=="office3_region_id"){
		this.field_1=form.office3_state_id;
		this.field_2=form.office3_region_id;
	}
	
	resetSelect(obj);	
	// check if object exisits.
	if(typeof obj!='object')return false;
	if(fk_value>0){
		this.field_0.disabled=true;
		this.field_1.disabled=true;
		this.field_2.disabled=true;
	}	
	if(obj.name.indexOf("state")>=0){		
		//resetSelect(form.region_id);
		if(fk_value>0){
			this.field_1.options[1]=new Option("Loading...",-1);
			this.field_1.options[1].selected=true;
			this.field_loading=this.field_1;
		}
		url=host+'/location.php?obj_name='+obj.name+'&country_id='+fk_value;
		if(fk_value > 0)loadResult(url,'');
	}	
	if(obj.name.indexOf("region")>=0){		
		if(fk_value>0){
			this.field_2.options[1]=new Option("Loading...",-1);
			this.field_2.options[1].selected=true;
			this.field_loading=this.field_2;
		}
		url=host+'/location.php?obj_name='+obj.name+'&state_id='+fk_value;
		if(fk_value>0)loadResult(url,'');
	}
}
function fillSelectSearchPage(host,obj,fk_value,form){
	this.obj=obj;
	this.field_0=form.search_country;
	this.field_1=form.search_state;
	this.field_2=form.search_region;
	resetSelect(obj);
	// check if object exisits.
	if(typeof obj!='object')return false;
	if(fk_value>0){
		form.search_country.disabled=true;
		form.search_state.disabled=true;
		form.search_region.disabled=true;
	}
	if(obj.name=="search_state"){
		resetSelect(form.search_region);
		if(fk_value>0){
			form.search_state.options[1]=new Option("Loading...",-1);
			form.search_state.options[1].selected=true;
			this.field_loading=form.search_state;
		}
		url=host+'/location.php?country_id='+fk_value+'&searchpage=1';
		if(fk_value>0)loadResult(url,'');
	}
	if(obj.name=="search_region"){
		if(fk_value>0) {
			form.search_region.options[1]=new Option("Loading...",-1);
			form.search_region.options[1].selected=true;
			this.field_loading=form.search_region;
		}
		url=host+'/location.php?state_id='+fk_value+'&searchpage=1';
		if(fk_value>0)loadResult(url,'');
	}
}
function resetSelect(obj){
	while(obj.options.length>1){
		deleteIndex=obj.options.length-1;
		obj.options[deleteIndex]=null;
	}
}
function loadXMLDoc(url){
	// branch for native XMLHttpRequest object	
	if(window.XMLHttpRequest){
		req=new XMLHttpRequest();
		req.onreadystatechange=processReqChange;
		req.open("GET",url,true);
		req.send(null);
	// branch for IE/Windows ActiveX version
	}else if(window.ActiveXObject){
		req=new ActiveXObject("Microsoft.XMLHTTP");
		if(req){
			req.onreadystatechange=processReqChange;
			req.open("GET",url,true);
			req.send();
		}
	}
}
function processReqChange(){
	// only if req shows "complete"
	if(req.readyState==4){
		// only if "OK"
		if(req.status==200){
			// ...processing statements go here
			response=req.responseXML.documentElement;
			if(response){
				var result=new Array();
				for(i=0;i<response.getElementsByTagName('id').length;i++){
					result[i]={'id':response.getElementsByTagName('id')[i].firstChild.data,'name':response.getElementsByTagName('name')[i].firstChild.data,'obj_name':response.getElementsByTagName('obj_name')[i].firstChild.data};
				}
				loadResult('',result);
				unlockLocation();
			}
		} else {
			alert("There was a problem retrieving the XML data:\n"+req.statusText);
		}
	}
}
function loadResult(url,result){
	if(result!=''){
		// Response mode
		for(i=0;i<result.length;i++){
			document.getElementById(result[i].obj_name).options[document.getElementById(result[i].obj_name).options.length]=new Option(result[i].name,result[i].id);
		}
	}else if(url!=''){
		// Input mode
		return (loadXMLDoc(url));
	}
}
function unlockLocation(){
	if(this.field_loading){
		this.field_loading.options[1]=null;
		this.field_loading.options[0].selected=true;
	}
	this.field_0.disabled=false;
	this.field_1.disabled=false;
	this.field_2.disabled=false;
}