var _baseCityList;
var _baseCountry;
var _baseCity;
var _documentForm;
var _iFrame;
var _countCity=10;

function GetCity()
{
	var Cbo = new CallBackObject();
	Cbo.OnError    = Cbo_OnError;
	Cbo.OnComplete = GetCityComplete;
	var URL = "LoadCities/ListCities.aspx";
	var Query = "City="+ _baseCity.value + "&Country="+ _baseCountry[_baseCountry.selectedIndex].value+"&Count="+_countCity; // "&Count=10";
	Cbo.DoCallBack(URL,Query);
	return true;
}

function CheckCountryCity()
{
	if(_baseCountry.selectedIndex == 0)
	{
		alert(_strChooseCountryError);
		return false;
	}
	if(_baseCity.value ==  "")
	{
		alert(_strChooseCityError);
		return false;
	}
	return true;
}

function MustChooseCountry()
{
	_baseCity.value = "";
	alert(_strChooseCountryError);
}

function GetLetterCity()
{
	if(_baseCountry.selectedIndex == 0)
	{
		MustChooseCountry();
		return false;
	}
	else	
	{
	var Cbo = new CallBackObject();
	Cbo.OnError    = Cbo_OnError;
	Cbo.OnComplete = GetLetterCityComplete;
	var URL = "/LoadCities/ListCities.aspx";
	var Query = "City="+ _baseCity.value +"&Country="+ _baseCountry[_baseCountry.selectedIndex].value+"&Count=0"; 
// alert("GetLetterCity(): " + Query);				
	Cbo.DoCallBack(URL,Query);
	ChangeCity();
	return true;
	}
}

function NewGetLetterCity()
{
	if(TimerForCity != null) clearTimeout(TimerForCity);
    TimerForCity = setTimeout('GetLetterCity()', 100);
}

function getLetCity(e)
{
/*
alert("getLetCity():" + _baseCountry.selectedIndex);
	if(_baseCountry.selectedIndex == 0)
		return false;
*/	
    switch(e.keyCode)
    {
        case 40: break;
        case 38: break;
        case 13: break;
        case 27: break;
//        case 8 : break;
		case 9 : break;
        default: NewGetLetterCity();break;
    }
	return true;
}

function Cbo_OnError(status, statusText, responseText)
{
	alert("OnError: " + status + "\r"+ statusText+"\r"+responseText);
}

function GetCityComplete(responseText, responseXML) // arg)
{
	eval(responseText);
}

function GetLetterCityComplete(responseText, responseXML)
{
	eval(responseText);
}

citiesLetter=function(is,cs,ds,pr)
{
	_cityName = cs;
	_countHotel = ds;
	_cityLetters = String(pr).split(',');

	var s = '<div class="alfavit3 bgalfavit"><div class="fffcolor">' + _strChooseCityMsg + '</div>';
	re = /[a-z]/i;

	for(var k=0; k<_cityLetters.length; k++)
	{
		if(re.test(_cityLetters[k]))
		{
			oc = "_baseCity.value='"+_cityLetters[k]+"';GetLetterCity();return false;";
			s += '<a style="color:#c9caae;" href="#" onclick="' + oc + '">'+_cityLetters[k]+'</a> ';
		}
	}
	s += '</div>';
	s += '<div class="paddingcitylist">';
	s += '<div class="zaglav">'+is.split(';')[1]+'<a name="A"></a></div>';
	_baseCityList.innerHTML = "";
	for(var k=0; k<_cityName.length; k++)
	{
		s += '<div class="paddingtopcit" onclick="clicked(this); return false;">'; // onclick="clicked(''ids1''); return false;" id="ids1" name="ids1"
		s += '<a href="#" class="textcitylist" >'+_cityName[k]+'</a></div>';
	}
	s += "</div>";

	 _baseCityList.innerHTML = s;

	_baseCityList.style.width   = "240px";

	var h = _cityName.length>16?350:_cityName.length*16+100;
	_baseCityList.style.height   = String(h) +  "px";
	_iFrame.style.width = _baseCityList.offsetWidth + "px";
	_iFrame.style.height = _baseCityList.offsetHeight + "px";


	var top = calculateOffsetTop(_baseCity)+_baseCity.offsetHeight - 5;
	var left = calculateOffsetLeft(_baseCity);
	var he = get_wh()+getBodyScrollTop();
//window.status = String(top+h) + String(he) + "|";	
	if(top+h+10>he) 
	{
		top = he - h - 10; 
		left = left + 60;
	}	

//window.status += "new: " + String(top) + ":" + String(left)+ "|";		
	_baseCityList.style.left = left+ "px";
	_baseCityList.style.top  = top + "px";
	_iFrame.style.left = _baseCityList.style.left;
	_iFrame.style.top  = (top+5) + "px"; // _baseCityList.style.top;
//window.status += "pos: " + String(_baseCityList.style.top) + ":" + String(_baseCityList.style.left) + " - " + String(_iFrame.style.top) + ":" + String(_iFrame.style.left);	
	_iFrame.style.visibility = "visible";
    _baseCityList.style.visibility = "visible";
//	alert(window.status);
}	
	

