// Citylets custom combobox


var defaultMessage = "Please select...";

var listReset = false;

var emptyJson = {
    label: 'name',
    items: []
};

var defaultJson = {
    label: 'name',
    items: [
		{ city_id: '1', name: 'Edinburgh' },
		{ city_id: '1,c', name: 'Edinburgh - City Centre' },
		{ city_id: '1,s', name: 'Edinburgh - South' },
		{ city_id: '1,n', name: 'Edinburgh - North' },
		{ city_id: '1,e', name: 'Edinburgh - East' },
		{ city_id: '1,w', name: 'Edinburgh - West' },
		{ city_id: '', name: ' ' },
		{ city_id: '2', name: 'Glasgow' },
		{ city_id: '2,c', name: 'Glasgow - City Centre' },
		{ city_id: '2,s', name: 'Glasgow - South' },
		{ city_id: '2,n', name: 'Glasgow - North' },
		{ city_id: '2,e', name: 'Glasgow - East' },
		{ city_id: '2,w', name: 'Glasgow - West' },
		{ city_id: '', name: ' ' },
		{ city_id: '80', name: 'Belfast' },
		{ city_id: '80,c', name: 'Belfast - City Centre' },
		{ city_id: '80,s', name: 'Belfast - South' },
		{ city_id: '80,n', name: 'Belfast - North' },
		{ city_id: '80,e', name: 'Belfast - East' },
		{ city_id: '80,w', name: 'Belfast - West' },
		{ city_id: '', name: ' ' },
		{ city_id: '3', name: 'Aberdeen' },
		{ city_id: '4', name: 'Dundee' },
		{ city_id: '76', name: 'Newcastle Upon Tyne' },
		{ city_id: '', name: ' ' },
		{ city_id: '9', name: 'Aberdeenshire' },
		{ city_id: '71', name: 'Angus' },
		{ city_id: '40', name: 'Argyll and Bute' },
		{ city_id: '40,Helensburgh', name: ' - Helensburgh' },
		{ city_id: '40,Oban', name: ' - Oban' },
		{ city_id: '42', name: 'East Ayrshire' },
		{ city_id: '42,Kilmarnock', name: ' - Kilmarnock' },
		{ city_id: '44', name: 'North Ayrshire' },
		{ city_id: '46', name: 'South Ayrshire' },
		{ city_id: '46,Ayr', name: ' - Ayr' },
		{ city_id: '35', name: 'Borders' },
		{ city_id: '70', name: 'Clackmannanshire' },
		{ city_id: '81', name: 'Co Antrim' },
		{ city_id: '81,Ballycastle', name: ' - Ballycastle' },
		{ city_id: '81,Ballymena', name: ' - Ballymena' },
		{ city_id: '81,Carrickfergus', name: ' - Carrickfergus' },
		{ city_id: '81,Larne', name: ' - Larne' },
		{ city_id: '81,Lisburn', name: ' - Lisburn' },
		{ city_id: '81,Newtownabbey', name: ' - Newtownabbey' },
		{ city_id: '81,Portrush', name: ' - Portrush' },
		{ city_id: '84', name: 'Co Armagh' },
		{ city_id: '82', name: 'Co Down' },
		{ city_id: '82,Bangor', name: ' - Bangor' },
		{ city_id: '82,Newtownards', name: ' - Newtownards' },
		{ city_id: '82,Newry City', name: ' - Newry City' },
		{ city_id: '86', name: 'Co Fermanagh' },
		{ city_id: '83', name: 'Co Londonderry' },
		{ city_id: '83,Coleraine', name: ' - Coleraine' },
		{ city_id: '83,Derry City', name: ' - Derry City' },
		{ city_id: '85', name: 'Co Tyrone' },
		{ city_id: '58', name: 'Dumfries and Galloway' },
		{ city_id: '60', name: 'East Dunbartonshire' },
		{ city_id: '62', name: 'West Dunbartonshire' },
		{ city_id: '64', name: 'East Lothian' },
		{ city_id: '37', name: 'Falkirk' },
		{ city_id: '37,Falkirk Town', name: ' - Falkirk Town' },
		{ city_id: '7', name: 'Fife' },
		{ city_id: '7,Dunfermline', name: ' - Dunfermline' },
		{ city_id: '7,Kirkcaldy', name: ' - Kirkcaldy' },
		{ city_id: '7,Glenrothes', name: ' - Glenrothes' },
		{ city_id: '73', name: 'Highland' },
		{ city_id: '73,Fort William', name: ' - Fort William' },
		{ city_id: '73,Inverness', name: ' - Inverness' },
		{ city_id: '73,Kyle of Lochalsh', name: ' - Kyle of Lochalsh' },
		{ city_id: '73,Mallaig', name: ' - Mallaig' },
		{ city_id: '73,Nairn', name: ' - Nairn' },
		{ city_id: '73,Portree', name: ' - Portree' },
		{ city_id: '56', name: 'Inverclyde' },
		{ city_id: '56,Gourock', name: ' - Gourock' },
		{ city_id: '56,Greenock', name: ' - Greenock' },
		{ city_id: '48', name: 'North Lanarkshire' },
		{ city_id: '48,Airdrie', name: ' - Airdrie' },
		{ city_id: '48,Coatbridge', name: ' - Coatbridge' },
		{ city_id: '48,Cumbernauld', name: ' - Cumbernauld' },
		{ city_id: '48,Motherwell', name: ' - Motherwell' },
		{ city_id: '74', name: 'Orkney Islands' },
		{ city_id: '50', name: 'South Lanarkshire' },
		{ city_id: '50,East Kilbride', name: ' - East Kilbride' },
		{ city_id: '50,Hamilton', name: ' - Hamilton' },
		{ city_id: '66', name: 'MidLothian' },
		{ city_id: '72', name: 'Moray' },
		{ city_id: '72,Elgin', name: ' - Elgin' },
		{ city_id: '72,Forres', name: ' - Forres' },
		{ city_id: '8', name: 'Perthshire' },
		{ city_id: '8,Perth', name: ' - Perth' },
		{ city_id: '52', name: 'Renfrewshire' },
		{ city_id: '52,Johnstone', name: ' - Johnstone' },
		{ city_id: '52,Paisley', name: ' - Paisley' },
		{ city_id: '54', name: 'East Renfrewshire' },
		{ city_id: '75', name: 'Shetland Islands' },
		{ city_id: '38', name: 'Stirling' },
		{ city_id: '38,Loch Lomond', name: ' - Loch Lomond' },
		{ city_id: '38,Stirling Town', name: ' - Stirling Town' },
		{ city_id: '68', name: 'West Lothian' },
		{ city_id: '68,Livingston', name: ' - Livingston' }
	]
};


