﻿(function(){
if (typeof window.$5 == 'undefined') window.$5 = {};
var input = $('#hotCityListInput');
var pos = input.offset();
var fpHotCity = floatPanel({
    target:$('#hotCityListDiv'),
    position:[pos.left,pos.top+24],
    width:340,
    autoFollow:false,
    autoHide:true,
    enableEsc:true,
    onHide:function(){
        if ($.browser.msie && $.browser.version < 7) {
            $('select').css('visibility','visible');
        }
    }
});

var city = window.$5.city = {};
city.init = function(){
    var lastCity = '';
    $('#hotCityListImg').click(function(){
        if ($.browser.msie && $.browser.version < 7) {
            $('select').css('visibility','hidden');
        }
        fpHotCity.show();
    });
    
    input.focus(function(){
        fpHotCity.hide();
    });
    
    city.loadCityList();
    
    var sh = new $5.smartHint();	
	sh.onBeforeShow = function(inputer, hinter) {
		var name = $.trim(inputer.val());
		if (name == lastCity) return false;
		lastCity = name;
		if(!name) {
		    inputer.removeClass('warn');
		    return false;
		}
        this.clearHints();		
		var find = false;
		
	    for (var k in city.cityList) {
	        if (k == name || k.indexOf(name) == 0) {
	            find = true;
	            lastCity = k;
	            this.addHint(k.replace(name, '<span class="orange">' + name + '</span>'));
	        }
	    }
		if (!find) {
		    inputer.addClass('warn');
		    this.addWarn('输入错误');
		} else inputer.removeClass('warn');
		return true;
	};
	sh.onAppendHint = function(inputer, hinter, text) {
	    if (text != '输入错误') inputer.val(text);
	};
	sh.init($('#hotCityListInput'), $('#smartHint'), true);
    
//    input.keyup(function(e){
//        var p = {word:input.value};
//        if (/[\u4E00-\u9FA5]{1,8}/.test(input.value)){
//            p.type = 0;
//        } else if(/[a-zA-Z]{1,5}/.test(input.value)){
//            p.type = 1;
//        } else {
//            
//        }
//    });
    
};
city.cityList = [];
city.loadCityList = function(){
//    $5.ajax("City.CityList", {}, function(ret){
//        if (0 == ret.Status) {
//            city.cityList = ret.Data; 
//            city.initHotCityList();
//        } else alert(ret.Error);
//    });
    city.initHotCityList();
};

city.check = function(name) {
    if (!city.exist(name)) {
        return false;
    }
    return true;
};
city.exist = function(name) {
    if (!city.cityList[name]) {
        $('#hotCityListInput').addClass('warn').focus();
        return false;
    }
    return true;
};
city.getCity = function(name) {
    return city.cityList[name];
};
city.initHotCityList = function() {
    var hotList = [],count=0,row=[];
    for (var k in city.cityList) {
        if (city.cityList[k].isHot) {
            if (count % 4 == 0) {
                if (row.length > 0) hotList.push(row);
                row = [];
                count++;
            }
            row.push(k);
        }
    }
    if(row.length > 0) hotList.push(row);
    var table = $5('hotCityListTable');
    if ($.browser.msie) table = table.childNodes[0]
    for (var i = 0, r = hotList.length; i < r; i++) {
        var tr = document.createElement('tr');
        for (var j = 0, l = hotList[i].length; j < 4; j++) {
            var td = document.createElement('td');
            if (j < l) {
                td.innerHTML = hotList[i][j];
                td.onclick = function(){
                    input.val(this.innerHTML);
                    input.removeClass('warn');
                    fpHotCity.hide();
                };
            } else {
                td.style.cursor = 'default';
            }
            tr.appendChild(td);
        }
        table.appendChild(tr);
    }
};
city.loadScenics=function(cityName, callback) {
    callback = callback || function(){};
    var id = (city.getCity(cityName)).id;
    if (typeof this.scenicsCache[id] != 'undefined') {
        callback(this.scenicsCache[id]);
        return;
    }
    $5.ajax("City.Scenics", {cityId:id}, function(ret){
        if (ret.Status == 0) {
            city.scenicsCache[id] = ret.Data;
            callback(ret.Data);
        }
    });
};
city.getScenic = function(cityName ,scenic) {
    var c = this.getCity(cityName);
    var scenics = this.scenicsCache[c.id];
    for (var i = 0, len = scenics.length; i < len; i++) {
        var s = scenics[i];
        if (s.name == scenic) return s;
    }
};
city.scenicsCache={};
})()