citiesList=function(is,cs,ds,pr)
{
	_cityName = cs;
	_countHotel = ds;
// alert("citiesList(): width: "+ _baseCityList.offsetWidth+" height: " + _baseCityList.offsetWidth);	
	var f = checkExistsCity(CityItem);
    if(!f)
    {
        CitiesGetted = _cityName.length;
        SelectedItemIndex = -1;
        setCityListValue();
		
    }
    else
    {
        SetVisibilityHidden();
    }

}

function CheckExistsCity(item)
{
    var flag = false;
    for(var k=0; k<item.length; k++)
        if(item[k].CityName.toLowerCase() == document.getElementById("City").value.toLowerCase())
            flag = true;
    return flag;
}

function checkExistsCity()
{
    var flag = false;
    for(var k=0; k<_cityName.length; k++)
        if(_cityName[k].toLowerCase() == _baseCity.value.toLowerCase())
            flag = true;
    return flag;
}

function setCityListValue()
{
    _baseCityList.innerHTML = "";
    var inner = "";
//alert("setCityListValue(): width: "+ _baseCityList.offsetWidth+" height: " + _baseCityList.offsetWidth);	    
    if(_cityName.length > 0)
    {
        inner = ListCityValue();
//alert("setCityListValue() 1: width: "+ _baseCityList.offsetWidth+" height: " + _baseCityList.offsetWidth);	    		
        _baseCityList.innerHTML = inner;
//alert("setCityListValue() 2: width: "+ _baseCityList.offsetWidth+" height: " + _baseCityList.offsetWidth);	    				
        FillTRColor();
//alert("setCityListValue() 3: width: "+ _baseCityList.offsetWidth+" height: " + _baseCityList.offsetWidth);	   		
        _iFrame.style.width = _baseCityList.offsetWidth + "px";
		_iFrame.style.height = _baseCityList.offsetHeight + "px";
        _iFrame.style.visibility = "visible";
        _baseCityList.style.visibility = "visible";
    }
    else SetVisibilityHidden();
    
}

function SetCityListValue()
{
    _baseCityList.innerHTML = "";
    var inner = "";
    
    if(_cityName.length > 0)
    {
        _iFrame.style.visibility = "visible";
        _baseCityList.style.visibility = "visible";
        inner = ListCityValue();
        _baseCityList.innerHTML = inner;
    }
    
}


function ListCityValue()
{
    var t = "<table width='100%' cellpadding='0' cellspacing='0' border='0' style='Z-INDEX: ' + _baseCityList.style.zIndex + ';' class='div_citylist'>";
alert("ListCityValue(): width: "+ _baseCityList.offsetWidth+" height: " + _baseCityList.offsetWidth);	    
    for(var i=0; i<_cityName.length; i++)
    {
        var stl = "";
        if(i == SelectedItemIndex)
            stl = "background-color:#CCCCFF;";
        t += "<tr id='CityListItem" + i + 
			 "' onclick='SetCityText(" + i + ");' style='cursor:pointer;" + stl + 
			 "' onmouseover='SelectedItemIndex=" + i + ";FillTRColor(this);'><td><a href='#'>&nbsp;" + 
			 // "' mouseout='SelectedItemIndex=" + i + ";FillTRColor(this);'><td>&nbsp;" + 
			 FillCityTextChars(_cityName[i], i, i != SelectedItemIndex) + 
			 "</a></td><td align='right'><a href='#'><span style='color:#8888EE;font-size:11px;font-weight:bold;'>" + 
			 _countHotel[i] + " " + _HotelsHidden + "</span></a>&nbsp;</td></tr>";
    }

    t += "</table>";
    return t;
alert("ListCityValue() end: width: "+ _baseCityList.offsetWidth+" height: " + _baseCityList.offsetWidth);	 	
}