function cityClick() {
    if (djCity.get("value") == defaultMessage) {
        djCity.set("value", "");
    }
}

function doChange() {
    var curVal = dojo.trim(djCity.get("value"));
    if (curVal == text) return;
    var cityId;
    if (curVal.indexOf("- ") == 0) {
        //djCity.set("value", curVal.substr(2));
        try {
            cityId = djCity.item.city_id[0];
            comboForceNameValue(curVal.substr(2), cityId);
        }
        catch (e) { }

    }
    if (searchType == "A" || searchType=="V") {
        // Call to show the areas checklists
        var v = getSearchValue();
        ShowHideAreas2(v);
        if (v.charCodeAt(0) <= 47 || v.charCodeAt(0) >= 58) {
            try {
                cityId = djCity.item.city_id[0];
                comboForceNameValue(v, cityId);
            }
            catch (e) { }
        } else {
            if (searchType == "A") parent.comboForceValue(v);
        }
    }
    CalculateMatches();
}

function cityBlur() {
    if (dojo.trim(djCity.get("value")) == "") {
        citySetDefaultValue();
    }
}

function cityKeyPress() {

    // User has pressed a key
    listReset = false;

    // Check that something has been entered
    if (dojo.trim(djCity.get("value")) == "") {
        citySetDefaultData();
        return;
    }

    var cityId = "";
    try {
        cityId = djCity.item.city_id[0];
    }
    catch (e) { }

    if (djCity.attr("value").length > 1 && cityId == "") {
        getAjaxData(djCity.get("value"));
    }
    else {
        if (cityId == "") {
            // Point to blank store to disable typeahead
            djCity.attr('store', new dojo.data.ItemFileReadStore({ data: emptyJson }));
            djCity.loadDropDown();
        }
    }
    ChangeFreeText();

}

