/** * jquery.qtip. The jQuery tooltip plugin * * Copyright (c) 2009 Craig Thompson * http://craigsworks.com * * Licensed under MIT * http://www.opensource.org/licenses/mit-license.php * * Launch : February 2009 * Version : 1.0.0-beta4 * Released: Monday 6th April, 2009 - 20:12 */ (function($) {$.fn.qtip=function(options) {if(typeof options=='string') {if(options=='api')return $(this).eq(0).data('qtip');} else {if(!options)options={};if(typeof options.content!=='object')options.content={text:options.content};if(typeof options.content.title!=='object')options.content.title={text:options.content.title};if(typeof options.position!=='object')options.position={corner:options.position};if(typeof options.position.corner!=='object')options.position.corner={target:options.position.corner,tooltip:options.position.corner};if(typeof options.show!=='object')options.show={when:options.show};if(typeof options.show.when!=='object')options.show.when={event:options.show.when};if(typeof options.show.effect!=='object')options.show.effect={type:options.show.effect};if(typeof options.hide!=='object')options.hide={when:options.hide};if(typeof options.hide.when!=='object')options.hide.when={event:options.hide.when};if(typeof options.hide.effect!=='object')options.hide.effect={type:options.hide.effect};if(typeof options.style!=='object')options.style={name:options.style};options.style=sanitizeStyle(options.style);var opts=$.extend(true,{},$.fn.qtip.defaults,options);opts.style=buildStyle.call({options:opts},opts.style);opts.user=$.extend(true,{},options);} return $(this).each(function() {if(typeof options=='string') {switch(options) {case'show':$(this).data('qtip').show();break;case'hide':$(this).data('qtip').hide();break;case'focus':$(this).data('qtip').focus();break;case'disable':$(this).data('qtip').disable(true);break;case'enable':$(this).data('qtip').disable(false);break;case'destroy':$(this).data('qtip').destroy();break;}} else {var config=$.extend(true,{},opts);config.hide.effect.length=opts.hide.effect.length;config.show.effect.length=opts.show.effect.length;if(config.position.container===false)config.position.container=$(document.body);if(config.position.target===false)config.position.target=$(this);if(config.show.when.target===false)config.show.when.target=$(this);if(config.hide.when.target===false)config.hide.when.target=$(this);var obj=new qTip($(this),config);$(this).data('qtip',obj);}});} function qTip(target,options) {var self=this;self.options=options;self.elements={target:target.addClass(self.options.style.classes.target),tooltip:null,wrapper:null,content:null,contentWrapper:null,title:null,tip:null};self.mouse={};self.timers={};$.extend(self,self.options.api,{show:function(event) {self.elements.tooltip.stop(true,true);var returned=self.beforeShow.call(self,event);if(returned===false)return;function afterShow(){self.onShow.call(self,event);} if(typeof self.options.show.when.target.data('qtip-toggle')=='number') self.options.show.when.target.data('qtip-toggle',1);self.updatePosition(event);if(typeof self.options.show.solo=='object')var solo=$(self.options.show.solo);else if(self.options.show.solo===true)var solo=$('div.qtip').not(self.elements.tooltip);if(solo)solo.each(function(){$(this).qtip('api').hide();});if(typeof self.options.show.effect.type=='function') {self.options.show.effect.type.call(self.elements.tooltip,self.options.show.effect.length);self.elements.tooltip.queue(function(){afterShow();$(this).dequeue();});} else {switch(self.options.show.effect.type) {case'fade':self.elements.tooltip.fadeIn(self.options.show.effect.length,afterShow);break;case'slide':self.elements.tooltip.slideDown(self.options.show.effect.length,function() {afterShow();self.updatePosition(event,true);});break;case'grow':self.elements.tooltip.show(self.options.show.effect.length,afterShow);break;default:self.elements.tooltip.show(null,afterShow);break;} self.elements.tooltip.addClass(self.options.style.classes.active);} if(self.options.position.type.search(/(fixed|absolute)/)!==-1)self.focus();self.onShow.call(self,event);return self;},hide:function(event) {clearTimeout(self.timers.show);self.elements.tooltip.stop(true,true);var returned=self.beforeHide.call(self,event);if(returned===false)return false;function afterHide(){self.onHide.call(self,event);} if(typeof self.options.show.when.target.data('qtip-toggle')=='number') self.options.show.when.target.data('qtip-toggle',0);if(typeof self.options.hide.effect.type=='function') {self.options.hide.effect.type.call(self.elements.tooltip,self.options.hide.effect.length);self.elements.tooltip.queue(function(){afterHide();$(this).dequeue();});} else {switch(self.options.hide.effect.type) {case'fade':self.elements.tooltip.fadeOut(self.options.hide.effect.length,afterHide);break;case'slide':self.elements.tooltip.slideUp(self.options.hide.effect.length,function() {self.updatePosition(event,true);afterHide();});break;case'grow':self.elements.tooltip.hide(self.options.hide.effect.length,afterHide);break;default:self.elements.tooltip.hide(null,afterHide);break;} self.elements.tooltip.removeClass(self.options.style.classes.active);} self.onHide.call(self,event);return self;},updatePosition:function(event,animate) {var returned=self.beforePositionUpdate.call(self,event);if(returned===false)return false;if(self.options.position.target=='mouse') {var targetPos={left:self.mouse.x,top:self.mouse.y};var targetLength={height:1,width:1};} else {if(self.options.position.target.get(0).nodeName=='AREA') {var coords=self.options.position.target.attr('coords').split(',');for(var i=0;itargetLength.width) targetLength.width=coords[i];if(coords[i]targetLength.height) targetLength.height=coords[i];if(coords[i]self.options.style.width.max)newWidth=self.options.style.width.max if(newWidth0) {self.elements.tooltip.find('.qtip-betweenCorners').css({backgroundColor:self.options.style.border.color}) if(document.createElement('canvas').getContext) {var borders=calculateBorders(self.options.style.border.radius) self.elements.tooltip.find('.qtip-wrapper canvas').each(function() {var context=$(this).get(0).getContext('2d');context.clearRect(0,0,300,300);var corner=$(this).parent('div[rel]:first').attr('rel') drawBorder.call(self,$(this),borders[corner],self.options.style.border.radius,self.options.style.border.color);});} else if(($.support&&!$.support.cssFloat)||$.browser.msie) {self.elements.tooltip.find('.qtip-wrapper [nodeName="arc"]').each(function() {$(this).attr('fillcolor',self.options.style.border.color)});}} return self;},updateContent:function(content,reposition) {if(!content)return false;var parsedContent=self.beforeContentUpdate.call(self,content);if(typeof parsedContent=='string')content=parsedContent;else if(parsedContent===false)return;self.elements.content.html(content);var images=self.elements.content.find('img');if(images.length>0) {var loadedImages=0;images.each(function(i) {$('').load(function(){if(++loadedImages==images.length)reposition();});});} else reposition();function reposition() {self.updateWidth();if(reposition!==false) {self.updatePosition(self.elements.tooltip.is(':visible'));if(self.options.style.tip.corner!==false)positionTip.call(self);}} self.onContentUpdate.call(self);return self;},loadContent:function(url,data,method) {var returned=self.beforeContentLoad.call(self);if(returned===false)return;if(method=='post') $.post(url,data,setupContent);else $.get(url,data,setupContent);function setupContent(content) {self.updateContent(content);self.onContentLoad.call(self);} return self;},focus:function(event) {var returned=self.beforeFocus.call(self,event);if(returned===false)return;var baseIndex=6000;var curIndex=parseInt(self.elements.tooltip.css('z-index'));var newIndex=baseIndex+$('.qtip').length-1;if(curIndex!==newIndex) {$('.qtip').not(self.elements.tooltip).each(function() {$(this).css({zIndex:parseInt($(this).css('z-index'))-1});}) self.elements.tooltip.css({zIndex:newIndex});} self.onFocus.call(self,event);return self;},disable:function(state) {if(state) {self.options.show.when.target.unbind('mousemove.qtip',self.updatePosition);self.options.show.when.target.unbind('mouseout.qtip',self.hide);self.options.show.when.target.unbind(self.options.show.when.event+'.qtip');self.options.show.when.target.removeData("qtip-toggle");self.options.hide.when.target.unbind(self.options.hide.when.event+'.qtip');self.elements.tooltip.unbind(self.options.hide.when.event+'.qtip');self.elements.tooltip.unbind('mouseover.qtip',self.focus);} else assignEvents.call(self);return self;},destroy:function() {var returned=self.beforeDestroy.call(self);if(returned===false)return;self.disable(true);self.elements.tooltip.remove();self.elements.target.removeData("qtip");self.onDestroy.call(self);return self.elements.target;},getPosition:function() {var show=(!self.elements.tooltip.is(':visible'))?true:false;if(show)self.elements.tooltip.css({visiblity:'hidden'}).show();var offset=self.elements.tooltip.offset();if(show)self.elements.tooltip.css({visiblity:'visible'}).hide();return offset;}});construct.call(self);};function construct() {var self=this;function render(event) {self.beforeRender.call({options:self.options,elements:{target:self.elements.target}});self.elements.tooltip=$(document.createElement('div')).addClass('qtip').addClass(self.options.style.classes.tooltip||self.options.style).css('-moz-border-radius','').css('-webkit-border-radius','').css({position:self.options.position.type,zIndex:6000+$('.qtip').length}).appendTo(self.options.position.container).hide().data('qtip',self);self.elements.wrapper=$(document.createElement('div')).addClass('qtip-wrapper').css({position:'relative',overflow:'hidden',textAlign:'left'}).appendTo(self.elements.tooltip);self.elements.contentWrapper=$(document.createElement('div')).addClass('qtip-contentWrapper').css({overflow:'hidden'}).appendTo(self.elements.wrapper);self.elements.content=$(document.createElement('div')).addClass(self.options.style.classes.content).css(jQueryStyle(self.options.style)).appendTo(self.elements.contentWrapper);if(($.support&&!$.support.cssFloat)||$.browser.msie) {$(self.elements.wrapper,self.elements.contentWrapper).css({lineHeight:'100%'});$(self.elements.wrapper).css({zoom:'1'});if(parseInt($.browser.version.charAt(0))==6) {if($('select, object').length)bgiframe.call(self);var adjust=(self.options.style.border.radius<6)?-1:-2;self.elements.content.css({marginTop:adjust});}} if(typeof self.options.style.width.value=='number')self.updateWidth();createBorder.call(self);createTip.call(self);if(self.options.content.text===false) {var content=self.elements.target.attr('title').replace("\\n",'
');self.elements.target.attr('title','');} else if(typeof $(self.options.content.text).length>0) var content=$(self.options.content.text).clone(true);else var content=self.options.content.text;self.updateContent(content);if(self.options.content.title.text!==false)createTitle.call(self);if(self.options.content.url!==false) {var url=self.options.content.url;var data=self.options.content.data;var method=self.options.content.method||'get';self.loadContent(url,data,method);} assignEvents.call(self);if(self.options.show.ready===true) {var tempLength=self.options.show.effect.length;self.elements.tooltip.show();self.options.show.effect.length=tempLength;} self.onRender.call(self);} if(self.options.content.prerender===false&&self.options.show.when.event!==false&&self.options.show.ready!==true) {var showTarget=self.options.show.when.target;var showEvent=self.options.show.when.event;showTarget.bind(showEvent+'.qtip-create',function(event) {showTarget.unbind(showEvent+'.qtip-create');render();self.mouse={x:event.pageX,y:event.pageY};showTarget.trigger(event);});} else render();};function createBorder() {var self=this;self.elements.tooltip.find('.qtip-borderTop, .qtip-borderBottom').remove();var width=self.options.style.border.width;var radius=self.options.style.border.radius;var color=self.options.style.border.color||self.options.style.tip.color;if(radius===0) self.elements.contentWrapper.css({border:width+'px solid '+color}) else {var borders=calculateBorders(radius);var shapes={};for(var i in borders) {shapes[i]=$(document.createElement('div')).css({height:radius,width:radius,overflow:'hidden',position:'absolute',lineHeight:0.1,fontSize:1}).css((i.search(/Left/)!==-1)?'left':'right',0).attr('rel',i);} if(document.createElement('canvas').getContext) {for(var i in borders) {var canvas=$(document.createElement('canvas')).attr('height',radius).attr('width',radius).css({verticalAlign:'top'}).appendTo(shapes[i]);drawBorder.call(self,canvas,borders[i],radius,color)}} else if(($.support&&!$.support.cssFloat)||$.browser.msie) {for(var i in borders) {var arc=$('').attr('stroked',false).attr('fillcolor',color).attr('startangle',borders[i][0]).attr('endangle',borders[i][1]).css({width:radius*2+3,height:radius*2+3,marginLeft:(i.search(/Right/)!==-1)?borders[i][2]-3.5:-1,marginTop:(i.search(/bottom/)!==-1)?-2:-1,verticalAlign:'top',display:'inline-block'}).appendTo(shapes[i]);}} var betweenCorners=$(document.createElement('div')).addClass('qtip-betweenCorners').css({height:radius,width:self.elements.tooltip.outerWidth()-(Math.max(width,radius)*2),overflow:'hidden',backgroundColor:color,lineHeight:0.1,fontSize:1}) var borderTop=$(document.createElement('div')).addClass('qtip-borderTop').css({height:radius,marginLeft:radius,lineHeight:0.1,fontSize:1,padding:0}).append(shapes['topLeft']).append(shapes['topRight']).append(betweenCorners).prependTo(self.elements.wrapper);var borderBottom=$(document.createElement('div')).addClass('qtip-borderBottom').css({height:radius,marginLeft:radius,lineHeight:0.1,fontSize:1,padding:0,clear:'both'}).append(shapes['bottomLeft']).append(shapes['bottomRight']).append(betweenCorners.clone()).appendTo(self.elements.wrapper);var sideWidth=Math.max(radius,(radius+(width-radius))) var vertWidth=Math.max(width-radius,0);self.elements.contentWrapper.css({margin:0,border:'0px solid '+color,borderWidth:vertWidth+'px '+sideWidth+'px',position:'relative',clear:'both'})}};function drawBorder(canvas,coordinates,radius,color) {var context=canvas.get(0).getContext('2d');context.fillStyle=color;context.beginPath();context.arc(coordinates[0],coordinates[1],radius,0,Math.PI*2,false);context.fill();} function createTip(corner) {var self=this;var color=self.options.style.tip.color||self.options.style.border.color;if(self.options.style.tip.corner===false)return;else if(!corner)corner=self.options.style.tip.corner;if(self.elements.tip!==null)self.elements.tip.remove();$(self.elements.tooltip).find('.'+self.options.style.classes.tip).remove();self.elements.tip=$(document.createElement('div')).addClass(self.options.style.classes.tip).css({width:self.options.style.tip.size.x,height:self.options.style.tip.size.y,margin:'0 auto',lineHeight:0.1,fontSize:1}).attr('rel',corner) if(document.createElement('canvas').getContext) {var canvas=$(document.createElement('canvas')).attr('width',self.options.style.tip.size.x).attr('height',self.options.style.tip.size.y).appendTo(self.elements.tip);drawTip.call(self,canvas,corner,color);} else if(($.support&&!$.support.cssFloat)||$.browser.msie) {var coordinates=calculateTip(corner,self.options.style.tip.size.x,self.options.style.tip.size.y);var path='m'+coordinates[0][0]+','+coordinates[0][1];path+=' l'+coordinates[1][0]+','+coordinates[1][1];path+=' '+coordinates[2][0]+','+coordinates[2][1];path+=' xe';$('').attr('fillcolor',color).attr('stroked','false').attr('coordsize',self.options.style.tip.size.x+','+self.options.style.tip.size.y).attr('path',path).css({width:self.options.style.tip.size.x,height:self.options.style.tip.size.y,lineHeight:0.1,verticalAlign:(corner.search(/top/)!==-1)?'bottom':'top',display:'inline-block'}).appendTo(self.elements.tip) if(($.support&&!$.support.cssFloat)||$.browser.msie) self.elements.content.css({position:'relative'})} else return debug('Canvas/VML unsupported, cannot draw the tip!');if(corner.search(/left|top|right/)!==-1) self.elements.tip.prependTo(self.elements.tooltip);else self.elements.tip.appendTo(self.elements.tooltip);positionTip.call(self,corner);};function drawTip(canvas,corner,color) {var self=this;var coordinates=calculateTip(corner,self.options.style.tip.size.x,self.options.style.tip.size.y);var context=canvas.get(0).getContext('2d');context.fillStyle=color;context.beginPath();context.moveTo(coordinates[0][0],coordinates[0][1]);context.lineTo(coordinates[1][0],coordinates[1][1]);context.lineTo(coordinates[2][0],coordinates[2][1]);context.fill();} function positionTip(corner) {var self=this;if(self.options.style.tip.corner===false||!self.elements.tip)return;if(!corner)var corner=self.elements.tip.attr('rel');var radiusAdjust=self.options.style.border.radius;var pixelAdjust=(($.support&&!$.support.cssFloat)||$.browser.msie)?1:0;self.elements.tip.css(corner.match(/left|right|top|bottom/)[0],0);if(corner.search(/top|bottom/)!==-1) {if(corner.search(/Middle/)!==-1) {self.elements.tooltip.css({textAlign:'center'})} else if(corner.search(/Left/)!==-1) {self.elements.tip.css({marginLeft:radiusAdjust-pixelAdjust});self.elements.tooltip.css({marginLeft:-radiusAdjust});} else if(corner.search(/Right/)!==-1) {self.elements.tip.css({marginLeft:self.elements.tooltip.outerWidth()-self.options.style.tip.size.x-radiusAdjust-pixelAdjust});self.elements.tooltip.css({marginLeft:radiusAdjust})} if(($.support&&!$.support.cssFloat)||$.browser.msie) {if(corner.search(/bottom/)!==-1) self.elements.tip.css({marginTop:-2});}} else if(corner.search(/left|right/)!==-1) {if(corner.search(/Middle/)!==-1) {self.elements.tip.css({position:'absolute',top:"50%",marginTop:-(self.options.style.tip.size.y/2)});} else if(corner.search(/Top/)!==-1) {self.elements.tip.css({position:'absolute',top:radiusAdjust-pixelAdjust});self.elements.tooltip.css({marginTop:-radiusAdjust});} else if(corner.search(/Bottom/)!==-1) {self.elements.tip.css({position:'absolute',bottom:radiusAdjust+pixelAdjust});self.elements.tooltip.css({marginTop:radiusAdjust});} if(($.support&&!$.support.cssFloat)||$.browser.msie) {if(corner.search(/left/)!==-1) self.elements.tip.css({marginLeft:-1});else self.elements.tip.css({marginRight:1});} var paddingCorner='padding-'+corner.match(/left|right/)[0];var paddingSize=(paddingCorner.search(/left/)!==-1)?self.options.style.tip.size.x:self.options.style.tip.size.y if(paddingCorner!=='padding-bottom')self.elements.tooltip.css(paddingCorner,paddingSize-1);}};function createTitle() {var self=this;if(self.elements.title!==null)self.elements.title.remove();self.elements.title=$(document.createElement('div')).addClass(self.options.style.classes.title).css(jQueryStyle(self.options.style.title,true)).html(self.options.content.title.text).prependTo(self.elements.contentWrapper);if(self.options.content.title.button!==false&&typeof self.options.content.title.button=='string') {var button=$(document.createElement('a')).attr('href','#').css({'float':'right',position:'relative'}).addClass(self.options.style.classes.button).html(self.options.content.title.button).prependTo(self.elements.title).click(self.hide);}};function assignEvents() {var self=this;var showTarget=self.options.show.when.target;var hideTarget=self.options.hide.when.target;if(self.options.hide.fixed)hideTarget=hideTarget.add(self.elements.tooltip);if(self.options.hide.when.event=='inactive') {var inactiveEvents=['click','dblclick','mousedown','mouseup','mousemove','mouseout','mouseenter','mouseleave','mouseover'];function inactiveMethod() {clearTimeout(self.timers.inactive);self.timers.inactive=setTimeout(function() {$(inactiveEvents).each(function() {hideTarget.unbind(this+'.qtip-inactive');self.elements.content.unbind(this+'.qtip-inactive');});self.hide();},self.options.hide.delay);}} else if(self.options.hide.fixed===true) {self.elements.tooltip.bind('mouseover.qtip',function() {clearTimeout(self.timers.hide);});} function showMethod(event) {if(self.options.hide.when.event=='inactive') {$(inactiveEvents).each(function() {hideTarget.bind(this+'.qtip-inactive',inactiveMethod);self.elements.content.bind(this+'.qtip-inactive',inactiveMethod);});inactiveMethod();} clearTimeout(self.timers.show);clearTimeout(self.timers.hide);self.timers.show=setTimeout(function(){self.show(event);},self.options.show.delay);} function hideMethod(event) {if(self.options.hide.fixed===true&&self.options.hide.when.event.search(/mouse(out|leave)/i)!==-1&&$(event.relatedTarget).parents('.qtip').length>0) {event.stopPropagation();event.preventDefault();clearTimeout(self.timers.hide);return false;} clearTimeout(self.timers.show);clearTimeout(self.timers.hide);self.timers.hide=setTimeout(function(){self.hide(event);},self.options.hide.delay);} if((self.options.show.when.target.add(self.options.hide.when.target).length===1&&self.options.show.when.event==self.options.hide.when.event&&self.options.hide.when.event!=='inactive')||self.options.hide.when.event=='unfocus') {showTarget.data('qtip-toggle',0);if(self.options.hide.when.event=='unfocus') self.elements.tooltip.attr('unfocus',true);showTarget.bind(self.options.show.when.event+'.qtip',function(event) {if(parseInt($(this).data('qtip-toggle'))===0) showMethod(event);else hideMethod(event);});} else {showTarget.bind(self.options.show.when.event+'.qtip',showMethod);if(self.options.hide.when.event!=='inactive') hideTarget.bind(self.options.hide.when.event+'.qtip',hideMethod);} if(self.options.position.type.search(/(fixed|absolute)/)!==-1) self.elements.tooltip.bind('mouseover.qtip',self.focus);if(self.options.position.target=='mouse') {showTarget.bind('mousemove.qtip',function(event) {self.mouse={x:event.pageX,y:event.pageY};if(self.elements.tip.css('display')!=='none') self.updatePosition(event,false);});}};function screenAdjust(currentPos,targetLength,event) {var self=this;var corner=self.options.position.corner.tooltip;if(corner=='center')return var tooltipLength={height:self.elements.tooltip.outerHeight(),width:self.elements.tooltip.outerWidth()};var newPos=$.extend(true,{},currentPos);if(self.options.position.target!=='mouse') var targetPos=self.options.position.target.offset();var overflow={leftMin:(currentPos.left<$(window).scrollLeft()),leftMax:(newPos.left+tooltipLength.width+2>=$(window).width()+$(window).scrollLeft()),topMin:(currentPos.top<$(window).scrollTop()),topMax:(newPos.top+tooltipLength.height+2>=$(window).height()+$(window).scrollTop())};if(overflow.leftMin||overflow.leftMax) {if(overflow.leftMin&&((corner.search(/right/i)===-1&&!overflow.leftMax)||corner.search(/right/i)!==-1)) {if(self.options.position.target=='mouse') newPos.left=self.mouse.x else newPos.left=targetPos.left+targetLength.width;} else if(overflow.leftMax&&((corner.search(/left/i)===-1&&!overflow.leftMin)||corner.search(/left/i)!==-1)) {if(corner.search(/(top|bottom)Middle/)!==-1) newPos.left-=(targetLength.width/2)+(tooltipLength.width/2)+(self.options.position.adjust.x*2);else newPos.left-=tooltipLength.width+targetLength.width+(self.options.position.adjust.x*2);}} if(overflow.topMin||overflow.topMax) {if(overflow.topMin&&corner.search(/top/i)===-1) {if(self.options.position.target=='mouse') newPos.top=self.mouse.y else newPos.top=targetPos.top+targetLength.height;} else if(overflow.topMax&&corner.search(/bottom/i)===-1) {if(corner.search(/(left|right)Middle/)!==-1) newPos.top-=(targetLength.height/2)+(tooltipLength.height/2)+(self.options.position.adjust.y*2);else newPos.top-=tooltipLength.height+targetLength.height+(self.options.position.adjust.y*2);}} if(newPos.left<0)newPos.left=currentPos.left;if(newPos.top<0)newPos.top=currentPos.top;if(self.options.style.tip.corner!==false) {corner=invertCornerString(corner,newPos.left!==currentPos.left,newPos.top!==currentPos.top,overflow) if(corner!==self.elements.tip.attr('rel')) {self.options.style.tip.corner=corner;createTip.call(self);}} return newPos;};function jQueryStyle(style,title) {var styleObj=$.extend(true,{},style);for(var i in styleObj) {if(title===true&&i.search(/(tip|classes)/i)!==-1) delete styleObj[i];else if(i.search(/(width|border|tip|title|classes|user)/i)!==-1) delete styleObj[i];} return styleObj;} function sanitizeStyle(style) {if(typeof style.tip!=='object')style.tip={corner:style.tip};if(typeof style.tip.size!=='object')style.tip.size={x:style.tip.size,y:style.tip.size};if(typeof style.border!=='object')style.border={width:style.border};if(typeof style.width!=='object')style.width={value:style.width};if(typeof style.width.max=='string')style.width.max=parseInt(style.width.max.replace(/([0-9]+)/i,"$1"));if(typeof style.width.min=='string')style.width.min=parseInt(style.width.min.replace(/([0-9]+)/i,"$1"));return style;} function buildStyle() {var self=this;var styleArray=[true,{}];for(var i=0;i0)final.tip.size.x+=1;if(final.tip.size.y%2>0)final.tip.size.y+=1;if(final.tip.corner===true) final.tip.corner=(self.options.position.corner.tooltip==='center')?false:self.options.position.corner.tooltip;return final;};function calculateTip(corner,width,height) {var tips={bottomRight:[[0,0],[width,height],[width,0]],bottomLeft:[[0,0],[width,0],[0,height]],topRight:[[0,height],[width,0],[width,height]],topLeft:[[0,0],[0,height],[width,height]],topMiddle:[[0,height],[width/2,0],[width,height]],bottomMiddle:[[0,0],[width,0],[width/2,height]],rightMiddle:[[0,0],[width,height/2],[0,height]],leftMiddle:[[width,0],[width,height],[0,height/2]]} tips.leftTop=tips.bottomRight;tips.rightTop=tips.bottomLeft;tips.leftBottom=tips.topRight;tips.rightBottom=tips.topLeft;return tips[corner];};function calculateBorders(radius) {if(document.createElement('canvas').getContext) {var borders={topLeft:[radius,radius],topRight:[0,radius],bottomLeft:[radius,0],bottomRight:[0,0]}} else if(($.support&&!$.support.cssFloat)||$.browser.msie) {var borders={topLeft:[-90,90,0],topRight:[-90,90,-radius],bottomLeft:[90,270,0],bottomRight:[90,270,-radius]}} return borders;};function invertCornerString(corner,x,y,overflow) {if(x) {if(corner.search(/(top|bottom)Middle/)!==-1) {if(overflow.leftMin) corner=corner.replace('Middle','Left');else if(overflow.leftMax) corner=corner.replace('Middle','Right');} else if(corner.search(/right/)!==-1)corner=corner.replace('right','left');else if(corner.search(/Right/)!==-1)corner=corner.replace('Right','Left');else if(corner.search(/left/)!==-1)corner=corner.replace('left','right');else if(corner.search(/Left/)!==-1)corner=corner.replace('Left','Right');} if(y) {if(corner.search(/(left|right)Middle/)!==-1) {if(overflow.topMin) corner=corner.replace('Middle','Top');else if(overflow.topMax) corner=corner.replace('Middle','Bottom');} else if(corner.search(/top/)!==-1)corner=corner.replace('top','bottom');else if(corner.search(/Top/)!==-1)corner=corner.replace('Top','Bottom');else if(corner.search(/bottom/)!==-1)corner=corner.replace('bottom','top');else if(corner.search(/Bottom/)!==-1)corner=corner.replace('Bottom','Top');} return corner;};function bgiframe() {var self=this;var html='