$(function(){
	$('body').limit();
	if(document.location.host.indexOf('u17.com')>-1){
		update_session();
		SessionTimeId=setInterval(update_session,5*60000);
	}
});

var U17_MENU={
	MAIN:{
		INDEX  	: 0,
		EVENT  	: 1,
		GUESTBOOK:2,
		//ALBUM  	: 2,
		RANK	: 3,		
		I		: 4,
		NEWS	: 5,
		ORTHER	: 6
	}
};

function menu_main(i){
	var o=$('.new_menu ol');
	o.removeClass('menu_selected');
	if(i>=0 && i<o.length){
		$(o.get(i)).addClass('menu_selected');
	}
}
function menu_group(i){
	$('#menu_group ol').removeClass('selected');
	$('#menu_group ol[value='+i+']').addClass('selected');
}
function menu_cate(i){
	$('#menu_cate ol').removeClass('selected');
	$('#menu_cate ol[value='+i+']').addClass('selected');
}
if(cfg_host_base().indexOf('u17')>0 && location.host.indexOf('u17')>0){
	document.domain=get_domain();
}
function get_domain(){
	if(typeof _cfg_domain=='undefined') _cfg_domain='u17.com';
	return _cfg_domain;	
}
function cfg_host_static(){
	if(typeof _cfg_host_static=='undefined') _cfg_host_static='http://static.u17.com';
	return _cfg_host_static;
}
function cfg_host_base(){
	if(typeof _cfg_host_base=='undefined') _cfg_host_base='http://www.u17.com';
	return _cfg_host_base;
}
function cfg_host_i(){
	if(typeof _cfg_host_i=='undefined') _cfg_host_i='http://i.u17.com';
	return _cfg_host_i;
}
function cfg_host_upload(){
	if(typeof _cfg_host_upload=='undefined') _cfg_host_upload='http://upload.u17.com';
	return _cfg_host_upload;
}
function cfg_host_log(){
	if(typeof _cfg_host_log=='undefined') _cfg_host_i='http://log.u17.com';
	return _cfg_host_log;
}
function cfg_host_so(){
	if(typeof _cfg_host_so=='undefined') _cfg_host_so='http://so.u17.com';
	return _cfg_host_so;
}
function cfg_host_passport(){
	if(typeof _cfg_host_passport=='undefined') _cfg_host_passport='http://passport.u17.com';
	return _cfg_host_passport;
}
function cfg_host_cover(){
	if(typeof _cfg_host_cover=='undefined') _cfg_host_cover='http://cover.u17.com';
	return _cfg_host_cover;
}
function cfg_host_tc(){
	if(typeof _cfg_host_tc=='undefined') _cfg_host_tc='http://tc.u17.com';
	return _cfg_host_tc;
}
function cfg_host_shop(){
	if(typeof _cfg_host_shop=='undefined') _cfg_host_shop='http://shop.u17.com';
	return _cfg_host_shop;
}
function cfg_host_image(i){
	if(typeof _cfg_host_image=='undefined') _cfg_host_image=['http://img1.u17.com','http://img2.u17.com','http://img3.u17.com','http://img4.u17.com'];
	return _cfg_host_image[i-1];
}
function get_host(){
	return location.protocol+location.host;
}
function cfg_host_tuku(){
	if(typeof _cfg_host_tuku=='undefined') _cfg_host_tuku='http://tuku.u17.com';
	return _cfg_host_tuku;
}
/**
 * 小提示，只有确定按钮，2秒后自动消失
 * @param content 提示内容
 * @return
 */
function showMsgS(content){
	showMsg(content,'妖气提示',null,3000);
}

/**
 * 小提示
 * @param content 提示内容
 * @param title 提示标题，默认“妖气提示”
 * @param buttons 按钮
 * @param timeout 多少秒后自动消失
 * @return
 */
var messageBoxIndex=0; 
function showMsg(content,title,buttons,timeout,width,height){
	var _timeout=timeout;
	messageBoxIndex++;
    var id="messageBox"+messageBoxIndex;
	$("body").append("<div id=\""+id+"\" style=\"display:none;overflow:hidden;\" title=\"\"></div>");
	title = title==undefined ?"妖气提示":title;
	$("#"+id).attr("title",title);
	var body=$('<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"><tr><td class="messageBoxTd" align="center" valign="middle"></td></tr></table>');
	body.find('.messageBoxTd').append(content);
	$("#"+id).append(body);
	var open=function(){};
	var timeEventId=null;
	var pos='center';
	if(window.self!=window.top){
		var ptop=parent.document.documentElement.scrollTop;
		var pbottom=parent.document.documentElement.clientHeight+parent.document.documentElement.scrollTop;
		var ctop=parent.$('#frame_comment').position().top;
		var cbottom=ctop+parent.$('#frame_comment').height();
		var top=Math.max(ptop,ctop);
		var bottom=Math.min(pbottom,cbottom);
		var mtop=(bottom+top)/2-ctop;
		if(bottom-top>220){mtop-=110}
		var mleft=parent.$('#frame_comment').width();
		if(mleft>350){mleft=mleft/2-175}
		pos=[mleft,mtop];
	}
	if(_timeout!=undefined && _timeout>0){
		open=function(event, ui){timeEventId=setTimeout(function(){$('#'+id).dialog('close');},_timeout); }
	}
	if(buttons==undefined){
		buttons={'确定':function(){$(this).dialog('close');}};
	}
	$("#"+id).dialog({
		//bgiframe: true,
		height: typeof(height)=='undefined'?220:height,
		width:typeof(width)=='undefined'?350:width,
		modal: true,
		buttons:buttons,
		resizable:false,
		position:pos,
		open:open,
		close:function(e,ui){$("#"+id).dialog('destroy').remove();clearTimeout(timeEventId);$().enableSelection();}
	});
	return $("#"+id);
}

function bind_float_menu(btn,panel,x,y){
	$(btn).unbind().bind("mouseenter",function(){
		offset=$(btn).offset();
		$(panel).css({left:offset.left+x,top:offset.top+y});
		$(panel).slideDown("fast");
		if($(btn).data('time')) clearTimeout($(btn).data('time'));
		if($(panel).data('time')) clearTimeout($(panel).data('time'));
	}).dblclick(function(){
		offset=$(btn).offset();
		$(panel).css({left:offset.left+x,top:offset.top+y});
		$(panel).slideToggle("fast");
	}).bind("mouseleave",function(){
		hidequcikmenu=setTimeout(function(){$(panel).slideUp("fast");},200);
		$(btn).data('time',hidequcikmenu);
	});
	$(panel).unbind().bind("mouseleave",function(){
		hidequcikmenu=setTimeout(function(){$(panel).slideUp("fast");},200);
		$(panel).data('time',hidequcikmenu);
	}).bind("mouseenter",function(){
		if($(btn).data('time')) clearTimeout($(btn).data('time'));
		if($(panel).data('time')) clearTimeout($(panel).data('time'));	
	}).find("a").click(function(){
		$(this).blur();
		$(panel).slideUp("fast");
	});
}
 
/**
 * 自动获取消息数的事件id
 */
var MessageTimeId=0;
var SessionTimeId=0;
/**
 * 登录后的callback
 */
var callbackLogin = [];
 
/**
 * 登录区刷新
 * @return
 */
function flush_login(){
	if(typeof (is_u17_index)!="undefined") index_flush_login();	
	var user_id=$.xcookie('user_id');
	if(user_id){
		$('#user_panel').show();
		$('#login_panel').hide();
		$("#user_nickname").html($.xcookie('nickname')).unbind().click(function(){ $(".hide_menu_1").toggle('blind',{},500);return false;});//attr('href',cfg_host_base()+'/member/'+$.xcookie('user_id')+'.html');
		flush_msg_count();
		flush_user_face();
		bind_float_menu('#user_nickname','.hide_menu_1',-10,20);
		MessageTimeId=setInterval(flush_msg_count,5*60000);
	}else{
		$('#user_panel').hide();
		$('#login_panel').show();
		$("#user_nickname").html(' ');
		if(MessageTimeId!=0)
			clearInterval(MessageTimeId);
	}
}

function update_session(force){
	var user_id=$.xcookie('user_id');
	if(user_id){
		var sessionstatus=$.xcookie('sessionstatus');
		if(sessionstatus==undefined || sessionstatus==null || force===true){
			$.ajax({
				type: "GET",
				url:"/passport/ajax.php?mod=member&act=update_session",
				data:{force:force,title:document.title,url:location.href},
				dataType:'json',
				cache:false,
				success:function(o){
					if(o.code!=-100)
						$.xcookie('sessionstatus', '1',{ expires: 295, path: '/', domain: '.'+get_domain()});
					if(o.code>0){}else{
						if(o.code==-100){
							showMsg(o.message,'妖气提示',{'确定':function(){window.location.reload();$(this).dialog('close');}});
						}else{
							showMsg(o.message);
						}
					}
				},error:function(){}
			});
		}
	}
}
/**
 * 短消息数量刷新
 * @return
 */
function flush_msg_count(){
	var count=$.xcookie('msg_count');
	if(count){
		count=parseInt(count);
		$('#message_count,.message_count').html(count);
		if(count>0) $('#message_count,.message_count').css('color','#f00');
	}else{
		$.ajax({
			type: "GET",
			url:"/passport/ajax.php?mod=message&act=count",
			cache:false,
			success:function(o){
				count=$.trim(o).replace(/\\r/g,'').replace(/\\n/g,'').replace(/\\t/g,'');
				count=parseInt(count);
				$('#message_count,.message_count').html(count);
				if(count>0) $('#message_count,.message_count').css('color','#f00');				
			},error:function(){count=0;}
		});
	}
}
/**
 * 刷新验证码
 * @param obj 要刷新的验证码 为空则刷新默认id为checkcode_image的
 * @return
 */
function flush_checkcode(obj){
	var url=cfg_host_passport()+"/checkcode.php";
	if(obj==undefined) obj="#checkcode_image";
	if($(obj).attr('src')!=undefined){
		url=$(obj).attr('src')+'?';
	}
	$(obj).attr('src',url);
}
 
/**
 * 刷新页面上自己的头像
 */
function flush_user_face(){
	$(".user_face_big").attr("src",get_user_face('big'));
	$(".user_face_small").attr("src",get_user_face('small'));
	$(".user_face_icon").attr("src",get_user_face('icon'));
}
 

/**
 * 获取用户头像
 * @param size 头像大小
 * @param path 头像地址，如果不填写则获取自己的头像 
 * @return
 */
function get_user_face(size,path){
	(path==undefined )? path=$.xcookie('user_face'):path;
	var url='';
	if(path=='default.gif' || path==''|| path==null){//默认空头像
		url = cfg_host_static()+'/common/images/face/default.gif';
	}else{
		url = cfg_host_static()+'/upload/face/'+path;
	}
	return add_image_param(url,size);
}
 

function get_comic_cover(path,size){
	if(path==''|| path==null){//默认空封面
		url = cfg_host_static()+'/common/images/show_comic_photo.gif';
	}else{
		url = cfg_host_cover()+'/'+path;
	}
	return add_image_param(url,size);	
}

function get_comic_image(path,size,server){
	url = cfg_host_image(server)+'/'+path;
	return add_image_param(url,size);		
}

/**
 * 给图片地址加参数
 * @param path
 * @param param
 * @return
 */
function add_image_param(path,param){
	 extend =path.split('.');
	 count=extend.length;
	 if(count>1){
		 extend[count]=extend[count-1];
		 extend[count-1]=param;
		 path=extend.join('.');
	 }
	 return path;
}

/**
 * 显示上传头像的面板
 * @return
 */
function show_upload_face_dialog(){
	 $("#upload_face_dialog").dialog({
		autoOpen: true,
		width:340,
		height:506,
		resizable:false,
		modal: true
	}).dialog('open');
}
 
function show_upload_cover_dialog(comic_id){
	$("#upload_cover_dialog").dialog({
		autoOpen: true,
		width:350,
		height:543,
		resizable:false,
		modal: true
	}).dialog('open');
}

/**
 * 获取时间戳的格式化
 * @param format
 * @param timestamp
 * @return
 */
