(function(a) { a.fn.tipsy = function(e) { e = a.extend({}, a.fn.tipsy.defaults, e); return this.each(function() { var d = a.fn.tipsy.elementOptions(this, e); a(this).hover(function() { a.data(this, "cancel.tipsy", true); var c = a.data(this, "active.tipsy"); if(!c) { c = a('<div class="tipsy"><div class="tipsy-inner"/></div>'); c.css({position:"absolute", zIndex:1E5}); a.data(this, "active.tipsy", c) } if(a(this).attr("title") || typeof a(this).attr("original-title") != "string") { a(this).attr("original-title", a(this).attr("title") || "").removeAttr("title") } var b; if(typeof d.title == "string") { b = a(this).attr(d.title == "title" ? "original-title" : d.title) }else { if(typeof d.title == "function") { b = d.title.call(this) } } c.find(".tipsy-inner")[d.html ? "html" : "text"](b || d.fallback); b = a.extend({}, a(this).offset(), {width:this.offsetWidth, height:this.offsetHeight}); c.get(0).className = "tipsy"; c.remove().css({top:0, left:0, visibility:"hidden", display:"block"}).appendTo(document.body); var f = c[0].offsetWidth, g = c[0].offsetHeight; switch((typeof d.gravity == "function" ? d.gravity.call(this) : d.gravity).charAt(0)) { case "n": c.css({top:b.top + b.height, left:b.left + b.width / 2 - f / 2}).addClass("tipsy-north"); break; case "s": c.css({top:b.top - g, left:b.left + b.width / 2 - f / 2}).addClass("tipsy-south"); break; case "e": c.css({top:b.top + b.height / 2 - g / 2, left:b.left - f}).addClass("tipsy-east"); break; case "w": c.css({top:b.top + b.height / 2 - g / 2, left:b.left + b.width}).addClass("tipsy-west") } d.fade ? c.css({opacity:0, display:"block", visibility:"visible"}).animate({opacity:0.9}, 1E3) : c.css({visibility:"visible"}) }, function() { a.data(this, "cancel.tipsy", false); var c = this; setTimeout(function() { if(!a.data(this, "cancel.tipsy")) { var b = a.data(c, "active.tipsy"); d.fade ? b.stop().fadeOut(function() { a(this).remove() }) : b.remove() } }, 100) }) }) }; a.fn.tipsy.elementOptions = function(e, d) { return a.metadata ? a.extend({}, d, a(e).metadata()) : d }; a.fn.tipsy.defaults = {fade:false, fallback:"", gravity:"n", html:false, title:"title"}; a.fn.tipsy.autoNS = function() { return a(this).offset().top > a(document).scrollTop() + a(window).height() / 2 ? "s" : "n" }; a.fn.tipsy.autoWE = function() { return a(this).offset().left > a(document).scrollLeft() + a(window).width() / 2 ? "e" : "w" } })(jQuery);
