/*     obsluga dynamicznej listy wyszukiwania miast 	*/

var search_arrow_pos = 0;
var default_mod_name = 'search';





function getCitiesListByName(name, mod_name, nie_blokuj_buttona, nie_koloruj)
{
	setInner('', mod_name + '_cities_list');
	if (!mod_name)
		var mod_name = default_mod_name;

	var btn_name=(mod_name=='countries')?'search_btn':mod_name+'_btn';	
		
	
	if (document.getElementById(btn_name) && !nie_blokuj_buttona) document.getElementById(btn_name).disabled = true;
	var od_ilu_znakow=(mod_name=='countries')?1:2;
	if (name.length >= od_ilu_znakow)
	{	
		
		//setInner('<center><img alt="" src="http://img.nocowanie.pl/gfx/mapanoclegow/ajax-loader.gif" style="vertical-align: middle;"/></center>', mod_name + '_cities_list');
		
		var country=(document.getElementById('countries_geo_str'))?document.getElementById('countries_geo_str').value:0;
		
		
		if (country) {
			var aj = new Ajax('/files/ajax/lista_miast_po_nazwie.php?country='+ country + ((mod_name) ? '&mod_name=' + mod_name : ''), document.location);
		} else {
			var aj = new Ajax('/files/ajax/lista_miast_po_nazwie.php' + ((mod_name) ? '?mod_name=' + mod_name : ''), document.location);
		}
		
		
		
		aj.AddGETParam('geo_str',name);
		aj.onSuccess = function () 
		{ 
			var response = this.HTTP.responseText;
			setInner(response, mod_name + '_cities_list');  
			if (response.length>0 || name.length<od_ilu_znakow)
			{
				document.getElementById(mod_name + '_cities_list').style.display = 'block';
				document.getElementById(mod_name + '_geo_str').style.backgroundColor = '#ffffff';
				/*
				if (name.length > 1)
					document.getElementById('search_btn').disabled = false;
					*/
				//openMarkerByName(document.getElementById(mod_name + '_cities_list_1').innerHTML);
				
			}
			else
			{
				if (!nie_koloruj) document.getElementById(mod_name + '_geo_str').style.backgroundColor = '#ff0000';
				document.getElementById(mod_name + '_cities_list').style.display = 'none';
				//document.getElementById('search_btn').disabled = true;			
			}
		}
		aj.GET();
	}
	else
		document.getElementById(mod_name + '_cities_list').style.display = 'none';
	return false;
}

function getNCityName(obj, n, mod_name, keep_list_shown)
{	
	if (!mod_name)
		var mod_name = default_mod_name;	
	var btn_name=(mod_name=='countries')?'search_btn':mod_name+'_btn';	
	//alert(document.getElementById(mod_name + '_cities_list_' + n).innerHTML);
	if (document.getElementById(mod_name + '_cities_list_' + n)) {
	obj.value=document.getElementById(mod_name + '_cities_list_' + n).innerHTML;
	//alert(document.getElementById(mod_name + '_cities_list_' + n).innerHTML);
	if (document.getElementById(mod_name + '_id_geografii_hidden') && document.getElementById(mod_name + '_cities_geo_id_' + n))
		document.getElementById(mod_name + '_id_geografii_hidden').value = document.getElementById(mod_name + '_cities_geo_id_' + n).value;	
	if (document.getElementById(mod_name + '_geo_coords') && document.getElementById(mod_name + '_cities_list_coords_' + n))
		document.getElementById(mod_name + '_geo_coords').value = document.getElementById(mod_name + '_cities_list_coords_' + n).value;
	if (!keep_list_shown)
		document.getElementById(mod_name + '_cities_list').style.display='none'; 
	if (document.getElementById(btn_name))
		document.getElementById(btn_name).disabled = false;

	return obj.value;
	} else {return null;}
}


function deselectCitiesOnList(except, mod_name)
{
	if (!mod_name)
		var mod_name = default_mod_name;	
	var n = 1;
	while (pos = document.getElementById(mod_name + '_cities_list_' + n)) {
		if (n != except)
			pos.className = 'search_cities_list';//mod_name + '_cities_list';
		else
		{
			pos.className = 'search_cities_list_selected';//mod_name + '_cities_list_selected';
			search_arrow_pos = except;
		}
		n++;
	}
	return n;
}


function searchCountriesFieldKeyPress(obj, key, mod_name,nie_blokuj_buttona) {
	/*document.getElementById('search_geo_str').value='';*/
	if (document.getElementById('search_cities_list')) document.getElementById('search_cities_list').style.display='none';
	searchFieldKeyPress(obj, key, 'countries',nie_blokuj_buttona);
}

function searchCitiesFieldKeyPress(obj, key, mod_name,nie_blokuj_buttona, nie_koloruj) {
	if (document.getElementById('countries_cities_list')) document.getElementById('countries_cities_list').style.display='none';
	searchFieldKeyPress(obj, key, mod_name,nie_blokuj_buttona, nie_koloruj);
	
}