function date_format( format, timestamp){ 
    var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());
    var pad = function(n, c){
        if( (n = n + "").length < c ) {
            return new Array(++c - n.length).join("0") + n;
        } else {
            return n;
        }
    };
    var txt_weekdays = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
    var txt_ordin = {1:"st",2:"nd",3:"rd",21:"st",22:"nd",23:"rd",31:"st"};
    var txt_months = ["", "January", "February", "March", "April","May", "June", "July", "August", "September", "October", "November","December"]; 
    var f = {
        // Day
            d: function(){return pad(f.j(), 2);},
            D: function(){t = f.l(); return t.substr(0,3); },
            j: function(){ return jsdate.getDate();},
            l: function(){return txt_weekdays[f.w()];},
            N: function(){return f.w() + 1;},
            S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'; },
            w: function(){return jsdate.getDay();},
            z: function(){return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0;},
        // Week
            W: function(){
                var a = f.z(), b = 364 + f.L() - a;
                var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;

                if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){
                    return 1;
                } else{
                    if(a <= 2 && nd >= 4 && a >= (6 - nd)){
                        nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");
                        return date("W", Math.round(nd2.getTime()/1000));
                    } else{
                        return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
                    }
                }
            },

        // Month
            F: function(){return txt_months[f.n()];},
            m: function(){ return pad(f.n(), 2);},
            M: function(){ t = f.F(); return t.substr(0,3);},
            n: function(){ return jsdate.getMonth() + 1;},
            t: function(){
                var n;
                if( (n = jsdate.getMonth() + 1) == 2 ){
                    return 28 + f.L();
                } else{
                    if( n & 1 && n < 8 || !(n & 1) && n > 7 ){
                        return 31;
                    } else{
                        return 30;
                    }
                }
            },

        // Year
            L: function(){
                var y = f.Y();
                return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0;
            },
            //o not supported yet
            Y: function(){
                return jsdate.getFullYear();
            },
            y: function(){
                return (jsdate.getFullYear() + "").slice(2);
            },

        // Time
            a: function(){
                return jsdate.getHours() > 11 ? "pm" : "am";
            },
            A: function(){
                return f.a().toUpperCase();
            },
            B: function(){
                // peter paul koch:
                var off = (jsdate.getTimezoneOffset() + 60)*60;
                var theSeconds = (jsdate.getHours() * 3600) +
                                 (jsdate.getMinutes() * 60) +
                                  jsdate.getSeconds() + off;
                var beat = Math.floor(theSeconds/86.4);
                if (beat > 1000) beat -= 1000;
                if (beat < 0) beat += 1000;
                if ((String(beat)).length == 1) beat = "00"+beat;
                if ((String(beat)).length == 2) beat = "0"+beat;
                return beat;
            },
            g: function(){
                return jsdate.getHours() % 12 || 12;
            },
            G: function(){
                return jsdate.getHours();
            },
            h: function(){
                return pad(f.g(), 2);
            },
            H: function(){
                return pad(jsdate.getHours(), 2);
            },
            i: function(){
                return pad(jsdate.getMinutes(), 2);
            },
            s: function(){
                return pad(jsdate.getSeconds(), 2);
            },
            //u not supported yet

        // Timezone
            //e not supported yet
            //I not supported yet
            O: function(){
               var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
               if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;
               return t;
            },
            P: function(){
                var O = f.O();
                return (O.substr(0, 3) + ":" + O.substr(3, 2));
            },
            //T not supported yet
            //Z not supported yet

        // Full Date/Time
            c: function(){
                return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P();
            },
            //r not supported yet
            U: function(){
                return Math.round(jsdate.getTime()/1000);
            }
    };

    return format.replace(/[\\]?([a-zA-Z])/g, function(t, s){
        if( t!=s ){
            // escaped
            ret = s;
        } else if( f[s] ){
            // a date function exists
            ret = f[s]();
        } else{
            // nothing special
            ret = s;
        }

        return ret;
    });
}
 
/**
 * 获取登录用户
 * @return
 */
function get_user(){
	user = $(document).data('loginUser');
	if(user==undefined ||user==null){
		var group = $.xcookie('group');
		if(group==undefined ||group==null) return null;
		groups=group.split(':');
		if(groups.length!=4)return groups;
		user={
				username:$.xcookie('username'),
				nickname:$.xcookie('nickname'),
				id:$.xcookie('user_id'),
				login_times:$.xcookie('login_times'),
				reg_time:$.xcookie('reg_time'),
				face:$.xcookie('user_face'),
				group_user:groups[0],
				group_admin:groups[1],
				group_author:groups[2],
				sex:groups[3]
		};
		if(user.id=='deleted') user=null;
		$(document).data("loginUser",user);
	}
	return user;
}
 
/**
 * 是否在数组中存在
 * @param string
 * @param array 可以使数组，也可以是字符串 如1,2,3 
 * @param split 假如是字符串则使用的分隔符，默认为逗号","
 * @return
 */
function in_array(string, array, split){
	if(!$.isArray(array)){
		if(array==undefined || array==null) return false;
		if(split==undefined) split=',';
		array = array.split(split);
	}
	return $.inArray(string,array)>-1;
}


$.xtab = function(opts){
	opts = jQuery.extend({
		tab:'',
		body:'',
		event:'click',
		tab_show_class:'selected',
		tab_hide_class:'',
		flag:'tab',
		time:0,
		effect:'',
		effect_time:1000,
		default_tab:'1',
		callback:function(tab,body,flag){},
		//一下是滑动门的选项
		slide_next:null,
		slide_prev:null,
		slide_panel:null,
		is_slide:false,
		slide_width:0,
		max_slide:0
	},opts||{});

	var tabs=$(opts.tab).removeClass(opts.tab_show_class);
	var bodys=$(opts.body).hide();	
	var active_body=null;
	var active_tab=null;
	var intervalHanlder;
	var slide_next=null;
	var slide_prev=null;
	var slide_panel=null;
	var slide_offset=0;
	var active_index=0;
	if(opts.is_slide){
		if(opts.slide_next){
			slide_next=$(opts.slide_next).click(function(){ active(next());stop_auto();start_auto();});
		}
		if(opts.slide_prev){
			slide_prev=$(opts.slide_prev).click(function(){ active(prve());stop_auto();start_auto();});
		}
		slide_panel=$(opts.slide_panel);
	}
	if(tabs.length>0)
		init();
	
	function init(){
		tabs.each(function(i){
			$(this).attr('tindex',i);
			if($(this).attr(opts.flag)==null) $(this).attr(opts.flag,i+1);
		});
		bodys.each(function(i){
			if($(this).attr(opts.flag)==null) $(this).attr(opts.flag,i+1);
		});
		$(opts.tab).bind(opts.event,function(){
			active($(this));
			stop_auto();
			start_auto();
		});
		active_tab=$(opts.tab+'['+opts.flag+'='+opts.default_tab+']');
		active(active_tab);
		start_auto();
	}
	
	function start_auto(){
		if(tabs.length>1 && opts.time>0) intervalHanlder=setInterval(function(){active(next())},opts.time);
	}
	
	function stop_auto(){
		if(intervalHanlder) clearInterval(intervalHanlder);
	}
	
	function prve(){
		var flag = active_tab.attr(opts.flag);
		if($(tabs.get(0)).attr(opts.flag)==flag) {return $(tabs.get(tabs.length-1))};
		for(var i=0;i<tabs.length;i++){
			if($(tabs.get(i)).attr(opts.flag)==flag){
				return $(tabs.get(i-1));
			}
		}
		return $(tabs.get(0));		
	}
	
	function next(){
		var flag = active_tab.attr(opts.flag);
		if($(tabs.get(tabs.length-1)).attr(opts.flag)==flag) {return $(tabs.get(0))};
		for(var i=0;i<tabs.length;i++){
			if($(tabs.get(i)).attr(opts.flag)==flag){
				return $(tabs.get(i+1));
			}
		}

		return $(tabs.get(0));
	}
	
	function active(tab){
		tab.trigger('blur');
		var flag=tab.attr(opts.flag);
		tabs.removeClass(opts.tab_show_class);
		tabs.addClass(opts.tab_hide_class);
		tab.addClass(opts.tab_show_class);
		var old_index=parseInt(active_tab.attr('tindex'));
		var new_index=parseInt(tab.attr('tindex'));
		active_tab=tab;
		if(active_body) active_body.hide();
		active_body=$(opts.body+'['+opts.flag+'='+flag+']').stop(true,true);
		if(opts.effect=='fade'){
			active_body.fadeIn(opts.effect_time);
		}else{
			active_body.show(opts.effect,{},opts.effect_time);	
		}
		//滑动门
		if(opts.is_slide){
			var old_offset=slide_offset;
			if(new_index>old_index){
				slide_offset=new_index+2-opts.max_slide;			
			}else{
				slide_offset=new_index-1;
			}
			if(new_index==0){slide_offset=0;}
			if(new_index==tabs.length-1){slide_offset=tabs.length-opts.max_slide;}
			if(new_index==0 || new_index==tabs.length-1 || new_index==old_offset || new_index==old_offset+opts.max_slide-1){
				slide_panel.stop(true,true);
				var left=-slide_offset*opts.slide_width;
				if(left<=0)
					slide_panel.animate({left:left},1000);
			}
		}
		opts.callback(tab,active_body,flag);
	}
}

