js类 from qq


Posted in Javascript onNovember 13, 2006
var Comment = new Object(); var $C = function(tagName) 
{ 
    return document.createElement(tagName); 
}; 
String.prototype.trim = function() 
{ 
    return this.replace(/^\s*|\s*$/g,""); 
}; 
String.prototype.realLength = function() 
{ 
    return this.replace(/[^\x00-\xff]/g,"**").length; 
}; 
String.prototype.left = function(n) 
{ 
    if (this.length > n) 
    { 
        return this.substr(0, n) + '...'; 
    } 
    else 
    { 
        return this; 
    } 
}; 
Array.prototype.remove = function(n) 
{ 
    if (n < 0) 
    { 
        return this; 
    } 
    else 
    { 
        return this.slice(0, n).concat(this.slice(n + 1, this.length)); 
    } 
}; 
function findPosX(obj)  
{ 
    var curleft = 0; 
    if (obj && obj.offsetParent) 
    { 
        while (obj.offsetParent) 
        { 
            curleft += obj.offsetLeft; 
            obj = obj.offsetParent; 
        } 
    } 
    else if (obj && obj.x) curleft += obj.x; 
    return curleft; 
} 
function findPosY(obj) 
{ 
    var curtop = 0; 
    if (obj && obj.offsetParent)  
    { 
        while (obj.offsetParent)  
        { 
            curtop += obj.offsetTop; 
            obj = obj.offsetParent; 
        } 
    }  
    else if (obj && obj.y) curtop += obj.y; 
    return curtop; 
} 
var input_domain = 'http://input.comment.qq.com'; 
var index_domain = 'http://comment1.qq.com'; 
var pinglun_domain = 'http://pinglun.qq.com'; 
var js_domain = 'http://pinglun.qq.com'; 
var img_domain = 'http://mat1.qq.com/pinglun'; 
Comment.Configure = { 
    version:                '1.0', 
    newline:                '\n', 
    site_length:            20, 
    key_length:                20, 
    id_length:                10, 
    index_line_sum:            10000, 
    index_width:            5, 
    default_mode:            'origin_count', 
    default_order:            1, 
    default_reply_per_page:    10, 
    quote_str_len:            60, 
    intro_len:                150, 
    debate_intro_len:        200, 
    content_len:            200, 
    reply_default_title:    '请填写标题', 
    intro_min_length:        20, 
    request_delay:            100, 
    login_frame_delay:        2000, 
    reply_type_def:            { 
        '1':    '<span class="reply_top">[精]</span> ', 
        '2':    '<span class="reply_commend">[荐]</span> ', 
        '3':    '<span class="reply_expert">[专]</span> ' 
    }, 
    postUrl:                input_domain + '/post.cmt', 
    logoutUrl:                input_domain + '/cgi-bin/qqlogout', 
    commentIndex:            'http://pinglun.qq.com/', 
    loginIframeUrl:            index_domain + '/i_login.htm', 
    defaultLogoUrl:            img_domain + '/images/defpic.jpg' 
} 
Comment.Define = { 
    getReplyType: function(type) 
    { 
        if (Comment.Configure.reply_type_def[type]) 
        { 
            return Comment.Configure.reply_type_def[type]; 
        } 
        else 
        { 
            return ''; 
        } 
    } 
} 
Comment.PGV_Count = function(option) 
{ 
    if (typeof(pgvMain) == 'function') 
    { 
        pvRepeatCount = 1; 
        pvCurDomain = sDomain; 
        if (option) 
        { 
            if (option.domain) 
            { 
                pvCurDomain = option.domain; 
            } 
            if (option.path) 
            { 
                pvCurUrl = option.path; 
            } 
        } 
        pgvMain(); 
        //Debug.log('call pgv function'); 
    } 
} 
Comment.UrlFactory = { 
    get3LevelDir: function(id) 
    { 
        var path = parseInt(id / 1000000) + '/'; 
        path += parseInt(id / 1000) + '/'; 
        path += id / 1; 
        return path; 
    }, 
    getCommentUrl: function(id) 
    { 
        return (this.get3LevelDir(id) + '/'); 
    }, 
    getDebateUrl: function(id) 
    { 
        return this.get3LevelDir(id); 
    }, 
    getUserUrl: function(id) 
    { 
        return this.get3LevelDir(id); 
    }, 
    getReplyUrl: function(key) 
    { 
        var path = key.substr(0, 8); 
        path += '/' + (key.substr(8, 4)); 
        path += '/' + (key.substr(12, 2)); 
        path += '/' + key; 
        return path; 
    }, 
    getIndexUrl: function(id) 
    { 
        var length = id.toString().length; 
        if (length < Comment.Configure.index_width) 
        { 
            for (var i = 0; i < Comment.Configure.index_width - length; ++i) 
            { 
                id = '0' + id; 
            } 
        } 
        return id; 
    }, 
    getIndexDir: function(mode) 
    { 
        var modes = { 
            'origin_count':    'originindex', 
            'total_count':    'allindex', 
            'top_count':    'topindex' 
        }; 
        return modes[mode]; 
    }, 
    getRangeHeader: function(start, length, line_len) 
    { 
        var range_start = start * line_len; 
        var range_length = length * line_len; 
        return ['Range','bytes=' + range_start + '-' + (parseInt(range_start) + parseInt(range_length) - 1 - Comment.Configure.newline.length)]; 
    }, 
    getCommentNormalUrl: function(site, id) 
    { 
        return 'comment.htm?site=' + site + '&id=' + id; 
    }, 
    getCommentGroupUrl: function(site, id) 
    { 
        return 'comment_group.htm?site=' + site + '&id=' + id; 
    }, 
    getCommentDebateUrl: function(site, id) 
    { 
        return 'comment_debate.htm?site=' + site + '&id=' + id; 
    }, 
    getCommentUserUrl: function(uin) 
    { 
        return 'comment_user.htm?uin=' + uin; 
    }, 
    getCommentUserLink: function(uin, nick) 
    { 
        return '<a href="' + this.getCommentUserUrl(uin) + '" target="_blank">' + (nick ? nick : uin) + '</a>'; 
    }, 
    getCommentListLink: function(site_en, site_cn, sort_en, sort_cn, className) 
    { 
        if (className) 
        { 
            className = 'class="' + className + '"'; 
        } 
        else 
        { 
            className = ''; 
        } 
        return '<a href="' + Comment.Configure.commentIndex + '" ' + className + ' target="_blank">评论首页</a> >> ' 
            + '<a href="list.htm?' + site_en + '." ' + className + ' target="_blank">' + site_cn + '</a> >> ' 
            + '<a href="list.htm?' + site_en + '.' + sort_en + '" ' + className + ' target="_blank">' + sort_cn + '</a>'; 
    } 
} 
Comment.ContentFormat = { 
    decode: function(content) 
    { 
        return content.split(Comment.Configure.newline); 
    } 
} 
Comment.DataObjectFactory = function(content, model) 
{ 
    content = Comment.ContentFormat.decode(content); 
    var dataModel = Comment.DataObject[model]; 
    if (content.length - 1 != dataModel.length) 
    { 
        if (model != 'commentinfo' && model != 'listsum') 
        { 
            //alert('[DEBUG 信息] O/R 映射失败,远程数据和本地模型数量不匹配!请检查!'); 
        } 
    } 
    var dataObject = new Object(); 
    for (var i = 0; i < dataModel.length; ++i) 
    { 
        dataObject[dataModel[i]] = content[i]; 
    } 
    return dataObject; 
} 
Comment.DataObject = { 
    'commentinfo': 
    [ 
        'site_cn', 
        'sort_en', 
        'sort_cn', 
        'source', 
        'source_url', 
        'title', 
        'url', 
        'intro', 
        'intro_img', 
        'group_id', 
        'intro_show', 
        'create_time', 
        'debate_id' 
    ], 
    'groupinfo': 
    [ 
         'site_cn', 
        'title', 
        'url', 
        'intro', 
        'intro_img', 
        'comment_id', 
        'intro_show', 
        'create_time' 
    ], 
    'debateinfo': 
    [ 
         'site_cn', 
        'title', 
        'url', 
        'intro', 
        'intro_img', 
        'agree_id', 
        'disagree_id', 
        'middle_id', 
        'intro_show', 
        'create_time' 
    ], 
    'sum': 
    [ 
         'origin_count', 
        'total_count', 
        'top_count' 
    ], 
    'reply': 
    [ 
        'comment_id', 
        'uin', 
        'nickname', 
        'pub_time', 
        'pass_time', 
        'ip', 
        'title', 
        'content', 
        'reply_key', 
        'is_del', 
        'reply_type', 
        'reply_kind', 
        'tips' 
    ], 
    'pksum': 
    [ 
         'agree', 
        'disagree', 
        'middle' 
    ], 
    'listsum': 
    [ 
        'all' 
    ], 
    'usersum': 
    [ 
         'total_count', 
        'top_count', 
        'is_expert' 
    ], 
    'userinfo': 
    [ 
         'user_img', 
        'user_intro' 
    ] 
} 
/* 控制器类 */ 
Comment.Control = new Object(); 
/* 分页控制器 */ 
Comment.Control.Pagination = Class.create(); 
Comment.Control.Pagination.prototype = { 
    initialize: function(option) 
    { 
        this.totalPage = option.totalPage; 
        this.currPage = 1; 
        this.zoom_start = 3; 
        this.zoom_end = 613; 
        this.bindControl(); 
    }, 
    reset: function(option) 
    { 
        this.totalPage = option.totalPage; 
        this.currPage = 1; 
        this.movePageControl(this.currPage); 
    }, 
    updateOrder: function() 
    { 
    }, 
    countCurrPage: function(offset) 
    { 
        var page = parseInt(offset * this.totalPage / this.zoom_end) + 1; 
        if (page > this.totalPage) 
        { 
            page = this.totalPage; 
        } 
        return page; 
    }, 
    movePageControl: function(toPage) 
    { 
        if (toPage < 1 || toPage > this.totalPage) 
        { 
            return; 
        } 
        var offset = 0; 
        if (toPage == 1) 
        { 
            offset = this.zoom_start; 
        } 
        else if (toPage == this.totalPage) 
        { 
            offset = this.zoom_end; 
        } 
        else 
        { 
            offset = this.zoom_start + (toPage - 1) * (this.zoom_end / (this.totalPage - 1)); 
        } 
        $('scrfloat').style.left = offset + 'px'; 
        //$('scrfloat_2').style.left = offset + 'px'; 
    }, 
    bindControl: function() 
    { 
        var self = this; 
        var tooltip = $('Page_tip'); 
        var offsetX = 10; 
        var offsetY = -10; 
        function getSite(o) 
        { 
            var obj = o; 
            var objS = obj.offsetLeft; 
            while (obj != obj.offsetParent && obj.offsetParent) 
            { 
                obj = obj.offsetParent; 
                if (obj.tagName == 'span') 
                { 
                    objS += obj.offsetLeft; 
                } 
            } 
            return objS; 
        } 
        Event.observe($('scr'), 'mousedown', mDown, false); 
        //Event.observe($('scr_2'), 'mousedown', mDown, false); 
        var flag = false; 
        function mDown() 
        { 
            flag = true; 
            if(window.event.srcElement.id != 'scr' 
               && window.event.srcElement.id != 'scr_2') 
            { 
                $('scrfloat').style.left = $('scrfloat').offsetLeft; 
                //$('scrfloat_2').style.left = $('scrfloat').style.left; 
            } 
            else 
            { 
                $('scrfloat').style.left = (window.event.x - 5); 
                //$('scrfloat_2').style.left = $('scrfloat').style.left; 
            } 
            tooltip.style.display = 'block'; 
            t = $('scrfloat').offsetLeft; 
            tooltip.innerHTML = self.countCurrPage(t); 
            tooltip.style.left = window.event.clientX + offsetX + 'px'; 
            tooltip.style.top = window.event.clientY + offsetY + document.documentElement.scrollTop + 'px'; 
        } 
        function mMove() 
        { 
            if(flag) 
            { 
                $('scrfloat').style.left = window.event.clientX - getSite($('scr')) - 5 + 'px'; 
                //$('scrfloat_2').style.left = window.event.clientX - getSite($('scr')) - 5 + 'px'; 
            } 
            if (parseInt($('scrfloat').style.left.replace('px', '')) > self.zoom_end) 
            { 
                $('scrfloat').style.left = self.zoom_end + 'px'; 
                //$('scrfloat_2').style.left = $('scrfloat').style.left; 
            } 
            if (parseInt($("scrfloat").style.left.replace('px', '')) < self.zoom_start) 
            { 
                $('scrfloat').style.left = self.zoom_start + 'px'; 
                //$('scrfloat_2').style.left = $('scrfloat').style.left; 
            } 
            if (flag) 
            { 
                t = $('scrfloat').offsetLeft; 
                tooltip.innerHTML = self.countCurrPage(t); 
                tooltip.style.left = window.event.clientX + offsetX + 'px'; 
                tooltip.style.top = window.event.clientY + offsetY + document.documentElement.scrollTop + 'px'; 
            } 
        }   
        function mUp() 
        { 
            if (flag) 
            { 
                t = $('scrfloat').offsetLeft; 
                self.setCurrPage(self.countCurrPage(t)); 
            } 
            flag = false; 
            tooltip.style.display = 'none'; 
        } 
        function mEnd() 
        { 
            window.event.returnValue = false; 
        } 
        window.document.onmousemove = mMove; 
        window.document.ondragstart = mEnd; 
        window.document.onmouseup = mUp; 
        Event.observe($('up'), 'click', mUpBtn, false); 
        Event.observe($('down'), 'click', mDownBtn, false); 
        function mUpBtn() 
        { 
            self.setCurrPage(self.currPage - 1, 1); 
        } 
        function mDownBtn() 
        { 
            self.setCurrPage(self.currPage + 1, 1); 
        } 
    }, 
    nextPage: function() 
    { 
        if (this.currPage < this.totalPage) 
        { 
            ++this.currPage; 
            this.onPageChange(); 
        } 
    }, 
    previousPage: function() 
    { 
        if (this.currPage > 0) 
        { 
            --this.currPage; 
            this.onPageChange(); 
        } 
    }, 
    setCurrPage: function(page, move) 
    { 
        if (page > 0 && page <= this.totalPage && page != this.currPage) 
        { 
            this.currPage = page; 
            this.onPageChange(); 
            if (move != null) 
            { 
                this.movePageControl(page); 
            } 
        } 
    }, 
    onPageChange: function() 
    { 
    }, 
    getCurrPage: function() 
    { 
        return this.currPage; 
    } 
} 
Comment.Iterator = { 
    getIndex: function(objComment) 
    { 
        var rangeList = new Array(); 
        function getIndexId(reply_id) 
        { 
            return parseInt(reply_id / Comment.Configure.index_line_sum); 
        } 
        function getReplyPos(reply_id) 
        { 
            return (reply_id % Comment.Configure.index_line_sum); 
        } 
        if (objComment.order == 0) 
        { 
            var reply_start = (objComment.currPage - 1) * objComment.replyPerPage; 
            var start_index_id = getIndexId(reply_start); 
            var start_reply_id = getReplyPos(reply_start); 
            var currReply = 1; 
            var replySum = 0; 
            while (currReply++) 
            { 
                if (reply_start + currReply > objComment.totalReply) 
                { 
                    rangeList.push({ 
                        url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                        range:    Comment.UrlFactory.getRangeHeader(start_reply_id, currReply - replySum - 1, objComment.index_line_len) 
                    }); 
                    break; 
                } 
                if (currReply == objComment.replyPerPage) 
                { 
                    rangeList.push({ 
                        url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                        range:    Comment.UrlFactory.getRangeHeader(start_reply_id, currReply - replySum, objComment.index_line_len) 
                    }); 
                    break; 
                } 
                if (start_reply_id + currReply > Comment.Configure.index_line_sum) 
                { 
                    rangeList.push({ 
                        url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                        range:    Comment.UrlFactory.getRangeHeader(start_reply_id, currReply, objComment.index_line_len) 
                    }); 
                    start_index_id++; 
                    start_reply_id = 0; 
                    replySum = currReply - 1; 
                } 
            } 
        } 
        else 
        { 
            var reply_start = objComment.totalReply - 1 - (objComment.currPage - 1) * objComment.replyPerPage; 
            var start_index_id = getIndexId(reply_start); 
            var start_reply_id = getReplyPos(reply_start); 
            var currReply = 1; 
            var replySum = 0; 
            while (currReply++) 
            { 
                if (reply_start - currReply < 0) 
                { 
                    rangeList.push({ 
                        url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                        range:    Comment.UrlFactory.getRangeHeader(0, start_reply_id + 1, objComment.index_line_len) 
                    }); 
                    break; 
                } 
                if (currReply == objComment.replyPerPage) 
                { 
                    rangeList.push({ 
                        url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                        range:    Comment.UrlFactory.getRangeHeader(start_reply_id - currReply + replySum + 1, currReply - replySum, objComment.index_line_len) 
                    }); 
                    break; 
                } 
                if (start_reply_id - currReply < 0) 
                { 
                    rangeList.push({ 
                        url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                        range:    Comment.UrlFactory.getRangeHeader(0, start_reply_id + 1, objComment.index_line_len) 
                    }); 
                    start_index_id--; 
                    start_reply_id = Comment.Configure.index_line_sum - 1; 
                    replySum = currReply; 
                } 
            } 
        } 
        return rangeList; 
    } 
} 
/* 显示样式控制器 */ 
Comment.Control.Display = Class.create(); 
Comment.Control.Display.prototype = { 
    initialize: function() 
    { 
    } 
} 
/* 页面显示类 */ 
Comment.Page = new Object(); 
/* 评论页控制接口 */ 
Comment.Page.Base = { 
    changeMode: function(mode) 
    { 
        this.mode = mode; 
        this.totalReply = this.data_sum[mode]; 
        this.totalPage = parseInt(this.totalReply / this.replyPerPage) 
            + (this.totalReply % this.replyPerPage != 0 ? 1 : 0); 
    }, 
    changeOrder: function(order) 
    { 
        if (this.order == order) 
            return; 
        this.order = order; 
        this.currPage = 1; 
        this.resetPageControl(); 
        this.bindPageNav(); 
        this.bindReplyList(); 
        this.bindOrderControl(); 
    }, 
    bindOrderControl: function() 
    { 
        var self = this; 
        if (self.order == 0) 
        { 
            $('order_front').style.cursor = 'none'; 
            $('order_front').style.color = '#000'; 
            $('order_front').onclick = function(e) 
            { 
                return false; 
            } 
            $('order_desc').style.cursor = 'pointer'; 
            $('order_desc').style.color = '#3B78AF'; 
            $('order_desc').onclick = function() 
            { 
                self.changeOrder(1); 
                return false; 
            } 
        } 
        else if (self.order == 1) 
        { 
            $('order_front').style.cursor = 'pointer'; 
            $('order_front').style.color = '#3B78AF'; 
            $('order_front').onclick = function(e) 
            { 
                self.changeOrder(0); 
                return false; 
            } 
            $('order_desc').style.cursor = 'none'; 
            $('order_desc').style.color = '#000'; 
            $('order_desc').onclick = function() 
            { 
                return false; 
            } 
        } 
    }, 
    bindRowsPerPage: function() 
    { 
        var self = this; 
        $A($('rows_page').getElementsByTagName('a')).each(function(button) 
        { 
            button.onclick = function() 
            { 
                self.replyPerPage = button.value; 
                self.currPage = 1; 
                self.resetPageControl(); 
                self.bindPageNav(); 
                self.bindReplyList(); 
                return false; 
            } 
        }); 
    }, 
    selectTab: function(mode) 
    { 
        var self = this; 
        $A($('mode_tab').getElementsByTagName('p')).each(function(tab) 
        { 
            if (tab.value == mode) 
            { 
                $A($('mode_tab').getElementsByTagName('p')).each(function(t) 
                { 
                    if (t.value != '') 
                    { 
                        t.className = 'none'; 
                    } 
                }); 
                tab.className = 'c'; 
            } 
        }); 
    }, 
    appendTab: function(option) 
    { 
        var pTab = $C('p'); 
        pTab.innerHTML = option.title; 
        pTab.value = ''; 
        $('mode_tab').appendChild(pTab); 
        pTab.onclick = function() 
        { 
            window.open(option.url); 
        } 
        return false; 
    }, 
    bindTabControl: function() 
    { 
        var self = this; 
        $A($('mode_tab').getElementsByTagName('p')).each(function(tab) 
        { 
            var mode = tab.value; 
            if (mode != '') 
            { 
                tab.onclick = function() 
                { 
                    $A($('mode_tab').getElementsByTagName('p')).each(function(t) 
                    { 
                        t.className = 'none'; 
                    }); 
                    this.className = 'c'; 
                    self.currPage = 1; 
                    self.changeMode(mode) 
                    self.resetPageControl(); 
                    self.bindPageNav(); 
                    self.bindReplyList(); 
                    return false; 
                } 
            } 
        }); 
    }, 
    bindPageRandom: function() 
    { 
        var self = this; 
        $A($('page_random', 'page_random_2')).each(function(button) 
        { 
            button.onclick = function() 
            { 
                if (self.totalPage == 1) 
                { 
                    self.currPage = 1; 
                } 
                else 
                { 
                    self.currPage = Math.floor(Math.random() * (self.totalPage + 1)); 
                    if (self.currPage == 0) 
                    { 
                        self.currPage = 1; 
                    } 
                } 
                self.bindPageNav(); 
                self.bindReplyList(); 
                return false; 
            } 
        }); 
    }, 
    bindPageNav: function(flag) 
    { 
        var self = this; 
        var currPage = self.currPage; 
        if (flag != 1) 
        { 
            this.pageControl.movePageControl(currPage); 
        } 
        var pagesPerRange = 6; 
        this.totalPage = parseInt(this.totalReply / this.replyPerPage) 
            + (this.totalReply % this.replyPerPage != 0 ? 1 : 0); 
        var startPage = parseInt((self.currPage - 1) / pagesPerRange) * pagesPerRange + 1; 
        createPageNav($('page_nav'), false); 
        createPageNav($('page_nav_2'), true); 
        function createPageNav(obj, top) 
        { 
            obj.innerHTML = ''; 
            var i = startPage; 
            if (self.currPage != 1) 
            { 
                obj.appendChild(createPage2(1, '第一页', top)); 
                obj.appendChild(createPage({ 
                    page:    '上一页', 
                    onclick:function() 
                    { 
                        self.currPage = self.currPage - 1; 
                        self.bindPageNav(); 
                        self.bindReplyList(); 
                        if (top) 
                        { 
                            window.location.replace('#reload'); 
                        } 
                        return false; 
                    } 
                })); 
            } 
            for (; i < startPage + pagesPerRange; ++i) 
            { 
                if (i > self.totalPage) 
                { 
                    break; 
                } 
                obj.appendChild(createPage2(i, '', top)); 
            } 
            if (self.currPage < self.totalPage) 
            { 
                obj.appendChild(createPage({ 
                    page:    '下一页', 
                    onclick:function() 
                    { 
                        self.currPage = self.currPage + 1; 
                        self.bindPageNav(); 
                        self.bindReplyList(); 
                        if (top) 
                        { 
                            window.location.replace('#reload'); 
                        } 
                        return false; 
                    } 
                })); 
                obj.appendChild(createPage2(self.totalPage, '最末页', top)); 
            } 
        } 
        function createPage(option) 
        { 
            var p = $C('a'); 
            if (option.page == self.currPage) 
            { 
                p.style.fontWeight = 'bold'; 
            } 
            p.innerHTML = (option.text && option.text != '') ? option.text : option.page; 
            p.href = ''; 
            p.onclick = option.onclick; 
            if (option.title) 
            { 
                p.title = option.title; 
            } 
            return p; 
        } 
        function createPage2(page, text, top) 
        { 
            return createPage({ 
                page:    page, 
                onclick:function() 
                { 
                    self.currPage = page; 
                    self.bindPageNav(); 
                    self.bindReplyList(); 
                    if (top) 
                    { 
                        window.location.replace('#reload'); 
                    } 
                    return false; 
                }, 
                text:    text != '' ? text : '' 
            }); 
        } 
    }, 
    bindPageControl: function() 
    { 
        this.totalPage = parseInt(this.totalReply / this.replyPerPage) 
            + (this.totalReply % this.replyPerPage != 0 ? 1 : 0); 
        this.pageControl = new Comment.Control.Pagination({ 
                                                          totalPage: this.totalPage 
                                                          }); 
        /* overwrite event virtual function */ 
        var self = this; 
        this.pageControl.onPageChange = function() 
        { 
            self.currPage = this.getCurrPage(); 
            self.bindPageNav(1); 
            self.bindReplyList(); 
        } 
    }, 
    resetPageControl: function() 
    { 
        this.totalPage = parseInt(this.totalReply / this.replyPerPage) 
            + (this.totalReply % this.replyPerPage != 0 ? 1 : 0); 
        this.pageControl.reset({ 
                              totalPage: this.totalPage 
                              }); 
    }, 
    bindTopReply: function() 
    { 
        var self = this; 
        var rangeList = new Array(); 
        function getIndexId(reply_id) 
        { 
            return parseInt(reply_id / Comment.Configure.index_line_sum); 
        } 
        function getReplyPos(reply_id) 
        { 
            return (reply_id % Comment.Configure.index_line_sum); 
        } 
        var top_show_sum = 5; 
        var index_line_len = self.index_line_len; 
        var reply_start = self.data_sum['top_count'] - 1; 
        var start_index_id = getIndexId(reply_start); 
        var start_reply_id = getReplyPos(reply_start); 
        var currReply = 1; 
        var replySum = 0; 
        while (currReply++) 
        { 
            if (reply_start - currReply < 0) 
            { 
                rangeList.push({ 
                    url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                    range:    Comment.UrlFactory.getRangeHeader(0, start_reply_id + 1, index_line_len) 
                }); 
                break; 
            } 
            if (currReply == top_show_sum) 
            { 
                rangeList.push({ 
                    url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                    range:    Comment.UrlFactory.getRangeHeader(start_reply_id - currReply + replySum + 1, currReply - replySum, index_line_len) 
                }); 
                break; 
            } 
            if (start_reply_id - currReply < 0) 
            { 
                rangeList.push({ 
                    url:    Comment.UrlFactory.getIndexUrl(start_index_id), 
                    range:    Comment.UrlFactory.getRangeHeader(0, start_reply_id + 1, index_line_len) 
                }); 
                start_index_id--; 
                start_reply_id = Comment.Configure.index_line_sum - 1; 
                replySum = currReply; 
            } 
        } 
        var replyList = new Array(); 
        var replyAllList = new Array(); 
        var rangeSum = rangeList.length; 
        for (var i = 0; i < rangeList.length; ++i) 
        { 
            new getReplyList(i); 
        } 
        function getReplyList(i) 
        { 
            var comment_type = 'normal'; 
            var comment_id = self.commentId; 
            if (self.name == 'Group') 
            { 
                comment_type = 'group'; 
                comment_id = self.groupId; 
            } 
            var sCommentIndexUrl = '/' + self.site + '/' + comment_type + '/' 
                + Comment.UrlFactory.getCommentUrl(comment_id) 
                + Comment.UrlFactory.getIndexDir('top_count') 
                + '/' 
                + rangeList[i].url 
                + '.htm' + noCacheUrl(); 
            new Ajax.Request( 
                 sCommentIndexUrl, 
                 { 
                     method:         'get', 
                     asynchronous:    true, 
                     onSuccess:     onSucc, 
                     onFailure:        onError, 
                     requestHeaders:rangeList[i].range 
                 } 
            ); 
            function onSucc(response) 
            { 
                replyList[i] = Comment.ContentFormat.decode(response.responseText); 
                if (i == rangeSum - 1) 
                { 
                    replySort(); 
                    self.bindReplyList(); 
                } 
            } 
            function onError() 
            { 
            } 
        } 
        function replySort() 
        { 
            if (self.order == 0) 
            { 
                if (replyList.length == 1) 
                { 
                    replyAllList = replyAllList.concat(replyList[0]); 
                } 
                else 
                { 
                    for (var i = 0; i < replyList.length; ++i) 
                    { 
                        replyAllList = replyAllList.concat(replyList[i]); 
                    } 
                } 
            } 
            else 
            { 
                if (replyList.length == 1) 
                { 
                    for (var i = replyList[0].length - 1; i >= 0; --i) 
                    { 
                        replyAllList.push(replyList[0][i]) 
                    } 
                } 
                else 
                { 
                    for (var i = 0; i < replyList.length; ++i) 
                    { 
                        for (var j = replyList[i].length - 1; j >= 0; --j) 
                        { 
                            replyAllList.push(replyList[i][j]) 
                        } 
                    } 
                } 
            } 
            var str = ''; 
            for (var j = 0; j < replyAllList.length; ++j) 
            { 
                str += replyAllList[j] + '\r\n'; 
            } 
            self.topReplyList = replyAllList; 
        } 
    } 
} 
Comment.User = { 
    logined:    null, 
    uin:        null 
} 
Comment.Post = { 
    init: function(option) 
    { 
        this.base = option.base; 
        this.option = option; 
        this.initAsyncForm(); 
        this.bindPostTypeSelector(); 
        this.bindOtherEvent(); 
        this.bindPostBtn(); 
        this.bindBottomPostBtn(); 
        this.bindBottomTitleEvent(); 
        this.bindBottomPostTypeEvent(); 
        this.setDefault(); 
    }, 
    bindOpenPostBtn: function(btn, c_id) 
    { 
        $(btn).onclick = function() 
        { 
            Comment.Post.beforeOpenPost(0, '', c_id); 
            return false; 
        } 
    }, 
    formElem: [ 
        'b_anonymous', 
        'c_id', 
        'c_site', 
        'c_sort', 
        'c_title', 
        'c_content', 
        'r_key', 
        'r_type', 
        'r_tips', 
        'g_id' 
    ], 
    initAsyncForm: function() 
    { 
        var formElem = this.formElem; 
        var form = $C('form'); 
        form.id = 'post_form'; 
        $A(formElem).each(function(elem_name) 
        { 
            var elem = $C('input'); 
            elem.type = 'hidden'; 
            elem.name = elem_name; 
            elem.value = ''; 
            form.appendChild(elem); 
        }); 
        document.getElementsByTagName('body')[0].appendChild(form); 
    }, 
    clearAsyncForm: function() 
    { 
        $A($('post_form').getElementsByTagName('input')).each(function(elem) 
        { 
            elem.value = ''; 
        }); 
    }, 
    setDefault: function() 
    { 
        $('stat_post_type').innerHTML = '非匿名发表'; 
    }, 
    bindOtherEvent: function() 
    { 
        if (!$('r_quote_del')) 
        { 
            return; 
        } 
        /* 引用事件 */ 
        $('r_quote_del').onclick = function() 
        { 
            $('r_quote').style.display = 'none'; 
            return false; 
        } 
        /* 选择回复立场 */ 
        $A($('reply_type').getElementsByTagName('input')).each( 
        function(radio) 
        { 
            if (radio.value == 'middle') 
            { 
                radio.checked = true; 
            } 
            radio.onclick = function() 
            { 
                if (this.value == 'agree') 
                { 
                    $('stat_reply_type').innerHTML = '支持原帖'; 
                    makeFormValue({r_type:'0'}); 
                } 
                else if (this.value == 'disagree') 
                { 
                    $('stat_reply_type').innerHTML = '反对原帖'; 
                    makeFormValue({r_type:'1'}); 
                } 
                else 
                { 
                    $('stat_reply_type').innerHTML = '中立态度'; 
                    makeFormValue({r_type:'2'}); 
                } 
            } 
        }); 
        /* 选择辩论立场 */ 
        $A($('debate_id').getElementsByTagName('input')).each( 
        function(radio) 
        { 
            radio.onclick = function() 
            { 
                if (this.value == 'agree') 
                { 
                    $('stat_debate_type').innerHTML = '我是正方'; 
                    makeFormValue({c_id:Comment.Post.base.data_info.agree_id}); 
                } 
                else if (this.value == 'disagree') 
                { 
                    $('stat_debate_type').innerHTML = '我是反方'; 
                    makeFormValue({c_id:Comment.Post.base.data_info.disagree_id}); 
                } 
                else if (this.value == 'middle') 
                { 
                    $('stat_debate_type').innerHTML = '我是中立方'; 
                    makeFormValue({c_id:Comment.Post.base.data_info.middle_id}); 
                } 
            } 
        }); 
    }, 
    setReplyType: function(type) 
    { 
        $A($('reply_type').getElementsByTagName('input')).each( 
        function(radio) 
        { 
            if (radio.value == type) 
            { 
                radio.click(); 
                return; 
                /* 
                radio.checked = true; 
                var type_num = { 
                    'agree':    '0', 
                    'disagree':    '1', 
                    'middle':    '2' 
                }; 
                makeFormValue({r_type:type_num[type]}); 
                */ 
            } 
            else 
            { 
                radio.checked = false; 
            } 
        }); 
    }, 
    setDebate: function(type, c_id) 
    { 
        $A($('debate_id').getElementsByTagName('input')).each( 
        function(radio) 
        { 
            if (radio.value == type) 
            { 
                radio.checked = true; 
                makeFormValue({c_id:c_id}); 
            } 
            else 
            { 
                radio.checked = false; 
            } 
        }); 
    }, 
    clearValue: function() 
    { 
        $A($( 
             'l_c_title', 
             'l_c_content' 
             )).each( 
        function(input) 
        { 
            input.value = ''; 
        }); 
    }, 
    bindTitleEvent: function() 
    { 
        var d_title = Comment.Configure.reply_default_title; 
        $('l_c_title').value = d_title; 
        $('l_c_title').onfocus = function() 
        { 
            if ($('l_c_title').value == d_title) 
            { 
                $('l_c_title').value = ''; 
            } 
        } 
        $('l_c_title').onblur = function() 
        { 
            if ($('l_c_title').value == '') 
            { 
                $('l_c_title').value = d_title; 
            } 
        } 
    }, 
    bindBottomTitleEvent: function() 
    { 
        if (!$('b_c_title')) 
        { 
            return; 
        } 
        var d_title = Comment.Configure.reply_default_title; 
        $('b_c_title').value = d_title; 
        $('b_c_title').onfocus = function() 
        { 
            if ($('b_c_title').value == d_title) 
            { 
                $('b_c_title').value = ''; 
            } 
        } 
        $('b_c_title').onblur = function() 
        { 
            if ($('b_c_title').value == '') 
            { 
                $('b_c_title').value = d_title; 
            } 
        } 
    }, 
    setPostTypeSelector: function(type) 
    { 
        if (type == 'login_select') 
        { 
            $('l_login_frame').src = 'i_login.htm?l_login_frame'; 
            showElement('l_login_post'); 
            $('stat_post_type').innerHTML = '登录发表'; 
            $('l_b_tips').disabled = false; 
            $('l_b_tips').checked = false; 
            $('l_b_anonymous').checked = false; 
        } 
        else if (type == 'anonymous_select') 
        { 
            hideElement('l_login_post'); 
            $('stat_post_type').innerHTML = '匿名发表'; 
            $('l_b_tips').disabled = true; 
            $('l_b_tips').checked = false; 
            $('l_b_anonymous').checked = true; 
        } 
    }, 
    bindPostTypeSelector: function() 
    { 
        if (!$('l_b_anonymous')) 
        { 
            return; 
        } 
        $('l_b_anonymous').onclick = function() 
        { 
            if ($('l_b_anonymous').checked) 
            { 
                Comment.Post.setPostTypeSelector('anonymous_select'); 
            } 
            else 
            { 
                Comment.Post.setPostTypeSelector('login_select'); 
            } 
        } 
    }, 
    bindPostBtn: function() 
    { 
        if (!$('l_post_btn')) 
        { 
            return; 
        } 
        var self = this; 
        $('l_post_btn').onclick = function() 
        { 
            if (!getCookie('skey') && !$('l_b_anonymous').checked) 
            { 
                alert('很抱歉,您尚未登录,请先登录'); 
                return; 
            } 
            if ($('l_c_title').value.length > 32) 
            { 
                alert('很抱歉,标题不得超过32个字符'); 
                return; 
            } 
            var c_content = $('l_c_content').value.trim(); 
            if (c_content == '') 
            { 
                alert('很抱歉,请填写评论内容'); 
                $('l_c_content').focus(); 
                return; 
            } 
            else if (c_content.realLength() > 10000) 
            { 
                alert('很抱歉,评论内容不能超过10,000个字符(5,000个汉字)'); 
                $('l_c_content').focus(); 
                return; 
            } 
            if (self.base.min_len) 
            { 
                if (c_content.realLength() < self.base.min_len) 
                { 
                    alert('很抱歉,评论内容不能少于' + self.base.min_len + '个字符(' + self.base.min_len / 2 + '个汉字)'); 
                    $('l_c_content').focus(); 
                    return; 
                } 
            } 
            makeFormValue( 
            { 
                b_anonymous:    $('l_b_anonymous').checked ? '1' : '', 
                c_site:            self.base.site, 
                c_sort:            self.base.sort_en, 
                c_title:        ($('l_c_title').value == Comment.Configure.reply_default_title ? '' : $('l_c_title').value), 
                c_content:        $('l_c_content').value, 
                g_id:            self.base.comment_g_id, 
                r_tips:            $('l_b_tips').checked ? '1' : '' 
            }); 
            self.postData(); 
            return false;     
        }; 
    }, 
    bindBottomPostBtn: function() 
    { 
        if (!$('b_post_btn')) 
        { 
            return; 
        } 
        var self = this; 
        $('b_post_btn').onclick = function() 
        { 
            if (!getCookie('skey') && !$('b_b_anonymous').checked) 
            { 
                alert('很抱歉,您尚未登录,请先登录'); 
                return; 
            } 
            if ($('b_c_title')) 
            { 
                if ($('b_c_title').value.length > 32) 
                { 
                    alert('很抱歉,标题不得超过32个字符'); 
                    $('b_c_title').focus(); 
                    return; 
                } 
            } 
            var c_content = $('b_c_content').value.trim(); 
            if (c_content == '') 
            { 
                alert('很抱歉,请填写评论内容'); 
                $('b_c_content').focus(); 
                return; 
            } 
            else if (c_content.realLength() > 10000) 
            { 
                alert('很抱歉,评论内容不能超过10,000个字符'); 
                $('b_c_content').focus(); 
                return; 
            } 
            if (self.base.min_len) 
            { 
                if (c_content.realLength() < self.base.min_len) 
                { 
                    alert('书评内容不能少于' + self.base.min_len + '字符'); 
                    $('b_c_content').focus(); 
                    return; 
                } 
            } 
            makeFormValue( 
            { 
                b_anonymous:    $('b_b_anonymous').checked  ? '1' : '', 
                c_site:            self.base.site, 
                c_sort:            self.base.sort_en, 
                c_title:        ($('b_c_title').value == Comment.Configure.reply_default_title ? '' : $('b_c_title').value), 
                c_content:        $('b_c_content').value, 
                g_id:            self.base.comment_g_id, 
                c_id:            self.base.commentId, 
                r_tips:            $('b_b_tips').checked ? '1' : '' 
            }); 
            self.postData(); 
            return false; 
        }; 
    }, 
    bindBottomPostTypeEvent: function() 
    { 
        var self = this; 
        if (!$('b_b_anonymous')) 
        { 
            return; 
        } 
        if (self.base.name != 'MiniNormal') 
        { 
            setTimeout(setBottomLocation, Comment.Configure.login_frame_delay); 
        } 
        function setBottomLocation() 
        { 
            $('b_login_frame').src = 'i_login.htm?b_login_frame'; 
        } 
        $('b_b_anonymous').onclick = function() 
        { 
            if ($('b_b_anonymous').checked) 
            { 
                hideElement('b_login_post'); 
                with ($('b_b_tips')) 
                { 
                    disabled = true; 
                    checked = false; 
                } 
            } 
            else 
            { 
                $('b_login_frame').src = 'i_login.htm?b_login_frame'; 
                showElement('b_login_post'); 
                $('b_b_tips').disabled = false; 
            } 
            if (self.base.name == 'MiniNormal') 
            { 
                self.base.updateHeight(); 
            } 
        } 
    }, 
    postData: function() 
    { 
        showLoading('正在发送...'); 
        var post_form = $('post_form'); 
        post_form.action = Comment.Configure.postUrl; 
        post_form.target = 'post_async'; 
        post_form.method = 'post'; 
        post_form.submit(); 
    }, 
    fastReplyWords: 
    [ 
        [ 
            '精彩,一针见血', 
            '观点独到', 
            '说得很对', 
            '你说得有道理' 
        ], 
        [ 
             '乱七八糟说什么', 
            '你说得没道理', 
            '简直是胡说八道' 
        ] 
    ], 
    fastReply: function(btn, type, r_key, c_id) 
    { 
        var self = this; 
        $('fastLayer').innerHTML = ''; 
        $('fastLayer').style.display = 'block'; 
        $('fastLayer').style.left = findPosX(btn) + 1 + 'px'; 
        $('fastLayer').style.top = findPosY(btn) + 20 + 'px'; 
        var replyWords = this.fastReplyWords[type]; 
        for (var i = 0; i < replyWords.length; ++i) 
        { 
            var word = $C('a'); 
            word.innerHTML = replyWords[i]; 
            word.href = '#'; 
            $('fastLayer').appendChild(word); 
            word.onclick = function() 
            { 
                replyPost(this.innerHTML); 
                return false; 
            } 
        } 
        function replyPost(content) 
        { 
            makeFormValue( 
            { 
                b_anonymous:    (getCookie('skey') ? '' : '1'), 
                c_id:            c_id, 
                c_site:            self.base.site, 
                c_sort:            self.base.data_commentinfo.sort_en, 
                r_key:            r_key, 
                r_type:            (type == 0 ? '3' : '4'), 
                r_tips:            '', 
                c_title:        '', 
                c_content:        content, 
                g_id:            self.base.comment_g_id 
            }); 
            self.postData(); 
        } 
    }, 
    onError: function(msg) 
    { 
        alert(msg); 
    }, 
    onSucc: function() 
    { 
        var self = this; 
        setTimeout(reload, 300); 
        function reload() 
        { 
            self.base.reload(); 
            window.location.replace('#reload'); 
        } 
    }, 
    clearBottomInput: function() 
    { 
        $A($( 
            'b_c_title', 
            'b_c_content' 
        )).each(function(elem) 
        { 
            if (elem) 
            { 
                elem.value = ''; 
            } 
        }); 
    }, 
    logout: function() 
    { 
        var url = Comment.Configure.loginIframeUrl + '?l_login_frame'; 
        if ($('l_login_frame')) 
        { 
            $('l_login_frame').src = Comment.Configure.logoutUrl + '?url=' + url; 
        } 
        if ($('b_login_frame')) 
        { 
            $('b_login_frame').src = Comment.Configure.logoutUrl + '?url=' + url; 
        } 
    }, 
    callback: function(url) 
    { 
        hideLoading(); 
        $('post_async').src = 'about:blank'; 
        var code = url.substr(url.indexOf('code=') + 5); 
        if (code == '-') 
        { 
            code = -1; 
        } 
        code = code / 1; 
        getFormValue('r_type'); 
        if (code == -1 && Comment.Post.r_type >= 3) 
        { 
            code = 0; 
        } 
        var errMsg = ''; 
        switch (code) 
        { 
        case -1: 
            errMsg = '您的评论已提交审核,感谢您的参与!'; 
            this.closePostLayer(); 
            this.clearBottomInput(); 
            break; 
        case 0: 
            errMsg = '发表成功,感谢您的参与!'; 
            this.onSucc(); 
            this.closePostLayer(); 
            this.clearBottomInput(); 
            break; 
        case 1: 
            errMsg = '很抱歉,您填写的内容不完整,请重新输入您的内容。'; 
            break; 
        case 2: 
            errMsg = '很抱歉,您尚未登录或登录已经过期,请先登录。'; 
            this.logout(); 
            break; 
        case 3: 
            errMsg = '您的评论已提交审核,感谢您的参与!'; 
            this.closePostLayer(); 
            this.clearBottomInput(); 
            break; 
        case 4: 
            errMsg = '您的IP地址已暂时被屏蔽。'; 
            break; 
        case 5: 
            errMsg = '您的QQ号已暂时禁止在本评论系统发言。'; 
            break; 
        case 6: 
            errMsg = '很抱歉,您的QQ号码和密码不匹配。'; 
            break; 
        case 7: 
            errMsg = '很抱歉,系统繁忙,请稍候再试。'; 
            break; 
        case 8: 
            errMsg = '很抱歉,您发表的频率太快,请稍后再试。'; 
            break; 
        } 
        if (errMsg != '') 
        { 
            this.onError(errMsg); 
        } 
    }, 
    openPostLayer: function() 
    { 
        $('sPost').style.top = document.documentElement.scrollTop + 50; 
        $('sPost').style.left = 300;         
        $('sLayer').style.height = document.documentElement.scrollHeight; 
        $('sLayer').oncontextmenu = function(){return false}; 
        $('sLayer').className = 'dis'; 
        $('sPost').className= 'dis'; 
        this.auto = setInterval(setAuto, 200); 
        function setAuto() 
        { 
            $('sPost').style.top = document.documentElement.scrollTop + 50; 
        } 
    }, 
    closePostLayer: function() 
    { 
        if (!$('sLayer')) 
        { 
            return; 
        } 
        $('sLayer').oncontextmenu = function(){return true}; 
        $('sLayer').className = 'undis'; 
        $('sPost').className = 'undis'; 
        clearInterval(this.auto); 
        this.clearAsyncForm(); 
        this.clearValue(); 
        Debug.log('clearAsyncForm'); 
    }, 
    beforeOpenPost: function(type, r_key, c_id, content) 
    { 
        /* type -> 发表评论的方式 
        0:普通评论的回复 
        1:普通评论的引用回复 
        2:辩论评论的回复 
        */ 
        this.bindTitleEvent(); 
        $('post_article').innerHTML = this.base.comment_title.left(20); 
        if (getCookie('skey')) 
        { 
            this.setPostTypeSelector('login_select'); 
        } 
        else 
        { 
            this.setPostTypeSelector('anonymous_select'); 
        } 
        $('l_b_tips').checked = false; 
        switch (type) 
        { 
        case 0: 
            hideElement('debate_id', 'reply_type', 'r_quote'); 
            makeFormValue( 
            { 
                c_id:            c_id 
            }); 
            break; 
        case 1: 
            hideElement('debate_id'); 
            $('post_quote').innerHTML = (content).stripTags(); 
            showElement('r_quote', 'reply_type'); 
            this.setReplyType('middle'); 
            $('stat_reply_type').innerHTML = '中立态度'; 
            makeFormValue( 
            { 
                r_key:            r_key, 
                r_type:            '2', 
                c_id:            c_id 
            }); 
            break; 
        case 2: 
            hideElement('reply_type', 'r_quote'); 
            showElement('debate_id'); 
            break; 
        } 
        this.openPostLayer(); 
    } 
} 
var NDEBUG = true; 
var Debug = { 
    init: function() 
    { 
        if (NDEBUG == true) 
        { 
            return; 
        } 
        var divDebug = $C('div'); 
        this.divDebug = divDebug; 
        with (divDebug.style) 
        { 
            top = '10px'; 
            left = '10px'; 
            width = '300px'; 
            height = '200px'; 
            overflow = 'scroll'; 
            verticalAlign = 'top'; 
            position = 'absolute'; 
            backgroundColor = '#fff'; 
            padding = '5px'; 
            lineHeight = '110%'; 
        } 
        document.getElementsByTagName('body')[0].appendChild(divDebug); 
        this.auto = setInterval(setAuto, 200); 
        function setAuto() 
        { 
            divDebug.style.top = document.documentElement.scrollTop + 10; 
        } 
        Debug.log('<b>Debug</b>'); 
        divDebug.ondblclick = function() 
        { 
            NDEBUG = true; 
            Element.remove(divDebug); 
        } 
        this.height = 0; 
    }, 
    log: function(str) 
    { 
        if (NDEBUG == true) 
        { 
            return; 
        } 
        var now = new Date(); 
        this.divDebug.innerHTML += '[' + now.getHours() + ':'  
            + now.getMinutes() + ':' 
            + now.getSeconds() + '] ' + str + '<br>'; 
        this.divDebug.scrollTop = 10000000; 
    } 
} 
var divLoading = null; 
function showLoading(action) 
{ 
    if (!divLoading) 
    { 
        divLoading = $C('div'); 
        divLoading.className = 'loading'; 
        document.getElementsByTagName('body')[0].appendChild(divLoading); 
    } 
    if (!action) 
    { 
        divLoading.innerHTML = '正在读取...'; 
    } 
    else 
    { 
        divLoading.innerHTML = action; 
    } 
    divLoading.style.top = document.documentElement.scrollTop; 
    divLoading.style.left = '0px'; 
    divLoading.style.display = 'block'; 
} 
function hideLoading() 
{ 
    if (!divLoading) 
    { 
        return; 
    } 
    divLoading.style.display = 'none'; 
} 
function showElement() 
{ 
    for (var i = 0; i < arguments.length; i++) 
    { 
        var element = arguments[i]; 
        if ($(element)) 
        { 
            $(element).style.display = 'block'; 
        } 
    } 
} 
function hideElement() 
{ 
    for (var i = 0; i < arguments.length; i++) 
    { 
        var element = arguments[i]; 
        if ($(element)) 
        { 
            $(element).style.display = 'none'; 
        } 
    } 
} 
function getFormValue(name) 
{ 
    $A($('post_form').getElementsByTagName('input')).each(function(elem) 
    { 
        if (elem.name == name) 
        { 
            Comment.Post.r_type = elem.value; 
            return elem.value; 
        } 
        else 
        { 
            return null; 
        } 
    }); 
} 
function makeFormValue(name2Value) 
{ 
    Debug.log('makeFormValue start'); 
    $A($('post_form').getElementsByTagName('input')).each(function(elem) 
    { 
        if (name2Value[elem.name] != null) 
        { 
            elem.value = name2Value[elem.name]; 
        } 
        Debug.log(elem.name + ': ' + elem.value); 
    }); 
    Debug.log('makeFormValue end'); 
} 
function noCacheUrl() 
{ 
    return '?cache=' + rndNum(9); 
} 
function rndNum(n) 
{ 
    var rnd= '1.'; 
    for(var i = 0; i < n; i++) 
        rnd += Math.floor(Math.random() * 10); 
    return rnd; 
} 
var sUrl = window.location.href.toString(); 
var sDomain = sUrl.substring(7, sUrl.indexOf('/', 7)); 
var sPath = sUrl.substring(sUrl.indexOf('/', 7)); 
var sParam = sUrl.substring(sUrl.indexOf('?') + 1); 
if (sParam.indexOf('#') != -1) 
{ 
    sParam = sParam.substr(0, sParam.indexOf('#')); 
} 
document.domain = 'qq.com'; 
var initWith = { 
    'comment':            'Normal', 
    'i_comment':        'MiniNormal', 
    'comment_group':    'Group', 
    'comment_debate':    'Debate', 
    'comment_reply_pk':    'ReplyPK', 
    'comment_user':        'UserReply', 
    'list':                'List' 
}; 
window.onload = function() 
{ 
    Comment.Start(); 
} 
Comment.Start = function() 
{ 
    Debug.init(); 
    for (var url in initWith) 
    { 
        if (sUrl.indexOf('/' + url + '.htm') != -1) 
        { 
            if (url == 'list') 
            { 
                Comment.Page[initWith[url]].load(sUrl); 
            } 
            else 
            { 
                Comment.Page[initWith[url]].load(sParam.toQueryParams()); 
            } 
        } 
    } 
    document.body.onclick = function() 
    { 
        if ($('fastLayer')) 
        { 
            $('fastLayer').style.display = 'none'; 
        } 
    } 
} 
Comment.HotList =  
{ 
    siteObject:    { 
        'news':    '新闻', 
        'ent':    '娱乐', 
        'finance':    '财经', 
        'tech':    '科技', 
        'auto':    '汽车', 
        'gamezone':    '游戏', 
        'edu':    '教育', 
        'book':    '读书', 
        'lady':    '女性', 
        'astro':    '星座', 
        'sports':    '体育', 
        'comic':    '动漫', 
        'luxury':    '时尚', 
        'joke':    '笑话', 
        'cq':    '重庆', 
        'xian':    '西安', 
        'view':    '说吧' 
    }, 
    getRandomSite: function() 
    { 
        if (!this.siteArray) 
        { 
            this.siteArray = new Array(); 
            for (var site_en in this.siteObject) 
            { 
                this.siteArray.push(site_en); 
            } 
        } 
        var site_sum = this.siteArray.length; 
        var rnd_site = Math.floor(Math.random() * site_sum); 
        return this.siteArray[rnd_site]; 
    }, 
    bindTopHotList: function(container, site) 
    { 
        var topSiteSum = 6; 
        var topSite = new Object(); 
        if (site != '') 
        { 
            if (this.siteObject[site]) 
            { 
                topSite[site] = this.siteObject[site]; 
                topSiteSum--; 
            } 
        } 
        while (topSiteSum > 0) 
        { 
            var rnd_site = this.getRandomSite(); 
            if (topSite[rnd_site]) 
            { 
                continue; 
            } 
            topSite[rnd_site] = this.siteObject[rnd_site]; 
            topSiteSum--; 
        } 
        var hot_index = 0; 
        var hot_header = ''; 
        var hot_body = ''; 
        for (var site_en in topSite) 
        { 
            hot_header += '<p' + (hot_index == 0 ? ' class="c"' : '') + ' onclick="getMe(this)">' + topSite[site_en] + '</p>'; 
            hot_body += '<dd' + (hot_index != 0 ? ' class="undis"' : '') + ' id="Hot_Top_' + site_en + '"></dd>'; 
            hot_index++; 
        } 
        var hot_html = '<dl><dt>' + hot_header + '</dt>' + hot_body + '</dl>'; 
        $(container).innerHTML = hot_html; 
        for (var site_en in topSite) 
        { 
            this.bindTopSite('Hot_Top_' + site_en, '/c/async_html/' + site_en + '_top.htm'); 
        } 
    }, 
    bindRightHotList: function(container, site) 
    { 
        var topSiteSum = 3; 
        var topSite = new Object(); 
        if (site != '') 
        { 
            if (this.siteObject[site]) 
            { 
                topSite[site] = this.siteObject[site]; 
                topSiteSum--; 
            } 
        } 
        while (topSiteSum > 0) 
        { 
            var rnd_site = this.getRandomSite(); 
            if (topSite[rnd_site]) 
            { 
                continue; 
            } 
            topSite[rnd_site] = this.siteObject[rnd_site]; 
            topSiteSum--; 
        } 
        var hot_body = ''; 
        for (var site_en in topSite) 
        { 
            hot_body += '<dl><dt>' + topSite[site_en] + '热评</dt><div id="Hot_Right_' + site_en + '"></div></dl>'; 
        } 
        $(container).innerHTML = hot_body; 
        for (var site_en in topSite) 
        { 
            this.bindTopSite('Hot_Right_' + site_en, '/c/async_html/' + site_en + '_right.htm'); 
        } 
    }, 
    bindTopSite: function(container, url) 
    { 
        new Ajax.Request( 
             url, 
             { 
                 method:         'get', 
                 onSuccess:     onSucc, 
                 onFailure:        onError 
             } 
        ); 
        function onSucc(response) 
        { 
            $(container).innerHTML = response.responseText; 
        } 
        function onError() 
        { 
            $(container).innerHTML = ''; 
        } 
    } 
}
Javascript 相关文章推荐
多个js与css文件的合并方法详细说明
Dec 26 Javascript
用js实现小球的自由移动代码
Apr 22 Javascript
鼠标焦点离开文本框时验证的js代码
Jul 19 Javascript
js时间戳格式化成日期格式的多种方法
Nov 11 Javascript
js的for in循环和java里foreach循环的区别分析
Jan 28 Javascript
jQuery制作简洁的图片轮播效果
Apr 03 Javascript
javascript高级编程之函数表达式 递归和闭包函数
Nov 29 Javascript
javascript对象的相关操作小结
May 16 Javascript
jQuery Ajax使用FormData对象上传文件的方法
Sep 07 Javascript
Angular4学习笔记之准备和环境搭建项目
Aug 01 Javascript
sublime text配置node.js调试(图文教程)
Nov 23 Javascript
vue 弹出遮罩层样式实例
Jul 22 Javascript
一段非常简单的让图片自动切换js代码
Nov 10 #Javascript
类似框架的js代码
Nov 09 #Javascript
二级域名转向类
Nov 09 #Javascript
JavaScript的面向对象(一)
Nov 09 #Javascript
JavaScript的面向对象(二)
Nov 09 #Javascript
利用javascript查看html源文件
Nov 08 #Javascript
用javascript获得地址栏参数的两种方法
Nov 08 #Javascript
You might like
德生S2000电路分析
2021/03/02 无线电
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
剖析 PHP 中的输出缓冲
2006/12/21 PHP
php的大小写敏感问题整理
2011/12/29 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
python实现壁纸批量下载代码实例
2018/01/25 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Python中如何引入第三方模块
2020/05/27 Python
python爬虫请求头设置代码
2020/07/28 Python
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
Ejb技术面试题
2015/04/29 面试题
市场营销个人求职信范文
2014/02/02 职场文书
网站美工岗位职责
2014/04/02 职场文书
担保书范本
2015/01/20 职场文书
初三语文教学计划
2015/01/22 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
安全教育的主题班会
2015/08/13 职场文书
python - timeit 时间模块
2021/04/06 Python
OpenCV全景图像拼接的实现示例
2021/06/05 Python
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS