(function(n){n.fn.tipsy=function(t){if(typeof t=="string"&&["show","hide"].indexOf(t)>-1){switch(t){case"show":$(this).trigger("tipsy.show");break;case"hide":$(this).trigger("tipsy.hide")}return this}var i=n.extend({arrowWidth:10,attr:"data-tipsy",cls:null,duration:150,offset:7,position:"top-center",trigger:"hover",onShow:null,onHide:null},t);return this.each(function(t,r){var e=n(r),o=".tipsy",f=n('<div class="tipsy"><\/div>'),s=["top-left","top-center","top-right","bottom-left","bottom-center","bottom-right","left","right"],u={init:function(){var n={};switch(i.trigger){case"hover":n={mouseenter:u._show,mouseleave:u._hide};break;case"focus":n={focus:u._show,blur:u._hide};break;case"click":n={click:function(n){u._clSe?(u._clSe=!1,u._hide(n)):(u._clSe=!0,u._show(n))}};break;case"manual":u._unbindOptions();n={"tipsy.show":function(n){u._clSe=!0;u._show(n)},"tipsy.hide":function(n){u._clSe=!1;u._hide(n)}}}e.on(n);f.hide()},_show:function(){if($(o).remove(),u._clear(),u.hasAttr(i.attr+"-disabled"))return!1;u._createBox();i.trigger!="manual"&&u._bindOptions()},_hide:function(){u._fixTitle(!0);f.stop(!0,!0).fadeOut(i.duration,function(){i.onHide!=null&&typeof i.onHide=="function"?i.onHide(f,e):null;u._clear();$(this).remove()})},_showIn:function(){f.stop(!0,!0).fadeIn(i.duration,function(){i.onShow!=null&&typeof i.onShow=="function"?i.onShow(f,e):null})},_bindOptions:function(){n(window).bind("contextmenu",function(){u._hide()}).bind("blur",function(){u._hide()}).bind("resize",function(){u._hide()}).bind("scroll",function(){u._hide()})},_unbindOptions:function(){n(window).unbind("contextmenu",function(){u._hide()}).unbind("blur",function(){u._hide()}).unbind("resize",function(){u._hide()}).unbind("scroll",function(){u._hide()})},_clear:function(){f.attr("class","tipsy").empty();u._lsWpI=[];u._lsWtI=[]},hasAttr:function(n){return n=e.attr(n),typeof n!=typeof undefined&&n!==!1},_fixTitle:function(n){n?u.hasAttr("data-title")&&!u.hasAttr("title")&&u._lsWtI[0]==!0&&e.attr("title",u._lsWtI[1]||"").removeAttr("data-title"):(u.hasAttr("title")||!u.hasAttr("data-title"))&&(u._lsWtI=[!0,e.attr("title")],e.attr("data-title",e.attr("title")||"").removeAttr("title"))},_getTitle:function(){u._fixTitle();var n=e.attr("data-title");return""+n},_position:function(n){var t={top:0,left:0},l=n?n:u.hasAttr(i.attr+"-position")?e.attr(i.attr+"-position"):i.position,h=l.split("-"),a=u.hasAttr(i.attr+"-offset")?e.attr(i.attr+"-offset"):i.offset,r={offsetTop:e.offset().top,offsetLeft:e.offset().left,width:e.outerWidth(),height:e.outerHeight()},o={width:f.outerWidth(),height:f.outerHeight()},c={width:$(window).outerWidth(),height:$(window).outerHeight(),scrollTop:$(window).scrollTop(),scrollLeft:$(window).scrollLeft()};if($.inArray(l,s)==-1||$.inArray(l,u._lsWpI)!==-1)return u._hide(),t;u._lsWpI.push(l);switch(h[0]){case"bottom":if(t.top=r.offsetTop+r.height+a,t.top>=c.height+c.scrollTop)return u._position("top-"+h[1]);f.addClass("arrow-top");break;case"top":if(t.top=r.offsetTop-o.height-a,t.top-c.scrollTop<=0)return u._position("bottom-"+h[1]);f.addClass("arrow-bottom");break;case"left":return(t.top=r.offsetTop+r.height/2-o.height/2,t.left=r.offsetLeft-o.width-a,t.left<=0)?u._position("right"):(f.addClass("arrow-side-right"),t);case"right":return(t.top=r.offsetTop+r.height/2-o.height/2,t.left=r.offsetLeft+r.width+a,t.left+o.width>c.width)?u._position("left"):(f.addClass("arrow-side-left"),t)}switch(h[1]){case"left":if(t.left=r.offsetLeft+r.width/2-o.width+i.arrowWidth,t.left<=0)return u._position(h[0]+"-right");f.addClass("arrow-right");break;case"center":if(t.left=r.offsetLeft+r.width/2-o.width/2,t.left+o.width>c.width)return u._position(h[0]+"-left");if(t.left<=0)return u._position(h[0]+"-right");f.addClass("arrow-center");break;case"right":if(t.left=r.offsetLeft+r.width/2-i.arrowWidth,t.left+o.width>c.width)return u._position(h[0]+"-left");f.addClass("arrow-left")}return t},_createBox:function(){f.html(u._getTitle()).appendTo("body");(i.cls!=null&&typeof i.cls=="string"||u.hasAttr(i.attr+"-cls"))&&f.addClass(u.hasAttr(i.attr+"-cls")?e.attr(i.attr+"-cls"):i.cls);f.css(u._position());u._showIn()},_lsWtI:[],_lsWpI:[]};return u.init(),this})}})(jQuery)