$.xcomment = function(opts){
	//log.profile( 'init' );
	opts = jQuery.extend({
		thread_id:0,
		page:1,
		page_size:20,
		object_type:'custom',
		object_id:0,
		thread_admin_ids:'',
		paginate:'div.pagination',
		panel_input_comment:'div.panel_input_comment',
		panel_comment:'div.panel_comment',
		panel_reply:'div.panel_reply',
		panel_input_reply:'div.panel_input_reply',
		panel_input_reply_toggle_handler:function(data,el){},
		panel_face:'div.panel_face',
		panel_comment_total:'i.panel_comment_total',
		panel_input_comment_letter_num:'i.panel_input_comment_letter_num',
		panel_input_reply_letter_num:'i.panel_input_reply_letter_num',
		panel_login_tip:'div.panel_login_tip',
		input_comment:'textarea.input_comment',
		input_reply:'textarea.input_reply',
		btn_send_comment:'.btn_send_comment',
		btn_send_reply:'.btn_send_reply',
		btn_cancel_reply:'.btn_cancel_reply',
		toolbar_face:'.toolbar_face',
		toolbar_pic:'.toolbar_pic',
		render_comment_opts:{},
		render_reply_opts:{},
		block_style:{color:'#999'},
		show_delete:true,
		limit_letter:1000,
		limit_reply_letter:500,
		enable_login_tip:true,
		hover_comment_face:'ncc_content_left_hover',
		hover_comment_name:'block_2',
		hover_reply_name:'block_4',
		iframe:false,
		pic_score:15,
		em:{1:"困惑",2:"生气",3:"思考中",4:"我酷吧",5:"哭泣的脸",6:"咦，好奇怪",8:"我晕",9:"我稀饭..嘿嘿",10:"大笑",11:"感动中..",13:"不告诉你",14:"郁闷",15:"害羞",16:"惊讶",17:"做梦中",18:"你好啊",19:"汗..|",20:"吐舌头"},
		comment_anchor:'#bind_comment_anchor',
		from:'u17',
		callback:function(){return false;},
		callback_send_comment:function(){return false;}
	},opts||{});
	
	opts.comment_from = {
			'u17':{url:'http://www.u17.com',name:'有妖气',nickname:'网友'},
			'163mail':{url:'http://mimg.163.com/assist/comic/index.htm',name:"网易邮箱",nickname:'观光团'},
			'yxnpc':{url:'http://manga.yxnpc.com/',name:"游戏NPC",nickname:'观光团'},
			'duowan':{url:'http://comic.duowan.com/',name:"多玩",nickname:'观光团'},
			'china':{url:'http://game.china.com/',name:"中华网",nickname:'观光团'},
			'51edu':{url:'http://anime.51edu.com/',name:"精品学习网",nickname:'观光团'},
			'youdell':{url:'http://comic.youdell.com/',name:"youdell",nickname:'观光团'}};
	
	var user=null;
	var has_right=false;
	var bg_colors =   ['FF0000' , '0000FF' ,'6600FF' ,'008000' ,'000080' ,'FF66FF' ,'FF9900' ,'FF00FF'];
	var font_colors = ['ffffff' , 'ffffff' ,'ffffff' ,'ffffff' ,'ffffff' ,'ffffff' ,'ffffff' ,'ffffff'];
	var panel_color = '<div>彩虹炫可以把您发的评论变成彩色，需消耗妖果<span style="color:red;">10</span>个<br/><br/><div class="panel_select_color" style="margin:auto 0;width:'+(32*bg_colors.length+3)+'px;">';
	for(var i=0;i<bg_colors.length;i++){
		panel_color+='<div color="'+bg_colors[i]+'" style="width:22px;height:22px;border:2px solid #ccc;background:#'+bg_colors[i]+';color:#'+font_colors[i]+';float:left;margin:3px;" onclick="$(this).parent().find(\'div\').css(\'border-color\',\'#ccc\').html(\'\');$(this).css(\'border-color\',\'#000\').html(\'囧\');"></div>';
	}
	panel_color+='</div></div>';
	if(opts.thread_id==10518 || opts.thread_id==68171) opts.pic_score=2;
	var panel_pic='<div class="ncc_upload_img" style="overflow:hidden;">';
		panel_pic+='<div class="ncc_upload_img_title">';
		panel_pic+='<ol><a href="###" tab="1">链接</a></ol>';
		panel_pic+='<ol><a href="###" tab="2">上传</a></ol>';
		panel_pic+='</div><input id="ncc_upload_type" type="hidden" value="1">';
		panel_pic+='<div class="ncc_upload_img_content" tab="1">';
		panel_pic+='<span>图片地址：</span><label><input id="ncc_upload_url" class="input_url" type="text" value="http://"/></label>';
		panel_pic+='<p>* 每张图将扣除'+opts.pic_score+'个妖果,每贴最多贴图5张<br/>* 妖果将在发贴时扣除，图片限制大小1M</p><img style="display:none;" id="ncc_upload_loading1" src="'+cfg_host_static()+'/common/images/loading.gif" width="25" height="25">';
		panel_pic+='</div>';
		panel_pic+='<div class="ncc_upload_img_content" tab="2">';
		panel_pic+='<span>图片地址：</span><iframe name="ncc_upload_iframe" id="ncc_upload_iframe" scrolling="no" onload="$(this).closest(\'.ui-dialog\').find(\'button:disabled\').removeAttr(\'disabled\');" frameborder="0" src="'+cfg_host_upload()+'/upload_comment_image.php?act=upload" style="border: 0px none ; padding: 0px;width: 230px; height: 22px;overflow:hidden;"></iframe>';
		panel_pic+='<p>* 每张图将扣除'+opts.pic_score+'个妖果,每贴最多贴图5张<br/>* 妖果将在发贴时扣除，图片限制大小1M</p><img style="display:none;" id="ncc_upload_loading2" src="'+cfg_host_static()+'/common/images/loading.gif" width="25" height="25">';
		panel_pic+='</div>';
		panel_pic+='</div>';
	
	var box=$('#bind_comment_box');
	var panel_comment_total=$(opts.panel_comment_total);
	var panel_input_comment=box.find(opts.panel_input_comment);
	var panel_input_reply=box.find(opts.panel_input_reply);
	var panel_input_comment_letter_num = box.find(opts.panel_input_comment_letter_num);
	var paginate=box.find(opts.paginate);
	var panel_comment=box.find(opts.panel_comment);
	var panel_reply=box.find(opts.panel_reply);
	var template_comment=panel_comment.children().clone();
	var template_reply=panel_reply.children().clone();	
	var color_dialog=null,pic_dialog=null;
	var panel_face;
	var is_login=false;
	var is_submit=false;
	$('#panel_face_box').appendTo('body');
	
	render_comment_opts={
		'.bind_comment_up_span':function(data,el){if(data.is_up=='1'){el.innerHTML='[置顶]';el.style.color='red';}},
		'.bind_comment_lock_span':function(data,el){if(data.is_lock=='1'){el.innerHTML='[锁贴]';el.style.color='red';}},
		'.bind_comment_floor':function(data,el){el.innerHTML=data.floor;},
		'.bind_comment_face':function(data,el){el.src=get_user_face('small',data.face);},
		'.bind_comment_user_id':function(data, el){if(data.user_id>0){el.href=el.href.replace('@user_id@',data.user_id).replace('@nickname@',data.nickname);}else{el.removeAttribute('href')}},
		'.bind_comment_nickname': function(data, el){if(data.user_id==0){$(el).addClass('visitor_name');el.innerHTML=opts.comment_from[data.comment_from].name+opts.comment_from[data.comment_from].nickname;}else{$(el).addClass('reg_name');el.innerHTML=data.nickname;}},
		'.bind_comment_time':function(data,el){el.innerHTML=str_short_time(data.create_time,opts.timestamp,4);el.title=date_format('Y-m-d H:i:s',data.create_time);},
		'.bind_comment_content': function(data, el,p){p.attr('id','comment_id_'+data.comment_id);p.prepend('<a name="'+opts.comment_anchor+data.comment_id+'"></a>');if($.trim(data.color)!='')el.style.color='#'+data.color;el.innerHTML=data.content;render_pic(data,$(el).next('.panel_comment_images'),p)},
		'.bind_comment_ip':function(data, el){el.innerHTML=data.ip},
		'.bind_comment_symbol':function(data, el){el.innerHTML=data.symbol},
		'.bind_comment_color':function(data,el){$(el).hide();if(user&&data.user_id==user.id&&$.trim(data.color)==''){$(el).show().find('a').click(function(){ show_color_dialog(data.comment_id);return false;});}},
		'.bind_comment_uncolor':function(data,el){$(el).hide();if(user&&data.user_id==user.id&&$.trim(data.color)!=''){$(el).show().find('a').click(function(){if(!confirm('确定取消吗？取消不返还扣除的妖果')){return false;}comment_operate(data.comment_id,'','comment_color');return false;});}},			
		'.bind_comment_lock':function(data,el){bind_btn('is_lock',1,'comment_lock',data,el)},
		'.bind_comment_unlock':function(data,el){bind_btn('is_lock',0,'comment_lock',data,el)},
		'.bind_comment_up':function(data,el){bind_btn('is_up',1,'comment_up',data,el)},
		'.bind_comment_unup':function(data,el){bind_btn('is_up',0,'comment_up',data,el)},
		'.bind_comment_block':function(data,el){bind_btn('is_delete',1,'comment_block',data,el)},
		'.bind_comment_unblock':function(data,el){bind_btn('is_delete',0,'comment_block',data,el)},
		'.bind_comment_delete':function(data,el){has_right?$(el).show():$(el).hide();$(el).find('a').click(function(){if(confirm('删除操作将连带其回复全部删除，确定删除吗？')){comment_operate(data.comment_id,0,'comment_delete')};return false;});},
		'.hover_comment_face':function(data,el){if(data.user_id==0) return;$(el).hover(function(){$(this).addClass(opts.hover_comment_face)},function(){$(this).removeClass(opts.hover_comment_face)})},
		'.hover_comment_name':function(data,el){if(data.user_id==0) return;$(el).hover(function(){$(this).addClass(opts.hover_comment_name)},function(){$(this).removeClass(opts.hover_comment_name)})}
	};
	render_comment_opts[opts.panel_reply]=function(data,el,p){render_reply(data.comment_id,data.reply,p);};
	render_comment_opts['.bind_comment_reply']=function(data,el,p){
		$(el).find('a').click(function(){
			p.find(opts.panel_input_reply+'[event!=true]').remove();
			var o=p.find(opts.panel_input_reply);
			if(o.length==0){
				p.find(opts.panel_reply).before(panel_input_reply.clone());
				o=p.find(opts.panel_input_reply);
				o.attr('event','true').show().find(opts.btn_cancel_reply).click(function(){
					o.toggle();
					opts.panel_input_reply_toggle_handler(data,el,p);
					return false;
				});
				o.find(opts.btn_send_reply).click(function(){
					send_reply(data.comment_id,p);
				});
				o.find(opts.toolbar_face).click(function(){
					show_panel_face(data,$(this),p);
				});
				o.find(opts.toolbar_pic).click(function(){
					show_pic_dialog(data.comment_id);
				});
				var letter_num=o.find(opts.panel_input_reply_letter_num).html(opts.limit_reply_letter);
				p.find(opts.input_reply).keyup(function(){
					var txt=$(this).val();
					var len=txt.length;
					if(len>opts.limit_reply_letter){
						$(this).val(txt.substring(0,opts.limit_reply_letter));
						len=opts.limit_reply_letter;
					}
					len=opts.limit_reply_letter-len;
					letter_num.html(len);
				});				
			}else{
				o.toggle();
			}
			opts.panel_input_reply_toggle_handler(data,el,p);
			return false;
		});
	};
	render_comment_opts=jQuery.extend(render_comment_opts,opts.render_comment_opts||{});
	
	render_reply_opts={
		'.bind_reply_user_id':function(data, el){if(data.user_id>0){el.href=el.href.replace('@user_id@',data.user_id).replace('@nickname@',data.nickname);}else{el.removeAttribute('href')}},
		'.bind_reply_nickname':function(data, el){if(data.user_id==0){$(el).addClass('visitor_name');el.innerHTML=opts.comment_from[data.comment_from].name+opts.comment_from[data.comment_from].nickname;}else{$(el).addClass('reg_name');el.innerHTML=data.nickname;}},
		'.bind_reply_content':function(data, el,p){if($.trim(data.color)!='')el.style.color='#'+data.color;el.innerHTML=data.content;render_pic(data,$(el).next('.panel_reply_images'),p)},
		'.bind_reply_time':function(data, el){el.innerHTML=str_short_time(data.create_time,opts.timestamp,4);el.title=date_format('Y-m-d H:i:s',data.create_time);},
		'.bind_reply_ip':function(data, el){el.innerHTML=data.ip},
		'.bind_reply_symbol':function(data, el){el.innerHTML=data.symbol},
		'.bind_reply_color':function(data,el){$(el).hide();if(user&&data.user_id==user.id&&$.trim(data.color)==''){$(el).show().find('a').click(function(){ show_color_dialog(data.comment_id);return false;});}},
		'.bind_reply_uncolor':function(data,el){$(el).hide();if(user&&data.user_id==user.id&&$.trim(data.color)!=''){$(el).show().find('a').click(function(){if(!confirm('确定取消吗？取消不返还扣除的妖果')){return false;}comment_operate(data.comment_id,'','comment_color');return false;});}},	
		'.bind_reply_block':function(data,el){bind_btn('is_delete',1,'comment_block',data,el)},
		'.bind_reply_unblock':function(data,el){bind_btn('is_delete',0,'comment_block',data,el)},
		'.bind_reply_delete':function(data,el){has_right?$(el).show():$(el).hide();$(el).find('a').click(function(){if(confirm('确定删除吗？')){comment_operate(data.comment_id,1,'comment_delete')};return false;});},
		'.hover_reply_name':function(data,el){if(data.user_id==0) return;$(el).hover(function(){$(this).addClass(opts.hover_reply_name)},function(){$(this).removeClass(opts.hover_reply_name)})}
	};
	render_reply_opts=jQuery.extend(render_reply_opts,opts.render_reply_opts||{});	
	
	option=[];
	for(var key in render_comment_opts){
		el=template_comment.find(key);
		for(var i=0;i<el.length;i++){
			path=get_xpath(el.get(i),template_comment.get(0));
			option[path+'|'+i+'|'+key]=render_comment_opts[key];
		}
	}
	render_comment_opts=option;
	
	option=[];
	for(var key in render_reply_opts){
		el=template_reply.find(key);
		for(var i=0;i<el.length;i++){
			path=get_xpath(el.get(i),template_reply.get(0));
			option[path+'|'+i+'|'+key]=render_reply_opts[key];
		}
	}
	render_reply_opts=option;	

	
	init();
	
	
	
	function flush_user(){
		user=get_user();
		if(user!=null)
			has_right = user.group_admin==1 || user.group_admin==2 || in_array(user.id,opts.thread_admin_ids);		
		else
			has_right =false;
	}
	
	function flush_nologin_bg(){
		flush_user();
		if((user && is_login) ||(user==null && is_login==false)){
			return;
		}
		is_login = user ? true :false;
		var el = $(opts.input_comment+','+opts.input_reply);
		el.attr('bg_color',el.css('background-color'));
		if(is_login){
			el.css('background','')
		}else{
			el.css('background','url('+cfg_host_static()+'/common/images/comment_bg.gif) scroll no-repeat center center');
		}
		el.css('background-color',el.attr('bg_color'));
		
	}

	
	function init(){
		//注册登录事件
		callbackLogin['comment_flush'] = function(){
			$('.show_new_coment_reg').hide();
			$(opts.panel_login_tip).hide();
			flush_nologin_bg();
			get_comment(opts.page);
		};
		
		//处理输入框是否登录提示
		if(opts.enable_login_tip){
			flush_user();
			if(user){
				$(opts.panel_login_tip).hide();
			}else{
				$(opts.panel_login_tip).show();
				is_login=true;
			}
			flush_nologin_bg();
			setInterval(function(){flush_nologin_bg();},15000);
		}
		
		$(opts.btn_send_comment).click(function(){send_comment()});
		
		//处理剩余字数
		panel_input_comment_letter_num.html(opts.limit_letter);
		$(opts.input_comment).keyup(function(){
			var txt=$(this).val();
			var len=txt.length;
			if(len>opts.limit_letter){
				$(this).val(txt.substring(0,opts.limit_letter));
				len=opts.limit_letter;
			}
			len=opts.limit_letter-len;
			panel_input_comment_letter_num.html(len);
		});	
		
		//处理表情
		show_bb();
		
		toolbar_face=panel_input_comment.find(opts.toolbar_face);
		if(toolbar_face.length>0){
			panel_face=$(opts.panel_face);
			toolbar_face.click(function(){ 
				show_panel_face(null,toolbar_face);
			});
			$('#panel_face_bg').click(function(){ $(this).hide();panel_face.hide();});
		}
		
		//处理贴图
		$(opts.toolbar_pic).click(function(){show_pic_dialog();});
		//默认调用第一页
		//log.profile( 'init' );
		get_comment(opts.page);
		
	}
	
	function show_panel_face(data,el,p){
		el.trigger('blur');
		offset=$(el).offset();
		$('#panel_face_bg').height($().height()).toggle();
		panel_face.css({left:offset.left-4,top:offset.top+23}).toggle();
		if(typeof(p)=='undefined'){
			panel_face.data('input',$(opts.input_comment));
		}else{
			panel_face.data('input',p.find(opts.input_reply));
		}
	}
	
	function get_comment(page){
		//log.profile( 'server' );
		panel_comment.get(0).innerHTML='<div style="text-align:center;" id="loading_comment"><img src="'+cfg_host_static()+'/common/images/loading.gif" /></div>';
		
		panel_comment.show();
		opts.page=page;
		
		$.ajax({
			url:"/comment/ajax.php?mod=thread&act=get_comment",
			cache:false,
			data:{thread_id:opts.thread_id,object_type:opts.object_type,object_id:opts.object_id,page:page,page_size:opts.page_size,show_delete:opts.show_delete},
			type:'GET',
			dataType:'json',
			success:function(o){
				//log.profile( 'server' );
				//log.profile( 'reder' );
				if(o.code>0){
					opts.thread_id=o.thread_id;
					opts.thread_admin_ids=o.thread_admin_ids;
					opts.timestamp=o.timestamp;
					flush_user();
					opts.object_id=o.object_id;
					opts.object_type=o.object_type;
					panel_comment_total.html(o.total_all);
					render_comment(o.data);
					var len=o.data.length;
					
					if(paginate.length>0){
						render_paginate(o.pages);
					}
					
					comment_block=panel_comment.find('span.comment_block');
					for(var css in opts.block_style){
						comment_block.css(css,opts.block_style[css]);
					}
					panel_comment.show();
					if(!opts.iframe)
						panel_comment.find('a[rel=lightbox]').colorbox({width:"90%",height:"90%"});
				}else{
					if(o.code==-1){
						panel_comment.html('无效的评论区').show();
					}else{
						showMsgS(o.message);
					}
				}
				$('#loading_comment').remove();
				//log.profile( 'reder' );
			}
		});
	}
	
	function bind_btn(key,val,op,data,el,confirm_str){
		el=$(el);
		if(data[key]==val){ el.hide();return};
		el.hide().find('a').click(function(){if(typeof(confirm_str)!='undefined'){ if(!confirm(confirm_str)) return false;} comment_operate(data.comment_id,1-data[key],op);return false;});
		if(has_right)el.show();		
	}

	function show_color_dialog(comment_id){
		color_dialog=showMsg(panel_color,'彩虹炫',{'取消':function(){$(this).dialog('close');},'确定':function(){buy_color(comment_id);}});
	}
	
	function show_pic_dialog(comment_id){
		if(user==null) { showMsg('注册用户才能贴图,赶紧注册吧','提示',{'关闭':function(){$(this).dialog('close');},'我要登录':function(){if(opts.iframe){parent.login_ajax()}else{login_ajax()};$(this).dialog('close');},'我去注册':function(){if(opts.iframe){parent.reg_ajax()}else{reg_ajax()};$(this).dialog('close');}});return false;}
		if(comment_id>0){
			if($("#comment_id_"+comment_id+" .panel_reply_input_images ol").length>=5){showMsg('最多只能贴5张图捏 = =#');return;}
		}else{
			if($('.panel_comment_input_images ol').length>=5){showMsg('最多只能贴5张图捏 = =#');return;}
		}
		pic_dialog=showMsg(panel_pic,'贴图',{'取消':function(){$(this).dialog('close');},'确定':function(e){ upload_pic(comment_id,e);}});
		$.xtab({tab:'.ncc_upload_img_title ol a',body:'.ncc_upload_img_content',callback:function(tab,body,flag){$("#ncc_upload_type").val(flag)}});
	}
	
	function upload_pic(comment_id,e){
		var type=$("#ncc_upload_type").val();
		if(type=="1"){
			var url=$.trim($("#ncc_upload_url").val());
			if(url==""||url=="http://"){showMsg('请填写图片地址！');return false;}
			$.ajax({
				url:'/upload/ajax.php?mod=comment&act=upload_link_image',
				dataType:'json',
				cache:false,
				type:'GET',
				data:{url:url},
				success:function(o){
					$("#ncc_upload_loading1").hide();
					pic_dialog.parent().parent().find('button:disabled').removeAttr('disabled');
					if(o.code>0){
						var html='<ol style="display:none;" image="'+o.db_url+'" file="'+o.file_name+'">';
						html+='<img src="'+o.img_url+'" title="'+o.file_name+'" onload="$(this).parent().fadeIn(1000)"/><div class="ico"><img src="'+cfg_host_static()+'/common/images/ico_chapter_2.gif" title="删除" onclick="if(confirm(\'确认要删除吗？\')){$(this).parent().parent().fadeOut(1000).remove();}"/></div></ol>';
						if(comment_id>0){
							$("#comment_id_"+comment_id+" .panel_reply_input_images").append(html);
						}else{
							$(".panel_comment_input_images").append(html);
						}
						pic_dialog.dialog("close");
					}else{ showMsg(o.message);}
				},
				error:function(){showMsg('服务器通信错误');$("#ncc_upload_loading1").hide();pic_dialog.parent().parent().find('button:disabled').removeAttr('disabled');}
			});
		}else{
			var iframe=$('#ncc_upload_iframe').get(0).contentWindow;
			var file=$.trim(iframe.$("#file").val());
			if(file==""){showMsg('请选择要上传的图片！');return false;}					
			iframe.$('#comment_id').val(comment_id);
			iframe.$('form').trigger('submit');
		}
		$(e.target).attr('disabled','disabled');
		$('#ncc_upload_loading'+type).show();	
	}
	
	function buy_color(comment_id){
		var o=$('.panel_select_color div:contains("囧")');
		if(o.length==0){
			showMsg('请选择一个颜色');
		}else{
			var color=o.attr('color');
			comment_operate(comment_id,color,'comment_color',function(){if(color_dialog) color_dialog.dialog('close');})
		}
	}
	
	function render_pic(data,el,p){
		if(data.images==null || data.images=="") return;
		var images=data.images.split(':|:');
		for(var i=0;i<images.length;i++){
			var image=images[i].split('|||');
			var $img_url=cfg_host_upload()+add_image_param(image[0],'square');
			var $file_name=image[1];
			var html=$('<ol><a title="'+$file_name+'" href="'+cfg_host_upload()+image[0]+'" rel="lightbox" target="_blank"><img title="点击放大" src="'+$img_url+'"/></a><div class="ico"></div></ol>');
			if(has_right || (user&&data.user_id==user.id)){
				var btn=$('<img src="'+cfg_host_static()+'/common/images/ico_chapter_2.gif" title="删除" url="'+image[0]+'"/>');
				html.find('.ico').append(btn);
				btn.click(function(){ return delete_pic(data.comment_id,$(this))});
			}
			el.append(html);
		}
		if(images.length>0) el.append('<div class="clearit"></div>');
	}
	
	function delete_pic(comment_id,el){
		if(!confirm('确认要删除吗？')) return false;
		$.ajax({
			url:'/comment/ajax.php?mod=thread&act=image_delete',
			dataType:'json',
			data:{url:el.attr('url'),comment_id:comment_id},
			cache:false,
			type:'POST',
			success:function(o){
				if(o.code>0){
					el.parent().parent().fadeOut(1000).remove();
				}else{ showMsg(o.message);}
			},error:function(){showMsg('服务器通信错误');}
		});
	}
	
	function render_comment(data){
		panel_comment.xchain(render_comment_opts,data,template_comment);
	}
	
	function render_reply(comment_id,data,p){
		var re=p.find(opts.panel_reply);
		if(re.length>0) re.xchain(render_reply_opts,data,template_reply,true);
	}

	function render_paginate(pages){
		paginate.pagination(pages.total, {
			items_per_page: pages.page_size,
			num_edge_entries: 2,
			num_display_entries: 5,
			current_page:pages.page-1,
			link_to: opts.comment_anchor,
			callback: function(page, jq){get_comment(page+1);if(opts.iframe){parent.window.location.hash = opts.comment_anchor; }}
	    });
	}

	function comment_operate(comment_id,value,act,callback){
		$.ajax({
			url:'/comment/ajax.php?mod=thread',
			data:{value:value,comment_id:comment_id,thread_id:opts.thread_id,act:act},
			type:'GET',
			dataType:'json',
			cache:false,
			success:function(o){
				if(o.code>0){
					get_comment(opts.page);
					if(typeof(callback)=='function'){
						callback();
					}
				}
				showMsgS(o.message);
			}
		});
	}

	function send_comment(){
		if(is_submit) return;
		var content=$(opts.input_comment).val();
		if($.trim(content)==''){
			showMsgS('评论内容不能为空');
			return false;
		}
		var real_content=content.replace(/\[em\d+\]/gi,'');
		if($.trim(real_content)==''){
			showMsg('囧，评论内容不能全部是表情<br/>做有意思的事，爱有妖气评论');
			return false;
		}
		if($.trim($.xcookie('tnemmoc'))=='1'){
			showMsgS('请不要过快发表评论，2次评论至少间隔15秒');
			return false;
		}
		var images_list=panel_input_comment.find('.panel_comment_input_images ol');
		var images=[];
		images_list.each(function(){
			images.push($(this).attr('image')+'|||'+$(this).attr('file'));
		});
		is_submit=true;
		$.ajax({
			url:'/comment/ajax.php?mod=thread&act=send_comment',
			data:{content:content,thread_id:opts.thread_id,type:opts.object_type,from:opts.from,images:images.join(':|:')},
			type:'POST',
			dataType:'json',
			success:function(o){
				if(o.code>0){
					$.xcookie('tnemmoc', '1', { expires: 15, path: '/', domain: '.'+get_domain()});
					$(opts.input_comment).val('');
					panel_input_comment_letter_num.html(opts.limit_letter);
					showMsgS(o.message);
					get_comment(1);
					images_list.remove();
					opts.callback_send_comment();
				}else{
					showMsg(o.message);
				}
				is_submit=false;
			},error:function(){showMsg('服务器通信错误，请稍后再试');is_submit=false;}
		});
	}

	function send_reply(comment_id,p){
		if(is_submit) return;
		var content=p.find(opts.input_reply).val();
		if($.trim(content)==''){
			showMsgS('评论内容不能为空');
			return false;
		}
		var real_content=content.replace(/\[em\d+\]/gi,'');
		if($.trim(real_content)==''){
			showMsg('囧，评论内容不能全部是表情<br/>做有意思的事，爱有妖气评论');
			return false;
		}		
		if($.trim($.xcookie('tnemmoc'))=='1'){
			showMsgS('请不要过快发表评论，2次评论至少间隔15秒');
			return false;
		}
		var images_list=p.find('.panel_reply_input_images ol');
		var images=[];
		images_list.each(function(){
			images.push($(this).attr('image')+'|||'+$(this).attr('file'));
		});
		is_submit=true;
		$.ajax({
			url:'/comment/ajax.php?mod=thread&act=send_reply',
			data:{content:content,thread_id:opts.thread_id,comment_id:comment_id,type:opts.object_type,from:opts.from,images:images.join(':|:')},
			type:'POST',
			dataType:'json',
			success:function(o){
				if(o.code>0){
					$.xcookie('tnemmoc', '1', { expires: 15, path: '/', domain: '.'+get_domain()});
					images_list.remove();
					p.find(opts.input_reply).val('');
					p.find(opts.panel_reply).xitems('add',render_reply_opts,o.data,template_reply, 'push');
					p.find(opts.panel_input_reply).hide();
					p.find(opts.panel_input_reply_letter_num).html(opts.limit_reply_letter);
					opts.panel_input_reply_toggle_handler(o.data,p.find('.bind_comment_reply'),p);
					showMsgS(o.message);
				}else{
					showMsg(o.message);
				}
				is_submit=false;
			},error:function(){showMsg('服务器通信错误，请稍后再试');is_submit=false;}
		});
	}
	
	function show_bb(){
		var i="";
		for(var o in opts.em){
			i+='<img src="'+cfg_host_static()+'/common/images/em/default/BB' + o + '.gif" title="' + opts.em[o] + '" alt="" num="'+o+'"/>';
		}
		el=$(opts.panel_face);
		if(el.length>0){
			el.get(0).innerHTML=i;
			el.find('img').click(function(){add_em(this)});
		}
	}
	
	function add_em(e) {
		var input=$(opts.panel_face).data('input');
		if(input==null || input.length==0) input=$(opts.input_comment);		
		if(get_count_em(input)>=5){
			showMsgS('表情最多添加5个');
		}else{
			var html = "[em" + $(e).attr('num') + "]";
			input.setCaret().insertAtCaret(html); 
		}
		if(panel_face){
			$('#panel_face_bg').hide();panel_face.hide();
		}
		return false;
	}
	
	function get_count_em(el){
		var content = el.val();
		var re = /\[em\d+\]/gi;
		var count=0;
		do{
			re.exec(content);
			count++;
		}while(re.lastIndex>0);
		return count-1;
	}
}

