(function(b){function a(e,d){this.opts=b.extend({},a.defaults,d);this.elements=e;var c=this.opts.tag;if(b("#tiptip_holder-"+c).length<=0){this.tiptip_holder=b('<div class="tiptip_holder" id="tiptip_holder-'+c+'" style="max-width:'+this.opts.maxWidth+';"></div>');this.tiptip_content=b('<div class="tiptip_content" id="tiptip_content-'+c+'"></div>');this.tiptip_arrow=b('<div class="tiptip_arrow" id="tiptip_arrow-'+c+'"></div>');b("body").append(this.tiptip_holder.html(this.tiptip_content).prepend(this.tiptip_arrow.html('<div class="tiptip_arrow_inner" id="tiptip_arrow_inner-'+c+'"></div>')))}else{this.tiptip_holder=b("#tiptip_holder-"+c);this.tiptip_content=b("#tiptip_content-"+c);this.tiptip_arrow=b("#tiptip_arrow-"+c)}}a.defaults={tag:"default",activation:"hover",keepAlive:false,maxWidth:"600px",edgeOffset:8,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:false,enter:function(){},exit:function(){}};a.prototype.showNow=function(){var d=this;var c=function(){b(d.elements).each(function(){var e=b(this);if(d.opts.content){var f=d.opts.content}else{var f=e.attr(d.opts.attribute)}d.activate_tiptip(e,f)})};c();this.tiptip_holder.data("resize-handler",c);b(window).resize(c)};a.prototype.clearNow=function(){var c=this;b(this.elements).each(function(){var d=b(this);c.timeout=false;c.deactivate_tiptip()});b(window).unbind("resize",this.tiptip_holder.data("resize-handler"))};a.prototype.setup=function(){var c=this;b(this.elements).each(function(){var d=b(this);if(c.opts.content){var e=c.opts.content}else{var e=d.attr(c.opts.attribute)}if(e!=""){if(!c.opts.content){d.removeAttr(c.opts.attribute)}c.timeout=false;if(c.opts.activation=="hover"){d.hover(function(){c.activate_tiptip(d,e)},function(){if(!c.opts.keepAlive){c.deactivate_tiptip()}});if(c.opts.keepAlive){tiptip_holder.hover(function(){},function(){c.deactivate_tiptip()})}}else{if(c.opts.activation=="focus"){d.focus(function(){c.activate_tiptip(d,e)}).blur(function(){c.deactivate_tiptip()})}else{if(c.opts.activation=="click"){d.click(function(){c.activate_tiptip(d,e);return false}).hover(function(){},function(){if(!c.opts.keepAlive){c.deactivate_tiptip()}});if(c.opts.keepAlive){tiptip_holder.hover(function(){},function(){c.deactivate_tiptip()})}}}}}})};a.prototype.remove_position_classes=function(){this.tiptip_holder.removeClass("tip_left tip_right tip_top tip_bottom tip_left_top tip_left_bottom tip_right_top tip_right_bottom")};a.prototype.position_at_top=function(c){if(c){this.t_class+="_top"}else{this.t_class="_top"}this.arrow_top=this.tip_h;this.marg_top=Math.round(this.top-(this.tip_h+5+this.opts.edgeOffset))};a.prototype.position_at_bottom=function(c){if(c){this.t_class+="_bottom"}else{this.t_class="_bottom"}this.arrow_top=-12;this.marg_top=Math.round(this.top+this.height+this.opts.edgeOffset)};a.prototype.position_at_left=function(){this.t_class="_left";this.arrow_top=Math.round(this.tip_h-13)/2;this.arrow_left=Math.round(this.tip_w);this.marg_left=Math.round(this.left-(this.tip_w+this.opts.edgeOffset+5));this.marg_top=Math.round(this.top+this.h_diff)};a.prototype.position_at_right=function(){this.t_class="_right";this.arrow_top=Math.round(this.tip_h-13)/2;this.arrow_left=-12;this.marg_left=Math.round(this.left+this.width+this.opts.edgeOffset);this.marg_top=Math.round(this.top+this.h_diff)};a.prototype.position_at_left_top=function(){this.position_at_left();this.position_at_top(true)};a.prototype.position_at_right_top=function(){this.position_at_right();this.position_at_top(true)};a.prototype.position_at_left_bottom=function(){this.position_at_left();this.position_at_bottom(true)};a.prototype.position_at_right_bottom=function(){this.position_at_right();this.position_at_bottom(true)};a.prototype.activate_tiptip=function(f,i){this.tiptip_content.html(i);this.tiptip_holder.hide().css("margin","0");this.remove_position_classes();this.tiptip_arrow.removeAttr("style");this.opts.enter.call(this,this.tiptip_content);this.top=parseInt(f.offset()["top"]);this.left=parseInt(f.offset()["left"]);this.width=parseInt(f.outerWidth());this.height=parseInt(f.outerHeight());this.tip_w=this.tiptip_holder.outerWidth();this.tip_h=this.tiptip_holder.outerHeight();this.w_diff=Math.round((this.width-this.tip_w)/2);this.h_diff=Math.round((this.height-this.tip_h)/2);this.marg_left=Math.round(this.left+this.w_diff);this.marg_top=Math.round(this.top+this.height+this.opts.edgeOffset);this.arrow_top="";this.arrow_left=Math.round(this.tip_w-12)/2;this.t_class="";if(this.opts.position){switch(this.opts.position){case"left_top":this.position_at_left_top();break;case"top":this.position_at_top();break;case"right_top":this.position_at_right_top();break;case"left":this.position_at_left();break;case"right":this.position_at_right();break;case"left_bottom":this.position_at_left_bottom();break;case"bottom":this.position_at_bottom();break;case"right_bottom":this.position_at_right_bottom();break}}if(!this.opts.position){if(this.opts.defaultPosition.indexOf("left")==0){this.t_class="_left"}else{if(this.opts.defaultPosition.indexOf("right")==0){this.t_class="_right"}}var g=(this.left-this.tip_w-this.opts.edgeOffset)<parseInt(b(window).scrollLeft());var h=(this.left+this.width+this.tip_w+this.opts.edgeOffset)>parseInt(b(window).width())-parseInt(b(window).scrollLeft());if(this.opts.position=="right"||((g&&this.w_diff<0)||(this.t_class=="_right"&&!h)||(this.t_class=="_left"&&this.left<(this.tip_w+this.opts.edgeOffset+5)))){this.arrow_top=this.tip_h;this.marg_top=Math.round(this.top-(this.tip_h+5+this.opts.edgeOffset));this.position_at_right()}else{if(this.opts.position=="left"||((h&&this.w_diff<0)||(this.t_class=="_left"&&!g))){this.position_at_left()}}if(!this.opts.position){if(this.opts.defaultPosition.indexOf("top")!=-1){this.position_at_top(true)}else{if(this.opts.defaultPosition.indexOf("bottom")!=-1){this.position_at_bottom(true)}}}var e=(this.top+this.height+this.opts.edgeOffset+this.tip_h+8)>parseInt(b(window).height())+parseInt(b(window).scrollTop());var c=(this.top-(this.opts.edgeOffset+this.tip_h+8))<parseInt(b(window).scrollTop());if(e||(this.t_class=="_top"&&!c)){this.position_at_top(!(this.t_class=="_top"||this.t_class=="_bottom"))}else{if(c||(this.t_class=="_bottom"&&!e)){this.position_at_bottom(!(this.t_class=="_top"||this.t_class=="_bottom"))}}}if(this.t_class=="_right_top"||this.t_class=="_left_top"){this.marg_top=this.marg_top+5}else{if(this.t_class=="_right_bottom"||this.t_class=="_left_bottom"){this.marg_top=this.marg_top-5}}if(this.t_class=="_left_top"||this.t_class=="_left_bottom"){this.marg_left=this.marg_left+5}this.tiptip_arrow.css({"margin-left":this.arrow_left+"px","margin-top":this.arrow_top+"px"});this.tiptip_holder.css({"margin-left":this.marg_left+"px","margin-top":this.marg_top+"px"}).addClass("tip"+this.t_class);if(this.timeout){clearTimeout(this.timeout)}var d=this;this.timeout=setTimeout(function(){d.tiptip_holder.stop(true,true).fadeIn(d.opts.fadeIn)},d.opts.delay)};a.prototype.deactivate_tiptip=function(){var c=this;setTimeout(function(){c.opts.exit.call(c,c.tiptip_content);if(c.timeout){clearTimeout(c.timeout)}c.tiptip_holder.fadeOut(c.opts.fadeOut)},0)};b.fn.tipTip=function(c){(new a(this,c)).setup();return this};b.fn.tipTipNow=function(c){(new a(this,c)).showNow();return this};b.fn.tipTipClear=function(c){(new a(this,c)).clearNow();return this};b.fn.tipTipDefaults=function(c){b.extend(a.defaults,c)}})(jQuery);
