(function(){
	if(window.$addthis&&window.$$addthis){
		return false;
	}
	var $={
		byId:function(id){
			return document.getElementById(id);
		},
		byName:function(name){
			return $.toArray(document.getElementsByName(name));
		},
		byTag:function(tag,obj){
			obj=obj||document;
			return $.toArray(obj.getElementsByTagName(tag));
		},
		byClass:function(cls,obj){
			obj=obj||document;
			var re=new RegExp("(^|\\s+)"+$.addSlashRegExp(cls)+"(\\s+|$)");
			var ret=[],arr=obj.getElementsByTagName('*');
			for(var i=0;i<arr.length;i++){
				if(re.test(arr[i].className)){
					ret[ret.length]=arr[i];
				}
			}
			return ret;
		},
		toArray:function(obj){
			var arr=[];
			for(var i=0;i<obj.length;i++){
				arr[i]=obj[i];
			}
			return arr;
		},
		attr:function(obj,name){
			var value=obj[name]? obj[name]:obj.getAttribute(name);
			return !value ? "":value;
		},
		create:function(tag){
			return document.createElement(tag);
		},
		next:function(node,all){
			var ret=node;
			while(ret=ret.nextSibling){
				if(all||ret.nodeType==1){
					break;
				}
			}
			return ret;
		},
		prev:function(node,all){
			var ret=node;
			while(ret=ret.previousSibling){
				if(all||ret.nodeType==1){
					break;
				}
			}
			return ret;
		},
		parent:function(a){
			return a.parentNode||a.parentElement;
		},
		before:function(refer,node){
			return refer.parentNode.insertBefore(node,refer);
		},
		after:function(refer,node){
			var ret,next=$.next(refer);
			if(next){
				ret=$.before(next,node);
			}else{
				ret=$.append(refer.parentNode,node);
			}
			next=null;
			return ret;
		},
		prepend:function(a,b){
			var c;
			if(a.hasChildNodes()){
				c=$.before(a.childNodes[0],b);
			}else{
				c=$.append(a,b);
			}
			return c;
		},
		append:function(a,b){
			return a.appendChild(b);
		},
		bind:function(a,b,c){
			var d=[];
			if(a.constructor==Array){
				d=a;
			}else{
				d[d.length]=a;
			}
			for(var i=0;i<d.length;i++){
				if(d[i].addEventListener){
					d[i].addEventListener(b,c,0);
				}else if(a.attachEvent){
					d[i].attachEvent("on"+b,c);
				}else{
					d[i]["on"+b]=c;
				}
			}
		},
		addClass:function(a,b){
			a.className=$.trim(a.className+" "+b);
		},
		removeClass:function(a,b){
			var c=new RegExp("(^|\\s+)"+$.addSlashRegExp(b)+"(\\s+|$)","g");
			a.className=$.trim(a.className.replace(c," "));
		},
		addSlashRegExp:function(a){
			return a.replace(/([\^\$\*\+\?\(\)\[\]\{\}\,\.\:\=\!\|\-\\])/g,"\\$1");
		},
		trim:function(a){
			return a.replace(/(^[\r\n\s]+|[\r\n\s]+$)/g,"");
		},
		curCss:function(c,d){
			var e,style=c.style;
			if(d.match(/float/i))d="styleFloat";
			if(document.defaultView&&document.defaultView.getComputedStyle){
				if(d.match(/float/i))d="float";
				d=d.replace(/([A-Z])/g,"-$1").toLowerCase();
				var f=document.defaultView.getComputedStyle(c,null);
				if(f)e=f.getPropertyValue(d);
			}else if(c.currentStyle){
				var g=d.replace(/\-(\w)/g,function(a,b){
						return b.toUpperCase();
					});
				e=c.currentStyle[d]||c.currentStyle[g];
				if(!/^\d+(px)?$/i.test(e)&&/^\d/.test(e)){
					var h=style.left,rsLeft=c.runtimeStyle.left;
					c.runtimeStyle.left=c.currentStyle.left;
					style.left=e||0;
					e=style.pixelLeft+"px";
					style.left=h;
					c.runtimeStyle.left=rsLeft;
				}
			}else if(style&&style[d])e=style[d];
			return e;
		},
		getOffset:function(obj){
			var info={width:0,height:0,left:0,top:0,right:0,bottom:0};
			if(obj=="visible"){
				if(window.innerWidth&&window.innerWidth.constructor==Number){
					info.width=window.innerWidth;
					info.height=window.innerHeight;
					info.left=window.pageXOffset;
					info.top=window.pageYOffset;
				}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){
					info.width=document.documentElement.clientWidth;
					info.height=document.documentElement.clientHeight;
					info.left=document.documentElement.scrollLeft;
					info.top=document.documentElement.scrollTop;
				}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){
					info.width=document.body.clientWidth;
					info.height=document.body.clientHeight;
					info.left=document.body.scrollLeft;
					info.top=document.body.scrollTop;
				}
			}else{
				info.width=obj.offsetWidth+(!$.boxModel ? obj.clientLeft:0);
				info.height=obj.offsetHeight+(!$.boxModel ? obj.clientTop:0);
				while(obj){
					info.left+=obj.offsetLeft;
					info.top+=obj.offsetTop;
					if($.browser.msie&&$.boxModel&&obj.offsetParent&&!/^t(able|d|h)$/i.test(obj.tagName)){
						info.left+=obj.clientLeft;
						info.top+=obj.clientTop;
					}
					if($.browser.mozilla){
						info.left+=(parseInt($.curCss(obj,"borderLeftWidth"))||0);
						info.top+=(parseInt($.curCss(obj,"borderTopWidth"))||0);
						body=null;
					}
					obj=obj.offsetParent;
				}
				if($.browser.mozilla){
					var body=document.body;
					info.left+=body.clientLeft;info.top+=body.clientTop;
					var html=document.documentElement;
					info.left -=parseInt($.curCss(html,"borderLeftWidth"));
					info.top -=parseInt($.curCss(html,"borderTopWidth"));
					body=html=null;
				}
			}
			info.right=info.left+info.width;
			info.bottom=info.top+info.height;
			return info;
		},
		cancelEvent:function(a){
			if(a.preventDefault){
				a.preventDefault();
			}
			a.returnValue=false;
		},
		boxModel:false,
		boxModelTest:function(){
			var a=document.createElement("div");
			a.style.width=a.style.paddingLeft="1px";
			document.body.appendChild(a);
			$.boxModel=a.offsetWidth===2;
			document.body.removeChild(a).style.display='none';
			a=null;
		},
		ready:function(a){
			$.domReadyBind();
			if($.domReady){
				a.call(document,$);
			}else{
				$.domReadyList.push(a);
			}
		},
		domReady:false,
		domReadyList:[],
		domReadyBound:false,
		domReadyBind:function(){
			if($.domReadyBound)return;
			$.domReadyBound=true;
			if(document.addEventListener){
				document.addEventListener("DOMContentLoaded",function(){
					document.removeEventListener("DOMContentLoaded",arguments.callee,false);
					$.domReadyDone();
				},false);
			}else if(document.attachEvent){
				document.attachEvent("onreadystatechange",function(){
						if(document.readyState==="complete"){
							document.detachEvent("onreadystatechange",arguments.callee);
							$.domReadyDone();
						}
					}
				);
				if(document.documentElement.doScroll&&window==window.top)(function(){
						if($.domReady)return;
						try{
							document.documentElement.doScroll("left");
						}catch(error){
							setTimeout(arguments.callee,0);
							return;
						}
						$.domReadyDone();
					}
				)();
			}
			$.bind(window,"load",$.domReadyDone);
		},
		domReadyDone:function(){
			if(!$.domReady){
				$.domReady=true;
				if($.domReadyList){
					for(var i=0;i<$.domReadyList.length;i++){
						$.domReadyList[i].call(document,$);
					}
					$.domReadyList=null;
				}
			}
		},
		fixIeBgBug:function(){
			try{
				document.execCommand("BackgroundImageCache",false,true);
			}catch(e){}
		},
		loadCssFile:function(a){
			try{
				var b=$.create("link");
				b.rel=b.rev="stylesheet";
				b.type="text/css";
				b.href=a;
				b.media="all";
				$.append($.byTag("head")[0],b);
				b=null;
			}catch(e){}
		},
		browser:{
			version:(navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/:]([\d.]+)/)||[0,'0'])[1],
			safari:/webkit/.test(navigator.userAgent.toLowerCase()),
			opera:/opera/.test(navigator.userAgent.toLowerCase()),
			msie:/msie/.test(navigator.userAgent.toLowerCase())&&!/opera/.test(navigator.userAgent.toLowerCase()),
			mozilla:/mozilla/.test(navigator.userAgent.toLowerCase())&&!/(compatible|webkit)/.test(navigator.userAgent.toLowerCase())
		},
		isMouseLeaveOrEnter:function(e,a){
			if(e.type!='mouseout'&&e.type!='mouseover')return false;
			var b=e.relatedTarget?e.relatedTarget:e.type=='mouseout'?e.toElement:e.fromElement;
			while(b&&b!=a)b=b.parentNode;
			return(b!=a);
		}
	};
	
	var n={
		css:"http://bluesky-bookmark.googlecode.com/svn/trunk/bs.css",
		gourl:"http://bs.bluesky.cn/redirect.php",
		timeDelayout:420,
		favs:{
			"fav":{id:0,name:"本地收藏夹"},
			"google":{id:1,name:"谷歌书签"},
			"baidu":{id:2,name:"百度搜藏"},
			"yahoo":{id:3,name:"雅虎收藏"},
			"qq":{id:4,name:"QQ书签"},
			"sina-vivi":{id:5,name:"新浪ViVi"},
			//"fanfou":{id:6,name:"饭否"},
			//"jiwai":{id:7,name:"叽歪"},
			"365key":{id:8,name:"365key"},
			//"digbuzz":{id:9,name:"我挖"},
			"waakee":{id:10,name:"挖客"},
			"windows-live":{id:11,name:"微软Live"},
			"hexun":{id:12,name:"和讯网摘"},
			"mister-wong-cn":{id:14,name:"Mister-Wong"},
			"shouker":{id:15,name:"收客"},
			"diglog":{id:16,name:"Diglog"},
			"yangku":{id:17,name:"央库"},
			"9fav":{id:18,name:"就喜欢"},
			"leshou":{id:19,name:"乐收"},
			"poco":{id:20,name:"POCO"},
			"douban":{id:21,name:"豆瓣"},
			"xiaonei":{id:22,name:"校内"},
			"delicious":{id:71,name:"Delicious"},
			"digg":{id:72,name:"Digg"},
			"facebook":{id:73,name:"Facebook"},
			"twitter":{id:74,name:"Twitter"},
			"myspace":{id:76,name:"Myspace"}
		},
		e:encodeURIComponent,
		gotourl:function(a){
			open(n.gourl+a,'addthis','width=750,height=500,left=50,top=50,toolbar=no,menubar=no,location=no,scrollbars=yes,status=yes,resizable=yes');
			return false;
		},
		showposition:function(a,b,c,d){
			if(!$.boxModel){
				b.style.width=(b.clientWidth+parseInt($.curCss(b,"paddingLeft"))+parseInt($.curCss(b,"paddingRight"))+(parseInt($.curCss(b,"borderLeftWidth"))?parseInt($.curCss(b,"borderLeftWidth")):0)+(parseInt($.curCss(b,"borderRightWidth"))?parseInt($.curCss(b,"borderRightWidth")):0))+"px";
			}
			a.style.width=(b.offsetWidth)+"px";
			c.style.width=(b.offsetWidth)+"px";
			a.style.height=b.offsetHeight+"px";
			c.style.height=b.offsetHeight+"px";
			var e=$.getOffset($.parent(d));
			var f=$.getOffset("visible");
			var g=$.getOffset(a);
			var h=0,top=0;
			if(f.right>=e.left+g.width||f.right-(e.left+g.width)>=(e.right-g.width)-f.left){
				h=0;
			}else{
				h=e.width-g.width;
			}if(f.bottom>=e.bottom+g.height||f.bottom-(e.bottom+g.height)>=(e.top-g.height)-f.top){
				top=e.height;
			}else{
				top=0-g.height;
			}
			a.style.left=h+"px";
			a.style.top=top+"px";
			e=null;
			f=null;
			g=null;
			h=null;
			top=null;
		},
		showThisItem:function(a){
			var b=$.byClass("bs_bluesky_cn");
			for(var c=0;c<b.length;c++){
				var d=$.byClass("addbox",b[c])[0];
				if(d)d.style.display="none";
			}
			d=$.byClass("addbox",a)[0];
			if(d)d.style.display="block";
			b=null;
			d=null;
		},
		initBtn:function(m){
			m.mouse_over=function(b,e){
				if(b.locked){
					n.showThisItem(b.addthis);
					return false;
				}
				b.locked=true;
				var c=$.attr(b,"i")?"|"+$.attr(b,"i")+"|":"";
				b.u=$.attr(b,"u")?$.attr(b,"u"):document.location.href;
				b.t=$.attr(b,"t")?$.attr(b,"t"):document.title;
				b.e=$.attr(b,"e")?$.attr(b,"e"):"mouseover";
				b.addthis=$.parent(b);
				var f=$.byClass("addbox");
				for(var g=0;g<f.length;g++){
					f[g].style.display="none";
				}
				n.showThisItem(b.addthis);
				var h=$.create("div");
				var i="";
				i+='<iframe class="bgfrm" frameborder="0" tabindex="-1" src="javascript:;" style="display:block;position:absolute;z-index:-1;"></iframe>';
				i+='<div class="addshow"><div class="addh"><div class="addt">收藏与分享</div></div><div class="addbody"><ul class="addlist" style="list-style:none; float:none; display:block; position:inherit; margin:0 0 3px 0; padding:6px; width:285px; border:none; background:none;">';
				for(var j in n.favs){
					if(!c||(c&&c.indexOf("|"+n.favs[j].id+"|")>=0)){
						i+='<li style="float:left; display:inline; position:inherit; margin:0 0 0 3px; padding:0; list-style:none; line-height:16px; width:90px; height:22px; border:none; background:none; font-size:12px;"><a class="add_'+n.favs[j].id+'" item="'+n.favs[j].id+'" server="'+j+'" href="#">'+n.favs[j].name+'</a></li>';
					}
				}
				i+='</ul><div style="clear:both;line-height:0"></div></div>';
				i+='</div>';
				h.innerHTML=i;
				b.addbox=h;
				$.addClass(h,"addbox");
				$.after(b,h);
				n.showposition(h,$.byClass("addshow",h)[0],$.byClass("bgfrm",h)[0],b);
				var k=$.byClass("addlist",h)[0];
				$.bind($.byTag("li",k),"mouseover",function(a){
						$.addClass(this,"on");
					}
				);
				$.bind($.byTag("li",k),"mouseout",function(a){
						$.removeClass(this,"on");
					}
				);
				var l=$.byTag("a",k);
				$.bind(l,"click",function(a){
						if(Number($.attr(this,"item"))==0){
							n.localFav(b.t,b.u);
							return false;
						}else{
							var argStr;
							argStr="&bs_url="+n.e(b.u);
							argStr+="&bs_title="+n.e(b.t);
							var d=$.attr(b,"d")?$.attr(b,"d"):(window.getSelection?window.getSelection().toString():document.getSelection?document.getSelection():document.selection.createRange().text);
							if(d==""){
								var meta=document.getElementsByTagName("meta");
								for(var i=0;i<meta.length;i++){
									var name=meta[i].getAttribute("name");
									if(name){
										if(name.toLowerCase()=="description"){
											d=meta[i].getAttribute("content");
											break;
										}
									}
								}
							}
							argStr+="&bs_description="+n.e(d);
							var t=$.attr(b,"tag")?$.attr(b,"tag"):"";
							if(t==""){
								var meta=document.getElementsByTagName("meta");
								for(var i=0;i<meta.length;i++){
									var name=meta[i].getAttribute("name");
									if(name){
										if(name.toLowerCase()=="keywords"){
											t=meta[i].getAttribute("content");
											break;
										}
									}
								}
							}
							argStr+="&bs_tags="+n.e(t);
							n.gotourl('?bs_id='+$.attr(this,"item")+'&bs_server='+$.attr(this,"server")+argStr);
						}
						$.cancelEvent(a||event);
						b.addbox.style.display="none";
						return false;
					}
				);
				$.bind(b.addthis,"mouseover",function(a){
						if(b.e=="click"){
							clearTimeout(b.timeOut);
						}else if(b.e=="mouseover"){
							b.boxmouseover(a);
							clearTimeout(b.timeOut);
						}
					}
				);
				$.bind(b.addthis,"mouseout",function(a){
						if($.isMouseLeaveOrEnter(a||window.event||event,b.addthis)){
							b.timeOut=setTimeout(b.boxmouseout,n.timeDelayout);
						}
					}
				);
				c=btn_t=btn_u=d=f=h=i=k=l=null;
			};
			m.boxmouseover=function(a){
				n.showposition(m.addbox,$.byClass("addshow",m.addbox)[0],$.byClass("bgfrm",m.addbox)[0],m);
				m.addbox.style.display="block";
			};
			m.boxmouseout=function(a){
				m.addbox.style.display="none";
			};
			if($.attr(m,"e")=="click"){
				$.bind(m,"click",function(a){
						m.mouse_over(m,a);
						$.cancelEvent(a||event);
					}
				);
			}else{
				$.bind(m,"click",function(a){
						$.cancelEvent(a||event);
					}
				);
				$.bind(m,"mouseover",function(a){
						m.mouse_over(m,a);
					}
				);
			}
		},
		localFav:function(t,u){
			try{
				window.external.AddFavorite(u,t);
			}catch(e){
				try{
					window.sidebar.addPanel(t,u,"");
				}catch(e){
					alert("使用快捷键 Ctrl+D 或 Cmd+D 来收藏此页！");
				}
			}
		},
		init:function(){
			$.fixIeBgBug();
			$.loadCssFile(n.css);
			$.ready(function(){
					n.rebind();
				}
			)
		},
		rebind:function(){
				var a=$.byClass("bs_bluesky_cn");
				for(var i=0;i<a.length;i++){
					if($.byTag("a",a[i])[0])n.initBtn($.byTag("a",a[i])[0]);
				}
				a=null;
		}
	};
	$.ready($.boxModelTest);
	window.$addthis=$;
	window.$$addthis=n;
})();
$$addthis.init();