$.xpcomment = function(opts){
	opts = jQuery.extend({
		thread_id:0,
		page:1,
		page_size:20,
		object_type:'custom',
		object_id:0,
		thread_admin_ids:'',
		paginate:'div.pagination',
		panel_input_comment:'div.panel_input_comment',
		panel_comment:'div.panel_comment',
		panel_reply:'div.panel_reply',
		panel_input_reply:'div.panel_input_reply',
		panel_input_reply_toggle_handler:function(data,el){},
		panel_face:'div.panel_face',
		panel_comment_total:'i.panel_comment_total',
		panel_input_comment_letter_num:'i.panel_input_comment_letter_num',
		panel_input_reply_letter_num:'i.panel_input_reply_letter_num',
		panel_login_tip:'div.panel_login_tip',
		input_comment:'textarea.input_comment',
		input_reply:'textarea.input_reply',
		btn_send_comment:'.btn_send_comment',
		btn_send_reply:'.btn_send_reply',
		btn_cancel_reply:'.btn_cancel_reply',
		toolbar_face:'.toolbar_face',
		toolbar_pic:'.toolbar_pic',
		render_comment_opts:{},
		render_reply_opts:{},
		block_style:{color:'#999'},
		show_delete:true,
		limit_letter:1000,
		limit_reply_letter:500,
		enable_login_tip:true,
		hover_comment_face:'ncc_content_left_hover',
		hover_comment_name:'block_2',
		hover_reply_name:'block_4',
		iframe:false,
		pic_score:15,
		em:{1:"困惑",2:"生气",3:"思考中",4:"我酷吧",5:"哭泣的脸",6:"咦，好奇怪",8:"我晕",9:"我稀饭..嘿嘿",10:"大笑",11:"感动中..",13:"不告诉你",14:"郁闷",15:"害羞",16:"惊讶",17:"做梦中",18:"你好啊",19:"汗..|",20:"吐舌头"},
		comment_anchor:'#bind_comment_anchor',
		from:'u17',
		face:'small',
		show_rule:false,
		where:'',
		callback:function(){return false;},
		callback_send_comment:function(){return false;}
	},opts||{});
	//log.profile( 'init' );
	var user=null;
	var has_right=false;
	var bg_colors =   ['FF0000' , '0000FF' ,'6600FF' ,'008000' ,'000080' ,'FF66FF' ,'FF9900' ,'FF00FF'];
	var font_colors = ['ffffff' , 'ffffff' ,'ffffff' ,'ffffff' ,'ffffff' ,'ffffff' ,'ffffff' ,'ffffff'];
	var panel_color = '<div>彩虹炫可以把您发的评论变成彩色，需消耗妖果<span style="color:red;">10</span>个<br/><br/><div class="panel_select_color" style="margin:auto 0;width:'+(32*bg_colors.length+3)+'px;">';
	for(var i=0;i<bg_colors.length;i++){
		panel_color+='<div color="'+bg_colors[i]+'" style="width:22px;height:22px;border:2px solid #ccc;background:#'+bg_colors[i]+';color:#'+font_colors[i]+';float:left;margin:3px;" onclick="$(this).parent().find(\'div\').css(\'border-color\',\'#ccc\').html(\'\');$(this).css(\'border-color\',\'#000\').html(\'囧\');"></div>';
	}
	panel_color+='</div></div>';
	if(opts.thread_id==10518 || opts.thread_id==68171) opts.pic_score=2;
	var panel_pic='<div class="ncc_upload_img" style="overflow:hidden;">';
		panel_pic+='<div class="ncc_upload_img_title">';
		panel_pic+='<ol><a href="###" tab="1">链接</a></ol>';
		panel_pic+='<ol><a href="###" tab="2">上传</a></ol>';
		panel_pic+='</div><input id="ncc_upload_type" type="hidden" value="1">';
		panel_pic+='<div class="ncc_upload_img_content" tab="1">';
		panel_pic+='<span>图片地址：</span><label><input id="ncc_upload_url" class="input_url" type="text" value="http://"/></label>';
		panel_pic+='<p>* 每张图将扣除'+opts.pic_score+'个妖果,每贴最多贴图5张<br/>* 妖果将在发贴时扣除，图片限制大小1M</p><img style="display:none;" id="ncc_upload_loading1" src="'+cfg_host_static()+'/common/images/loading.gif" width="25" height="25">';
		panel_pic+='</div>';
		panel_pic+='<div class="ncc_upload_img_content" tab="2">';
		panel_pic+='<span>图片地址：</span><iframe name="ncc_upload_iframe" id="ncc_upload_iframe" scrolling="no" onload="$(this).closest(\'.ui-dialog\').find(\'button:disabled\').removeAttr(\'disabled\');" frameborder="0" src="'+cfg_host_upload()+'/upload_comment_image.php?act=upload" style="border: 0px none ; padding: 0px;width: 230px; height: 22px;overflow:hidden;"></iframe>';
		panel_pic+='<p>* 每张图将扣除'+opts.pic_score+'个妖果,每贴最多贴图5张<br/>* 妖果将在发贴时扣除，图片限制大小1M</p><img style="display:none;" id="ncc_upload_loading2" src="'+cfg_host_static()+'/common/images/loading.gif" width="25" height="25">';
		panel_pic+='</div>';
		panel_pic+='</div>';
	
	var box=$('#bind_comment_box');
	var panel_comment_total=$(opts.panel_comment_total);
	var panel_input_comment=box.find(opts.panel_input_comment);
	var panel_input_reply=box.find(opts.panel_input_reply);
	var panel_input_comment_letter_num = box.find(opts.panel_input_comment_letter_num);
	var paginate=box.find(opts.paginate);
	var panel_comment=box.find(opts.panel_comment);
	var panel_reply=box.find(opts.panel_reply);
	var color_dialog=null,pic_dialog=null,rule_dialog=null;
	var panel_face;
	var is_login=false;
	var is_submit=false;
	var rule=$('#bind_edit_rule');
	
	
	$('#panel_face_box').appendTo('body');
	init();
	
	function init(){
		//处理头像
		set_face(opts.face);
		
		//注册登录事件
		callbackLogin['comment_flush'] = function(){
			$('.show_new_coment_reg').hide();
			$(opts.panel_login_tip).hide();
			flush_nologin_bg();
			get_comment(opts.page);
			if(has_right){
				rule.show().click(function(){show_edit_rule()});
			}			
		};
		
		flush_user();
		//处理输入框是否登录提示
		if(opts.enable_login_tip){
			if(user){
				$(opts.panel_login_tip).hide();
			}else{
				$(opts.panel_login_tip).show();
				is_login=true;
			}
			flush_nologin_bg();
			setInterval(function(){flush_nologin_bg();},15000);
		}
		//发帖事件
		$(opts.btn_send_comment).click(function(){send_comment()});

		
		//处理剩余字数
		panel_input_comment_letter_num.html(opts.limit_letter);
		$(opts.input_comment).keyup(function(){
			var txt=$(this).val();
			var len=txt.length;
			if(len>opts.limit_letter){
				$(this).val(txt.substring(0,opts.limit_letter));
				len=opts.limit_letter;
			}
			len=opts.limit_letter-len;
			panel_input_comment_letter_num.html(len);
		});	
		
		//处理表情
		show_bb();
		
		toolbar_face=panel_input_comment.find(opts.toolbar_face);
		if(toolbar_face.length>0){
			panel_face=$(opts.panel_face);
			toolbar_face.click(function(){ 
				show_panel_face(toolbar_face);
			});
			$('#panel_face_bg').click(function(){ $(this).hide();panel_face.hide();});
		}
		
		//处理贴图
		$(opts.toolbar_pic).click(function(){show_pic_dialog();});
		//默认调用第一页
		get_comment(opts.page);
	}
	function set_face(face){
		if(face=='big'){
			panel_comment.addClass('ncc_list_big').removeClass('ncc_list');
		}else{
			panel_comment.addClass('ncc_list').removeClass('ncc_list_big');
		}
	}
	
	function get_comment(page){
		//log.profile( 'servre' );
		panel_comment.get(0).innerHTML='<div style="text-align:center;" id="loading_comment"><img src="'+cfg_host_static()+'/common/images/loading.gif" /></div>';
		panel_comment.show();
		opts.page=page;		
		$.ajax({
			url:"/comment/ajax.php?mod=thread&act=get_comment_php",
			cache:false,
			data:{thread_id:opts.thread_id,object_type:opts.object_type,object_id:opts.object_id,page:page,page_size:opts.page_size,show_delete:true,face:opts.face,where:opts.where},
			type:'GET',
			success:function(o){
				var os=o.split(')@@(*&^%$##$%++!@*#&&^%$');
				var json= window["eval"]("(" + os[0] + ")");
				if(json.code>0){
					opts.thread_id=json.thread_id;
					opts.thread_admin_ids=json.thread_admin_ids;
					opts.timestamp=json.timestamp;
					flush_user();
					opts.object_id=json.object_id;
					opts.object_type=json.object_type;
					panel_comment_total.html(json.total_all);
					if(page==1) {
						if(json.rule==''||json.rule==null) json.rule='暂无版规';
						$('#bind_comment_rule').html(json.rule);
						opts['thread_rule']=json.thread_rule;
						//编辑版规事件
						if(opts.show_rule){
							$('#panel_comment_rule').show();
							if(has_right){
								rule.show().click(function(){show_edit_rule()});
							}	
						}
					}
					if(paginate.length>0){
						render_paginate(json.pages);
					}
					panel_comment.get(0).innerHTML=os[1];
					panel_comment.find('.hover_comment_face').hover(
						function(){
							var _temp_user_id=$(this).attr('user_id');
							var _temp_nickname=$(this).attr('nickname');
							$(this).append('<div class="ico_img"><a title="发消息" href="javascript:send_message(\''+_temp_nickname+'\');"><img src="'+cfg_host_static()+'/common/images/ico_space_coment_message.gif" /></a><a title="加为好友" href="javascript:login_ajax(function(){ show_add_friend(\''+_temp_nickname+'\')});"><img src="'+cfg_host_static()+'/common/images/ico_space_coment_friend.gif" /></a><a title="进入空间" href="'+cfg_host_base()+'/member/'+_temp_user_id+'.html" target="_blank"><img src="'+cfg_host_static()+'/common/images/ico_space_coment_home.gif" /></a></div>');
							$(this).addClass(opts.hover_comment_face)
						},
						function(){
							$(this).removeClass(opts.hover_comment_face);
							$(this).find('.ico_img').remove();
						}
					);
					panel_comment.find('a.bind_comment_reply').click(function(){
						var p=$(this).closest('div[comment_id]');
						var comment_id=p.attr('comment_id');
						p.find(opts.panel_input_reply+'[event!=true]').remove();
						var o=p.find(opts.panel_input_reply);
						if(o.length==0){
							p.find(opts.panel_reply).before(panel_input_reply.clone());
							o=p.find(opts.panel_input_reply);
							o.attr('event','true').show().find(opts.btn_cancel_reply).click(function(){
								o.toggle();
								return false;
							});
							o.find(opts.btn_send_reply).click(function(){
								send_reply(comment_id,p);
							});
							o.find(opts.toolbar_face).click(function(){
								show_panel_face($(this),p);
							});
							o.find(opts.toolbar_pic).click(function(){
								show_pic_dialog(comment_id);
							});
							var letter_num=o.find(opts.panel_input_reply_letter_num).html(opts.limit_reply_letter);
							p.find(opts.input_reply).keyup(function(){
								var txt=$(this).val();
								var len=txt.length;
								if(len>opts.limit_reply_letter){
									$(this).val(txt.substring(0,opts.limit_reply_letter));
									len=opts.limit_reply_letter;
								}
								len=opts.limit_reply_letter-len;
								letter_num.html(len);
							});				
						}else{
							o.toggle();
						}
						return false;
					});					
					panel_comment.find('a.bind_comment_color').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						show_color_dialog(comment_id);return false;
					});
					panel_comment.find('a.bind_comment_uncolor').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						if(!confirm('确定取消吗？取消不返还扣除的妖果')) return false;
						comment_operate(comment_id,'','comment_color');return false;
					});
					panel_comment.find('a.bind_comment_lock').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,1,'comment_lock');return false;
					});
					panel_comment.find('a.bind_comment_unlock').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,0,'comment_lock');return false;
					});
					panel_comment.find('a.bind_comment_up').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,1,'comment_up');return false;					
					});
					panel_comment.find('a.bind_comment_unup').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,0,'comment_up');return false;		
					});
					panel_comment.find('a.bind_comment_block').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,1,'comment_block');return false;	
					});
					panel_comment.find('a.bind_comment_unblock').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,0,'comment_block');return false;			
					});
					panel_comment.find('a.bind_comment_delete').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						if(!confirm('确定删除吗？如果是主贴，删除操作将连带其回复全部删除')) return false;
						comment_operate(comment_id,0,'comment_delete');return false;
					});	
					panel_comment.find('img.bind_image_delete').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						return delete_pic(comment_id,$(this));
					});
					if(!opts.iframe)
						panel_comment.find('a[rel=lightbox]').colorbox({width:"90%",height:"90%"});					
				}else{
					if(json.code==-1){
						panel_comment.html('无效的评论区').show();
					}else{
						showMsg(json.message);
					}
				}
				$('#loading_comment').remove();
				opts.callback();
				//log.profile( 'render' );
			},error:function(){showMsg('通信错误,请稍后再试')}
		});
		opts.page=page;
	}
	
	function show_panel_face(el,p){
		el.trigger('blur');
		offset=$(el).offset();
		$('#panel_face_bg').height($().height()).toggle();
		panel_face.css({left:offset.left-4,top:offset.top+23}).toggle();
		if(typeof(p)=='undefined'){
			panel_face.data('input',$(opts.input_comment));
		}else{
			panel_face.data('input',p.find(opts.input_reply));
		}
	}
	
	function flush_user(){
		user=get_user();
		if(user!=null)
			has_right = user.group_admin==1 || user.group_admin==2 || in_array(user.id,opts.thread_admin_ids);		
		else
			has_right =false;
	}
	function flush_nologin_bg(){
		flush_user();
		if((user && is_login) ||(user==null && is_login==false)){
			return;
		}
		is_login = user ? true :false;
		var el = $(opts.input_comment+','+opts.input_reply);
		el.attr('bg_color',el.css('background-color'));
		if(is_login){
			el.css('background','')
		}else{
			el.css('background','url('+cfg_host_static()+'/common/images/comment_bg.gif) scroll no-repeat center center');
		}
		el.css('background-color',el.attr('bg_color'));
	}	
	function show_edit_rule(){
		var html='<textarea style="width:100%;height:105px;" id="input_comment_rule">'+opts['thread_rule']+'</textarea>';
		rule_dialog=showMsg(html,'修改版规',{'取消':function(){$(this).dialog('close');},'确定':function(){edit_rule();}},0,700,210);
	}
	
	function edit_rule(){
		$.ajax({
			url:'/comment/ajax.php?mod=thread&act=edit_rule&thread_id='+opts.thread_id,
			dataType:'json',
			type:'POST',
			data:{rule:$('#input_comment_rule').val()},
			cache:false,
			success:function(o){
				if(o.code>0){
					opts['thread_rule']=$('#input_comment_rule').val();
					$('#bind_comment_rule').html(o.rule);
					rule_dialog.dialog('close');
				}
				showMsg(o.message);
			}
		});
	}
	
	function show_color_dialog(comment_id){
		color_dialog=showMsg(panel_color,'彩虹炫',{'取消':function(){$(this).dialog('close');},'确定':function(){buy_color(comment_id);}});
	}
	
	function show_pic_dialog(comment_id){
		if(user==null) { showMsg('注册用户才能贴图,赶紧注册吧','提示',{'关闭':function(){$(this).dialog('close');},'我要登录':function(){if(opts.iframe){parent.login_ajax()}else{login_ajax()};$(this).dialog('close');},'我去注册':function(){if(opts.iframe){parent.reg_ajax()}else{reg_ajax()};$(this).dialog('close');}});return false;}
		if(comment_id>0){
			if($("div[comment_id="+comment_id+"] .panel_reply_input_images ol").length>=5){showMsg('最多只能贴5张图捏 = =#');return;}
		}else{
			if($('.panel_comment_input_images ol').length>=5){showMsg('最多只能贴5张图捏 = =#');return;}
		}
		pic_dialog=showMsg(panel_pic,'贴图',{'取消':function(){$(this).dialog('close');},'确定':function(e){ upload_pic(comment_id,e);}});
		$.xtab({tab:'.ncc_upload_img_title ol a',body:'.ncc_upload_img_content',callback:function(tab,body,flag){$("#ncc_upload_type").val(flag)}});
	}
	
	function upload_pic(comment_id,e){
		var type=$("#ncc_upload_type").val();
		if(type=="1"){
			var url=$.trim($("#ncc_upload_url").val());
			if(url==""||url=="http://"){showMsg('请填写图片地址！');return false;}
			$.ajax({
				url:'/upload/ajax.php?mod=comment&act=upload_link_image',
				dataType:'json',
				cache:false,
				type:'GET',
				data:{url:url},
				success:function(o){
					$("#ncc_upload_loading1").hide();
					pic_dialog.parent().parent().find('button:disabled').removeAttr('disabled');
					if(o.code>0){
						var html='<ol style="display:none;" image="'+o.db_url+'" file="'+o.file_name+'">';
						html+='<img src="'+o.img_url+'" title="'+o.file_name+'" onload="$(this).parent().fadeIn(1000)"/><div class="ico"><img src="'+cfg_host_static()+'/common/images/ico_chapter_2.gif" title="删除" onclick="if(confirm(\'确认要删除吗？\')){$(this).parent().parent().fadeOut(1000).remove();}"/></div></ol>';
						if(comment_id>0){
							$("div[comment_id="+comment_id+"] .panel_reply_input_images").append(html);
						}else{
							$(".panel_comment_input_images").append(html);
						}
						pic_dialog.dialog("close");
					}else{ showMsg(o.message);}
				},
				error:function(){showMsg('服务器通信错误');$("#ncc_upload_loading1").hide();pic_dialog.parent().parent().find('button:disabled').removeAttr('disabled');}
			});
		}else{
			var iframe=$('#ncc_upload_iframe').get(0).contentWindow;
			var file=$.trim(iframe.$("#file").val());
			if(file==""){showMsg('请选择要上传的图片！');return false;}					
			iframe.$('#comment_id').val(comment_id);
			iframe.$('form').trigger('submit');
		}
		$(e.target).attr('disabled','disabled');
		$('#ncc_upload_loading'+type).show();	
	}
	
	function buy_color(comment_id){
		var o=$('.panel_select_color div:contains("囧")');
		if(o.length==0){
			showMsg('请选择一个颜色');
		}else{
			var color=o.attr('color');
			comment_operate(comment_id,color,'comment_color',function(){if(color_dialog) color_dialog.dialog('close');})
		}
	}

	function delete_pic(comment_id,el){
		if(!confirm('确认要删除吗？')) return false;
		$.ajax({
			url:'/comment/ajax.php?mod=thread&act=image_delete',
			dataType:'json',
			data:{url:el.attr('url'),comment_id:comment_id},
			cache:false,
			type:'POST',
			success:function(o){
				if(o.code>0){
					el.parent().parent().fadeOut(1000).remove();
				}else{ showMsg(o.message);}
			},error:function(){showMsg('服务器通信错误');}
		});
	}
	
	function render_paginate(pages){
		paginate.pagination(pages.total, {
			items_per_page: pages.page_size,
			num_edge_entries: 2,
			num_display_entries: 5,
			current_page:pages.page-1,
			link_to: opts.comment_anchor,
			callback: function(page, jq){get_comment(page+1);if(opts.iframe){parent.window.location.hash = opts.comment_anchor; }}
	    });
	}

	function comment_operate(comment_id,value,act,callback){
		$.ajax({
			url:'/comment/ajax.php?mod=thread',
			data:{value:value,comment_id:comment_id,thread_id:opts.thread_id,act:act},
			type:'GET',
			dataType:'json',
			cache:false,
			success:function(o){
				if(o.code>0){
					get_comment(opts.page);
					if(typeof(callback)=='function'){
						callback();
					}
				}
				showMsgS(o.message);
			}
		});
	}

	function send_comment(){
		if(is_submit) return;
		var content=$(opts.input_comment).val();
		if($.trim(content)==''){
			showMsgS('评论内容不能为空');
			return false;
		}
		var real_content=content.replace(/\[em\d+\]/gi,'');
		if($.trim(real_content)==''){
			showMsg('囧，评论内容不能全部是表情<br/>做有意思的事，爱有妖气评论');
			return false;
		}
		if($.trim($.xcookie('tnemmoc'))=='1'){
			showMsgS('请不要过快发表评论，2次评论至少间隔15秒');
			return false;
		}
		var images_list=panel_input_comment.find('.panel_comment_input_images ol');
		var images=[];
		images_list.each(function(){
			images.push($(this).attr('image')+'|||'+$(this).attr('file'));
		});
		is_submit=true;
		$.ajax({
			url:'/comment/ajax.php?mod=thread&act=send_comment',
			data:{content:content,thread_id:opts.thread_id,type:opts.object_type,from:opts.from,images:images.join(':|:')},
			type:'POST',
			dataType:'json',
			success:function(o){
				if(o.code>0){
					$.xcookie('tnemmoc', '1', { expires: 15, path: '/', domain: '.'+get_domain()});
					$(opts.input_comment).val('');
					panel_input_comment_letter_num.html(opts.limit_letter);
					showMsgS(o.message);
					get_comment(1);
					images_list.remove();
					opts.callback_send_comment();
				}else{
					showMsg(o.message);
				}
				is_submit=false;
			},error:function(){showMsg('服务器通信错误，请稍后再试');is_submit=false;}
		});
	}

	function send_reply(comment_id,p){
		if(is_submit) return;
		var content=p.find(opts.input_reply).val();
		if($.trim(content)==''){
			showMsgS('评论内容不能为空');
			return false;
		}
		var real_content=content.replace(/\[em\d+\]/gi,'');
		if($.trim(real_content)==''){
			showMsg('囧，评论内容不能全部是表情<br/>做有意思的事，爱有妖气评论');
			return false;
		}		
		if($.trim($.xcookie('tnemmoc'))=='1'){
			showMsgS('请不要过快发表评论，2次评论至少间隔15秒');
			return false;
		}
		var images_list=p.find('.panel_reply_input_images ol');
		var images=[];
		images_list.each(function(){
			images.push($(this).attr('image')+'|||'+$(this).attr('file'));
		});
		is_submit=true;
		$.ajax({
			url:'/comment/ajax.php?mod=thread&act=send_reply&return',
			data:{content:content,thread_id:opts.thread_id,comment_id:comment_id,type:opts.object_type,from:opts.from,images:images.join(':|:'),face:opts.face},
			type:'POST',
			success:function(o){
				var os=o.split(')@@(*&^%$##$%++!@*#&&^%$');
				var json= window["eval"]("(" + os[0] + ")");

				if(json.code>0){
					$.xcookie('tnemmoc', '1', { expires: 15, path: '/', domain: '.'+get_domain()});
					showMsgS(json.message);
					p.replaceWith(os[1]);
					p=$('div[comment_id='+comment_id+']');
					p.find('.hover_comment_face').hover(
						function(){
							var _temp_user_id=$(this).attr('user_id');
							var _temp_nickname=$(this).attr('nickname');
							$(this).append('<div class="ico_img"><a title="发消息" href="javascript:send_message(\''+_temp_nickname+'\');"><img src="'+cfg_host_static()+'/common/images/ico_space_coment_message.gif" /></a><a title="加为好友" href="javascript:login_ajax(function(){ show_add_friend(\''+_temp_nickname+'\')});"><img src="'+cfg_host_static()+'/common/images/ico_space_coment_friend.gif" /></a><a title="进入空间" href="'+cfg_host_base()+'/member/'+_temp_user_id+'.html" target="_blank"><img src="'+cfg_host_static()+'/common/images/ico_space_coment_home.gif" /></a></div>');
							$(this).addClass(opts.hover_comment_face)
						},
						function(){
							$(this).removeClass(opts.hover_comment_face);
							$(this).find('.ico_img').remove();
						}
					);
					p.find('a.bind_comment_reply').click(function(){
						p.find(opts.panel_input_reply+'[event!=true]').remove();
						var o=p.find(opts.panel_input_reply);
						if(o.length==0){
							p.find(opts.panel_reply).before(panel_input_reply.clone());
							o=p.find(opts.panel_input_reply);
							o.attr('event','true').show().find(opts.btn_cancel_reply).click(function(){
								o.toggle();
								return false;
							});
							o.find(opts.btn_send_reply).click(function(){
								send_reply(comment_id,p);
							});
							o.find(opts.toolbar_face).click(function(){
								show_panel_face($(this),p);
							});
							o.find(opts.toolbar_pic).click(function(){
								show_pic_dialog(comment_id);
							});
							var letter_num=o.find(opts.panel_input_reply_letter_num).html(opts.limit_reply_letter);
							p.find(opts.input_reply).keyup(function(){
								var txt=$(this).val();
								var len=txt.length;
								if(len>opts.limit_reply_letter){
									$(this).val(txt.substring(0,opts.limit_reply_letter));
									len=opts.limit_reply_letter;
								}
								len=opts.limit_reply_letter-len;
								letter_num.html(len);
							});				
						}else{
							o.toggle();
						}
						return false;
					});	
					p.find('a.bind_comment_color').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						show_color_dialog(comment_id);return false;
					});
					p.find('a.bind_comment_uncolor').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						if(!confirm('确定取消吗？取消不返还扣除的妖果')) return false;
						comment_operate(comment_id,'','comment_color');return false;
					});
					p.find('a.bind_comment_lock').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,1,'comment_lock');return false;
					});
					p.find('a.bind_comment_unlock').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,0,'comment_lock');return false;
					});
					p.find('a.bind_comment_up').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,1,'comment_up');return false;					
					});
					p.find('a.bind_comment_unup').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,0,'comment_up');return false;		
					});
					p.find('a.bind_comment_block').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,1,'comment_block');return false;	
					});
					p.find('a.bind_comment_unblock').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						comment_operate(comment_id,0,'comment_block');return false;			
					});
					p.find('a.bind_comment_delete').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						if(!confirm('确定删除吗？如果是主贴，删除操作将连带其回复全部删除')) return false;
						comment_operate(comment_id,0,'comment_delete');return false;
					});	
					p.find('img.bind_image_delete').click(function(){
						var comment_id=$(this).closest('div[comment_id]').attr('comment_id');
						return delete_pic(comment_id,$(this));
					});
					if(!opts.iframe)
						p.find('a[rel=lightbox]').colorbox({width:"90%",height:"90%"});					
				}else{
					showMsg(json.message);
				}
				is_submit=false;
			},error:function(){showMsg('服务器通信错误，请稍后再试');is_submit=false;}
		});
	}
	
	function show_bb(){
		var i="";
		for(var o in opts.em){
			i+='<img src="'+cfg_host_static()+'/common/images/em/default/BB' + o + '.gif" title="' + opts.em[o] + '" alt="" num="'+o+'"/>';
		}
		el=$(opts.panel_face);
		if(el.length>0){
			el.get(0).innerHTML=i;
			el.find('img').click(function(){add_em(this)});
		}
	}
	
	function add_em(e) {
		var input=$(opts.panel_face).data('input');
		if(input==null || input.length==0) input=$(opts.input_comment);		
		if(get_count_em(input)>=5){
			showMsgS('表情最多添加5个');
		}else{
			var html = "[em" + $(e).attr('num') + "]";
			input.setCaret().insertAtCaret(html); 
		}
		if(panel_face){
			$('#panel_face_bg').hide();panel_face.hide();
		}
		return false;
	}
	
	function get_count_em(el){
		var content = el.val();
		var re = /\[em\d+\]/gi;
		var count=0;
		do{
			re.exec(content);
			count++;
		}while(re.lastIndex>0);
		return count-1;
	}
}


