﻿var autocomplete = jQuery("input#autocomplete");
var citySearchHidden = jQuery("#ddCitySearch1");
var searchhelperMain = "#searchhelper";
var searchhelper = jQuery("#searchhelper");

jQuery(document).ready(function() {
    if (JSMAN_CITYID == 0) {
        autocomplete.val(search_phrases[0]);
        autocomplete.css('color', 'gray');
        citySearchHidden.val(4);
        citySearchHidden.attr('chosen', 'none');
    }
    else {
        autocomplete.val(search_phrases[1]);
        citySearchHidden.val(JSMAN_CITYID);
        citySearchHidden.attr('chosen', search_phrases[1]);
    }
});
autocomplete.click(function() {
    jQuery(this).val('');
    jQuery(this).css('color', '');
});
autocomplete.focus(function() {
    jQuery(this).val('');
    jQuery(this).css('color', '');
});
autocomplete.blur(function() {
    if (citySearchHidden.attr('chosen') == 'none') {
        citySearchHidden.val(4);
        jQuery(this).val(search_phrases[0]);
        jQuery(this).css('color', 'gray');
    }
    else {
        jQuery(this).val(citySearchHidden.attr('chosen'));
    }
});
jQuery("ul.ui-autocomplete").click(function() {
    jQuery(this).val('');
    jQuery(this).css('color', '');
});
autocomplete.autocomplete({
    source: function(request, response) {
        jQuery.ajax({
            url: "/Cities.aspx",
            dataType: "xml",
            data: {
                q: request.term,
                c: JSMAN_CITYID,
                l: JSMAN_LANGID
            },
            success: function(data) {
                response(jQuery("city", data).map(function() {
                    return {
                        value: jQuery(this).text(),
                        id: jQuery(this).attr('id')
                    };
                })
                );
            }
        });
    },
    select: function(event, ui) {
        citySearchHidden.val(ui.item.id);
        citySearchHidden.attr('chosen', ui.item.value);
        autocomplete.blur();
    },
    minLength: 3
}).data("autocomplete")._renderItem = function(ul, item) {
    return jQuery("<li></li>")
        .data("item.autocomplete", item)
        .append("<a>" + item.value + "</a>").attr('id', item.id)
        .appendTo(ul);
};

function GetCountries(helper) {
    if (helper != null)
        searchhelper = jQuery(helper);
    else
        searchhelper = jQuery(searchhelperMain);
    if (searchhelper.html() != '') {
        searchhelper.css('display', 'block');
        return;
    }
    jQuery.ajax({
        url: "/Cities.aspx",
        dataType: "xml",
        data: {
            all: 1,
            l: JSMAN_LANGID
        },
        success: function(xml) {
            var options = '';
            jQuery(xml).find("country").each(function() {
                options += '<option id="' + jQuery(this).attr("id") + '">' + jQuery(this).attr("name") + '</option>';
            });
            if (searchhelper.html() == '') {
                searchhelper.append('<div class="close"></div><select id="countries"><option id="0">' + search_phrases[2] + '</option>' + options + '</select>');
                searchhelper.append('<select id="cities"><option id="0">' + search_phrases[3] + '</option>' + '' + '</select>');
            }
            jQuery("select#countries").bind("change", function(e) {
                var countryID = e.currentTarget.options[e.currentTarget.selectedIndex].id;
                if (countryID > 0) {
                    jQuery(xml).find("country").each(function() {
                        if (jQuery(this).attr("id") == countryID) {
                            var cities = '';
                            jQuery(this).find("city").each(function() {
                                cities += '<option id="' + jQuery(this).attr("id") + '">' + jQuery(this).text() + '</option>';
                            });
                            jQuery("select#cities").html('<option id="0">' + search_phrases[3] + '</option>' + cities);
                        }
                    });
                }
                else {
                    jQuery("select#cities").html('<option id="0">' + search_phrases[3] + '</option>');
                }
            });

            searchhelper.blur(function() {
                if (citySearchHidden.attr('chosen') == 'none') {
                    citySearchHidden.val(4);
                    jQuery(this).val(search_phrases[0]);
                    jQuery(this).css('color', 'gray');
                }
                else {
                    jQuery(this).val(citySearchHidden.attr('chosen'));
                }
            });
            jQuery("select#cities").bind("change", function(e) {
                var city = e.currentTarget.options[e.currentTarget.selectedIndex];
                if (city.id > 0) {
                    var valueText = jQuery("select#countries option:selected").text() + ', ' + city.value;
                    citySearchHidden.val(city.id);
                    citySearchHidden.attr('chosen', valueText);
                    autocomplete.val(valueText);
                    autocomplete.css('color', '');
                    searchhelper.css('display', 'none');
                    searchhelper.blur();
                }
            });
            if (helper != null) {
                jQuery(helper + ">.close").bind("click", function() {
                    searchhelper.css('display', 'none');
                });
            } else {
                jQuery(searchhelperMain+">.close").bind("click", function() {
                    searchhelper.css('display', 'none');
                });
            }
        }
    });
    searchhelper.css('display', 'block');
}   
