(function(b){function c(f,e,n){var l=n.relative?f.position().top:f.offset().top,m=n.relative?f.position().left:f.offset().left,k=n.position[0];l-=e.outerHeight()-n.offset[0];m+=f.outerWidth()+n.offset[1];if(/iPad/i.test(navigator.userAgent)){l-=b(window).scrollTop()}var g=e.outerHeight()+f.outerHeight();if(k=="center"){l+=g/2}if(k=="bottom"){l+=g}k=n.position[1];f=e.outerWidth()+f.outerWidth();if(k=="center"){m-=f/2}if(k=="left"){m-=f}return{top:l,left:m}}function a(A,z){var y=this,w=A.add(y),x,u=0,p=0,g=A.attr("title"),f=A.attr("data-tooltip"),e=d[z.effect],n,D=A.is(":input"),B=D&&A.is(":checkbox, :radio, select, :button, :submit"),C=A.attr("type"),o=z.events[C]||z.events[D?B?"widget":"input":"def"];if(!e){throw'Nonexistent effect "'+z.effect+'"'}o=o.split(/,\s*/);if(o.length!=2){throw"Tooltip: bad events configuration for "+C}A.bind(o[0],function(h){clearTimeout(u);if(z.predelay){p=setTimeout(function(){y.show(h)},z.predelay)}else{y.show(h)}}).bind(o[1],function(h){clearTimeout(p);if(z.delay){u=setTimeout(function(){y.hide(h)},z.delay)}else{y.hide(h)}});if(g&&z.cancelDefault){A.removeAttr("title");A.data("title",g)}b.extend(y,{show:function(i){if(!x){if(f){x=b(f)}else{if(z.tip){x=b(z.tip).eq(0)}else{if(g){x=b(z.layout).addClass(z.tipClass).appendTo(document.body).hide().append(g)}else{x=A.next();x.length||(x=A.parent().next())}}}if(!x.length){throw"Cannot find tooltip for "+A}}if(y.isShown()){return y}x.stop(true,true);var h=c(A,x,z);z.tip&&x.html(A.data("title"));i=i||b.Event();i.type="onBeforeShow";w.trigger(i,[h]);if(i.isDefaultPrevented()){return y}h=c(A,x,z);x.css({position:"absolute",top:h.top,left:h.left});n=true;e[0].call(y,function(){i.type="onShow";n="full";w.trigger(i)});h=z.events.tooltip.split(/,\s*/);if(!x.data("__set")){x.bind(h[0],function(){clearTimeout(u);clearTimeout(p)});h[1]&&!A.is("input:not(:checkbox, :radio), textarea")&&x.bind(h[1],function(j){j.relatedTarget!=A[0]&&A.trigger(o[1].split(" ")[0])});x.data("__set",true)}return y},hide:function(h){if(!x||!y.isShown()){return y}h=h||b.Event();h.type="onBeforeHide";w.trigger(h);if(!h.isDefaultPrevented()){n=false;d[z.effect][1].call(y,function(){h.type="onHide";w.trigger(h)});return y}},isShown:function(h){return h?n=="full":n},getConf:function(){return z},getTip:function(){return x},getTrigger:function(){return A}});b.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(i,h){b.isFunction(z[h])&&b(y).bind(h,z[h]);y[h]=function(j){j&&b(y).bind(h,j);return y}})}b.tools=b.tools||{version:"1.2.5"};b.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"},layout:"<div/>",tipClass:"tooltip"},addEffect:function(f,e,g){d[f]=[e,g]}};var d={toggle:[function(f){var e=this.getConf(),g=this.getTip();e=e.opacity;e<1&&g.css({opacity:e});g.show();f.call()},function(e){this.getTip().hide();e.call()}],fade:[function(f){var e=this.getConf();this.getTip().fadeTo(e.fadeInSpeed,e.opacity,f)},function(e){this.getTip().fadeOut(this.getConf().fadeOutSpeed,e)}]};b.fn.tooltip=function(f){var e=this.data("tooltip");if(e){return e}f=b.extend(true,{},b.tools.tooltip.conf,f);if(typeof f.position=="string"){f.position=f.position.split(/,?\s/)}this.each(function(){e=new a(b(this),f);b(this).data("tooltip",e)});return f.api?e:this}})(jQuery);