function getSearchValue() {
    var searchVal = "";
    try {
        searchVal = djCity.item.city_id[0];
    }
    catch (e) {
        searchVal = djCity.get("value");
    }
    return searchVal;
}


function citySetDefaultLoad() {
	citySetDefaultData();
	if (freetextValue != null && freetextValue != "" && freetextValue != text && searchType != null && searchType != "F") {
	        djCity.attr("value", freetextValue);
    }
}

function citySetDefault() {
    // Set default values
    citySetDefaultData();
    citySetDefaultValue();
}



function comboSetSelected(item) {
    djCity.set('value', item.name[0]);
    djCity.item = item;
}


function comboForceNameValue(label, value) {
    djCity.set('value', label);
    djCity.item = { city_id: [value], name: [label] };
}


function comboForceValue(value) {
    var fetchArgs = {
        query: { city_id: value },
        onItem: comboSetSelected
    };
    djCity.store.fetch(fetchArgs);
}


function citySetDefaultValue() {
    if (freetextValue == '' && cityValue == '') {
        djCity.attr("value", defaultMessage);
    } else {
        if (cityValue != '') {
            comboForceValue(cityValue);
        } else {
            djCity.attr("value", freetextValue);
        }
    }
}

function citySetDefaultData() {
    var store = new dojo.data.ItemFileReadStore({ data: defaultJson });
    djCity.set('store', store);
}

function getAjaxData(str) {

    // Configure ajax get
    var xhrArgs = {
        url: bp+"/autosugestion/autocompletejson.aspx",
        form: dojo.byId("ajax-form"),
        handleAs: "text",
        content: {
            a: str
        },
        headers: {
            "X-Requested-With": null
        },
        load: function (data) {
            callbackUpdateOptions(data);
        },
        error: function (error) {
            // Do nothing
        }
    }

    /* Do asyc get */
    var deferred = dojo.xhrGet(xhrArgs);
}

function callbackUpdateOptions(jsonData) {
    // Callback
    if (dojo.trim(jsonData) != "") {
        var json = dojo.fromJson(jsonData + "}");
        var newOptions = dojo.clone(emptyJson);
        newOptions.items = json.results;
        var newstore = new dojo.data.ItemFileReadStore({ data: newOptions });
        djCity.set('store', newstore);
        djCity.loadDropDown();
    }
}

function doToggle() {
    citySetDefaultData();

    if (dojo.trim(djCity.get("value")) != "" &&
		dojo.trim(djCity.get("value")) != defaultMessage &&
		listReset != true) {
        listReset = true;
        djCity.loadDropDown();
    }
    else {
        listReset = false;
    }

}

function cityOnLoad() {
    dojo.parser.parse();
    dojo.connect(djCity, "toggleDropDown", doToggle);
    dojo.connect(djCity, "onChange", doChange);
    dojo.connect(djCity, "onKeyUp", cityKeyPress);
    dojo.connect(djCity, "onBlur", cityBlur);
    dojo.connect(djCity, "onClick", cityClick);
    dojo.connect(djCity, "onKeyPress", checkEnterFromFreeText);
    dojox.io.xhrPlugins.addCrossSiteXhr("http://www.citylets.co.uk");
    djCity.set("autocomplete", false);
    citySetDefaultLoad();
}

/*
dojo.addOnLoad(function () { cityOnLoad(); });
*/