/**
 * 数据绑定
 */
jQuery.fn.extend({
	xitems:function(action,option,data,template,mothed){
		if(action=='add'){		
			var item = template.clone();
			var els=[];
			for(var i in option){
				var path=i.split('|');
				els[i]=set_xpath(path[0],item.get(0));
			}		
			for(var i in option){
				option[i](data,els[i],item);
			}
			if(mothed=='shift'){
				this.prepend(item);
			}else if(mothed=='push'){
				this.append(item);
			}
		}
		return this;
	},
	xchain:function(option,datas,template,is_clear){
		if(is_clear)
			this.get(0).innerHTML='';
		for(var k=0 ;k<datas.length;k++){
			var item = template.clone();
			var els=[];
			for(var i in option){
				var path=i.split('|');
				els[i]=set_xpath(path[0],item.get(0));
			}
			for(var i in option){
				option[i](datas[k],els[i],item);
			}
			this.append(item);
		}
		return this;
	}
});
 
jQuery.fn.outer = function() { 
	return $($('<div></div>').html(this.clone())).html();
};

jQuery.extend({   
    /**  
     * 清除当前选择内容  
     */  
    unselectContents: function(){   
        if(window.getSelection)   
            window.getSelection().removeAllRanges();   
        else if(document.selection)   
            document.selection.empty();   
    }   
});
jQuery.fn.extend({   
    /**  
     * 选中内容  
     */  
    selectContents: function(){   
        return $(this).each(function(i){   
            var node = this;   
            var selection, range, doc, win;   
            if ((doc = node.ownerDocument) &&   
                (win = doc.defaultView) &&   
                typeof win.getSelection != 'undefined' &&   
                typeof doc.createRange != 'undefined' &&   
                (selection = window.getSelection()) &&   
                typeof selection.removeAllRanges != 'undefined')   
            {   
                range = doc.createRange();   
                range.selectNode(node);   
                if(i == 0){   
                    selection.removeAllRanges();   
                }   
                selection.addRange(range);   
            }   
            else if (document.body &&   
                     typeof document.body.createTextRange != 'undefined' &&   
                     (range = document.body.createTextRange()))   
            {   
                range.moveToElementText(node);   
                range.select();   
            }   
        });   
    },   
    /**  
     * 初始化对象以支持光标处插入内容  
     */  
    setCaret: function(){   
        if(!$.browser.msie) return $(this);   
        var initSetCaret = function(){   
            var textObj = $(this).get(0);   
            textObj.caretPos = document.selection.createRange().duplicate();   
        };   
        return $(this).click(initSetCaret).select(initSetCaret).keyup(initSetCaret);  
    },   
    /**  
     * 在当前对象光标处插入指定的内容  
     */  
    insertAtCaret: function(textFeildValue){   
       var textObj = $(this).get(0);   
       if(document.all && textObj.createTextRange && textObj.caretPos){   
           var caretPos=textObj.caretPos;   
           caretPos.text = caretPos.text.charAt(caretPos.text.length-1) == '' ?   
                               textFeildValue+'' : textFeildValue;   
       }   
       else if(textObj.setSelectionRange){   
           var rangeStart=textObj.selectionStart;   
           var rangeEnd=textObj.selectionEnd;   
           var tempStr1=textObj.value.substring(0,rangeStart);   
           var tempStr2=textObj.value.substring(rangeEnd);   
           textObj.value=tempStr1+textFeildValue+tempStr2;   
           textObj.focus();   
           var len=textFeildValue.length;   
           textObj.setSelectionRange(rangeStart+len,rangeStart+len);   
           textObj.blur();   
       }   
       else {   
           textObj.value+=textFeildValue;   
       }
       return this;
    }   
});   
/**
 * 用户空间折叠目录
 * @return
 */
