function prompt_login(login_url){
        $("#login_prompt a.close").click(function(){
                close_div($("#login_prompt"));
                return false;
        });
        popup_div('#login_prompt');

        if(login_url){
        $('#login_prompt a.login')[0].href = login_url;
    }
}

function popup_div(target){
        shade = $("<div id=\"shade\"></div>");
        shade.css({
                position: 'absolute',
                backgroundColor: '#000000',
                display: 'none',
                height: $(document).height(),
                width: $(document).width(),
                zIndex: 999999,
                opacity: 0.5
        });
        $("body").prepend(shade);

        shade.show();
        $(target).css({
                top: parseInt(($(window).height() - $(target).height()) / 2) + $(window).scrollTop(),
                left: parseInt(($(window).width() - $(target).width()) / 2)
        }).show();
}

function close_div(target){
        $("#shade").hide();
        $(target).hide();
}      


/* Fix to Improve IE6 */
if(document.uniqueID && !window.XMLHttpRequest){
/* Image Cache */
    try {
        document.execCommand('BackgroundImageCache',false,true);
    }catch(e){
    }
}
var oCmt = {
    el : $("#cmt"), 
    fid : 0,     
    episode_no : 0,
    episode_name : '', 
    nickname : '',
	from : '',
    config : {
        login_url : 'https://member.tvb.com/login.php?',
        list_api : '',
        reply_api : '',
        report_api : '',
        remove_api : '',
        support_api : '',
        against_api : '',
		ajax_api : '',
        max_post_chars : 5000,
        vote_interval : 10,
        flood_interval : 30,
        against_over : 0,
        report_reasons : null,
		is_artise: 0,
		page_order_str:	''
    },
    next_vote_time : (new Date()).getTime(),
    next_reply_time : (new Date()).getTime(),
    init : function (api_url, fid, episode_no, episode_name,from){
        this.fid = fid; 
        this.episode_no = episode_no;
        this.episode_name = encodeURIComponent(episode_name); 
		this.from = from;
		
        
        if( this.fid == false ){
            //console.error('缺少Forum ID');
            return false;
        }
        if( this.episode_no == false ){
            //console.error('缺少集數');
            return false;
        }   
        if( !api_url ){
            //console.error('api未定義！');
            return false;
        }
		
		if(!this.from)
		{
			this.from = '';	
		}
        if( !this.el.id ){
            document.write('<div id="cmt"></div>');
            this.el = $("#cmt");
        }
        
        var _this = this;
        $.ajax({
            type : 'GET',
            url  : api_url+'?action=config'+'&from=' + from +"&rd="+Math.random(), 
            dataType : 'json',
            cache : false,
            success : function(data){
                if(data && data.info=='ok'){
                    var config = data.msg;
                    _this.nickname = config.login.nickname;
					_this.uid = config.uid;
	                _this.config.list_api = api_url + '?action=' + config.action.list;
                    _this.config.reply_api = api_url + '?action=' + config.action.reply;
                    _this.config.report_api = api_url + '?action=' + config.action.report;
                    _this.config.remove_api = api_url + '?action=' + config.action.remove;
                    _this.config.support_api = api_url + '?action=' + config.action.support;
                    _this.config.against_api = api_url + '?action=' + config.action.against;
					_this.config.ajax_api = api_url + '?action=' + config.action.ajax;
                    _this.config.max_post_chars = config.max_post_chars;
                    _this.config.flood_interval = config.flood_interval;
                    _this.config.vote_interval = config.vote_interval;
                    _this.config.report_reasons = config.reason;
                    _this.config.against_over = config.approval_rating;
					_this.config.first_reply = config.lang.no_reply;
					_this.config.delete_reply = config.lang.delete_reply;
					_this.err.over_max_post_chars = config.lang.over_max_post_chars;
					_this.err.need_reply_msg = config.lang.need_reply_msg;
					_this.err.busy_to_reply = config.lang.busy_to_reply;
					_this.err.need_reason_id = config.lang.need_reason_id;
					_this.err.be_voting = config.lang.be_voting;
					_this.err.been_voted = config.lang.been_voted;
					_this.err.busy_to_vote = config.lang.busy_to_vote;
					_this.err.been_reported = config.lang.been_reported;
					_this.config.is_artise = config.is_artise;
					_this.config.page_order_str = config.lang.page_order_str;
                    _this.render();
                }else{
                    //console.error('初始化配置信息失敗！');
                    //console.error(data.msg);
                    return false;
                }
            },
            error : function(o, errTxt, errThrow){
                //console.error(errTxt)
            } 
        });
        
    },
    render : function (){
        var _this = this;
        var html = '';
        html += '<div class="hd">';
        html += '<span class="l">' + _this.config.page_order_str + '<span class="rows_total">(0)</span></span>';
        html += '<span class="r">想' + _this.config.page_order_str + '？請先';
        html += '<a href="https://member.tvb.com/login.php" class="login">登入</a>';
        html += '或<a href="https://member.tvb.com/register.php">註冊</a></span> </div>';
        
        html += '<div class="bd">';
        html += '<form class="reply-form" action="'+this.config.reply_api+'" method="post">';
        html += '<input type="hidden" name="f" value="'+this.fid+'" />';
        html += '<input type="hidden" name="episode_name" value="'+this.episode_name+'" />';
        html += '<input type="hidden" name="episode_no" value="'+this.episode_no+'" />';
        html += '<div class="text-item"><textarea name="message"></textarea></div>';
        html += '<div class="submit-item meta"><span class="l">字數:<span id="wdcount">0</span> (輸入上限:'+_this.config.max_post_chars+'字)<span id="curnickname" class="member">'+this.nickname+'</span></span>';
        html += '<span class="btnarea r"><span class="over">'+_this.err.over_max_post_chars+'</span><span class="err"></span><button type="submit">送出</button></span>';
        html += '</div></form>';
        html += '<ol class="list"></ol> </div>';
        
        html += '<div class="ft empty">';
        html += '<span class="l">第 <span class="row_bound">0</span> 個' + _this.config.page_order_str + '</span>';
        html += '<span class="r"></span> </div>';
        
        html += '<div id="report-box-pl"><div class="report-box"><div class="bg"></div>';
        html += '<div class="fg">';
        html += '<h4>舉報</h4>';
        html += '<form action="'+this.config.report_api+'"><input type="hidden" name="p" value="0" />';
        html += '<p class="note">使用這個表單來向管理員舉報違反版面規則的情況</p>';
        html += '<p><label for="reason_id">原因</label><select name="reason_id" id="reason_id">';
        var i, reasons = this.config.report_reasons;
        for (i in reasons){
            html += '<option value="'+reasons[i].reason_id+'">'+reasons[i].reason_description+'</option>';
        }
        html += '</select></p>';
        html += '<p><label for="report_text">更多訊息 (這裡允許空白)</label><span class="err"></span><textarea name="report_text" id="report_text">';
        html += '</textarea></p>';
        html += '<p class="submit-item"><button type="submit">送出</button><button type="reset">取消</button></p></form>';
        html += '<div class="result">'; 
        html += '<p class="txt">謝謝您的舉報，管理員將會跟進。</p>';
        html += '<p class="submit-item"><button class="close" type="button">關閉</button></p></div>';
        html += '</div></div></div>';
		$(document.body).ready(function () {
        	$(document.body).append('<div id="login_prompt" class="prompt"><div class="right"><a href="#" class="close"></a></div><div class="button"><a class="login" href="https://member.tvb.com/login.php?lang=zh"></a><a class="reg" href="https://member.tvb.com/register.php?lang=zh"></a></div></div>'); 
        });
        $(this.el).html(html);
        if(this.nickname){
            $(".hd .r",this.el).hide();
            $(".reply-form",this.el).show();   
        }else{
            $(".reply-form",this.el).hide();
            $(".hd .r",this.el).show();
        }
        
        $("a.login",this.el).bind("click", function(e){                
                _this.to_login();
                return false;
            }
        );
        $("textarea[name=message]",this.el).keyup(
            function(e){                
                $(".err", $(this).parents("form")).fadeOut('slow', function(){$(this).html('');});
                if(this.value.length > this.maxlength){
                    _this.show_err($(".err",$(this).parents("form")), _this.err.over_max_post_chars);
                    return false;
                }
            }
        );
        $("button",this.el).hover(
            function(){
                $(this).addClass('over');
            },
            function(){
                $(this).removeClass('over');
            }
        );
        var dReplyForm = $(".reply-form", this.el);
		var keyUpHandler = function(e){
			if(e.target.value.length >= _this.config.max_post_chars){
				var scrollTop = e.target.scrollTop;
				e.target.value = e.target.value.substr(0,_this.config.max_post_chars);
				e.target.scrollTop = scrollTop;
				$(".over",dReplyForm[0])[0].style.display = "inline";
			}else{
				$(".over",dReplyForm[0])[0].style.display = "none";
			}
			$("#wdcount")[0].innerHTML = e.target.value.length;
		}
		var focusHandler = function(e){
			if(!_this.nickname){
				var dest_url = window.location.href;
				var login_url = _this.config.login_url;
				login_url = login_url + '&destURL='+encodeURIComponent(dest_url);
				e.target.blur();
				prompt_login(login_url);
				return false;
			}
			if($("ol.list",_this.el)[0].style.display=="none"){
				if(e.target.value == _this.config.first_reply){
					e.target.value = "";
				}
			};
		}
		$(dReplyForm[0].message).bind("keyup",keyUpHandler);
		$(dReplyForm[0].message).bind("focus",focusHandler);
        dReplyForm.submit(function(){
			if(!_this.nickname){
				var dest_url = window.location.href;
				var login_url = _this.config.login_url;
				login_url = login_url + '&destURL='+encodeURIComponent(dest_url);
				prompt_login(login_url);
				return false;
			}
            this.message.value = $.trim(this.message.value).replace(/(^　+)|(　+$)/g,'');
			if($("ol.list",_this.el)[0].style.display=="none"){
				var re = new RegExp("^"+_this.config.first_reply+"$","g");
				this.message.value = this.message.value.replace(re,'');
			};
			$("#wdcount")[0].innerHTML = this.message.value.length;
            if(!this.message.value.length){
                _this.show_err($(".err",this), _this.err.need_reply_msg);
                this.message.focus();
                return false;
            }
            if(this.message.value.length > this.maxlength){
				//$(".over",this)[0].style.display = "inline";
                //this.message.focus();
                return false;
            }
            var interval = (new Date()).getTime() - _this.next_reply_time;
            if( interval < 0  ){
                var n = -(interval)/1000; 
                _this.show_err($(".err",this), _this.err.busy_to_reply, n);
                return false;
            }
            
            $(".err",this).hide().html('');
            $("button[type=submit]",this)[0].blur();
            $("button[type=submit]",this)[0].disabled = true;
            $("button[type=submit]",this).removeClass('over').addClass('disable');
            
            _this.reply( $(this).serialize() );
            return false;
        });
        
        $(".report-box .close", $("#report-box-pl")).click(function(){
            _this.report_close();
        });
        $(".report-box #reason_id", $("#report-box-pl")).change(function(){
            if(!this.value){
                _this.show_err($(".err",this.form), _this.err.need_reason_id);
            }else{
                $(".err",this.form).hide().html('');
            }
        });
        
        $(".report-box form", $("#report-box-pl")).submit(function(){
            var reason_id = $.trim(this.reason_id.value);
            if(!reason_id){
                _this.show_err($(".err",this), _this.err.need_reason_id);
                return false;
            }
            $(".err",this).hide().html('');
            $("button[type=submit]",this)[0].blur();
            $("button[type=submit]",this)[0].disabled = true;
            $("button[type=submit]",this).removeClass('over').addClass('disable');
            _this.report( $(this).serialize() );
            return false;
        });
        $(".report-box button[type='reset']", $("#report-box-pl")).click(this.report_close);
        
        var hash = window.location.hash.match(/^#(page\-(\d+))((against|support|report)\-(\d+))?$/); 
        var page = hash?hash[2]: 1;
        var callback = null;
        if(!!_this.nickname && !!hash){ //+++ this.nickname +++
            switch(hash[4]){
                case 'support':
                    callback = function(){ _this.vote(hash[5], 'support'); }
                break;
                case 'against':
                    callback = function(){ _this.vote(hash[5], 'against'); }
                break;
                case 'report':
					callback = function(){}
                    //callback = function(){ _this.report_pop(hash[5]); }
                break;
            }
            
        }
	$(document.body).ready(function () {
		document.body.appendChild($("#report-box-pl")[0]);
		
	});
        this.load(page, callback);
    },
    load : function (page, callback){         
        var page = page?page:1;
        var el = this.el;
        var url = this.config.list_api+"&f="+this.fid+"&episode_name="+encodeURI(this.episode_name)+"&episode_no="+this.episode_no+"&page="+page;
        
        window.location.hash = '#page-'+page;
        $(el).show();
        $(".list",el).fadeOut("fast");
        
        var _this = this;
        $.ajax({
            type : 'GET',
            url  : url+'&from=' + this.from +"&rd="+Math.random(),
            dataType : 'json',
            cache : false,
            success : function(data){
				_this.check_curUser(data);
                if(data && typeof data.info && data.info=='err'){
                    $(".reply-form", el)[0].style.display = "none";
                    return false;
                }
                
                var list = data.list || [];
                var page = data.page || [];
                
                _this.config.max_post_chars = data.post_chars || _this.config.max_post_chars;
				$(".ft",el).removeClass('empty');
                $(".ft",el).addClass((!page.html_page)?'empty':'');
                $(".ft .r",el).html(((!page.html_page)?'':page.html_page));
                $(".ft .row_bound",el).html((!page.rang_page)?'0':page.rang_page);
                $(".hd .rows_total",el).html('(' + ((!page.total_rows)?'0':page.total_rows) + ')');
                if(!list.length){
					 $(".reply-form textarea",el)[0].value = _this.config.first_reply;
					 $(".reply-form",el).show();
				}else{
                    var html = "";
                    for(var i=0,l=list.length; i<l; i++ ){
                        var myclass="";
                        if(_this.uid == list[i].poster_id){
                            myclass += ' cur';
                        }
                        if(list[i].support != 0 || list[i].against != 0){
                            myclass += ' voted';
                        }
                        if(list[i].is_voted == 1){
                            myclass += ' i_supported';
                        }
                        if(list[i].is_voted == 2){
                            myclass += ' i_againsted';
                        }
                        if(list[i].post_reported == 1){
                            myclass += ' reported';
                        }
						var collapse = list[i].against >= parseInt(_this.config.against_over);
                        if( collapse ){
                            myclass += ' collapse';
                        }
						
						if(list[i].artist_head != "") {
							myclass += ' artist';
						}

                        myclass = (myclass=='')?((i==(l-1))?' class="lastrow"':''):((i==(l-1))?' class="'+myclass+' lastrow"':' class="'+myclass+'"');
                        html += "<li id='post-"+list[i].post_id+"' "+ myclass +">"
                        html += "<div class='content'>"+list[i].post_text+"</div>";
                        html += "<div class='meta'>";
                        html += "<span class='l'>";


						if(list[i].artist_head != "") {
							html += "<span class='member'><a target='_blank' href='"+ list[i].artist_blog +"'><img onmouseout='$(this).removeClass(\"image_link_over\")' onmouseover='$(this).addClass(\"image_link_over\")' class='image_link' alt='"+ list[i].username +"' src='"+ list[i].artist_head +"'/></a></span><span class='ar'><a target='_blank' href='"+ list[i].artist_blog +"'>"+ list[i].username +"</a><br /><span class='date'>"+list[i].post_time+"</span></span>";
						}else {
							html += "<span class='member'>" + list[i].username + "</span>";
							html += "<span class='date'>"+list[i].post_time+"</span>";
						}						
					
						
						
                        if( collapse ){
                            html += "<a href='#' class='open'>顯示</a>";
                        }
                        html += "</span>";
                        html += "<span class='opr r'>";
                        html += "<span class='msg'><div>　<span class='err'></span></div>";
                        if(_this.uid == list[i].poster_id){
                            html += "<a href='#remove-"+list[i].post_id+"' id='remove-"+list[i].post_id+"' class='remove' title='刪除'>刪除</a>";
                        }else{
							if(list[i].artist_head == "") {
                            	html += "<a href='#report-"+list[i].post_id+"' id='report-"+list[i].post_id+"' class='report' title='舉報'>舉報</a>";
							}
						}
                        html += "</span>";
						if(list[i].artist_head == "") {
                        html += "<span class='against'><a href='#against-"+list[i].post_id+"' id='against-"+list[i].post_id+"' title='噓'>噓</a><span>"+((list[i].against>=999)?999:list[i].against)+"</span></span>";
                        html += "<span class='support'><a href='#support-"+list[i].post_id+"' id='support-"+list[i].post_id+"' title='頂'>頂</a><span>"+((list[i].support>=999)?999:list[i].support)+"</span></span>";
						}
                        html += "</span></div>";
                        html += "<a href='#' title='隱藏' class='close'></a>";
                        html += "</li>";
                    }
                    $(".list",el).html(html);
                    
                    $(".list",el).fadeIn("slow", callback);
                    
                    $(".collapse .open", el).click(function(e){                        
                        $(".content", $(this).parents("li")).hide();
                        $(this).parents("li").removeClass("collapse").addClass("expand");
                        $(".content", $(this).parents("li")).slideDown("fast", function(){
                            $(".close", $(this).parents("li")).show();
                        });
                        $(this).hide();
                        return false;
                    });
                    $("li .close", el).click(function(e){
                        $(".content", $(this).parents("li")).slideUp("fast",function(){
                            $(this).parents("li").removeClass("expand").addClass("collapse");
                            $(this).show();
                            $(".open", $(this).parents("li")).show();
                        });
                        
                        $(this).hide();
                        return false;
                    });
                    
                    $(".meta .support a, .meta .against a",el).click(function(e){
                        if(!_this.nickname){ 
                            _this.to_login(this.id);
                            return false;
                        }
                    
                        var post_id = this.id.replace(/.*-/,'');
                        var action = this.id.replace(/\-\d+/,'');
                        var oLi = $("#post-"+post_id, _this.el);
                        var oErr = $(".err", oLi);
                        
                        if(oLi.hasClass('cur')){
                            return false;
                        }
                        if(oLi.hasClass('voting')){
                            _this.show_err(oErr, _this.err.be_voting, 2);
                            return false;
                        }
                        if(oLi.hasClass('i_supported') || oLi.hasClass('i_againsted')){
                            _this.show_err(oErr, _this.err.been_voted, 2); 
                            return false;
                        }
                        var interval = (new Date()).getTime() - _this.next_vote_time;
                        if( interval < 0  ){
                            var n = -(interval)/1000; 
                            _this.show_err(oErr, _this.err.busy_to_vote, n);
                            return false;
                        }
						
                        
                        oLi.addClass("voting");
                        _this.vote(post_id, action);
                        return false;
                    });
                    
                    $(".meta .report",el).click(function(){
                        if(!_this.nickname){
                            _this.to_login(this.id);
                            return false;
                        }
                        
                        var post_id = this.id.replace(/.*-/,'');
                        var oLi = $("#post-"+post_id, _this.el);
                        var oErr = $(".err", oLi);
                            
                        if(oLi.hasClass('reported')){
                            _this.show_err(oErr, _this.err.been_reported, 2);
                            return false;
                        }
                        if(1){
							$.getJSON( _this.config.ajax_api+"&type=check_report&p="+post_id+'&from=' + _this.from +"&rd="+Math.random(),function(o){
								if(o.info=="ok"){_this.report_pop(post_id);}else{_this.show_err(oErr, _this.err.been_reported, 2);}
							});
                        }
                        return false;
                    });
                    
                    $(".meta .remove",el).click(function(){  
                        var post_id = this.id.replace(/.*-/,'');
                        
                        if(!_this.nickname){ 
                            return false;
                        }
                        
                        if(confirm(_this.config.delete_reply)){
                            _this.remove(post_id);
                        }
                        return false;
                    });
                    
                    $(".ft .pagination a",el).click(function(e){
                        if(this.className != 'cur' && this.className != 'elli'){
                            var page = this.getAttribute("pg");                            
                            _this.load(page);
                        }                        
                        return false;
                    });
                    
                }
            },
            error : function(o, errTxt, errThrow){
                //console.error(errTxt);
            }
        });        
        
    },
    reply : function (data){  
        var _this = this;
		$.ajax({			  
            type : 'POST',
            url : this.config.reply_api+'&from=' + this.from +"&rd="+Math.random(), 
            data : data,
            dataType : 'json',
            success : function(data){
				_this.check_curUser(data);
                var delay = Number(data.delay)*1000;
                if(data.info == 'ok'){
                    _this.load(1);
                    $(".reply-form textarea[name='message']",_this.el).val('');
					$(".reply-form span.over",_this.el)[0].style.display = "none";
					$("#wdcount")[0].innerHTML = 0;
                }else{
                    if(data.info == 'err'){
                        _this.show_err($(".reply-form .err",_this.el), data.msg, 3);                        
                    }
                }
                $(".reply-form button[type=submit]",_this.el)[0].disabled = false;
                $(".reply-form button[type=submit]",_this.el).removeClass('disable');
                _this.next_reply_time = (new Date()).getTime() + delay;
            },
            error : function(o, errTxt, errThrow){                
                $(".reply-form button[type=submit]",_this.el)[0].disabled = false;
                $(".reply-form button[type=submit]",_this.el).removeClass('disable');
                //console.error(errTxt);
            }
        });
        
    },
    vote : function (post_id, action){  
        var url = this.config[action+'_api']+'&p='+post_id+'&from=' + this.from;
        var _this = this;
        $.ajax({
            type : 'get',
            url : url+"&rd="+Math.random(),
            dataType : 'json',
            success : function(data){
				_this.check_curUser(data);
                if(data.info == 'ok'){
                    var n = Number($("#"+action+"-"+post_id, _this.el).next().html().replace(/[^\d]/g,''));
                    n = (n >= 999)? 999 : n+1;
                    $("#"+action+"-"+post_id, _this.el).next().html(n);
                    $("#post-"+post_id, _this.el).addClass('i_'+action+'ed');
                    _this.next_vote_time = new Date().getTime() + _this.config.vote_interval*1000;
					$("#post-"+post_id, _this.el).removeClass("voting").addClass("voted");
                }else{
                    if(data.info == 'err'){
                        var oErr = $("#post-"+post_id+" .err",_this.el);
                        _this.show_err(oErr, data.msg, 2);
                    }                    
                }
               // $("#post-"+post_id, _this.el).removeClass("voting").addClass("voted");
            },
            error : function(o, errTxt, errThrow){
                $("#post-"+post_id, _this.el).removeClass("voting");
                //console.error(errTxt);
            }
        });
        window.location.hash = window.location.hash.replace(/(support|against|report)\-\d+/,'');
    },
    remove : function (post_id){  
        var url = this.config.remove_api+'&f='+this.fid+'&p='+post_id;
        var _this = this;
        $.ajax({
            type : 'get',
            url : url+'&from=' + this.from +"&rd="+Math.random(),
            dataType : 'json',
            success : function(data){
                if(data.info == 'ok'){
                    //$("#post-"+post_id, _this.el).remove();
                    var page = $(".pagination .cur", _this.el).attr('pg');
                    _this.load(page);
                }else{
                    if(data.info == 'err'){
                        _this.show_err($("#post-"+post_id+" .err",_this.el), data.msg, 3); 
                    }
                    
                }
            },
            error : function(o, errTxt, errThrow){
                //console.error(errTxt)
            }
        });
    },
    report : function (data){
        var url = this.config.report_api;
        var _this = this;
        var post_id = $(".report-box input[name='p']", $("#report-box-pl")).val();
        $.ajax({
            type : 'POST',
            url : url+'&from=' + this.from +"&rd="+Math.random(), 
            data : data,
            dataType : 'json',
            success : function(data){
				_this.check_curUser(data);
                if(data.info == 'ok'){ 
                    $("#post-"+post_id, _this.el).addClass("reported");
                    $(".report-box input[name='p']", $("#report-box-pl")).val('');
                    _this.report_result();
                }else{
                    if(data.info == 'err'){
                        _this.show_err($(".report-box .err",$("#report-box-pl")), data.msg, 3);                        
                    }
                    
                }
                $(".report-box button[type=submit]",$("#report-box-pl"))[0].disabled = false;
                $(".report-box button[type=submit]",$("#report-box-pl")).removeClass('disable');
            },
            error : function(o, errTxt, errThrow){
                //console.error(errTxt)
            }
        });
        
    },
    report_pop : function (post_id){
        var reportBox = $(".report-box",$("#report-box-pl"));
		$("#report_text", reportBox)[0].value = "";
        $(".fg h4 span", reportBox).show();
        $(".err", reportBox).hide();
        $(".fg .result", reportBox).hide();
        $(".fg form", reportBox).show();
        var h = $(document.body).height();
        reportBox.show("fast");
        $("input[name='p']", reportBox).val(post_id);
		var maskH = (h<document.documentElement.clientHeight)?document.documentElement.clientHeight+"px":h + 'px';
        $(".bg", reportBox).css({"height":maskH, "top":"0px", "left":"0px"});
		var nScroll = (document.body.scrollTop?document.body.scrollTop:document.documentElement.scrollTop);
		var nTop = nScroll+(document.documentElement.clientHeight - $(".fg", reportBox).height())/2;
		var nLeft = (document.body.offsetWidth - $(".fg", reportBox).width())/2;
        $(".fg", reportBox).css({"top":nTop+"px","left":nLeft+"px"});
    },
    report_close : function (){
		var reportBox = $(".report-box",$("#report-box-pl"));
        $("#reason_id", reportBox).val('');
        $("textarea[name='desc']", reportBox).val('');
		$(".fg .result", reportBox).hide("fast");
        reportBox.hide("fast");
        window.location.hash = window.location.hash.replace(/(support|against|report)\-\d+/,'');
    },
    report_result : function (){
        var reportBox = $(".report-box",$("#report-box-pl"));
        $(".fg h4 span", reportBox).hide();
        $(".fg form", reportBox).hide();
        $(".fg .result", reportBox).height( $(".fg form", reportBox).height() ).show();
    },
    to_login : function (action){
        var page = $(".pagination .cur", this.el).attr('pg');
		if(!page){page = 1;}
        var login_url = this.config.login_url;
        window.location.hash = '#page-'+page+(action?action:'');
        var dest_url = window.location.href;        
        login_url = login_url + '&destURL='+encodeURIComponent(dest_url);
        if(action){
            prompt_login(login_url);
        }else{
            window.location.href = login_url;
        }
    },
    show_err : function (o, msg, hide_delay){
		if(msg.toLowerCase() == "null"){return false;}
        o.html(msg).fadeIn('fast', function(){
            if(hide_delay){
                setTimeout(function(){
                    o.fadeOut('fast');
                }, hide_delay*1000);
            }
        });
    },
	check_curUser : function(data){
		if(data.is_refresh == 1 || (data.login && data.login.nickname && data.login.nickname!="" && this.nickname != data.login.nickname)){
			window.location.reload();
		}
	},
    err : {}
};
