 (function($){var helper, current, title_old, tID, fade;$.fn.tooltip = function(settings){settings = $.extend($.extend({}, arguments.callee.defaults), settings || {});if(!helper){helper = $('#tooltip');}fade = settings.fade;$(this).filter('[title]').each(function(){this.tSettings = settings;}).bind('mouseover', save).bind(settings.event, handle);return this;};$.fn.tooltip.defaults = {delay: 20,event: 'mouseover',fade: 100,top: 15,left: 15};function handle(event){tID = setTimeout(show, this.tSettings.delay);$('body').bind('mousemove', update);update(event);$(this).bind('mouseout', hide);}function save(){if(this == current || !this.title){return;}current = this;var source = $(this), settings = this.tSettings;title_old = title = source.attr('title');source.attr('title','');helper.html(title.replace(/\[/g, '<').replace(/\]/g, '>'));}function show(){tID = null;helper.fadeIn(fade);update();}function update(event){if(current == null){$('body').unbind('mousemove', update);return;}var left = helper[0].offsetLeft;var top = helper[0].offsetTop;if(event){var left = event.pageX + 15;var top = event.pageY + 15;var right = 'auto';helper.css({left: left,right: right,top: top});}var v = viewport(),h = helper[0];if(v.x + v.cx < h.offsetLeft + h.offsetWidth){left -= h.offsetWidth + 20 + 15;if(left >= 0){helper.css({left: left + 'px'});}}if(v.y + v.cy < h.offsetTop + h.offsetHeight){top -= h.offsetHeight + 20 + 15;if(top >= 0){helper.css({top: top + 'px'});}}}function viewport(){var e = document.documentElement || {}, b = document.body || {}, w = window;return{x: w.pageXOffset || e.scrollLeft || b.scrollLeft || 0,y: w.pageYOffset || e.scrollTop || b.scrollTop || 0,cx: min(e.clientWidth, b.clientWidth, w.innerWidth),cy: min(e.clientHeight, b.clientHeight, w.innerHeight)};function min(){var v = Infinity;for(var i = 0; i < arguments.length; i++){var n = arguments[i];if(n && n < v) v = n;}return v;}}function hide(){if(tID){clearTimeout(tID);}current = null;helper.fadeOut(fade);$(this).attr('title', title_old).unbind('mouseout', hide);}})(jQuery);