function Countries_Changed(countryItem)
{
    var isType = ($get('LoadingSearchBoxType') != null);
    $get('LoadingSearchBoxRegion').style.display = "";
    $get('LoadingSearchBoxCity').style.display = "";
    if (isType) $get('LoadingSearchBoxType').style.display = "";
    var startDate = ctl00_SearchBox1_DateRange_PickerFrom.GetSelectedDate();
    var endDate = ctl00_SearchBox1_DateRange_PickerTo.GetSelectedDate();
    var persons = $get('ctl00_SearchBox1_Persons').value;
    Domegos.Services.Location.Countries_Changed(isType, countryItem.value, startDate, endDate, persons, SearchBoxCallback_Success, SearchBoxCallback_Error);
}
function Regions_Changed(regionItem)
{
    var isType = ($get('LoadingSearchBoxType') != null);
    var countryId = $get('ctl00_SearchBox1_Countries').value;
    var startDate = ctl00_SearchBox1_DateRange_PickerFrom.GetSelectedDate();
    var endDate = ctl00_SearchBox1_DateRange_PickerTo.GetSelectedDate();
    var persons = $get('ctl00_SearchBox1_Persons').value;
    $get('LoadingSearchBoxCity').style.display = "";
    if (isType) $get('LoadingSearchBoxType').style.display = "";
    Domegos.Services.Location.Regions_Changed(isType, countryId, regionItem.value, startDate, endDate, persons, SearchBoxCallback_Success, SearchBoxCallback_Error);
}
function Cities_Changed()
{
    var isType = ($get('LoadingSearchBoxType') != null);
    var startDate = ctl00_SearchBox1_DateRange_PickerFrom.GetSelectedDate();
    var endDate = ctl00_SearchBox1_DateRange_PickerTo.GetSelectedDate();
    var persons = $get('ctl00_SearchBox1_Persons').value;
    var countryId = $get('ctl00_SearchBox1_Countries').value;
    var regionId = $get('ctl00_SearchBox1_Regions').value;
    var cityId = $get('ctl00_SearchBox1_Cities').value;
    if (isType) $get('LoadingSearchBoxType').style.display = "";
    Domegos.Services.Location.Cities_Changed(isType, countryId, regionId, cityId, startDate, endDate, persons, SearchBoxCallback_Success, SearchBoxCallback_Error);
}
function SearchBoxCallback_Success(result)
{
    var regions = $get('ctl00_SearchBox1_Regions');
    var cities = $get('ctl00_SearchBox1_Cities');
    var arrayResult = result.toString().split(',');
    var index = 0;
    var currentAction = '';
    while (index < arrayResult.length)
    {
        if (currentAction == '')
        {
            switch (arrayResult[index])
            {           
                case '|Region|':
                    currentAction = 'Region';
                    break;
                case '|City|':
                    currentAction = 'City';
                    break;
                case '|Type|':
                    currentAction = 'Type';
                    break;
            }
            index++;
        }
        else
        {
            switch (currentAction)
            {           
                case 'Region':
                    $get('ctl00_SearchBox1_RegionLabel1').style.display = (arrayResult[index++] == 'Region' ? '' : 'none');
                    for(var i=regions.options.length-1;i>=0;i--){ regions.remove(i); }
                    if (arrayResult[index + 2] != '|RegionEnd|')
                    {
                        InsertOption(regions, '-1', (arrayResult[index-1] == 'State' ? allStatesText : allRegionsText), null);
                    }
                    while (arrayResult[index] != '|RegionEnd|')
                    {     
                        InsertOption(regions, arrayResult[index], arrayResult[index + 1], null);                   
                        index += 2;
                    }
                    currentAction = "";
                    index++;
                    break;
                case 'City':
                    for(var i=cities.options.length-1;i>=0;i--){ cities.remove(i); }
                    if (arrayResult[index + 2] != '|CityEnd|')
                    {
                        InsertOption(cities, '-1', allCitiesText, null);
                    }
                    while (arrayResult[index] != '|CityEnd|')
                    {                        
                        InsertOption(cities, arrayResult[index], arrayResult[index + 1], null); 
                        index += 2;
                    }
                    currentAction = "";
                    index++;
                    break;
                case 'Type':
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeHouse').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeApartment').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeBedAndBreakfast').nextSibling.firstChild, arrayResult[index++]);                    
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeBoat').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeBungalow').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeChalet').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeFarmHouse').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeMobileHouse').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeVilla').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeAllSpecials').nextSibling.firstChild, arrayResult[index++]);
                    ReplaceWithNewNumber($get('ctl00_SearchBox1_TypeAll').nextSibling.firstChild, arrayResult[index++]);
                    if (arrayResult[index++]!= '|TypeEnd|')  alert('Error with searchbox update, please report to webmaster');
                    index++;
                    break;
            }
        }
        
    }
    $get('ctl00_SearchBox1_RegionsDiv').style.display = (arrayResult[arrayResult.length - 1] == 'ShowRegion' ? '': 'none');  
    $get('LoadingSearchBoxRegion').style.display = "none";
    $get('LoadingSearchBoxCity').style.display = "none";
    if ($get('LoadingSearchBoxType') != null)
        $get('LoadingSearchBoxType').style.display = "none";
}
function ReplaceWithNewNumber(element, newNumber)
{
    element.nodeValue = element.nodeValue.replace(/\d+/, newNumber);
}
function SearchBoxCallback_Error(error)
{
    $get('LoadingSearchBoxRegion').style.display = "none";
    $get('LoadingSearchBoxCity').style.display = "none";
    if ($get('LoadingSearchBoxType') != null)
        $get('LoadingSearchBoxType').style.display = "none";
    alert(error.get_message());
}
if(typeof(Sys) != 'undefined') Sys.Application.notifyScriptLoaded();