function toggle_menu(o){
	$(o).next().stop(true,true);
	if($(o).find('.fold2').length>0){
		$(o).find('.fold2').attr('class','fold1');
		$(o).next().hide('blind',{},500);
	}else{
		$(o).find('.fold1').attr('class','fold2');
		$(o).next().show('blind',{},500);
	}
}


function get_byte_length(value){
	var length = value.length;    
	for(var i = 0; i < value.length; i++){    
		if(value.charCodeAt(i) > 127){    
			length++;    
		}    
	}
	return length;
}

function sub_string(str, len, hasDot) {
    if (!str) {return str;}
    str = $.trim(str);
    str = str.replace(/`/g, "");
    var unicodeRegex = /&#[\d]{5};/g;
    var matchStr = str.replace(unicodeRegex, "`");
    var newLength = 0;
    var srcPosition = 0;
    var chineseRegex = /[\u0080-\uffff]/g;
    var newStr = "";
    for (var i = 0; i < matchStr.length; i++){
        var singleChar = matchStr.charAt(i).toString();
        if (singleChar.match(chineseRegex) != null){
            newLength += 2;
            srcPosition += 1;
            newStr += singleChar;
        } else if (singleChar == '`') {
            newStr += str.substring(srcPosition, srcPosition + 8);
            newLength += 2;
            srcPosition += 8;
        } else {
            newLength++;
            srcPosition++;
            newStr += singleChar;
        }
        if (newLength >= len){
            break;
        }
    }
    if (hasDot && newLength >= len && newStr!=str){
        newStr += "..";
    }
    return newStr;
}

$.fn.limit=function(){
	var els=$(this).find('[limit]');
	for(i = 0; i < els.length; i++){
		var len = $(els[i]).attr("limit");
		if(len!=null){
			$(els[i]).attr('title',$(els[i]).html());
			$(els[i]).html(sub_string($(els[i]).html(), parseInt(len), true));
		}
	}
}

function add_favorite(url, name){
	if(typeof(url)=='undefined') url=cfg_host_base();
	if(typeof(name)=='undefined') name='有妖气原创动漫';
	try{
		if (document.all){
			window.external.addFavorite(url,name);
		}else if (window.sidebar){
			window.sidebar.addPanel(name, url, "");
		}
	}catch(e){
		showMsg("加入收藏失败，请使用Ctrl+D进行添加"); 
	}
} 
function set_home(obj,vrl){ 
	try{ 
    	obj.style.behavior='url(#default#homepage)';obj.setHomePage(vrl); 
	} 
    catch(e){ 
    	if(window.netscape) { 
    		try { 
    			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
    		} 
    		catch (e) { 
    			showMsg("此操作被浏览器拒绝！<br/>请在浏览器地址栏输入“about:config”并回车<br/>然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。"); 
    		} 
    		var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); 
    		prefs.setCharPref('browser.startup.homepage',vrl); 
    	} 
	} 
} 

