﻿/*
 Copyright (c) 2008, HNAS Co. Ltd,
 Version: 1.0.3Alpha
 Create by Yongm_wang
 */
zz.string.address = {
    "zh-cn": {
        b: "输入中文/拼音/机场代码或↑↓选择.",
        i: "输入",
        j: "或↑↓选择.",  
        k: "中文/拼音",
        e: "请输入至少两个字母或一个汉字.",
        h: "",
        o: "按拼音排序",
        s: "对不起, 找不到: ",
        l: "结果共",
        p: "项,←→翻页",
        a: ",共"
    },
    "zh-tw": {
        b: "輸入中文/拼音或↑↓選擇.",
        i: "輸入",
        j: "或↑↓選擇.",
        k: "中文/拼音",
        e: "請輸入至少兩個字母或一個漢字.",
        h: "",
        o: "按拼音排序",
        s: "對不起, 找不到: ",
        l: "結果共",
        p: "項,←→翻頁",
        a: ",共"
    },
    "en": {
        b: "Type or scroll to select.",
        i: "Input ",
        j: " or use up or down to select.",
        k: "English",
        e: "Please Input at least two character.",
        h: "",
        o: "sort by spelling",
        s: "No match",
        l: "Results ",
        p: ",left or right to turn page",
        a: ",All"
    }
}[zz.status.version];

zz.module.address.sourceMap = {
    "city": ["js/coolcity/PGSCity.html", "utf-8"]
};

//zloadCss("/js/coolcity/coolcity.css");

