if(!this.JSON){JSON={};}(function(){function f(n){return n<10?'0'+n:n;}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z';};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof rep==='function'){value=rep.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':value});};}if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}return reviver.call(holder,key,value);}cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}throw new SyntaxError('JSON.parse');};}})();
(function(jQuery){jQuery.fn.__bind__=jQuery.fn.bind;jQuery.fn.__unbind__=jQuery.fn.unbind;jQuery.fn.__find__=jQuery.fn.find;var hotkeys={version:'0.7.9',override:/keypress|keydown|keyup/g,triggersMap:{},specialKeys:{27:'esc',9:'tab',32:'space',13:'return',8:'backspace',145:'scroll',20:'capslock',144:'numlock',19:'pause',45:'insert',36:'home',46:'del',35:'end',33:'pageup',34:'pagedown',37:'left',38:'up',39:'right',40:'down',109:'-',112:'f1',113:'f2',114:'f3',115:'f4',116:'f5',117:'f6',118:'f7',119:'f8',120:'f9',121:'f10',122:'f11',123:'f12',191:'/'},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":"\"",",":"<",".":">","/":"?","\\":"|"},newTrigger:function(type,combi,callback){var result={};result[type]={};result[type][combi]={cb:callback,disableInInput:false};return result;}};hotkeys.specialKeys=jQuery.extend(hotkeys.specialKeys,{96:'0',97:'1',98:'2',99:'3',100:'4',101:'5',102:'6',103:'7',104:'8',105:'9',106:'*',107:'+',109:'-',110:'.',111:'/'});jQuery.fn.find=function(selector){this.query=selector;return jQuery.fn.__find__.apply(this,arguments);};jQuery.fn.unbind=function(type,combi,fn){if(jQuery.isFunction(combi)){fn=combi;combi=null;}
if(combi&&typeof combi==='string'){var selectorId=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();var hkTypes=type.split(' ');for(var x=0;x<hkTypes.length;x++){delete hotkeys.triggersMap[selectorId][hkTypes[x]][combi];}}
return this.__unbind__(type,fn);};jQuery.fn.bind=function(type,data,fn){var handle=type.match(hotkeys.override);if(jQuery.isFunction(data)||!handle){return this.__bind__(type,data,fn);}
else{var result=null,pass2jq=jQuery.trim(type.replace(hotkeys.override,''));if(pass2jq){result=this.__bind__(pass2jq,data,fn);}
if(typeof data==="string"){data={'combi':data};}
if(data.combi){for(var x=0;x<handle.length;x++){var eventType=handle[x];var combi=data.combi.toLowerCase(),trigger=hotkeys.newTrigger(eventType,combi,fn),selectorId=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();trigger[eventType][combi].disableInInput=data.disableInInput;if(!hotkeys.triggersMap[selectorId]){hotkeys.triggersMap[selectorId]=trigger;}
else if(!hotkeys.triggersMap[selectorId][eventType]){hotkeys.triggersMap[selectorId][eventType]=trigger[eventType];}
var mapPoint=hotkeys.triggersMap[selectorId][eventType][combi];if(!mapPoint){hotkeys.triggersMap[selectorId][eventType][combi]=[trigger[eventType][combi]];}
else if(mapPoint.constructor!==Array){hotkeys.triggersMap[selectorId][eventType][combi]=[mapPoint];}
else{hotkeys.triggersMap[selectorId][eventType][combi][mapPoint.length]=trigger[eventType][combi];}
this.each(function(){var jqElem=jQuery(this);if(jqElem.attr('hkId')&&jqElem.attr('hkId')!==selectorId){selectorId=jqElem.attr('hkId')+";"+selectorId;}
jqElem.attr('hkId',selectorId);});result=this.__bind__(handle.join(' '),data,hotkeys.handler)}}
return result;}};hotkeys.findElement=function(elem){if(!jQuery(elem).attr('hkId')){if(jQuery.browser.opera||jQuery.browser.safari){while(!jQuery(elem).attr('hkId')&&elem.parentNode){elem=elem.parentNode;}}}
return elem;};hotkeys.handler=function(event){var target=hotkeys.findElement(event.currentTarget),jTarget=jQuery(target),ids=jTarget.attr('hkId');if(ids){ids=ids.split(';');var code=event.which,type=event.type,special=hotkeys.specialKeys[code],character=!special&&String.fromCharCode(code).toLowerCase(),shift=event.shiftKey,ctrl=event.ctrlKey,alt=event.altKey||event.originalEvent.altKey,mapPoint=null;for(var x=0;x<ids.length;x++){if(hotkeys.triggersMap[ids[x]][type]){mapPoint=hotkeys.triggersMap[ids[x]][type];break;}}
if(mapPoint){var trigger;if(!shift&&!ctrl&&!alt){trigger=mapPoint[special]||(character&&mapPoint[character]);}
else{var modif='';if(alt)modif+='alt+';if(ctrl)modif+='ctrl+';if(shift)modif+='shift+';trigger=mapPoint[modif+special];if(!trigger){if(character){trigger=mapPoint[modif+character]||mapPoint[modif+hotkeys.shiftNums[character]]||(modif==='shift+'&&mapPoint[hotkeys.shiftNums[character]]);}}}
if(trigger){var result=false;for(var x=0;x<trigger.length;x++){if(trigger[x].disableInInput){var elem=jQuery(event.target);if(jTarget.is("input")||jTarget.is("textarea")||jTarget.is("select")||elem.is("input")||elem.is("textarea")||elem.is("select")){return true;}}
result=result||trigger[x].cb.apply(this,[event]);}
return result;}}}};window.hotkeys=hotkeys;return jQuery;})(jQuery);
//
// css圆角
;(function($){

	  if($.browser.msie && document.namespaces["v"] == null) {
	    document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
	    var ss = document.createStyleSheet().owningElement;
	    ss.styleSheet.cssText = "v\\:*{behavior:url(#default#VML);}"
	  }

	  $.fn.cornerz = function(options){
	    
	    function canvasCorner(t,l, r,bw,bc,bg){
		    var sa,ea,cw,sx,sy,x,y, p = 1.57, css="position:absolute;";
		    if(t) 
			    {sa=-p; sy=r; y=0; css+="top:-"+bw+"px;";  }
		    else 
			    {sa=p; sy=0; y=r; css+="bottom:-"+bw+"px;"; }
		    if(l) 
			    {ea=p*2; sx=r; x=0;	css+="left:-"+bw+"px;"}
		    else 
			    {ea=0; sx=0; x=r; css+="right:-"+bw+"px;";	}
			
		    var canvas=$("<canvas width="+r+"px height="+ r +"px style='" + css+"' ></canvas>");
		    var ctx=canvas[0].getContext('2d');
		    ctx.beginPath();
		    ctx.lineWidth=bw*2;	
		    ctx.arc(sx,sy,r,sa,ea,!(t^l));
		    ctx.strokeStyle=bc;
		    ctx.stroke();
		    ctx.lineWidth = 0;
		    ctx.lineTo(x,y);
		    ctx.fillStyle=bg;
		    ctx.fill();
		    return canvas;
	    };

	    function canvasCorners(corners, r, bw,bc,bg) {
		    var hh = $("<div style='display: inherit' />"); // trying out style='float:left' 
		    $.each(corners.split(" "), function() {
		      hh.append(canvasCorner(this[0]=="t",this[1]=="l", r,bw,bc,bg));
		    });
		    return hh;
	    };

	    function vmlCurve(r,b,c,m,ml,mt, right_fix) {
	        var l = m-ml-right_fix;
	        var t = m-mt;
	        return "<v:arc filled='False' strokeweight='"+b+"px' strokecolor='"+c+"' startangle='0' endangle='361' style=' top:" + t +"px;left: "+ l + ";width:" + r+ "px; height:" + r+ "px' />";
	    }
	    

	    function vmlCorners(corners, r, bw, bc, bg, w) {
	      var h ="<div style='text-align:left; '>";
	      $.each($.trim(corners).split(" "), function() {
	        var css,ml=1,mt=1,right_fix=0;
	        if(this.charAt(0)=="t") {
	          css="top:-"+bw+"px;";
	        }
	        else {
	          css= "bottom:-"+bw+"px;";
	          mt=r+1;
	        }
	        if(this.charAt(1)=="l")
	          css+="left:-"+bw+"px;";
	        else {
	          css +="right:-"+(bw)+"px; "; // odd width gives wrong margin?
	           ml=r;
	           right_fix = 1;
	        }

	        h+="<div style='"+css+"; position: absolute; overflow:hidden; width:"+ r +"px; height: " + r + "px;'>";
	        h+= "<v:group  style='width:1000px;height:1000px;position:absolute;' coordsize='1000,1000' >";
	        h+= vmlCurve(r*3,r+bw,bg, -r/2,ml,mt,right_fix); 
	        if(bw>0)
	          h+= vmlCurve(r*2-bw,bw,bc, Math.floor(bw/2+0.5),ml,mt,right_fix);
	        h+="</v:group>";
	        h+= "</div>"; 
	      });
	      h += "</div>";
	      
	      return h;
	    };

	    var settings = {
	      corners : "tl tr bl br",
	      radius : 10,
	      background: "white",
	      borderWidth: 0,
	      fixIE: true };              
	    $.extend(settings, options || {});
	    
	    var incrementProperty = function(elem, prop, x) {
	      var y = parseInt(elem.css(prop)) || 0 ;
	      elem.css(prop, x+y);
	    }
	    
	    
	    return this.each(function() {
	      
	      var $$ = $(this);
	      var r = settings.radius*1.0;
	      var bw = (settings.borderWidth || parseInt($$.css("borderTopWidth")) || 0)*1.0;
	      var bg = settings.background;
	      var bc = settings.borderColor;
	      bc = bc || ( bw > 0 ? $$.css("borderTopColor") : bg);
	            
	      var cs = settings.corners;

	      if($.browser.msie) {//need to use innerHTML rather than jQuery
	        h = vmlCorners(cs,r,bw,bc,bg, $(this).width() );     
	        this.innerHTML += h;
	        
	      }
	      else  //canvasCorners returns a DOM element
	        $$.append(canvasCorners(cs,r,bw,bc,bg));
	      
	      
	      if(this.style.position != "absolute")
	        this.style.position = "relative";
	     
	       this.style.zoom = 1; // give it a layout in IE
	      
	       if($.browser.msie && settings.fixIE) {
	          var ow = $$.outerWidth();
	          var oh = $$.outerHeight();
	          
	          if(ow%2 == 1) {
	            incrementProperty($$, "padding-right", 1);
	            incrementProperty($$, "margin-right", 1);
	          }

	          if(oh%2 == 1) { 
	            incrementProperty($$, "padding-bottom", 1);
	            incrementProperty($$, "margin-bottom", 1);
	          }
	        }
	          
	      }
	      
	    );
	 
	  }
})(jQuery);
//
String.prototype.startsWith = function(str) {
	return (this.match("^" + str) == str);
}
//
String.prototype.endsWith = function(str) {
	return (this.match(str + "$") == str);
}
//
function Common() {
	var load_div ;
	this.loadingHtml = function() {
		return $("#loading").html();
	};
	this.showLoading = function(toid) {
		if(typeof(toid) == "string") {
			if(toid.indexOf("#")==-1 && toid.indexOf(".")==-1) {
				toid = "#"+toid
			}
			$(toid).html(_this.loadingHtml());
		} else {
			toid.html(_this.loadingHtml());
		}
	};
	this.hideLoading = function() {
		//$("body").remove(".loading");
	};
	var _this = this;
	this.submit = function(id){
		if(typeof(id) == "string") {
			$("#"+id).attr("disabled", "disabled").val("请稍后...");
		} else {
			$(id).attr("disabled", "disabled").val("请稍后...");
		}
	};
	this.unsubmit = function(id, val){
		if(val == undefined){
			val = "确定保存";
		}
		if(typeof(id) == "string") {
			$("#"+id).attr("disabled", "").val(val);
		} else {
			$(id).attr("disabled", "").val(val);
		}
	};
	this.submitHelper = function(id, attr, val){
		$("#"+id).attr("disabled", attr).val(val);
	};
	this.closePanel = function(){
		$("#panel").slideUp(300);
		return false;
	};
	this.showPanel = function(e, _w, _h) {
		try{
			var panel = $("#panel");
			var offset = panel.offset();
			var tempx, tempy, left, top;
			var is_ie = $.browser.msie;
			tempx = (!is_ie) ? e.pageX : event.clientX + document.body.scrollLeft;
			tempy = (!is_ie) ? e.pageY : event.clientY + document.body.scrollTop;
			if(_h == undefined || _h == 0){
				_h = 200;
			} else {
				$("#panel").css("height", _h);
			}
			if(_w == undefined || _w == 0){
				_w = 380;
			} else {
				$("#panel").css("width", _w);
			}
			if (is_ie) {
				top = document.documentElement.scrollTop + tempy / 2;
				left = document.body.offsetWidth/2 - _w / 2;
			}else{
				var ch = document.body.clientHeight;
				top = tempy - 100;
				left = document.documentElement.clientWidth/2 - _w / 2;
			}
			panel.css('left', parseInt(left) + "px");
			panel.css('top', parseInt(top) + "px");
		}catch(ex){
			alert(ex);
		}
		$("#panel").slideDown(300);
		return false;
	};
	this.selectAll = function(id, btn){
		$("#"+btn).click(function(){
			$("#"+id).checkCheckboxes();
		});	
	};	
	this.delFriend = function(id, msg){
		if(confirm(msg)){
			location.href = "/home/friends/delete.html?friendUserId=" + id + "&g=" + location.href;
		}else{
			
		}
		return false;
	};
	this.confirm = function(url, msg){
		if(confirm(msg)){
			location.href = url;
		}
		return false;
	};
	this.addfriend = function(obj,userId){
		obj.parentNode.onclick = function(e){
			y.showPanel(e);
		}
		$("#panel_inner").html(_this.loadingHtml());
		var ajaxurl = "/home/ajax/friendRequestForm.html?id="+userId;
		var para = "";
		$.ajax({
			url :ajaxurl,
			type :'POST',
			dataType :'html',
			timeout :120000,
			data :para,
			error : function() {
			$("#panel_inner").html("操作失败！");
			},
			success : function(html) {
			$("#panel_inner").html(html);
		}
		});
		return false;
	};
	this.inviteOnlooker = function(obj, topicId){
		obj.parentNode.onclick = function(e){
			y.showPanel(e, 380);
		};
		$("#panel_inner").html(_this.loadingHtml());
		var ajaxurl = "/group/ajax/innerInviteOnlooker.html?topicId="+topicId;
		var para = "";
		$.ajax({
			url :ajaxurl,
			type :'GET',
			dataType :'html',
			timeout :120000,
			data :para,
			error : function() {
			$("#panel_inner").html("操作失败！");
			},
			success : function(html) {
			$("#panel_inner").html(html);
		}
		});
		return false;
	};
	this.onlookersSubmit = function(topicId){
		this.submit("onlookersBtn");
		var ajaxurl = "/group/ajax/innerInviteOnlooker.html?topicId="+topicId;
		var para = "content=" + $("#onlookersContent").val();
		$.ajax({
			url :ajaxurl,
			type :'POST',
			dataType :'html',
			timeout :120000,
			data :para,
			error : function() {
				$("#panel_inner").html("操作失败！");
			},
			success : function(html) {
				$("#panel_inner").html(html);
			}
		});
	};
	this.getOnlines = function(){
		var ajaxurl = "/online/ajax/total.html";
		var para = "";
		$.ajax({
			url :ajaxurl,
			type :'GET',
			dataType :'html',
			timeout :900000,
			data :para,
			error : function() {},
			success : function(html) {
				var json = JSON.parse(html);
				$("#onlines").html(json.total);
			}
		});
	};
	this.addToBookshelf = function(obj, bookId, chapterId){
		obj.parentNode.onclick = function(e){
			y.showPanel(e);
		}
		$("#panel_inner").html(_this.loadingHtml());
		var ajaxurl = "/book/ajax/bookshelfForm.html";
		var para = "";
		if(bookId != undefined){
			para += "&bookId="+bookId;
		}
		if(chapterId != undefined){
			para += "&chapterId="+chapterId;
		}
		$.ajax({
			url :ajaxurl,
			type :'GET',
			dataType :'html',
			timeout :900000,
			data :para,
			error : function() {
			$("#panel_inner").html("操作失败！");
			},
			success : function(html) {
			$("#panel_inner").html(html);
		}
		});
		return false;
	};	
	this.safetyAjaxData = function(data){
		data = encodeURIComponent(data);
		return data;
	};
}
var y = new Common();
//
$(function(){
    $('a[href*=#]').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') 
        && location.hostname == this.hostname) {
            var $target = $(this.hash);
            $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
            if ($target.length) {
                var targetOffset = $target.offset().top;
                $('html,body').animate({scrollTop: targetOffset}, 800);
                return false;
            }
        }
    });
});