YAHOO.namespace("CN.Fp");
YAHOO.CN.Fp.Text = {
    _TXT_LOAD: "正在装载中...",
    _TXT_CONN_F: "连接服务器失败，请重试!",
    
    _MAIL_LOGON: "<div class=\"pamailcon\" style=\"background:url(http://cn.yimg.com/i/fp/3_0/pacg4.gif) 2em 1em no-repeat;height:9em;\"><div class=\"pamail_sigon\"><a href=\"http://cn.mail.yahoo.com/?id=10102\" style=\"text-decoration:underline;font-weight:bold;\">立刻登录</a>查看您的电子邮件</div><div class=\"pamail_sigup\"><a href=\"https://member.cn.yahoo.com/cnreg/reginfo.html?id=10103\" style=\"font-size:1.17em;\">注册邮箱</a></div></div>",
    _MAIL_BLANK: "<div class=\"pamailcon\"><br/>您的收件箱中没有任何邮件<p><a href=\"http://cn.mail.yahoo.com/?id=10102\">[进入我邮箱]</a></p></div>",
    _MAIL_BOTTOM: "<div style=\"text-align:right;line-height:1.6em;\"><a href=\"http://cn.mail.yahoo.com/?" + Math.random() + "\">查看全部邮件&gt;&gt;</a>&nbsp;&nbsp;</div>",
    _MAIL_REST: "<div class=\"pamailcon\"><br/><span style=\"font-size:14px;\">您的邮箱为休眠状态</span><p><a href=\"http://cn.mail.yahoo.com/?" + Math.random() + "\" style=\"font-weight:bold;text-decoration:underline;\">点击这里重新<strong>激活</strong>您的邮箱</a></p></div>",
    
    _SPACE_BLANK: "<div class=\"paspacecon\"><br/>您还没有创建雅虎空间<p><a href=\"http://i.cn.yahoo.com/create_page.html\">[创建我的雅虎空间] </a></p></div>",
    
    _MYWEB_BLANK: "<div class=\"pamywebcon\" style=\"padding-left:10em;\"><br/>您还没收藏任何网址<br/><p><a href=\"http://myweb.cn.yahoo.com/my.html\">&gt;&gt;进入我的收藏</a><br/><a href=\"http://myweb.cn.yahoo.com/help1.html\">&gt;&gt;查看使用帮助</a></p></div>",
    
    _FINA_SEARCH: "<div style=\"width:26em;margin:0 auto;\"><form action=\"http://cn.finance.yahoo.com/le\" name=\"quote\" id=\"quote\" target=\"_blank\"><strong>行情：</strong><input style=\"font-size: 12px;\" name=\"s\" id=\"s\" size=\"20\" value=\"600000,浦发银行,pfyh\" onfocus=\"if(this.value=='600000,浦发银行,pfyh') this.select();\"><button type=\"submit\" style=\"line-height:1.2em;*height:1.6em;\">查询</button>&nbsp;<a href=\"http://cn.finance.yahoo.com/le\" target=\"_blank\">查代码</a>|<a href=\"http://cn.biz.yahoo.com/zhph/index.html\" target=\"_blank\">综合排行</a></form></div>",
    
    _BLOG_TXT_4: "最近更新：",
    _TXT_REFRESH: "刷新",
    _TXT_REFRESH_1: "点击刷新",
    _TXT_CLOSE: "关闭",
    _TXT_ALLSERVICES: "雅虎服务大全"
};
YAHOO.CN.Fp.misc = {
    stringLength: function(str, len){
        if (str.length > len) {
            return str.substring(0, len) + "..";
        }
        return str;
    },
    
    numberLength: function(num){
        if (num.indexOf('.') == -1) {
            return (num + ".00");
        }
        else 
            if (num.length - num.indexOf('.') > 2) {
                return (num.match(/^[+-]{0,1}\d+.\d{1,2}/g));
            }
            else {
                return (num.match(/^[+-]{0,1}\d+.\d{1,2}/g) + "0");
            }
    },
    
    preloadImg: function(imgs){
        var o_img = [];
        for (var i = 0; i < imgs.length; i++) {
            o_img[i] = new Image;
            o_img[i].src = imgs[i];
        }
    },
    
    scaleImg: function(i_d){
        if (isNaN(i_d[0]) || isNaN(i_d[1])) {
            return [60, 60];
        }
        var w = 0, h = 0;
        if (i_d[0] > 60 || i_d[1] > 60) {
            if (i_d[0] < i_d[1]) {
                h = 60;
                w = Math.floor(i_d[0] * (60 / i_d[1]));
            }
            else {
                w = 60;
                h = Math.floor(i_d[1] * (60 / i_d[0]));
            }
        }
        else {
            w = i_d[0];
            h = i_d[1];
        }
        return [w, h];
    },
    
    checkRD: function(e){
        var el = YAHOO.util.Event.getTarget(e), newurl;
        if (el.tagName.toLowerCase() == 'body' || el.tagName.toLowerCase() == 'html') {
            return;
        }
        if (el.tagName.toLowerCase() != 'a') {
            if (el.parentNode.tagName.toLowerCase() != 'a') {
                return;
            }
            else {
                el = el.parentNode;
            }
        }
        if (!el.href || !el.name || el.name == '') {
            return;
        }
        if (document.images) {
            newurl = "http://cn.rd.yahoo.com/home/" +
            el.name +
            "/" +
            'url=' +
            YAHOO.CN.Fp.misc.URLEncode(el.href) +
            "/" +
            "*" +
            "http://cn.yimg.com/search/yisou/clk.gif?_rnd=" +
            Math.random();
            (new Image()).src = newurl;
        }
    },
    
    URLEncode: function(plaintext){
        var SAFECHARS = "0123456789" +
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
        "abcdefghijklmnopqrstuvwxyz" +
        "-_.!~*'()";
        var HEX = "0123456789ABCDEF";
        var encoded = "";
        for (var i = 0; i < plaintext.length; i++) {
            var ch = plaintext.charAt(i);
            if (ch == " ") {
                encoded += "+";
            }
            else 
                if (SAFECHARS.indexOf(ch) != -1) {
                    encoded += ch;
                }
                else {
                    var charCode = ch.charCodeAt(0);
                    if (charCode > 255) {
                        encoded += "+";
                    }
                    else {
                        encoded += "%";
                        encoded += HEX.charAt((charCode >> 4) & 0xF);
                        encoded += HEX.charAt(charCode & 0xF);
                    }
                }
        }
        return encoded;
    }
};