function ListCityValue()
{
// width='100%'
    var t = "<table width='250px' cellpadding='0' cellspacing='0' border='0' style='Z-INDEX: ' + _baseCityList.style.zIndex + ';'>";

    for(var i=0; i<_cityName.length; i++)
    {
        var stl = "";
        if(i == SelectedItemIndex)
            stl = "background-color:#CCCCFF;";
		else stl = "background-color:#f1f0eb;";	
        t += "<tr id='CityListItem" + i + 
			 "' onclick='SetCityText(" + i + ");' style='cursor:pointer;" + stl + "'" + // class='textcitylist' " + 
			 " onmouseover='SelectedItemIndex=" + i + ";FillTRColor(this);'><td>&nbsp;" + 
			 FillCityTextChars(_cityName[i], i, i != SelectedItemIndex) + 
			 "</td><td align='right'><span style='color:#8888EE;font-size:11px;font-weight:bold;'>" + 
			 _countHotel[i] + " " + _HotelsHidden + "</span>&nbsp;</td></tr>";
    }

    t += "</table>";
    return t;
}


function FillCityTextChars(name, i, flag)
{
    if(name.length >= 17)
        name = name.substring(0, 14) + "...";
    var l = _baseCity.value.length;
    var beg = name.substring(0, l);
    var end = name.substring(l, name.length);
    var bg = "";
    if(flag)
        bg = "background-color:#FFF0C4;";
    var res = "<span id='CityNameInCityList" + i + "' style='color:#003580;font-size:11px;font-weight:bold;" + bg + "'>" + beg + "</span>";
    res += "<span style='color:#003580;font-size:11px;font-weight:bold;'>" + end + "</span>";
    return res;
}

function FillTRColor(el)
{
    for(var i=0; i<_cityName.length; i++) 
    {
        document.getElementById("CityListItem" + i).style.backgroundColor = "#FFFFFF";
        document.getElementById("CityNameInCityList" + i).style.backgroundColor = "#FFF0C4";
    }
    if(el) el.style.backgroundColor = "#CCCCFF";
    else
		if(SelectedItemIndex>=0)
		{
			document.getElementById("CityListItem" + SelectedItemIndex).style.backgroundColor = "#CCCCFF";
		}
    if(SelectedItemIndex>=0) document.getElementById("CityNameInCityList" + SelectedItemIndex).style.backgroundColor = "#CCCCFF";
}

function SetCityText(index)
{
    _baseCity.value = _cityName[index];
     SetVisibilityHidden();
}

function SetVisibilityHidden()
{
    _baseCityList.innerHTML = "";
    _baseCityList.style.visibility = "hidden";
    _iFrame.style.visibility = "hidden";
    //if(document.getElementById("WCHhiderCityList"))
    //    document.getElementById("WCHhiderCityList").style.visibility = "hidden";
    // WCH.Discard('CityList');
    //WCH.Discard(_baseCityList);
    
    // setTimeout('ClearOnSubmit()', 100);
    CitiesGetted = -1;
}

function ClearOnSubmit()
{
	_documentForm.onsubmit = empty();
}

function CheckCityEmpty()
{
    if(_baseCity.value == "")
        SetVisibilityHidden();
    else
        CityListUpdate();
}

