function bubbleClass(userSettings){var self=this;var defaultSettings={id:"ka_metaPopup"+ +new Date(),animate:true,appendPlaceholder:"#ka_mainContainer",popupHoverTimeout:250,fadeFrom:"bottom",fadeTo:"bottom"};var templates={popupTop:"<div class='top'></div>",popupBody:"<div class='body'></div>",popupFooter:"<div class='bottom'></div>",popup:"<div id='{0}' class='ka_metaPopup'>{1}{2}{3}</div>"};var internal={currentEl:null};function buildPopup(){var tpl=templates,popupPlaceholder=tpl.popup.format(settings.id,tpl.popupTop,tpl.popupBody,tpl.popupFooter);return $j(popupPlaceholder).hover(function(){$j(this).addClass("hover");clearTimeout(internal.popupHoverTimeout);clearTimeout(internal.hidePopupTimeout);},function(){$j(this).removeClass("hover");self.hide(internal.currentEl);}).appendTo(settings.appendPlaceholder);}function getPopup(){var $popupDiv=$j("#"+settings.id);if($popupDiv.length==0){$popupDiv=buildPopup();}return $popupDiv;}function displayPopup(popupContent,el,skipAnimation){if(!$j(el).hasClass("ka_metaPopupHover")){return ;}var $popup=getPopup();$popup.css({position:"absolute",opacity:0}).show().find(".body:eq(0)").html(popupContent);var top=$j(el).offset().top-$popup.height()-10,cen=$j(el).offset().left+(10);if(skipAnimation){$popup.css({top:top,left:cen,opacity:1}).addClass("active");}else{switch(settings.fadeFrom){case"bottom":$popup.css({top:top+20,left:cen}).animate({opacity:1,top:top}).addClass("active");break;case"top":$popup.css({top:top-20,left:cen}).animate({opacity:1,top:top}).addClass("active");break;default:}}}function init(){settings=$j.extend(true,defaultSettings,userSettings);}this.show=function(content,el){internal.currentEl=el;var popupContent="";if(typeof content=="string"){popupContent=content;}else{if(content instanceof jQuery){popupContent=content.html();}else{if(content instanceof HTMLElement){popupContent=$j(content).html();}}}$j(el).addClass("ka_metaPopupHover");clearTimeout(internal.hidePopupTimeout);var $popup=getPopup();if($popup.hasClass("active")){displayPopup(popupContent,el,true);}else{internal.popupHoverTimeout=setTimeout(function(){displayPopup(popupContent,el);},settings.popupHoverTimeout);}};this.hideAll=function(){clearTimeout(internal.popupHoverTimeout);clearTimeout(internal.hidePopupTimeout);var $popup=getPopup();$popup.hide();};this.hide=function(el){clearTimeout(internal.popupHoverTimeout);internal.hidePopupTimeout=setTimeout(function(){$j(el).removeClass("ka_metaPopupHover");if(internal.currentEl=el){var $popup=getPopup(),top=$popup.offset().top,cen=$popup.offset().left+(10);switch(settings.fadeTo){case"bottom":$popup.animate({opacity:0,top:top-20},function(){$j(this).hide();}).removeClass("active");break;case"top":$popup.animate({opacity:0,top:top+20},function(){$j(this).hide();}).removeClass("active");break;default:}}},1000);};init();}