var hide_list_timer;
var timeout_timer;
var run_timer;
var result_type;
var list_number=0;
var item_number=0;

var last_city1_name='';
var last_city2_name='';

function setcountry(country_id, control_number)
{
	document.getElementById('fcity'+control_number).value='';
	if(country_id!='-')
	{
		document.getElementById('fcity'+control_number).style.background = "#ffffff";
		document.getElementById('fcity'+control_number).style.border='1px solid #7f9db9';
		document.getElementById('fcity'+control_number).disabled=false;
	}
	else
	{
		document.getElementById('fcity'+control_number).style.background = "#ebebe4";
		document.getElementById('fcity'+control_number).style.border='1px solid #7f9db9';
		document.getElementById('fcity'+control_number).disabled=true;
	}
}
//------------------------------------------------------------------------------------------------------
function set_city_focus(control_number)
{
	if(list_number==0 || list_number==control_number)clearTimeout(hide_list_timer);
}
function unset_city_focus()
{
	hide_list_timer=window.setTimeout('hide_city_list();', 200);
}
function set_list_focus()
{
	clearTimeout(hide_list_timer);
}
function unset_list_focus()
{
	hide_list_timer=window.setTimeout('hide_city_list();', 200);
}
function edit_city_name(event)
{
	var keyCode = event.keyCode;
	if(keyCode==13)
	{
		new_city_number=document.getElementById('city_list').selectedIndex;
		new_city_name=document.getElementById('city_name_'+new_city_number).innerHTML;
		if(list_number>0)
		{
			document.getElementById('fcity'+list_number).value=new_city_name;
			document.getElementById('city_list_win').style.visibility='hidden';
		}
	}
}
function scroll_city_name(event)
{
	if(event.layerX)
		x_pos=event.layerX;
	else
		x_pos=event.offsetX;
		
	if(event.layerY)
		y_pos=event.layerY;
	else
		y_pos=event.offsetY;
		
	item_position=Math.floor(y_pos/(document.getElementById('city_list').clientHeight/10));
	if(item_position>=0 && item_position<item_number)
		new_city_number=document.getElementById('city_list').selectedIndex=item_position;
}
function hide_city_list()
{
	document.getElementById('city_list_win').style.visibility='hidden';
}
function set_new_name()
{
	new_city_number=document.getElementById('city_list').selectedIndex;
	new_city_name=document.getElementById('city_name_'+new_city_number).innerHTML;
	if(list_number>0)
	{
		document.getElementById('fcity'+list_number).value=new_city_name;
		document.getElementById('city_list_win').style.visibility='hidden';
	}
}
function change_list(event)
{
	var keyCode = event.keyCode;
	switch(keyCode)
	{
		case 40:{
			//alert("down");
			list_position=Number(document.getElementById('city_list').selectedIndex);
			list_position=list_position+1;
			if(document.getElementById('city_name_'+list_position))
				document.getElementById('city_name_'+list_position).selected=true;
			return false;
			break;}
		case 38:{
			//alert("up");
			list_position=Number(document.getElementById('city_list').selectedIndex);
			if(list_position>0){
				list_position=list_position-1;
				if(document.getElementById('city_name_'+list_position))
					document.getElementById('city_name_'+list_position).selected=true;
			}
			return false;
			break;}
		case 13:{
			//alert("enter");
			new_city_number=document.getElementById('city_list').selectedIndex;
			new_city_name=document.getElementById('city_name_'+new_city_number).innerHTML;
			if(list_number>0)
			{
				document.getElementById('fcity'+list_number).value=new_city_name;
				document.getElementById('city_list_win').style.visibility='hidden';
			}
			return false;
			break;}
	}
}
//------------------------------------------------------------------------------------------------------
function load_variant(control_number, event)
{
	var keyCode = event.keyCode;

	if(keyCode!=40 && keyCode!=38 && keyCode!=13)
	{
		result_type='city_list';
		list_number=control_number;

		last_city_name='';
		if(control_number==1)last_city_name=last_city1_name;
		if(control_number==2)last_city_name=last_city2_name;

		city_name=document.getElementById('fcity'+control_number).value;
		if(last_city_name!=city_name)
		{
			if(control_number==1)last_city1_name=city_name;
			if(control_number==2)last_city2_name=city_name;

			document.getElementById('city_list_win').innerHTML='';
			document.getElementById('city_list_win').style.left=document.getElementById('fcity'+list_number).offsetLeft;
			document.getElementById('city_list_win').style.top=document.getElementById('fcity'+list_number).offsetTop+document.getElementById('fcity'+list_number).offsetHeight+2;
			document.getElementById('city_list_win').style.visibility='';

			country_id=document.getElementById('id_country_'+control_number).value;
			url='/data/get_city_name/?country='+country_id+'&city='+encodeURIComponent(city_name);
			clearTimeout(timeout_timer);
			timeout_timer=window.setTimeout("stop_load();", 10000);
			clearTimeout(run_timer);
			run_timer=window.setTimeout('loadXMLDoc("'+url+'");', 500);
		}
	}
}
//--------------------------------------------------------------------------------
function loadXMLDoc(url){
	if(window.XMLHttpRequest){
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);}
	else if(window.ActiveXObject){
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if(req){
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();}}}
function processReqChange()
{
	if(req.readyState == 4)
	{
		clearTimeout(timeout_timer);
		if (req.status == 200)
		{
			ret_value=req.responseText;
			show_result(ret_value);
		}
		else
		{
			show_result('connect error');
		}
	}
}
function stop_load()
{
	req.abort();
	show_result("connect timeout");
}
function show_result(result)
{
	clearTimeout(timeout_timer);
	if(result_type=='city_list')
	{
		item_number=0;
		if(result!='connect timeout' && result!='connect error')
		{
			result_array=result;
			result_array=result_array.split(';');
			result_text='';

			result_text+='<select id="city_list" name="city_list" style="width:220px;" size="10" onclick="set_new_name();" onmousemove="scroll_city_name(event);" onkeydown="edit_city_name(event);" onblur="unset_list_focus();" onfocus="set_list_focus();">';
			item_number=result_array.length;
			for(i=0; i<result_array.length; i++)
			{
				if(i==0)
					result_text+='<option id="city_name_'+i+'" value="'+i+'" selected>'+result_array[i];
				else
					result_text+='<option id="city_name_'+i+'" value="'+i+'">'+result_array[i]+'</option>';
			}
			result_text+='</select>';
			document.getElementById('city_list_win').innerHTML=result_text;
		}
		else
		{
			result_text='';
			result_text+='<select id="city_list" name="city_list" style="width:220px;" size="10" onfocus="document.getElementById(\'fcity'+list_number+'\').focus();">';
			result_text+='</select>';
			document.getElementById('city_list_win').innerHTML=result_text;
		}
	}
}
//--------------------------------------------------------------------------------