function CitySelect(e)
{
// alert("CitySelect: " + e  + " " +e.keyCode)
	_countCity = 16;
    _documentForm.onsubmit = empty();
    switch(e.keyCode)
    {
        case 40:// alert("CitySelect: 40: " + SelectedItemIndex+ " " + CitiesGetted);
				if(CitiesGetted>0 && SelectedItemIndex<CitiesGetted-1)
				{
					SelectedItemIndex++;
					FillTRColor();
				}
				break;
        case 38:if(CitiesGetted>0 && SelectedItemIndex >0)
				{
					SelectedItemIndex--;
					FillTRColor();// SetCityListValue(); 
				}
				break;
        case 13:if(SelectedItemIndex>=0) 
		   SetCityText(SelectedItemIndex); 
		if (e.preventDefault) 
    		{
		    e.preventDefault();
		    e.stopPropagation();
		} 
	    	else 
		{
      		    e.returnValue = false;
		    e.cancelBubble = true;
		}
		break;
        case 27:SetVisibilityHidden(); break;
        case 8:var ch = setTimeout('CheckCityEmpty()', 100);break;
	case 9:break;
        default:CityListUpdate();break;
    }
}

function empty()
{
    return "return false;";
}

// calculateOffsetLeft(_inputField)
function calculateOffsetLeft(r)
{
	return Ya(r,"offsetLeft")
}

// CalculateOffsetTop(_inputField)
function calculateOffsetTop(r)
{
	return Ya(r,"offsetTop")
}

function Ya(r,attr)
{
	var kb=0;
	while(r)
	{
		kb+=r[attr]; 
		r=r.offsetParent
	}
	return kb
}

function onBlurHandler(event) 
{
/*
alert("onBlurHandler");
	if(!event&&window.event) 
	{
		event=window.event;
	}
	*/
	SetVisibilityHidden();
}

function ChangeCountry()
{
	SetVisibilityHidden();
	//_baseCity.value = "";
	$("ToChooseCity").disabled = _baseCountry.selectedIndex == 0;
// 	ChangeCity();
}

function ChangeCity()
{
	//$("SearchBtn").disabled = _baseCity.value == "";
//window.status = "ChangeCity(): " + _baseCity.id + " |" + _baseCity.innerText + "| " + $("SearchBtn").disabled;
}

function InitSelectCity(frm,CityList,Country,City, iFrame)
{
//alert("InitSelectCity()"+"\n"+frm+"\n"+CityList+"\n"+Country+"\n"+City+" " + City.id + " " + City.value+"\n"+iFrame)
	_documentForm = frm; // document
	_baseCityList = CityList;
	_baseCountry  = Country;
	_baseCity	  = City;
	_iFrame		  = iFrame;
//	_baseCity.onblur = onBlurHandler; 
	
	_baseCountry.onchange = ChangeCountry;
	// _baseCity.onchange = ChangeCity;
	// ChangeCity();
	ChangeCountry();
		
	_iFrame.style.width = _baseCity.style.width;
	
	_baseCityList.style.left = calculateOffsetLeft(_baseCity)+"px";
	_baseCityList.style.top  = calculateOffsetTop(_baseCity)+_baseCity.offsetHeight-1+"px";
	
	_iFrame.style.left = _baseCityList.style.left;
	_iFrame.style.top = _baseCityList.style.top;
	_iFrame.style.width = _baseCityList.offsetWidth + "px";
	_iFrame.style.height = _baseCityList.offsetHeight + "px";
	
	_baseCityList.style.position="absolute";
	_iFrame.style.position="absolute";
	
// alert("InitSelectCity(): " + _baseCityList.offsetWidth +":"+ _baseCityList.offsetHeight);
	SetVisibilityHidden();
}

function clicked(ids) 
{
	var alls = ids.innerText?ids.innerText:ids.textContent;// $(ids).innerHTML;
	$('City').value = alls;
	var oppens = $("CityList").style;
	var frame = $("IFrameCityList").style;
	oppens.visibility = 'hidden';
	frame.visibility = 'hidden';
	$("form1").disabled = false;
}

function IFrameCityListHidden()
{
	$("CityList").style.visibility = 'hidden';
	$("IFrameCityList").style.visibility = 'hidden';
	$("form1").disabled = false;
}
document.onclick = IFrameCityListHidden;

function openwindow() 
{
	var oppens = $("CityList").style
	var frame = $("IFrameCityList").style

	if(oppens.visibility == "visible") 
	{
		oppens.visibility = 'hidden'
		frame.visibility = 'hidden'
	}
	else GetLetterCity();
}

function _InitSelectCity()
{
//alert("_InitSelectCity");
	InitSelectCity($("form1"),$("CityList"),$("CountryCode"),$("City"),$("IFrameCityList"));
}	