function search(q,new_window){
	q=$.trim(q);
	if(typeof (q)==undefined || q=='' || q=='我要搜......'){
		showMsg('请填写搜索的关键字');
	}else{
		var url=cfg_host_so()+"/all/"+encodeURI(q)+"/m0_p1.html";
		if(new_window){
			window.open(url);
		}else{
			location.href=url;
		}
	}
}
function hide_last_border(exp,height){
	$(exp).css('overflow','hidden').height($(exp).height()-height);
}

function get_xpath(elt,p) {  
	var path = '';
	for (; elt!=p && elt.nodeType == 1; elt = elt.parentNode){
		var idx = $.inArray(elt,elt.parentNode.childNodes); 
		path = '/'+ idx + path;  
	}
	return path;
}
function set_xpath(path,pp){
	var p=pp;
	var paths=path.split('/');
	for(var i in paths){
		tag=paths[i];
		if(i<1) continue;
		p=p.childNodes[tag];
	}
	return p;
}

$.xajax = function(s){
	s = jQuery.extend({
		submit_element:'',
		
		callback:function(){return false;}
	},s||{});
	$.ajax(s);
};


function str_short_time(time,timestamp,level){
	var lv=(level||10);
	diff=timestamp-time;
	if(diff<0){
		result='';
	}else if(diff>=0 && diff<60){//1
		result=diff+'秒前';
	}else if (diff>=60 && diff<1800){//2
		result=lv>1?parseInt(diff/60)+'分钟前':date_format('m-d H:i',time);	
	}else if (diff>=1800 && diff<3600){//3
		result=lv>2?'半小时前':date_format('m-d H:i',time);	
	}else if (diff>=3600 && diff<86400){//4
		result=lv>3?parseInt(diff/3600)+'小时前':date_format('m-d H:i',time);	
	}else if (diff>=86400 && diff<604800){//5
		result=lv>4?parseInt(diff/86400)+'天前':date_format('m-d H:i',time);	
	}else if (diff>=604800 && diff<2592000){//6
		result=lv>5?parseInt(diff/604800)+'周前':date_format('m-d H:i',time);	
	}else if (diff>=2592000 && diff<31536000){//7
		result=lv>6?parseInt(diff/2592000)+'月前':date_format('m-d H:i',time);	
	}else if (diff>=31536000 && diff<94608000){//8
		result=lv>7?parseInt(diff/31536000)+'年前':date_format('m-d H:i',time);	
	}else{//9
		result=lv>8?'很久以前':date_format('m-d H:i',time);	
	}
	return result;
}

