﻿var Cities = function(){};
Cities.dURL = "/DesktopModules/BSWeb.Cities/Dispatcher.aspx"

Cities.textbox = null;
Cities.listbox = null;

Cities.timeout = null;
Cities.hidetimeout = null;

Cities.selectedIndex = -1;
Cities.maxIndex = -1;

Cities.autoposition = 1;

Cities.init = function() {
}

Cities.textboxKeyDown = function(evt, textbox) {
    switch (evt.keyCode) {
        case 38:
            Cities.upSelection();
            break;
        case 40:
            Cities.downSelection();
            break;
        case 13:
            Cities.setCurrentCity();
            return false;
            break;
        case 9:
            //comboBoxListSelected();
            break;
        default:
    }
}

Cities.textboxKeyUp = function(evt, textbox) {
    switch (evt.keyCode) {
        case 38:
            break;
        case 40:
            break;
        case 13:
            break;
        case 9:
            break;
        default:
            clearTimeout(Cities.timeout);
            Cities.timeout = setTimeout("Cities.getCities('" + textbox.id + "','" + textbox.value + "')", 500);
    }
}

Cities.upSelection = function() {
    if (Cities.selectedIndex <= 0) {
        if (Cities.maxIndex >= 0) {
            Cities.unselectCity(bsweb.$('tblCity0'));
            Cities.selectCity(bsweb.$('tblCity' + Cities.maxIndex));
            Cities.selectedIndex = Cities.maxIndex;
        }
    } else {
        if (Cities.selectedIndex != -1) {
            Cities.unselectCity(bsweb.$('tblCity' + Cities.selectedIndex));
        }
        Cities.selectCity(bsweb.$('tblCity' + (Cities.selectedIndex - 1)));
        Cities.selectedIndex -= 1;
    }
}

Cities.downSelection = function() {
    if ((Cities.selectedIndex >= Cities.maxIndex) || (Cities.selectedIndex == -1)) {
        if (Cities.maxIndex >= 0) {
            Cities.unselectCity(bsweb.$('tblCity' + Cities.maxIndex));
            Cities.selectCity(bsweb.$('tblCity0'));
            Cities.selectedIndex = 0;
        }
    } else {
        if (Cities.selectedIndex != -1) {
            Cities.unselectCity(bsweb.$('tblCity' + Cities.selectedIndex));
        }
        Cities.selectCity(bsweb.$('tblCity' + (Cities.selectedIndex + 1)));
        Cities.selectedIndex += 1;
    }
}

Cities.setCurrentCity = function() {
    if ((Cities.maxIndex >= 0) && (Cities.selectedIndex != null) && (Cities.selectedIndex != -1)) {
        Cities.setCity(bsweb.$('tblCity' + Cities.selectedIndex).getAttribute('cityName'));
    }
}

Cities.getCities = function(textboxid, value) {
    clearTimeout(Cities.timeout);
    if (value == '') { return false; }
    var pars = "Action=getCities";
    pars += "&textboxid=" + textboxid;
    pars += "&Keyword=" + encodeURIComponent(value);
    pars += "&IE=" + Math.random();
    Cities.Ajax({ method: 'post', onSuccess: Cities.listLoaded, parameters: pars });
}

Cities.listLoaded = function(s) {
    Cities.selectedIndex = -1;
    Cities.maxIndex = parseInt(s.getResponseHeader('maxIndex'));
    var textbox = bsweb.$(s.getResponseHeader('textboxid'));
    Cities.textbox = textbox;
    if (s.get_responseData() != "") {
        Cities.listbox.innerHTML = s.get_responseData();
        Cities.listbox.style.display = "";
        var bounds = bsweb.getBounds(textbox);
        if (Cities.autoposition == 1) {
            Cities.listbox.style.left = bounds.x + "px";
            Cities.listbox.style.top = (bounds.y + bounds.height) + "px";
        }
        Cities.listbox.style.width = (bounds.width) + "px";
    } else {
        Cities.listbox.innerHTML = "";
        Cities.listbox.style.display = "none";
    }
}

Cities.setCity = function(city) {
    Cities.hideList();
    Cities.textbox.value = city;
}

Cities.selectCity = function(tbl) {
    tbl.className = "bswebCitySel";
}

Cities.unselectCity = function(tbl) {
    tbl.className = "bswebCityIdle";
}

Cities.hideTimeout = function() {
    clearTimeout(Cities.hidetimeout);
    Cities.timeout = setTimeout("Cities.hideList()", 500);
}

Cities.hideList = function() {
    Cities.listbox.style.display = "none";
    clearTimeout(Cities.hidetimeout);
}

Cities.Ajax = function(options)
{
	new bsweb.Ajax.Request(Cities.dURL, options);
}
