(function(n){function u(t,i){var r=t.data("balloon")&&t.data("balloon").get(0);return!(r&&(r==i.relatedTarget||n.contains(r,i.relatedTarget)))}function r(r,u,f){function a(n,t,i,r,u){var f=Math.round(r/1.7320508);t.inactive()["setBorder"+i.camel.pos.f](r)["setBorder"+i.camel.pos.c1](f)["setBorder"+i.camel.pos.c2](f)["set"+i.camel.pos.p1](i.isTopLeft?-r:n.inner[i.size.p])["set"+i.camel.pos.c1](n.inner[i.size.c]/2-f).active().$.css("border-"+i.pos.f+"-color",u)}var e,h;u.stop(!0,!0);var c,l,v={position:"absolute",height:"0",width:"0",border:"solid 0 transparent"},s=new i(r),o=new i(u);if(o.setTop(-f.offsetY+(f.position&&f.position.indexOf("top")>=0?s.top-o.height:f.position&&f.position.indexOf("bottom")>=0?s.bottom:s.center.top-o.height/2)),o.setLeft(f.offsetX+(f.position&&f.position.indexOf("left")>=0?s.left-o.width:f.position&&f.position.indexOf("right")>=0?s.right:s.center.left-o.width/2)),f.tipSize>0){for(u.data("outerTip")&&(u.data("outerTip").remove(),u.removeData("outerTip")),u.data("innerTip")&&(u.data("innerTip").remove(),u.removeData("innerTip")),c=new i(n("<div>").css(v).appendTo(u)),l=new i(n("<div>").css(v).appendTo(u)),h=0;h<t.pos.length;h++){if(e=t.getRelativeNames(h),o.center[e.pos.c1]>=s[e.pos.c1]&&o.center[e.pos.c1]<=s[e.pos.c2])if(h%2==0){if(o[e.pos.o]>=s[e.pos.o]&&o[e.pos.f]>=s[e.pos.f])break}else if(o[e.pos.o]<=s[e.pos.o]&&o[e.pos.f]<=s[e.pos.f])break;e=null}e?(o["set"+e.camel.pos.p1](o[e.pos.p1]+(e.isTopLeft?1:-1)*(f.tipSize-o["border"+e.camel.pos.o])),a(o,c,e,f.tipSize,u.css("border-"+e.pos.o+"-color")),a(o,l,e,f.tipSize-2*o["border"+e.camel.pos.o],u.css("background-color")),u.data("outerTip",c.$).data("innerTip",l.$)):n.each([c.$,l.$],function(){this.remove()})}}function i(){this.initialize.apply(this,arguments)}var t={};t.pos=n.extend(["top","bottom","left","right"],{camel:["Top","Bottom","Left","Right"]});t.size=n.extend(["height","width"],{camel:["Height","Width"]});t.getRelativeNames=function(n){var f={pos:{o:n,f:n%2==0?n+1:n-1,p1:n%2==0?n:n-1,p2:n%2==0?n+1:n,c1:n<2?2:0,c2:n<2?3:1},size:{p:n<2?0:1,c:n<2?1:0}},i={},r,u;for(r in f){i[r]||(i[r]={});for(u in f[r])i[r][u]=t[r][f[r][u]],i.camel||(i.camel={}),i.camel[r]||(i.camel[r]={}),i.camel[r][u]=t[r].camel[f[r][u]]}return i.isTopLeft=i.pos.o==i.pos.p1,i},function(){function u(n,i){if(i==undefined)return u(n,!0),u(n,!1);var r=t.getRelativeNames(i?0:2);return n[r.size.p]=n.$["outer"+r.camel.size.p](),n[r.pos.f]=n[r.pos.o]+n[r.size.p],n.center[r.pos.o]=n[r.pos.o]+n[r.size.p]/2,n.inner[r.pos.o]=n[r.pos.o]+n["border"+r.camel.pos.o],n.inner[r.size.p]=n.$["inner"+r.camel.size.p](),n.inner[r.pos.f]=n.inner[r.pos.o]+n.inner[r.size.p],n.inner.center[r.pos.o]=n.inner[r.pos.f]+n.inner[r.size.p]/2,n}var f={setBorder:function(n,t){return function(i){return this.$.css("border-"+n.toLowerCase()+"-width",i+"px"),this["border"+n]=i,this.isActive?u(this,t):this}},setPosition:function(n,t){return function(i){return this.$.css(n.toLowerCase(),i+"px"),this[n.toLowerCase()]=i,this.isActive?u(this,t):this}}},r;for(i.prototype={initialize:function(i){this.$=i;n.extend(!0,this,this.$.offset(),{center:{},inner:{center:{}}});for(var r=0;r<t.pos.length;r++)this["border"+t.pos.camel[r]]=parseInt(this.$.css("border-"+t.pos[r]+"-width"))||0;this.active()},active:function(){return this.isActive=!0,u(this),this},inactive:function(){return this.isActive=!1,this}},r=0;r<t.pos.length;r++)i.prototype["setBorder"+t.pos.camel[r]]=f.setBorder(t.pos.camel[r],r<2),r%2==0&&(i.prototype["set"+t.pos.camel[r]]=f.setPosition(t.pos.camel[r],r<2))}();n.fn.balloon=function(t){return t=n.extend(!0,{},n.balloon.defaults,t),this.one("mouseenter",function(){var i=n(this),r=this,f=i.unbind("mouseenter",arguments.callee).showBalloon(t).mouseenter(function(n){u(i,n)&&i.showBalloon()}).data("balloon");f&&f.mouseleave(function(t){r==t.relatedTarget||n.contains(r,t.relatedTarget)||i.hideBalloon()}).mouseenter(function(){i.showBalloon()})}).mouseleave(function(t){var i=n(this);u(i,t)&&i.hideBalloon()})};n.fn.showBalloon=function(t){var u,i,f;return n.balloon.defaults.css||(n.balloon.defaults.css={}),(t||!this.data("options"))&&this.data("options",n.extend(!0,{},n.balloon.defaults,t)),t=this.data("options"),this.each(function(){u=n(this);(f=u.data("offTimer"))&&clearTimeout(f);var e=n.isFunction(t.contents)?t.contents():t.contents||u.attr("title"),o=!(i=u.data("balloon"));(o&&(i=n("<div>").append(e)),t.url||i&&i.html()!="")&&(!o&&e&&e!=i.html()&&i.empty().append(e),u.removeAttr("title"),t.url&&i.load(n.isFunction(t.url)?t.url(this):t.url,function(n,f,e){t.ajaxComplete&&t.ajaxComplete(n,f,e);r(u,i,t)}),o?(i.addClass(t.classname).css(t.css).css({visibility:"hidden",position:"absolute"}).appendTo("body"),u.data("balloon",i),r(u,i,t),i.hide().css("visibility","visible")):r(u,i,t),u.data("onTimer",setTimeout(function(){t.showAnimation?t.showAnimation.apply(i.stop(!0,!0),[t.showDuration]):i.show(t.showDuration,function(){this.style.removeAttribute&&this.style.removeAttribute("filter")})},t.delay)))})};n.fn.hideBalloon=function(){var t=this.data("options"),i,r;return this.each(function(){var u=n(this);(i=u.data("onTimer"))&&clearTimeout(i);(r=u.data("offTimer"))&&clearTimeout(r);u.data("offTimer",setTimeout(function(){var n=u.data("balloon");t.hideAnimation?n&&t.hideAnimation.apply(n.stop(!0,!0),[t.hideDuration]):n&&n.stop(!0,!0).hide(t.hideDuration)},t.minLifetime))})};n.balloon={defaults:{contents:null,url:null,ajaxComplete:null,classname:null,position:"top",offsetX:0,offsetY:0,tipSize:12,delay:0,minLifetime:200,showDuration:100,showAnimation:null,hideDuration:80,hideAnimation:function(n){this.fadeOut(n)},css:{minWidth:"20px",padding:"5px",borderRadius:"6px",border:"solid 1px #777",boxShadow:"4px 4px 4px #555",color:"#666",backgroundColor:"#efefef",opacity:n.support.opacity?"0.85":null,zIndex:"32767",textAlign:"left"}}}})(jQuery)