function show_add_friend(nickname){
	var name='';
	if(nickname!=undefined){
		name=nickname;
	}
	var panel='<div style="margin:0 auto;"><form id="add_form" name="add_form" action="/i/ajax.php?mod=friend&act=friend_add" method="post">';
	panel+='<ol style="width:280px; margin:0 auto; padding:7px 0; +padding:2px 0;"><dt style="float:left; height:22px; line-height:24px; overflow:hidden;">对方昵称：</dt>';
	panel+='<dd style="float:left; width:216px; border:1px solid #c3c3c3; height:22px; vertical-align:middle;">';
	panel+='<input name="friend_nickname" style=" border:0; vertical-align:middle; padding:3px; width:210px; margin:0; font-size:12px; color:#999999;" type="text" value="'+name+'" /></dd><div class="clearit"></div></ol>';
	panel+='<ol style="width:280px; margin:0 auto; padding:7px 0;"><dt style="float:left; height:44px; line-height:24px; overflow:hidden;">验证信息：<br /><font color="#aaaaaa">(限25字)</font></dt>';
	panel+='<dd style="float:left; width:216px; border:1px solid #c3c3c3; height:65px; vertical-align:middle;">';
	panel+='<textarea name="friend_message" style="border:0; height:60px; width:210px; line-height:20px; font-size:12px; color:#999999; overflow:auto; margin:0; padding:0 3px;"></textarea></dd><div class="clearit"></div></ol></form></div>';
	showMsg(panel,'添加好友',{'取消':function(){$(this).dialog('close');},'确定':function(){	
		var dialog = $(this);
		jQuery('#add_form').ajaxSubmit({dataType: "json",type:"POST",cache:false,
		success:function(o){
		if(o.code>0){
			showMsg(o.message);
			dialog.dialog('close');
		}else{
			showMsg(o.message);
		}
	},
	error:function(){showMsg('服务器通信错误');}
}); }});
}

function send_message(nickname){
	window.open(cfg_host_passport()+'/message/send.php?username='+encodeURIComponent(nickname));
}

var copytoclip=1;
function copyToClipboard(theField,isalert) {		
	var tempval=$(theField);		
	if (navigator.appVersion.match(/\bMSIE\b/)){
		tempval.select();		
        window.clipboardData.clearData();
        window.clipboardData.setData("Text", tempval.val());
		if(isalert!=false)showMsg("复制地址成功。现在您可以粘贴（Ctrl+v）到Blog 或BBS中了。");
		return;
	}else{
		showMsg("您使用的浏览器不支持此复制功能，<br/>请使用Ctrl+C或鼠标右键复制网址。");
		tempval.select();		
	}
}

function flashChecker(){
	var hasFlash=0; 
	var flashVersion=0;
	var isIE=/*@cc_on!@*/0; 
	if(isIE){
		try{
			var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 
			if(swf) {
				hasFlash=1;
				VSwf=swf.GetVariable("$version");
				flashVersion=parseInt(VSwf.split(" ")[1].split(",")[0]); 
			}
		}catch(e){}
	}else{
		if (navigator.plugins && navigator.plugins.length > 0){
			var swf=navigator.plugins["Shockwave Flash"];
			if (swf){
				hasFlash=1;
				var words = swf.description.split(" ");
				for (var i = 0; i < words.length; ++i){
					if (isNaN(parseInt(words[i]))) continue;
					flashVersion = parseInt(words[i]);
				}
			}
		}
	}
	return {f:hasFlash,v:flashVersion};
}

function get_user_setting(){
	var setting=$.xcookie('setting');
	var settings=null;
	if(setting!=null && typeof(setting)!='undefined'){
		settings= $.evalJSON(setting);
	}
	return settings;
}

function set_user_setting(name,value){
	var setting=$.xcookie('setting');
	var settings=null;
	if(setting!=null && typeof(setting)!='undefined'){
		settings= $.evalJSON(setting);
		settings[name]=value;
	}else{
		settings={};
		settings[name]=value;
	}
	$.xcookie('setting', $.toJSON(settings), { expires: 31536000, path: '/', domain: '.'+get_domain()});
}

function removejscssfile(filename, filetype){
	 var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from
	 var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
	 var allsuspects=document.getElementsByTagName(targetelement)
	 for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
	  if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
	   allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild()
	 }
	}
function createjscssfile(filename, filetype){
	 if (filetype=="js"){ //if filename is a external JavaScript file
	  var fileref=document.createElement('script')
	  fileref.setAttribute("type","text/javascript")
	  fileref.setAttribute("src", filename)
	 }
	 else if (filetype=="css"){ //if filename is an external CSS file
	  var fileref=document.createElement("link")
	  fileref.setAttribute("rel", "stylesheet")
	  fileref.setAttribute("type", "text/css")
	  fileref.setAttribute("href", filename)
	 }
	 return fileref
	}

function replacejscssfile(oldfilename, newfilename, filetype){
	 var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none";
	 var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none";
	 var allsuspects=document.getElementsByTagName(targetelement)
	 for (var i=allsuspects.length; i>=0; i--){
	  if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename)!=-1){
	   var newelement=createjscssfile(newfilename, filetype)
	   allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i])
	  }
	 }
}

function show_loading(){
	var el=$('#u17_common_loading');
	if(el.length==0){
		var html='<div id="u17_common_loading" style="position:fixed !important;position:absolute;top:0;left:0;height:100%; width:100%; z-index:999; background:#000 url('+cfg_host_static()+'/common/images/loading2.gif) no-repeat center center; opacity:0.6; filter:alpha(opacity=60);font-size:14px;line-height:20px;" onclick="javascript:hide_loading()">';
		html+='<p id="loading-one" style="color:#fff;position:absolute; top:50%; left:50%; margin:20px 0 0 -50px; padding:3px 10px;" onclick="javascript:hide_loading()">正在载入中..</p></div>';
		$('body').append(html);
	}
	el.show();
}
function hide_loading(){
	$('#u17_common_loading').hide();
}
var scrolltotop={
	setting: {startline:100, scrollto: 0, scrollduration:1000, fadeduration:[500, 100]},
	controlHTML: '<img id="scrolltotopimage" src="'+cfg_host_static()+'/common/images/post/up.gif" style="width:81px; height:50px" />', 
	controlattrs: {offsetx:5, offsety:5}, 
	anchorkeyword: '#top',
	state: {isvisible:false, shouldvisible:false},
	scrollup:function(){
		//if (!this.cssfixedsupport)
			//this.$control.css({opacity:0});
		var dest=isNaN(this.setting.scrollto)? this.setting.scrollto : parseInt(this.setting.scrollto);
		if (typeof dest=="string" && jQuery('#'+dest).length==1)
			dest=jQuery('#'+dest).offset().top;
		else
			dest=0;
		$('#scrolltotopimage').attr('src',cfg_host_static()+'/common/images/post/up1.gif');
		this.$body.animate({scrollTop: dest}, this.setting.scrollduration, "swing",function(){$('#scrolltotopimage').attr('src',cfg_host_static()+'/common/images/post/up.gif');},function(){ scrolltotop.keepfixed();});
	},
	keepfixed:function(){
		var $window=jQuery(window);
		var controlx=$window.scrollLeft() + $window.width() - this.$control.width() - this.controlattrs.offsetx;
		var controly=$window.scrollTop() + $window.height() - this.$control.height() - this.controlattrs.offsety;
		this.$control.css({left:controlx+'px', top:controly+'px'});
	},
	togglecontrol:function(){
		var scrolltop=jQuery(window).scrollTop();
		if (!this.cssfixedsupport)
		this.keepfixed();
		this.state.shouldvisible=(scrolltop>=this.setting.startline)? true : false;
		if (this.state.shouldvisible && !this.state.isvisible){
			this.$control.stop().animate({opacity:1}, this.setting.fadeduration[0]);
			this.state.isvisible=true;
		}else if (this.state.shouldvisible==false && this.state.isvisible){
			this.$control.stop().animate({opacity:0}, this.setting.fadeduration[1]);
			this.state.isvisible=false;
		}
	},
	init:function(){
		jQuery(document).ready(function($){
			var mainobj=scrolltotop;
			var iebrws=document.all;
			mainobj.cssfixedsupport=!iebrws || iebrws && document.compatMode=="CSS1Compat" && window.XMLHttpRequest;
			mainobj.$body=(window.opera)? (document.compatMode=="CSS1Compat"? $('html') : $('body')) : $('html,body');
			mainobj.$control=$('<div id="topcontrol">'+mainobj.controlHTML+'</div>')
			.css({position:mainobj.cssfixedsupport? 'fixed' : 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.offsetx, opacity:0, cursor:'pointer'})
			.attr({title:'回到顶部  PS:此功能在IE7或火狐中效果更有爱哦！'})
			.click(function(){mainobj.scrollup(); return false})
			.appendTo('body')
			if (document.all && !window.XMLHttpRequest && mainobj.$control.text()!='')
				mainobj.$control.css({width:mainobj.$control.width()});
			mainobj.togglecontrol();
			$('a[href="' + mainobj.anchorkeyword +'"]').click(function(){
				mainobj.scrollup();
				return false;
			})
			$(window).bind('scroll resize', function(e){
				mainobj.togglecontrol();
			});
		});
	}
}


function popMsg(message,title,width,height,callback){
	if(typeof(title)=='undefined'){
		title='妖气提示';
	}
	if(typeof(width)=='undefined') width=270;
	if(typeof(height)=='undefined') height=150;
	if($('#u17_pop_msg').lenght>0){
		$('#u17_pop_msg').remove();
	}
	var html='<div id="u17_pop_msg" style="background-color:#fff;bottom:3px;display:none;right:4px;z-index:50000;position:fixed;border:2px solid #D9D9D9;line-height:24px;text-align:left;width:'+width+'px;height:'+height+'px;">';
	html+='<div style="border-bottom:1px solid #D9D9D9;width:'+(width-10)+'px;height:25px;padding-left:10px;background:transparent url('+cfg_host_static()+'/common/images/index/bar_bg.jpg) repeat-x scroll left top">';
	html+='<span style="float:left;">'+title+'</span>';
	html+='<div style="float:right;margin-right:7px;text-align:left;margin-top:5px;"><a id="u17_pop_msg_close" href="###" ><img border="0" src="'+cfg_host_static()+'/common/images/index/b_x.gif"></a></div>';
	html+='</div>';
	html+='<div style="padding:8px;width:'+(width-16)+'px;height:'+(height-31)+'px;">';
	html+=''+message;
	html+='</div>';
	html+='</div>';
	var el=$(html);
	$('body').append(el);
	var iebrws=document.all;
	cssfixedsupport=!iebrws || iebrws && document.compatMode=="CSS1Compat" && window.XMLHttpRequest;
	if (!cssfixedsupport){
		el.css('position','absolute');
		var fix=function(){
			var $window=jQuery(window);
			var controlx=$window.scrollLeft() + $window.width() - el.width() - 4;
			var controly=$window.scrollTop() + $window.height() - el.height() - 3;
			el.css({left:controlx+'px', top:controly+'px'});				
		}
		
		$(window).bind('scroll resize', fix);
		fix();
	}
	$('#u17_pop_msg_close').click(function(){
		$('#u17_pop_msg').remove();
		if(typeof(callback)!='undefined'){
			callback();
		}
	});
	el.fadeIn(2000);
}

function base64_decode (data) {
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = [];
    if (!data) {return data;}
    data += '';
    do { 
        h1 = b64.indexOf(data.charAt(i++));
        h2 = b64.indexOf(data.charAt(i++));
        h3 = b64.indexOf(data.charAt(i++));
        h4 = b64.indexOf(data.charAt(i++));
        bits = h1<<18 | h2<<12 | h3<<6 | h4;
        o1 = bits>>16 & 0xff;
        o2 = bits>>8 & 0xff;
        o3 = bits & 0xff;
        if (h3 == 64) {
            tmp_arr[ac++] = String.fromCharCode(o1);
        } else if (h4 == 64) {
            tmp_arr[ac++] = String.fromCharCode(o1, o2);
        } else {
            tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
        }
    } while (i < data.length);
    dec = tmp_arr.join('');
    dec = this.utf8_decode(dec);
    return dec;
}

function base64_encode (data) {
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc="", tmp_arr = [];
    if (!data){return data;}
    data = this.utf8_encode(data+'');
    do {
        o1 = data.charCodeAt(i++);
        o2 = data.charCodeAt(i++);
        o3 = data.charCodeAt(i++);
        bits = o1<<16 | o2<<8 | o3;
        h1 = bits>>18 & 0x3f;
        h2 = bits>>12 & 0x3f;
        h3 = bits>>6 & 0x3f;
        h4 = bits & 0x3f;
        tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
    } while (i < data.length);
    enc = tmp_arr.join('');
    switch (data.length % 3) {
        case 1:
            enc = enc.slice(0, -2) + '==';
        break;
        case 2:
            enc = enc.slice(0, -1) + '=';
        break;
    }
    return enc;
}
function utf8_decode ( str_data ) {
    var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;
    str_data += '';
    while ( i < str_data.length ) {
        c1 = str_data.charCodeAt(i);
        if (c1 < 128) {
            tmp_arr[ac++] = String.fromCharCode(c1);
            i++;
        } else if ((c1 > 191) && (c1 < 224)) {
            c2 = str_data.charCodeAt(i+1);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i+1);
            c3 = str_data.charCodeAt(i+2);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }
    return tmp_arr.join('');
}

function utf8_encode ( argString ) {
    var string = (argString+''); 
    var utftext = "";
    var start, end;
    var stringl = 0;
    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;
        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.substring(start, end);
            }
            utftext += enc;
            start = end = n+1;
        }
    }
    if (end > start) {
        utftext += string.substring(start, string.length);
    }
    return utftext;
}