function searchFieldKeyPress(obj, key, mod_name,nie_blokuj_buttona, nie_koloruj)
{
	
	if (!mod_name)
		var mod_name =default_mod_name;		
	var btn_name=(mod_name=='countries')?'search_btn':mod_name+'_btn';		
	//alert(search_arrow_pos);
	if (document.getElementById(btn_name))	document.getElementById(btn_name).disabled = true;
		
	if (key == 13 && document.getElementById(mod_name + '_cities_list_' + search_arrow_pos)) { //enter
		//alert(search_arrow_pos);
		if (search_arrow_pos) {
			getNCityName(obj, search_arrow_pos, mod_name);
		}
		//if (nie_blokuj_buttona==1) document.getElementById(btn_name).disabled = false;
	}
	else if (key == 38) //strzalka w gore
	{
		
		if (search_arrow_pos==0) {
			search_arrow_pos=deselectCitiesOnList(0, mod_name)-1;
			document.getElementById(mod_name + '_geo_str').value=document.getElementById(mod_name + '_cities_list_' + (search_arrow_pos)).innerHTML;
		} else {
			search_arrow_pos = (search_arrow_pos > 1) ? search_arrow_pos-1 : 0; 
			if (search_arrow_pos==0) {
				document.getElementById(mod_name + '_geo_str').value=document.getElementById(mod_name + '_geo_str_hidden').innerHTML;
			} else {
				document.getElementById(mod_name + '_geo_str').value=document.getElementById(mod_name + '_cities_list_' + (search_arrow_pos)).innerHTML;
			}
		}
		if (document.getElementById(mod_name + '_cities_list_' + search_arrow_pos))
		{
			document.getElementById(mod_name + '_cities_list_' + search_arrow_pos).className = 'search_cities_list_selected';
			//openMarkerByName(document.getElementById(mod_name + '_cities_list_' + search_arrow_pos).innerHTML);
		}
		deselectCitiesOnList(search_arrow_pos, mod_name);
		
	}
	else if (key == 40)  //strzalka w dol
	{
		//alert(search_arrow_pos);
		
		if (search_arrow_pos==deselectCitiesOnList(0, mod_name)-1) {
			search_arrow_pos=0;
			document.getElementById(mod_name + '_geo_str').value=document.getElementById(mod_name + '_geo_str_hidden').innerHTML;
		} else {
			search_arrow_pos = (document.getElementById(mod_name + '_cities_list_' + (search_arrow_pos+1))) ? search_arrow_pos+1 : 0;
			document.getElementById(mod_name + '_geo_str').value=document.getElementById(mod_name + '_cities_list_' + search_arrow_pos).innerHTML;
		}
		if (document.getElementById(mod_name + '_cities_list_' + search_arrow_pos))		
		{
			document.getElementById(mod_name + '_cities_list_' + search_arrow_pos).className = 'search_cities_list_selected';
			//openMarkerByName(document.getElementById(mod_name + '_cities_list_' + search_arrow_pos).innerHTML);
		}
		deselectCitiesOnList(search_arrow_pos, mod_name);
	}
	/*
	else if (key == 27)  //escape
	{
		document.getElementById(mod_name + '_cities_list').style.display = 'none';
		document.getElementById(mod_name + '_cities_list').innerHTML = null;
	}
	*/
	else if (key != 13) 
	{
		getCitiesListByName(obj.value, mod_name,nie_blokuj_buttona, nie_koloruj);
		search_arrow_pos = 0;
		if (document.getElementById(btn_name))	document.getElementById(btn_name).disabled = false;
	}
	
	//alert(obj.value);
	if (!obj.value) {
		document.getElementById(mod_name + '_geo_str').style.backgroundColor = '#ffffff';
		
		//if (document.getElementById(mod_name + '_cities_list'))	document.getElementById(mod_name + '_cities_list').style.display = 'none';
	}
	
	
	if (key == 9 && mod_name=='countries') {
		Selection.setFocus('search_geo_str');
	}
	
	if (key != 40 && key !=38) document.getElementById(mod_name + '_geo_str_hidden').innerHTML=document.getElementById(mod_name + '_geo_str').value;
	
}


function onBlurGeoStr(){
	if (document.getElementById('search_geo_str').value)	
		getNCityName(document.getElementById('search_geo_str'), search_arrow_pos, 'search');
	setTimeout("document.getElementById('search_cities_list').style.display='none';",100);
}
 
function onBlurCountryStr(){
	if (document.getElementById('countries_geo_str').value)	
		getNCityName(document.getElementById('countries_geo_str'), search_arrow_pos, 'countries');
	
	//document.getElementById('search_btn').disabled = false;
	
	setTimeout("document.getElementById('countries_cities_list').style.display='none';",100);
}

 
/*
function searchCitiesListClick(name, mod_name)
{
	if (!mod_name)
		var mod_name =default_mod_name;		
	document.getElementById(mod_name + '_geo_str').value=name; 
	document.getElementById(mod_name + '_cities_list').style.display='none'; 
	if (document.getElementById(mod_name + '_btn'))
		document.getElementById(mod_name + '_btn').disabled = false;
}
*/
function driveFromToFormSubmit()
{
	if (document.getElementById('drive_from_geo_str').value && document.getElementById('drive_to_geo_str').value);
	drive(document.getElementById('drive_from_geo_str').value + '@' + document.getElementById('drive_from_geo_coords').value, document.getElementById('drive_to_geo_str').value + '@' + document.getElementById('drive_to_geo_coords').value);
}