YAHOO.CN.Fp.personalCenter = {
    mail_api: "?#mail=" + Math.random(),
    album_api: "?#photo=" + Math.random(),
    mus_api: "?#musicbox=" + Math.random(),
    weath_api: "?#weather=" + Math.random(),
    fin_api: "?#stock=" + Math.random(),
    myweb_api: "?#myweb=" + Math.random(),
    blog_api: "?#blog=" + Math.random(),
    space_api: "?#space=" + Math.random(),
    groups_api: "?#club=" + Math.random(),
    
    // 容器 ID
    rootContainer: ["pa"],
    // 预览容器 ID
    previewContainer: ["pa_tabs_a_preview", "pa_tabs_b_preview"],
    // 导航容器 ID
    tabsSubContainer: ["pa_tabs_a", "pa_tabs_b"],
    
    dom: YAHOO.util.Dom,
    event: YAHOO.util.Event,
    tabsContainer: null,
    tabs: [],
    conobj: null,
    is_request: false,
    
    // 子容器 ID
    _tabcontainerid: "pa_tabs_container",
    _tabcontainerClass: "bd",
    // 打开预览等待时间（毫秒）
    _openIntervalTime: 200,
    // 关闭预览等待时间（毫秒）
    _closeIntervalTime: 3000,
    // 预览容器默认打开高度
    _defaultHeight: 130,
    _interval: 0.2,
    
    _overflag: "",
    _curTab: "",
    _actionTimer: null,
    _closeTimer: null,
    _openpreview: null,
    
    // 导航 样式
    tabsName: "|pamail|paspa|paalbum|#|pablog|pagroups|pastock|",
    
    // 正在加载数据提示
    loadstr: "<div class=\"loading\"><strong>" + YAHOO.CN.Fp.Text._TXT_LOAD + "</strong><br /><img src=\"http://cn.yimg.com/i/hp/ny/loading.gif\" width=\"120\" height=\"15\"/></div>",
    // 加载数据错误提示
    warnstr: "<div class=\"pawarn\">" + YAHOO.CN.Fp.Text._TXT_CONN_F + "</div>",
    
    is_load_da: false,
    
    init: function(logined){
        if (!!logined) {
            this.is_request = true;
        }
        var dom = this.dom, event = this.event, root_d = dom.get(this.rootContainer[0]), i, j, items, ii, jj;
        
        if (!!!root_d) {
            return;
        }
        
        var tab_d = dom.getElementsByClassName(this._tabcontainerClass, "div", root_d)[0];
        
        if (!!!tab_d) {
            return;
        }
        
        this.tabsContainer = tab_d;
        tab_d.id = this._tabcontainerid;
        if (!!!tab_d) {
            return;
        }
        
        this.rootContainer[1] = root_d;
        for (i = 0, j = this.tabsSubContainer.length; i < j; i++) {
            items = dom.get(this.tabsSubContainer[i]).getElementsByTagName("li");
            for (ii = 0, jj = items.length; ii < jj; ii++) {
                this.tabs.push(items[ii].getElementsByTagName("span")[0]);
            }
        }
        
        var p_cont = this.previewContainer;
        this.previewContainer = [];
        for (var i = 0, j = p_cont.length; i < j; i++) {
            this.previewContainer.push(dom.get(p_cont[i]));
        }
        
        event.on(tab_d, "mouseover", this.handleMouseover);
        event.on(tab_d, "mouseout", this.handleMouseout);
    },
    
    loadContent: function(id){
        if (!!!this._openpreview) {
            return;
        }
        
        var pa = this._openpreview.getElementsByTagName("div")[0], o = this, ot = YAHOO.CN.Fp.Text, misc = YAHOO.CN.Fp.misc, dom = this.dom;
        if (o._actionTimer) {
            window.clearTimeout(o._actionTimer);
        }
        
        if (o.conobj != null && o.is_load_da) {
            YAHOO.util.Connect.abort(o.conobj);
        }
        
        var cb = {
            scope: this,
            success: null,
            failure: null,
            arguments: []
        };
        
        o.is_load_da = true;
        
        switch (id) {
            case 'pamail':
                cb.success = function(oresult){
                    o.is_load_da = false;
                    pa.innerHTML = "test 1"
                };
                
                cb.failure = function(){
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                };
                
                if (!o.is_request) {
                    pa.innerHTML = "test 1";
                    o.is_load_da = false;
                }
                else {
                    try {
                        o.conobj = YAHOO.util.Connect.asyncRequest('GET', o.mail_api, cb);
                    } 
                    catch (e) {
                        pa.innerHTML = o.warnstr;
                        o.is_load_da = false;
                    }
                }
                break;
            case "paalbum":
                cb.success = function(oresult){
                    o.is_load_da = false;
                    pa.innerHTML = "test 2"
                };
                
                cb.failure = function(){
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                };
                try {
                    o.conobj = YAHOO.util.Connect.asyncRequest('GET', o.album_api, cb);
                } 
                catch (e) {
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                }
                break;
            case "paweather":
                cb.success = function(oresult){
                    o.is_load_da = false;
                    pa.innerHTML = "test 2";
                };
                cb.failure = function(){
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                };
                try {
                    o.conobj = YAHOO.util.Connect.asyncRequest('GET', o.weath_api, cb);
                } 
                catch (e) {
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                }
                break;
            case 'pastock':
                cb.success = function(oresult){
                    o.is_load_da = false;
                    pa.innerHTML = "test 3";
                };
                cb.failure = function(){
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                };
                try {
                    o.conobj = YAHOO.util.Connect.asyncRequest('GET', o.fin_api, cb);
                } 
                catch (e) {
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                }
                break;
            case "pablog":
                cb.success = function(oresult){
                    o.is_load_da = false;
                    pa.innerHTML = "test 4";
                };
                cb.failure = function(){
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                };
                
                try {
                    o.conobj = YAHOO.util.Connect.asyncRequest('GET', o.blog_api, cb);
                } 
                catch (e) {
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                }
                break;
            case "pagroups":
                cb.success = function(oresult){
                    o.is_load_da = false;
                    pa.innerHTML = "test 5";
                };
                
                cb.failure = function(){
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                };
                
                try {
                    o.conobj = YAHOO.util.Connect.asyncRequest('GET', o.groups_api, cb);
                } 
                catch (e) {
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                }
                break;
            case "paspa":
                cb.success = function(oresult){
                    o.is_load_da = false;
                    pa.innerHTML = "test 6";
                };
                cb.failure = function(){
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                };
                try {
                    o.conobj = YAHOO.util.Connect.asyncRequest('GET', o.space_api, cb);
                } 
                catch (e) {
                    pa.innerHTML = o.warnstr;
                    o.is_load_da = false;
                }
                break;
            default:
                o.is_load_da = false;
                pa.innerHTML = o.warnstr;
                break;
        }
    },
    
    openPreviewContainer: function(tn){
        var tabsname = this.tabsName, n, n1, sn, preview_cont, o = this, old_pre_cont = this._openpreview;
        if (o._curTab == tn) {
            return;
        }
        o._curTab = tn;
        n = tabsname.indexOf("|" + tn + "|");
        n1 = tabsname.indexOf("|#|");
        sn = (n < n1) ? 0 : 1;
        preview_cont = this.previewContainer[sn];
        var load_content = function(){
            preview_cont.innerHTML = "<div class=\"pa_con\">" + o.loadstr + "</div>";
            o.loadContent(tn);
        };
        if (old_pre_cont == preview_cont) {
            load_content();
            return;
        }
        else {
            if (old_pre_cont) {
                old_pre_cont.innerHTML = "";
                var old_Anim = new YAHOO.util.Anim(old_pre_cont, {
                    height: {
                        to: 0
                    }
                }, o._interval * 2);
                old_Anim.onComplete.subscribe(function(){
                    o.dom.removeClass(old_pre_cont, "open");
                });
                old_Anim.animate();
            }
        }
        preview_cont.innerHTML = "<div class=\"pa_con\"></div>";
        var anim = new YAHOO.util.Anim(preview_cont, {
            height: {
                to: this._defaultHeight
            }
        }, o._interval * 2);
        o.dom.addClass(preview_cont, "open");
        anim.onComplete.subscribe(function(){
            if (tn != o._curTab) 
                return;
            load_content();
        });
        anim.animate();
        this._openpreview = preview_cont;
    },
    
    resetTabs: function(){
        var dom = this.dom;
        for (var i = 0, j = this.tabs.length; i < j; i++) {
            dom.removeClass(this.tabs[i], "open");
        }
    },
    
    inTargetTabs: function(el){
        var c_n = el.className.toLowerCase().split(" ")[0], p_el, t, tn = this.tabsName;
        if (c_n != "" && !!(tn.indexOf("|" + c_n + "|") + 1)) {
            t = el;
        }
        else {
            p_el = el;
            while ((p_el.id != this.rootContainer[0]) && (p_el.tagName.toLowerCase() != "body")) {
                c_n = p_el.className.toLowerCase().split(" ")[0];
                if (c_n != "" && !!(tn.indexOf("|" + c_n + "|") + 1)) {
                    t = p_el;
                    break;
                }
                p_el = p_el.parentNode;
            }
        }
        return t;
    },
    
    open: function(tn, t){
        var tab = this.dom.getElementsByClassName(tn, "a", this.rootContainer[0])[0], t = (t) ? t * 1000 : 3000, o = this;
        if (!tab) {
            return;
        }
        o.openPreviewContainer(tn);
        o.resetTabs();
        o.dom.addClass(tab.parentNode, "open");
        o._closeTimer = window.setTimeout(function(){
            var preview_cont = o._openpreview;
            if (preview_cont) {
                preview_cont.innerHTML = "";
                var anim = new YAHOO.util.Anim(preview_cont, {
                    height: {
                        to: 0
                    }
                }, o._interval);
                anim.onComplete.subscribe(function(){
                    o.resetTabs();
                });
                anim.animate();
            }
            window.clearTimeout(o._closeTimer);
            o._closeTimer = null;
            o._openpreview = null;
            o._curTab = "";
        }, t);
    },
    
    handleMouseover: function(e){
        var o = YAHOO.CN.Fp.personalCenter;
        var dom = o.dom;
        var event = o.event;
        var el = event.getTarget(e);
        var tab = o.inTargetTabs(el);
        if (o._closeTimer) {
            window.clearTimeout(o._closeTimer);
        }
        if (!tab) {
            return;
        }
        var c_n = tab.className.split(" ")[0].toLowerCase();
        if (c_n == o._overflag) {
            return;
        }
        else {
            o._overflag = c_n;
        }
        if (o._actionTimer) {
            window.clearTimeout(o._actionTimer);
        }
        o._actionTimer = window.setTimeout(function(){
            o.resetTabs();
            o.openPreviewContainer(c_n);
            dom.addClass(tab.parentNode, "open");
        }, o._openIntervalTime);
    },
    
    handleMouseout: function(e){
        var o = YAHOO.CN.Fp.personalCenter, el, p, event = o.event, preview_cont = o._openpreview;
        try {
            el = event.getRelatedTarget(e);
            p = el;
            while (p && p.tagName.toLowerCase() != "body") {
                if (p.id == o._tabcontainerid) {
                    return;
                    break;
                }
                p = p.parentNode;
            }
        } 
        catch (_err) {
        }
        o._overflag = "";
        if (o._actionTimer) {
            window.clearTimeout(o._actionTimer);
        }
        o._closeTimer = window.setTimeout(function(){
            if (preview_cont) {
                preview_cont.innerHTML = "";
                var anim = new YAHOO.util.Anim(preview_cont, {
                    height: {
                        to: 0
                    }
                }, o._interval);
                anim.onComplete.subscribe(function(){
                    o.dom.removeClass(preview_cont, "open");
                    o.resetTabs();
                });
                anim.animate()
            }
            window.clearTimeout(o._closeTimer);
            o._closeTimer = null;
            o._openpreview = null;
            o._curTab = "";
        }, o._closeIntervalTime);
    }
};
YAHOO.CN.Fp.personalCenter.init(false);

(function(){
    var j = 1;
    while (document.getElementById('tab_' + j) != null) {
        var tabView = new YAHOO.widget.TabView('tab_' + j);
        var tabs = tabView.getElementsByClassName(tabView.TAB_PARENT_CLASSNAME)[0].getElementsByTagName('li');
        for (var i = 0; i < tabs.length; i++) {
            tabView.getTab(i).set('activationEvent', 'mouseover');
        }
		j++;
    }
})();