function sortFunc(c, b){
    var e = c.match(/^[^\|]+/), f = b.match(/^[^\|]+/);
    return e > f ? 1 : (e == f ? 0 : -1)
}
(function c_address(){
    var i = zc("div");
    i.id = "cool_address";
    with (i.style) {
        display = "none";
        position = "absolute";
        zIndex = "120";
        overflow = "hidden"
    }
    i.innerHTML = "<div id=\"address_warp\"><div id=\"address_message\">&nbsp;<\/div><div id=\"address_list\"><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><a class=\"a1\" href=\"###\"><span>&nbsp;<\/span>&nbsp;<\/a><\/div><div class=\"address_pagebreak\" id=\"address_p\"><a id=\"address_arrowl\" href=\"javascript:;\" name=\"p\">&lt;-<\/a><a id=\"address_p1\" href=\"javascript:;\" name=\"1\" class=\"address_current\">1<\/a><a id=\"address_p2\" href=\"javascript:;\" name=\"2\">2<\/a><a id=\"address_p3\" href=\"javascript:;\" name=\"3\">3<\/a><a id=\"address_p4\" href=\"javascript:;\" name=\"4\">4<\/a><a id=\"address_p5\" href=\"javascript:;\" name=\"5\">5<\/a><a id=\"address_arrowr\" href=\"javascript:;\" name=\"n\">-&gt;<\/a><\/div><\/div>";
    
    z("jsContainer").appendChild(i);
    
    zz.module.address.source["default"] = "@@";
    
    var K = z("address_warp"), u = z('address_message'), A = z('address_list'), v = [z('address_p'), z('address_p1'), z('address_p2'), z('address_p3'), z('address_p4'), z('address_p5')], B = z('address_arrowl'), C = z('address_arrowr'), h = A.getElementsByTagName("a"), L = [];
    
    for (var D = 0; D < h.length; D++) 
        L[D] = h[D].cloneNode(true);
    
    function M(){
        function Q(d){
            var n = 0, r, s = d.zgetWin();
            var a = d.module.address = {};
            var R, w, g = null, t, p = [];
            d.setAttribute("autoComplete", "off");
            zr("beforeunload", function(){
                d.setAttribute("autoComplete", "on")
            });
            a.focusNext = d.getAttribute("mod_address_focusNext");
            a.focusNext = /^(1|true)$/i.test(a.focusNext || "");
            a.reference = d.getAttribute("mod_address_reference");
            var m = d.getAttribute("mod_address_cookie");
            if (m) {
                m = s.z(m);
                if (!m) {
                    var G = s.zc("input");
                    with (G) {
                        type = "hidden";
                        id = name = m
                    }
                    m = G;
                    d.parentNode.insertBefore(m, d)
                }
            }
            
            if (a.reference) 
                a.reference = s.z(a.reference) || s.z(a.reference, true);
            
            var x = d.getAttribute("mod_address_suggest");
            if(x){
				x = "@Guangzhou|广州|CAN@Chongqing|重庆|CKG@Chengdu|成都|CTU@Haikou|海口|HAK@Nanjing|南京|NKG@Beijing|北京|PEK@Shanghai|上海|SHA@Sanya|三亚|SYX@Shenzhen|深圳|SZX@Wuhan|武汉|WUH@Xiamen|厦门|XMN@";
			}
            var H = d.getAttribute("mod_address_cookieSuggest");
            a.suggest = [];
            if (H) {
                a.suggest = H.match(/[^@]+@/gi);
                if (x) 
                    a.suggest._0(x.match(/[^@]+@/gi))
            }
            else 
                if (x) 
                    a.suggest = x.match(/[^@]+@/gi);
            
            if (a.suggest.length > 12) 
                a.suggest = a.suggest.slice(0, 12);
            a.source = d.getAttribute("mod_address_source") || "default";
            if (!zz.module.address.source[a.source]) {
                zz.module.address.source[a.source] = "@@";
                if (zz.module.address.sourceMap[a.source]) {
                    zloadJs(zz.module.address.sourceMap[a.source][0].replace(/\{\$charset\}/gi, zz.status.charset), (zz.module.address.sourceMap[a.source][1] || "").replace(/\{\$charset\}/gi, zz.status.charset) || zz.status.charset);
                }
                else {
                    zloadJs("coolcity.js", zz.status.charset)
                }
            }
            a.auto = d.getAttribute("mod_address_auto");
            a.auto = a.auto && a.auto.match(/^(false|0)$/i) ? false : true;
            a.redraw = function(){
                if (w) 
                    F()
            };
            a.hook = {};
            (d.getAttribute("mod_address_hook") || "").replace(/(on)?([^;:]+):([^;]+)/gi, function(c, b, e, f){
                a.hook[e.toLowerCase()] = s[f]
            });
            function N(){
                if (n) {
                    n = 0;
                    return
                }
                r = false;
                A.style.display = u.style.display = v[0].style.display = "none";
                function e(b){
                    h[b].onmousedown = function(c){
						
                        z(b);
                        zstopEvent(c);
						if(h[b].outerHTML) h[b].outerHTML = h[b].outerHTML + ' ';
                        //if (h[b].replaceNode) h[b].replaceNode(L[b].cloneNode(true));
                        d.blur()
                    }
                }				
                i.onmousedown = function(){
                    n = 1
                };
                for (var f = 0; f < h.length; f++) 
                    new e(f);
                B.onmousedown = C.onmousedown = y;
                for (var f = 1; f < v.length; f++) 
                    v[f].onmousedown = y;
                t = null;
                if (g !== null) 
                    h[g].className = "address_selected";
                if (a.hook["focus"]) 
                    a.hook["focus"](d);
                setTimeout(F, 0);
                w = setInterval(F, 150)
            }
            
            function y(c){
                n = 1;
                if (c) 
                    zstopEvent(c);
                switch (this) {
                    case B:
                        k.m_get(k.page - 1);
                        break;
                    case C:
                        k.m_get(k.page + 1);
                        break;
                    default:
                        k.m_get(parseInt(this.firstChild.nodeValue))
                }
            }
            
            var k = new function(){
                var o;
                this.page = 1;
                this.pagelist;
                this.maxpage = 1;
                this.m_get = function(c){
                    if (!o || !c || c < 1 || c > this.maxpage) 
                        return null;
                    this.page = c;
                    this.pagelist = o.slice((c - 1) * 12, Math.min(c * 12, o.length));
                    for (var b = 0; b < h.length; b++) {
                        if (b < this.pagelist.length) {
                            h[b].style.display = "block";
                            var e = this.pagelist[b].replace(/@/g, "").split("|");
                            h[b].lastChild.nodeValue = e[1];
                            h[b].firstChild.firstChild.nodeValue = e[0];
                            p[b] = e
                        }
                        else {
                            h[b].style.display = "none";
                            p[b] = null
                        }
                    }
                    if (g !== null) {
                        if (g >= this.pagelist.length) {
                            h[g].className = "";
                            g = this.pagelist.length - 1;
                            h[g].className = "address_selected"
                        }
                    }
                    else {
                        g = 0;
                        h[0].className = "address_selected"
                    }
                    l.call(this);
                    A.style.display = u.style.display = "";
                    if (!r) {
                        i.style.display = "";
                        i.zsetPos(d);
                        i.zsetIframe();
                        r = true
                    }
                    E.call(this)
                };
                
                this.m_set = function(c){
                    o = c;
                    this.maxpage = Math.ceil(c.length / 12);
                    this.page = 1;
                    this.m_get(1)
                };
                
                function l(){
                    var c = this.maxpage < 6 || this.page < 3 ? 1 : this.page > this.maxpage - 2 ? this.maxpage - 4 : this.page - 2;
                    var b = Math.min(c + 4, this.maxpage);
                    var e;
                    B.style.display = this.page == 1 ? "none" : "";
                    C.style.display = this.page == this.maxpage ? "none" : "";
                    for (var f = c; f < c + 5; f++) {
                        e = v[f - c + 1];
                        if (f <= b) {
                            e.firstChild.nodeValue = f;
                            e.className = f == this.page ? "address_current" : "";
                            e.style.display = ""
                        }
                        else 
                            e.style.display = "none"
                    }
                    v[0].style.display = this.maxpage > 1 ? "block" : "none"
                }
            };
            
            function E(){
                with (i.style) {
                    width = K.offsetWidth + "px";
                    height = K.offsetHeight + "px"
                }
                i.zsetIframe()
            }
            function I(){
                if (a.suggest.length == 0) {
                    i.style.display = "none";
                    if (g !== null) {
                        h[g].className = "";
                        g = null
                    }
                    return
                }
                k.m_set(a.suggest);
                u.lastChild.nodeValue = zz.status.version.match(/^zh-/) ? zz.string.address.i + (d.module.notice ? d.module.notice.tip : zz.string.address.k) + zz.string.address.j : zz.string.address.b
            }
            
            function F(){
                var b = d.value.trim();
                if (b === t) 
                    return;
                t = b;
                b = b.replace(/([\(\)\\\[\]\.\+\?\*\|\^\$])/gi, "\\z1").replace(/@|\|/gi, "");
                if (!b) {
                    I();
                    E();
                    return
                }
                i.style.display = "";
                var e = zz.module.address.source[a.source];
                var f = new RegExp("@([^@]*\\|)?" + b + "[^@]*", "gi");
                var o = new RegExp("@[^@]*" + b + "[^@]*", "gi");
                var l = [], j = [];
                e = e.replace(f, function(c){
                    l.push(c);
                    return ""
                });
                if (l) 
                    l.sort(sortFunc);
                e = e.replace(o, function(c){
                    j.push(c);
                    return ""
                });
                if (j) 
                    j.sort(sortFunc);
                if (l && j) 
                    arr = l.concat(j);
                else 
                    arr = l || j;
                if (!arr || !arr.length) {
                    u.lastChild.nodeValue = a.auto ? (zz.string.address.s + (zz.status.version == "en" ? "" : d.value)) : (zz.string.address.h + d.value + ", " + zz.string.address.o);
                    if (!a.auto) {
                        i.style.display = "none";
                        if (g !== null) {
                            h[g].className = "";
                            g = null
                        }
                    }
                    if (A.style.display == "none") 
                        I();
                    E()
                }
                else {
                    u.lastChild.nodeValue = zz.string.address.h + d.value + ", " + zz.string.address.o;
                    k.m_set(arr)
                }
            }
            
            function O(c){
                var b = c ? c.keyCode : event.charCode;
                var e = "|" + b + "|";
                if (g == null) {
                    if ("|13|".indexOf(e) != -1) {
                        zstopEvent(c, 1);
                        if (a.focusNext) 
                            setTimeout(function(){
                                d.zfocusNext()
                            }, 1)
                    }
                    return true
                }
                if ("|13|".indexOf(e) != -1) {
                    zstopEvent(c, 1);
                    z(g);
                    d.blur()
                }
                if ("|33|37|109|188|219|".indexOf(e) != -1) {
                    y.call(B);
                    zstopEvent(c, 1)
                }
                if ("|34|39|61|190|221|".indexOf(e) != -1) {
                    y.call(C);
                    zstopEvent(c, 1)
                }
                if ("|38|40|".indexOf(e) != -1) {
                    h[g].className = "";
                    g += k.pagelist.length - 39 + b;
                    g %= k.pagelist.length;
                    h[g].className = "address_selected";
                    zstopEvent(c, 1)
                }
            }
            
            function z(c, b){
                n = 2;
                d.value = p[c][1] || p[c][0];
                if (a.reference) 
                    a.reference.value = p[c][2];
                if (m) 
                    m.value = p.join("|");
                if (a.hook["change"]) 
                    a.hook["change"](d);
                if (b !== false && a.focusNext) 
                    setTimeout(function(){
                        d.zfocusNext()
                    }, 1)
            }
            
            function P(){
                if (n == 1) {
                    setTimeout(function(){
                        d.focus()
                    }, 1);
                    return
                }
                clearInterval(w);
                w = null;
                i.zclearIframe();
                i.style.display = "none";
                if (g !== null) {
                    if (d.value && n != 2 && a.auto) 
                        z(g, false);
                    h[g].className = "";
                    g = null
                }
                n = 0;
                i.onmousedown = null
            }
            
            a.check = function(){
                var b = d.value.trim();
                if (d.isNull && d.isNull()) 
                    b = "";
                if (b === t) 
                    return;
                var e;
                t = b;
                b = b.replace(/([\(\)\\\[\]\.\+\?\*\|\^\$])/gi, "\\$1").replace(/@|\|/gi, "");
                if (b) {
                    var f = zz.module.address.source[a.source];
                    var o = new RegExp("@([^@]*\\|)?" + b + "[^@]*", "gi");
                    var l = new RegExp("@[^@]*" + b + "[^@]*", "gi");
                    var j = [], q = [];
                    f = f.replace(o, function(c){
                        j.push(c);
                        return ""
                    });
                    if (j) 
                        j.sort(sortFunc);
                    f = f.replace(l, function(c){
                        q.push(c);
                        return ""
                    });
                    if (q) 
                        q.sort(sortFunc);
                    if (j && q) 
                        e = j.concat(q);
                    else 
                        e = j || q;
                    if (e && e.length) {
                        r = true;
                        k.m_set(e);
                        r = false;
                        z(0, false);
                        n = 0
                    }
                }
                if (d.module.notice) 
                    d.module.notice.check();
                return !!e
            };
            d.zr("onfocus", N);
            d.blur();
            d.zr("onblur", P);
            d.zr("onkeydown", O);
            if (a.hook["load"]) 
                a.hook["load"](d);
        }		
			if (zz.module.address.list != null) {
				var J;
				while ((J = zz.module.address.list.shift()) != null) 
					new Q(J);
			}
    }
    zinit(M);
    M()
})();

function getCityNameByCode(code)
{
	if(code!=null && code!=""){
		var f = zz.module.address.source["city"];
		var l = new RegExp("@([^@]*)\\|([^@]*)\\|"+code+"@", "g");	
		var j="";
		f = f.replace(l, function(c){
						if(c!=""){
							j=c.split("|")[1];
						}                        
                    });
	   	if(j!=""){
			return j;
		}	 
		else{
			return code;
		}
	}
	else{
		return "";
	}	
}

