// JScript source code

	// Function to handle change of region
	// Called by control
	function setRegion(RegionMenu,CountryMenu,StateMenu,RegionHidden,CountryHidden,StateHidden){
		RegionHidden.value=RegionMenu.options[RegionMenu.selectedIndex].value;
		CountryHidden.value='';
		StateHidden.value='';
		resetAll(RegionMenu,CountryMenu,StateMenu,RegionHidden,CountryHidden,StateHidden);
	}

	// Function to handle change of country
	// Called by control
	function setCountry(RegionMenu,CountryMenu,StateMenu,RegionHidden,CountryHidden,StateHidden){
		var sCountry = '';
		CountryHidden.value = '';
		StateHidden.value='';
		
		if (CountryMenu.selectedIndex>0){
			sCountry = CountryMenu.options[CountryMenu.selectedIndex].value;
			for(var p=0;p<CountryMenu.length;p++){            
				if(CountryMenu.options[p].selected && CountryMenu.options[p].value!=''){  
					CountryHidden.value += '|' + CountryMenu.options[p].value + '|';
				}            
			}    
		}
		resetAll(RegionMenu,CountryMenu,StateMenu,RegionHidden,CountryHidden,StateHidden);
	}

	// Function to handle change of state
	// Called by control
	function setState(RegionMenu,CountryMenu,StateMenu,RegionHidden,CountryHidden,StateHidden){
		StateHidden.value='';    
		for(var p=0;p<StateMenu.length;p++){        
			if(StateMenu.options[p].selected && StateMenu.options[p].value!=''){ 
				StateHidden.value += '|' + StateMenu.options[p].value + '|';                            
			}        
		}
		resetAll(RegionMenu,CountryMenu,StateMenu,RegionHidden,CountryHidden,StateHidden);
	}

	// Gets the value out of the hidden field and repopulates the menus
	function resetAll(RegionMenu,CountryMenu,StateMenu,RegionHidden,CountryHidden,StateHidden){
		

		var j;		

		if(RegionHidden)
		{
			var sRegion = TrimString(RegionHidden.value);
		
			// Reset the region menu
			for (var q=0; q<RegionMenu.length; q++){
				if (RegionMenu.options[q].value==sRegion){
					RegionMenu.options[q].selected=true;
				}
			}
		}



		if(CountryHidden)
		{
		var sCountry = CountryHidden.value;	

		// Populate the country menu
		clearLB(CountryMenu);
		if (sRegion==''){
			for(i=0;i<arrCountry.length;i++){
				CountryMenu.options[i] = new Option(arrCountry[i][1],arrCountry[i][0]);
				if (sCountry.indexOf('|' + arrCountry[i][0] + '|')!=-1 && i>0){
					CountryMenu.options[i].selected=true;
				}
			}
		}else{
			j=0;
			for(i=0;i<arrCountry.length;i++){
				if (sRegion==arrCountry[i][2] || arrCountry[i][2]==''){
					CountryMenu.options[j] = new Option(arrCountry[i][1],arrCountry[i][0]);
					if (sCountry.indexOf('|' + arrCountry[i][0] + '|')!=-1 && j>0){
						CountryMenu.options[j].selected=true;
					}
					j++;
				}
			}
		}

		}		    
		
		if(CountryHidden)
		{
			
			var sState = StateHidden.value;

			// Populate the state menu
			clearLB(StateMenu);
			if (sCountry!='' && sCountry.indexOf('||')==-1){
				j=0;
				for(i=0;i<arrState.length;i++){
					if ((sCountry == '|' + arrState[i][2] + '|') || (arrState[i][2] == '')){
						StateMenu.options[j] = new Option(arrState[i][1],arrState[i][0]);
						if (sState.indexOf('|' + arrState[i][0] + '|')!=-1 && j>0){
							StateMenu.options[j].selected=true;
						}
						j++;
					}
				}
			}
		}
		
	}

	// Function to clear a listbox (Country or state)
	// Called internally
	function clearLB(lb){
		if (lb.options){
			for (var i = lb.options.length - 1; i >= 0; i--){
				lb.options[i]=null;
			}
		}
	}

	// function returns the number of items selected in the passed listbox
	// Internal use
	function selCount(lb){
		var cnt = 0;
		for (var i=0; i<lb.length; i++) {
			if (lb[i].selected) {
				cnt += 1;
			}
		}
		return cnt;
	}

	function TrimString(sInString) {
		sInString = sInString.replace( /^\s+/g, "" );// strip leading
		return sInString.replace( /\s+$/g, "" );// strip trailing
	}
