topical media & game development
graphic-canvas-util-beautytips-jquery.bt.min.js / js
/*
* @name BeautyTips
* @desc a tooltips/baloon-help plugin for jQuery
*
*
author: Jeff Robbins - Lullabot - www.lullabot.com
*
version: 0.9.3 (4/19/2009)
*/
;(function(text=$('<div class="bt-content"></div>').append(content).css({padding:opts.padding,position:"absolute",width:opts.width,zIndex:opts.textzIndex,left:shadowShiftX,top:shadowShiftY}).css(opts.cssStyles);var text).addClass(opts.cssClass).css({position:"absolute",width:opts.width,zIndex:opts.wrapperzIndex}).appendTo(offsetParent);if(jQuery.fn.bgiframe){box.bgiframe()}this.data("bt-box",text.outerHeight());var textOutWidth=numb(text.css("margin-bottom",opts.spikeLength+"px");text.outerHeight(true))+opts.overlap,left:horiz});textRightSpace=(winRight-opts.windowMargin)-(text.btOuterWidth(true));var xShift=shadowShiftX;if(textRightSpace<0){box.css("left"))+textRightSpace)+"px");xShift-=textRightSpace}textLeftSpace=(text.css("margin-left")))-(scrollLeft+opts.windowMargin);if(textLeftSpace<0){box.css("left"))-textLeftSpace)+"px");xShift+=textLeftSpace}textTop=text.css("margin-top"));textLeft=text.css("margin-left"));textRight=textLeft+text.outerHeight();textCenter={x:textLeft+(text.outerHeight()*opts.centerPointY)};points[points.length]=spikePoint={y:textBottom+opts.spikeLength,x:((textRight-textLeft)*0.5)+xShift,type:"spike"};crossPoint=findIntersectX(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textBottom);crossPoint.x=crossPoint.x<textLeft+opts.spikeGirth/2+opts.cornerRadius?textLeft+opts.spikeGirth/2+opts.cornerRadius:crossPoint.x;crossPoint.x=crossPoint.x>(textRight-opts.spikeGirth/2)-opts.cornerRadius?(textRight-opts.spikeGirth/2)-opts.CornerRadius:crossPoint.x;points[points.length]={x:crossPoint.x-(opts.spikeGirth/2),y:textBottom,type:"join"};points[points.length]={x:textLeft,y:textBottom,type:"corner"};points[points.length]={x:textLeft,y:textTop,type:"corner"};points[points.length]={x:textRight,y:textTop,type:"corner"};points[points.length]={x:textRight,y:textBottom,type:"corner"};points[points.length]={x:crossPoint.x+(opts.spikeGirth/2),y:textBottom,type:"join"};points[points.length]=spikePoint;break;case"left":box.css({top:vert+"px",left:((left-text.offset().top+box.css("top",(numb(text.offset().top+numb(box.css("top",(numb(text.btPosition().top+numb(text.btPosition().left+numb(text.btOuterWidth();textBottom=textTop+text.btOuterWidth()*opts.centerPointX),y:textTop+(text.css("margin-top",opts.spikeLength+"px");text.offset().left+box.css("left",(numb(text.offset().left+numb(box.css("left",(numb(text.btPosition().top+numb(text.btPosition().left+numb(text.btOuterWidth();textBottom=textTop+text.btOuterWidth()*opts.centerPointX),y:textTop+(text.css("margin-left",(opts.spikeLength+"px"));text.offset().top+box.css("top",(numb(text.offset().top+numb(box.css("top",(numb(text.btPosition().top+numb(text.btPosition().left+numb(text.btOuterWidth();textBottom=textTop+text.btOuterWidth()*opts.centerPointX),y:textTop+(text.btOuterWidth(true))+opts.strokeWidth*2+shadowMarginX)).attr("height",(numb(box).css({position:"absolute",zIndex:opts.boxzIndex});if(typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(canvas)}if(opts.cornerRadius>0){var newPoints=new Array();var newPoint;for(var i=0;i<points.length;i++){if(points[i].type=="corner"){newPoint=betweenPoint(points[i],points[(i-1)\%points.length],opts.cornerRadius);newPoint.type="arcStart";newPoints[newPoints.length]=newPoint;newPoints[newPoints.length]=points[i];newPoint=betweenPoint(points[i],points[(i+1)\%points.length],opts.cornerRadius);newPoint.type="arcEnd";newPoints[newPoints.length]=newPoint}else{newPoints[newPoints.length]=points[i]}}points=newPoints}var ctx=canvas.getContext("2d");if(opts.shadow&&opts.shadowOverlap!==true){var shadowOverlap=numb(opts.shadowOverlap);switch(position){case"top":if(opts.shadowOffsetX+opts.shadowBlur-shadowOverlap>0){box.css("top"))-(opts.shadowOffsetX+opts.shadowBlur-shadowOverlap)))}break;case"right":if(shadowShiftX-shadowOverlap>0){box.css("left"))+shadowShiftX-shadowOverlap))}break;case"bottom":if(shadowShiftY-shadowOverlap>0){box.css("top"))+shadowShiftY-shadowOverlap))}break;case"left":if(opts.shadowOffsetY+opts.shadowBlur-shadowOverlap>0){box.css("left"))-(opts.shadowOffsetY+opts.shadowBlur-shadowOverlap)))}break}}drawIt.apply(ctx,[points],opts.strokeWidth);ctx.fillStyle=opts.fill;if(opts.shadow){ctx.shadowOffsetX=opts.shadowOffsetX;ctx.shadowOffsetY=opts.shadowOffsetY;ctx.shadowBlur=opts.shadowBlur;ctx.shadowColor=opts.shadowColor}ctx.closePath();ctx.fill();if(opts.strokeWidth>0){ctx.shadowColor="rgba(0, 0, 0, 0)";ctx.lineWidth=opts.strokeWidth;ctx.strokeStyle=opts.strokeStyle;ctx.beginPath();drawIt.apply(ctx,[points],opts.strokeWidth);ctx.closePath();ctx.stroke()}if(opts.animate){box.css({visibility:"visible"});if(opts.overlay){var overlay=$('<div class="bt-overlay"></div>').css({position:"absolute",backgroundColor:"blue",top:top,left:left,width:width,height:height,opacity:".2"}).appendTo(offsetParent);this.data("overlay",overlay)}var animParams={opacity:1};if(opts.animate){switch(position){case"top":animParams.top=box.btPosition().left+opts.distance;break;case"bottom":animParams.top=box.btPosition().left-opts.distance;break}/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,"marginTop");offset.left-=num(this,"marginLeft");parentOffset.top+=num(offsetParent,"borderTopWidth");parentOffset.left+=num(offsetParent,"borderLeftWidth");results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left}}return results};jQuery.fn.btOuterWidth=function(margin){function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0}return this["innerWidth"]()+num(this,"borderLeftWidth")+num(this,"borderRightWidth")+(margin?num(this,"marginLeft")+num(this,"marginRight"):0)};jQuery.fn.btOn=function(){return this.each(function(index){if(jQuery.isFunction(this.btOn)){this.btOn()}})};jQuery.fn.btOff=function(){return this.each(function(index){if(jQuery.isFunction(this.btOff)){this.btOff()}})};jQuery.bt={};jQuery.bt.vars={clickAnywhereStack:[],closeWhenOpenStack:[]};jQuery.bt.docClick=function(e){if(!e){var e=window.event}if(!$(e.target).parents().andSelf().filter(".bt-wrapper, .bt-active").length){$(jQuery.bt.vars.clickAnywhereStack).btOff();document.unbind("click",jQuery.bt.docClick)}};jQuery.bt.defaults={trigger:"hover",clickAnywhereToClose:true,closeWhenOthersOpen:false,width:"200px",padding:"10px",spikeGirth:10,spikeLength:15,overlap:0,overlay:false,killTitle:true,textzIndex:9999,boxzIndex:9998,wrapperzIndex:9997,positions:["most"],fill:"rgb(255, 255, 102)",windowMargin:10,strokeWidth:1,strokeStyle:"#000",cornerRadius:5,centerPointX:0.5,centerPointY:0.5,shadow:false,shadowOffsetX:2,shadowOffsetY:2,shadowBlur:3,shadowColor:"#000",shadowOverlap:false,noShadowOpts:{strokeStyle:"#999"},animate:false,distance:15,easing:"swing",speed:200,cssClass:"",cssStyles:{},activeClass:"bt-active",contentSelector:"this.attr('title')",ajaxPath:null,ajaxError:"<strong>ERROR:</strong> <em>\%error</em>",ajaxLoading:"<blink>Loading...</blink>",ajaxData:{},ajaxType:"GET",ajaxCache:true,ajaxOpts:{},preShow:function(){return},postShow:function(){return},preHide:function(){return},postHide:function(){return},hoverIntentOpts:{interval:300,timeout:500}}})(jQuery);
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.