/* Geting items for search box      
* var request XMLHTTPRequest Object 
*/
function set_geo(form, xml)
{
    var continent = form.elements["data[Image][continent_id]"];
    var country   = form.elements["data[Image][country_id]"];
    var region    = form.elements["data[Image][region_id]"];
    var city      = form.elements["data[Image][city_id]"];
    
    var continents = xml.getElementsByTagName('continent');
    var countries  = xml.getElementsByTagName('country');
    var regions    = xml.getElementsByTagName('region');
    var cities     = xml.getElementsByTagName('city');
    
    var tmp = null;
    
    tmp =xml.getElementsByTagName('current_continent');
    var continent_id = tmp[0].getAttribute('id');
    
    tmp = xml.getElementsByTagName('current_country');
    var country_id = tmp[0].getAttribute('id');
    
    tmp = xml.getElementsByTagName('current_region');
    var region_id = tmp[0].getAttribute('id');
    
    tmp = xml.getElementsByTagName('current_city');
    var city_id = tmp[0].getAttribute('id');
    
    if (continent != null)
    {
        if (continents.length > 0 && continent.options.length == 1)
            setOptions(continent, continents, continent_id, 'Please select Continent');
    }
    
    if (country != null)
    {
        if (countries.length > 0)
            setOptions(country, countries, country_id, 'Please select Country');
        else
            disableOptions(country, 'Please select Country');
    }
    
    if (region != null)
    {
        if (regions.length > 0)
            setOptions(region, regions, region_id, 'Please select Region');
        else
            disableOptions(region, 'Please select Region');
    }
    
    if (city != null)
    {
        if (cities.length > 0)
            setOptions(city, cities, city_id, 'Please select City');
        else
            disableOptions(city, 'Please select City');
    }
}

function getLocationOnComplete(request, form)
{
    if (request.readyState == 4 && request.status == 200)
    {
        var xml = request.responseXML.XMLDocument ? request.responseXML.XMLDocument : request.responseXML;
        set_geo(form, xml);
    }
}

function initLocationParams(form, continent_id, country_id, region_id, city_id, extended)
{
    var serviceURL = '';
    
    switch (extended)
    {
        case 1:
            serviceURL = 'Ext';
            break;
        
        case 2:
            serviceURL = 'ExtFull';
            break;
    }
    
    if (!continent_id) continent_id = 0;
    if (!country_id)   country_id   = 0;
    if (!region_id)    region_id    = 0;
    if (!city_id)      city_id      = 0;
    
    var dateObj = new Date();
    
    new Ajax.Request(webRoot + 'searchcriteria/get' + serviceURL + '/' + continent_id + '/' + country_id + '/' + region_id + '/' + city_id + '/' + dateObj.getTime(), {onComplete:function(request){ getLocationOnComplete(request, form); }, asynchronous:true, evalScripts:true});
}

function changeLocationParams(select, extended)
{
    var serviceURL = '';
    
    switch (extended)
    {
        case 1:
            serviceURL = 'Ext';
            break;
        
        case 2:
            serviceURL = 'ExtFull';
            break;
    }
    
    var form = select.form;
    
    var continent = form.elements["data[Image][continent_id]"];
    var country   = form.elements["data[Image][country_id]"];
    var region    = form.elements["data[Image][region_id]"];
    var city      = form.elements["data[Image][city_id]"];
    
    var continent_id = continent.options[continent.selectedIndex].value;
    var country_id   = 0;
    var region_id    = 0;
    var city_id      = 0;
    
    switch (select.name)
    {
        case 'data[Image][country_id]':
            if (extended)
            {
                disableOptions(region, 'Please select Region');
                disableOptions(city, 'Please select City');
            }
            country_id = country.options[country.selectedIndex].value;
            break;
        
        case 'data[Image][region_id]':
            if (extended < 2)
                country_id = country.options[country.selectedIndex].value;
            
            if (extended == 2)
                disableOptions(country, 'Please select Country');
            
            if (extended)
                disableOptions(city, 'Please select City');
            
            region_id = region.options[region.selectedIndex].value;
            break;
        
        case 'data[Image][city_id]':
            if (extended < 2)
            {
                country_id = country.options[country.selectedIndex].value;
                region_id  = region.options[region.selectedIndex].value;
            }
            if (extended == 2)
            {
                disableOptions(country, 'Please select Country');
                disableOptions(region, 'Please select Region');
            }
            city_id = city.options[city.selectedIndex].value;
            break;
    }
    
    var dateObj = new Date();
    
    new Ajax.Request(webRoot + 'searchcriteria/get' + serviceURL + '/' + continent_id + '/' + country_id + '/' + region_id + '/' + city_id + '/' + dateObj.getTime(), {onComplete:function(request){ getLocationOnComplete(request, form, continent_id, country_id, region_id, city_id); }, asynchronous:true, evalScripts:true});
}

function setOptions(sel, opts, activeId, str)
{
    sel.innerHTML = '';
    sel.disabled = false;
    var o = document.createElement('option');
    o.value = 0; // ''
    o.text = str;
    
    sel.options[0] = o;
    for (var i = 0; i < opts.length; i++)
    {   
        var id = opts[i].getAttribute('id');
        var tc = opts[i].getAttribute('tcnt');
        var text = opts[i].firstChild.data;
        o = document.createElement('option');
        o.tc = tc;
        o.value = opts[i].getAttribute('id');
        o.text = text;
        sel.options[i+1] = o;
        if (id == activeId) o.selected = true;
    }
}

function disableOptions(sel, txt)
{
    var opt = document.createElement('option');
    opt.text = txt;
    sel.innerHTML = '';
    sel.options[0] = opt;
    sel.disabled = true;
}