/*
 Copyright (c) 2008, HNAS Co. Ltd,
 Version: 1.0.2Beta
 Create by Yongm_wang
 */
 //All Domstic citys
 
 zz.module.address.source.city="@(USA)|Anchorage(ANC),AK|ANC@(USA)|Bellingham(BLI),WA|BLI@(USA)|Billings(BIL),MT|BIL@(USA)|Boise(BOI),ID|BOI@(USA)|Boston (BOS), MA|BOS@(USA)|Bozeman(BZN),MT|BZN@(USA)|Burbank(BUR),CA|BUR@(Canada)|Calgary (YYC),AB|YYC@(USA)|Chicago(ORD),IL|ORD@(USA)|Cleveland(CLE),OH|CLE@(USA)|Dallas/FortWorth(DFW),TX|DFW@(USA)|Denver(DEN),CO|DEN@(USA)|Eugene(EUG),OR|EUG@(USA)|Fairbanks(FAI),AK|FAI@(USA)|Fresno(FAT),CA|FAT@(USA)|Great Falls(GTF),MT|GTF@(USA)|Helena(HLN),MT|HLN@(USA)|Honolulu(HNL),HI|HNL@(USA)|Houston-George Bush Intercontinental(IAH),TX|IAH@(USA)|Juneau(JNU),AK|JNU@(USA)|Kahului(OGG),Maui,HI|OGG@(USA)|Kalispell(FCA),MT|FCA@(Canada)|Kelowna(YLW),BC|YLW@(USA)|Ketchikan(KTN),AK|KTN@(USA)|Las Vegas(LAS),NV|LAS@(USA)|Lewiston(LWS),ID|LWS@(USA)|Lihue,Kauai(LIH),HI|LIH@(USA)|Long Beach(LGB),CA|LGB@(USA)|Los Angeles(LAX),CA|LAX@(USA)|Medford(MFR),OR|MFR@(USA)|Missoula(MSO),MT|MSO@(USA)|New York(NYC),NY|NYC@(USA)|Newark(EWR),NJ|EWR@(USA)|Oakland(OAK),CA|OAK@(USA)|Ontario(ONT),CA|ONT@(USA)|Palm Springs(PSP),CA|PSP@(USA)|Phoenix(PHX),AZ|PHX@(USA)|Portland(PDX),OR|PDX@(USA)|Pullman(PUW),WA|PUW@(USA)|Redmond(RDM),OR|RDM@(USA)|Reno(RNO),NV|RNO@(USA)|Sacramento(SMF),CA|SMF@(USA)|San Diego(SAN),CA|SAN@(USA)|San Francisco(SFO),CA|SFO@(USA)|San Jose(SJC),CA|SJC@(USA)|Santa Ana(SNA),CA|SNA@(USA)|Seattle(SEA),WA|SEA@(USA)|Spokane(GEG),WA|GEG@(Canada)|Vancouver(YVR),BC|YVR@(Canada)|Victoria(YYJ),BC|YYJ@(USA)|Walla(ALW),WA|ALW@(USA)|Washington(WAS),WA|WAS@(USA)|Wenatchee(EAT),WA|EAT@(USA)|Yakima(YKM),WA|YKM@(Netherlands)|Amsterdam(AMS)|AMS@(Greece)|Athens(ATH)|ATH@(Spain)|Barcelona(BCN)|BCN@(Germany)|Berlin(TXL)|TXL@(Spain)|Bilbao(BIO)|BIO@(England,U.K.)|Birmingham(BHX)|BHX@(Italy)|Bologna(BLQ)|BLQ@(U.K.)|Bristol(BRS)|BRS@(Belgium)|Brussels(BRU)|BRU@(Romania)|Bucharest(BUH)|BUH@(Hungary)|Budapest(BUD)|BUD@(Italy)|Catania(CTA)|CTA@(Germany)|Cologne(CGN)|CGN@(Denmark)|Copenhagen(CPH)|CPH@(Syria)|Damascus(DAM)|DAM@(Ireland)|Dublin(DUB)|DUB@(Germany)|Dusseldorf(DUS)|DUS@(Italy)|Florence(FLR)|FLR@(Germany)|Frankfurt(FRA)|FRA@(Switzerland)|Geneva(GVA)|GVA@(Sweden)|Gothenburg(GOT)|GOT@(Germany)|Hamburg(HAM)|HAM@(Finland)|Helsinki(HEL)|HEL@(Turkey)|Istanbul(IST)|IST@(Germany)|Karlsruhe(FKB)|FKB@(Russian)|Krasnojarsk(KJA)|KJA@(Cyprus)|Larnaca(LCA)|LCA@(Portugal)|Lisbon(LIS)|LIS@(Slovenia)|Ljubljana(LJU)|LJU@(England,U.K.)|London(LON)|LON@(France)|Lyon(LYS)|LYS@(Spain)|Madrid(MAD)|MAD@(Spain)|Malaga(AGP)|AGP@(England,U.K.)|Manchester(MAN)|MAN@(France)|Marseille(MRS)|MRS@(Italy)|Milan(MIL)|MIL@(Russia)|Moscow(SVO)|SVO@(Germany)|Muenster(FMO)|FMO@(Germany)|Munich(MUC)|MUC@(England,U.K.)|Newcastle(NCL)|NCL@(France)|Nice(NCE)|NCE@(Germany)|Nuremberg(NUE)|NUE@(Ukraine)|Odessa(ODS)|ODS@(Norway)|Oslo(OSL)|OSL@(Spain)|Palma(PMI)|PMI@(France)|Paris(PAR)|PAR@(Montenegro)|Podgorica(TGD)|TGD@(Czech Republic)|Prague(PRG)|PRG@(Kosovo)|Pristina(PRN)|PRN@(Italy)|Rome(ROM)|ROM@(Bosnia and Herzegovina)|Sarajevo(SJJ)|SJJ@(Macedonia)|Skopje(SKP)|SKP@(Bulgaria)|Sofia(SOF)|SOF@(Croatia)|Split(SPU)|SPU@(Sweden)|Stockholm(STO)|STO@(Russia)|St.Petersburg(LED)|LED@(Germany)|Stuttgart(STR)|STR@(Israel)|Tel Aviv(TLV)|TLV@(Greece)|Thessaloniki(SKG)|SKG@(Romania)|Timisoara(TSR)|TSR@(France)|Toulouse(TLS)|TLS@(Bulgaria)|Varna(VAR)|VAR@(Italy)|Venice(VCE)|VCE@(Austria)|Vienna(VIE)|VIE@(Poland)|Warsaw(WAW)|WAW@(Croatia)|Zagreb(ZAG)|ZAG@(Switzerland)|Zurich(ZRH)|ZRH@(Ivory Coast)|Abidjan(ABJ)|ABJ@(The Gambia)|Banjul(BJL)|BJL@(Senegal)|Dakar(DKR)|DKR@(Cameroon)|Douala(DLA)|DLA@(Uganda)|Entebbe(EBB)|EBB@(Sierra Leone)|Freetown(FNA)|FNA@(Rwanda)|Kigali(KGL)|KGL@(Zaire)|Kinshasa(FIH)|FIH@(Angola)|Luanda(LAD)|LAD@(Liberia)|Monrovia(MLW)|MLW@(Kenya)|Nairobi(NBO)|NBO@(China)|Baise(AEB)|AEB@(China)|Baotou(BAV)|BAV@(China)|Beijing(PEK)|PEK@(China)|Changchun(CGQ)|CGQ@(China)|Changsha(CSX)|CSX@(China)|Changzhi(CIH)|CIH@(China)|Chengdu(CTU)|CTU@(China)|Chongqing(CKG)|CKG@(China)|Chifeng(CIF)|CIF@(China)|Dali(DLU)|DLU@(China)|Dalian(DLC)|DLC@(China)|Datong(DAT)|DAT@(China)|Dongying(DOY)|DOY@(China)|Duanhuang(DNH)|DNH@(China)|Enshi(ENH)|ENH@(China)|Fuzhou(FOC)|FOC@(China)|Guangzhou(CAN)|CAN@(China)|Guilin(KWL)|KWL@(China)|Guiyang(KWE)|KWE@(China)|Haerbin(HRB)|HRB@(China)|Haikou(HAK)|HAK@(China)|Hailaer(HLD)|HLD@(China)|Hangzhou(HGH)|HGH@(China)|Hanzhong(HZG)|HZG@(China)|Hefei(HFE)|HFE@(China)|Hong Kong(HKG)|HKG@(China)|Huangshan(HYN)|HYN@(China)|Huhehaote(HET)|HET@(China)|Jiamushi(JMU)|JMU@(China)|Jiayuguan(JGN)|JGN@(China)|Jilin(JIL)|JIL@(China)|Jinjiang(JJN)|JJN@(China)|Jiuzhaigou(JZH)|JZH@(China)|Kashi(KHG)|KHG@(China)|Kunming(KMG)|KMG@(China)|Lanzhou(LHW)|LHW@(China)|Lasa(LXA)|LXA@(China)|Manzhouli(NZH)|NZH@(China)|Mudanjiang(MDG)|MDG@(China)|Nanchang(KHN)|KHN@(China)|Nanjing(NKG)|NKG@(China)|Nanning(NNG)|NNG@(China)|Ningbo(NGB)|NGB@(China)|Qingdao(TAO)|TAO@(China)|Qingyang(IQN)|IQN@(China)|Qiqihaer(NDG)|NDG@(China)|Santou(SWA)|SWA@(China)|Sanya(SYX)|SYX@(China)|Shanghai Pudong(PVG)|PVG@(China)|Shanghai Hongqiao(SHA)|SHA@(China)|Shenyang(SHE)|SHE@(China)|Shenzhen(SZX)|SZX@(China)|shijiazhuang(SJW)|SJW@(China)|Taiyuan(TYN)|TYN@(China)|Tianjin(TSN)|TSN@(China)|Tongliao(TGO)|TGO@(China)|Weifang(WEF)|WEF@(China)|Weihai(WEH)|WEH@(China)|Wenzhou(WNZ)|WNZ@(China)|Wuhan(WUH)|WUH@(China)|Wulanhaote(HLH)|HLH@(China)|Wurumuchi(URC)|URC@(China)|Xi An(XIY)|XIY@(China)|Xiamen(XMN)|XMN@(China)|Xining(XNN)|XNN@(China)|Xuzhou(XUZ)|XUZ@(China)|Yan An(ENY)|ENY@(China)|Yancheng(YNZ)|YNZ@(United Arab Emirates)|Dubai(DXB)|DXB@(China)|Taipei(TPE)|TPE@(Vietnam)|Hanoi(HAN)|HAN@(China)|Yinchuan(INC)|INC@(USA)|Atlanta(ATL)|ATL@(USA)|Pendleton(PDT)|PDT@(USA)|Pasco(PSC)|PSC@(USA)|Tucson(TUS)|TUS@(Austin)|Austin(AUS)|Austin@(USA)|Miami(MIA)|MIA@(USA)|Orlando(ORL)|ORL@(USA)|Kona(KOA)|KOA@(Canada)|Edmonton(YEG)|YEG@(Sudan)|Khartoum(KRT)|KRT@(Thailand)|Bangkok(BKK)|BKK@(Russia)|Irkutsk(IKT)|IKT@";
 //Domstic hot citys
 zz.module.address.source.hotcity="@(China)|Beijing(PEK)|PEK@(USA)|Seattle(SEA),WA|SEA@(Belgium)|Brussels(BRU)|BRU@(Germany)|Berlin(TXL)|TXL@(Hungary)|Budapest(BUD)|BUD@(Russia)|St.Petersburg(LED)|LED@(Russia)|Moscow(SVO)|SVO@(United Arab Emirates)|Dubai(DXB)|DXB@(Angola)|Luanda(LAD)|LAD@(China)|Shanghai Hongqiao(SHA)|SHA@(China)|Guangzhou(CAN)|CAN@(China)|Haikou(HAK)|HAK@(Thailand)|Bangkok(BKK)|BKK@(Vietnam)|Hanoi(HAN)|HAN@(China)|Taipei(TPE)|TPE@";

 //All international citys
 zz.module.address.source.fcity=zz.module.address.source.city;
 //international hot citys
 zz.module.address.source.hotfcity=zz.module.address.source.hotcity;

 
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 letters to select more cities.",
        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": ["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><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){
				var ctype = d.getAttribute("mod_address_source");
				if(ctype=="city")
				{
					x = zz.module.address.source.hotcity;
				}
				else if(ctype=="fcity")
				{
					x = zz.module.address.source.hotfcity;
				}
				
			}
            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 > 15) 
                a.suggest = a.suggest.slice(0, 15);
            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) * 15, Math.min(c * 15, 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 / 15);
                    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()
})();
