(function(a,j){var l={type:"",text:"",top:0,left:0,angle:45,size:50,distance:50,template:'<div class="grumble" style="display:none;filter:progid:DXImageTransform.Microsoft.Matrix(sizingMethod=\'auto expand\')">&#160;</div>',textTemplate:'<div class="grumble-text" style="display:none;"><div class="outer"><div class="inner">{text}</div></div></div>'};j.GrumbleBubble=function(g){this.options=a.extend({},l,g);this.context=document.body;this.css={};this.create()};j.GrumbleBubble.prototype={create:function(){var g=
j.GrumbleBubble.prototype.tmpl;this.bubble=a(g(this.options.template));this.text=a(g(this.options.textTemplate,{text:this.options.text}));this.prepare()},setBubbleRotation:function(){this.rotateDeg=this.options.angle-45;this.rotateDeg<0&&(this.rotateDeg+=360)},prepare:function(){var g=this.bubble.get(0).parentNode;this.setBubbleRotation();this.applyStyles();g!==this.context&&this.append();this.rotate()},applyStyles:function(){this.setPosition();this.css.width=this.options.size;this.css.height=this.options.size;
this.text.css(this.css).addClass("grumble-text"+this.options.size);this.bubble.css(this.css).addClass(this.options.type+"grumble"+this.options.size);this.realLeft=this.css.left;this.realTop=this.css.top},setPosition:function(){var g=this.options.angle/-360,d=this.options.size/2,a=this.options.size*this.options.size,a=Math.sqrt(a+a)/2,b=this.options.left-d-Math.sin(g*2*Math.PI)*(this.options.distance+a);this.css.top=this.options.top+d-Math.cos(g*2*Math.PI)*(this.options.distance+a)-this.options.size;
this.css.left=b},append:function(){var a=this.context;this.bubble.appendTo(a);this.text.appendTo(a)},rotate:function(){a.browser.msie===!0?this.ieRotate():this.cssRotate()},cssRotate:function(){this.bubble.css({"-moz-transform":"rotate("+this.rotateDeg+"deg)","-webkit-transform":"rotate("+this.rotateDeg+"deg)","-o-transform":"rotate("+this.rotateDeg+"deg)",transform:"rotate("+this.rotateDeg+"deg)"})},ieRotate:function(){var a=this.rotateDeg*(Math.PI*2/360),d=Math.cos(a),a=Math.sin(a),i=this.bubble.get(0);
i.filters.item(0).M11=d;i.filters.item(0).M12=-a;i.filters.item(0).M21=a;i.filters.item(0).M22=d;d=this.bubble.width();a=this.bubble.height();this.bubble.css({left:this.css.left-(d-this.options.size)/2,top:this.css.top-(a-this.options.size)/2})},adjust:function(g){a.extend(this.options,g);this.prepare()},tmpl:function(a,d,i){for(var b in d)d[b]===null&&(d[b]=""),typeof d[b]==="object"&&d[b].length&&(d[b]=d[b].join(", ")),a=a.replace(RegExp("{"+b+"}","g"),i?escape(d[b]):d[b]);return a}}})($,window);(function(a,j){function l(d,g,b){var e=a('<div style="position:absolute;visibility:hidden;width:'+d+'px;">'+b+"</div>").appendTo(a(document.body)),j=e.outerHeight()*2+d*0.2,k=a.inArray(d,g);e.remove();return j>=d&&g[++k]?l(g[k],g,b):d}var g=[];a.fn.grumble=function(d,i){return typeof d==="string"?(this.trigger({type:d+".bubble",adjustments:i}),this):this.each(function(){var b=a(this),e=a.extend({},a.fn.grumble.defaults,d,b.data("grumble")||{}),i=b.offset(),k=l(e.size,e.sizeRange,e.text),c,f,h;if(a.data(this,
"hazGrumble"))return b.grumble("adjust",d),b.grumble("show"),!0;else a.data(this,"hazGrumble",!0);e.top=i.top+b.height();e.left=i.left+b.width()/2;h={init:function(){c=new j({text:e.text,top:e.top,left:e.left,angle:e.angle,size:k,distance:e.distance,type:e.type});e.hasHideButton&&this.addButton();g.push({grumble:c,button:f,onHide:function(){h.isVisible=!1;a(document.body).unbind("click.bubble");h.doOnBeginHideCallback();h.doOnHideCallback()}});this.showBubble();this.prepareEvents()},addButton:function(){var b=
j.prototype.tmpl;f=a(b(e.buttonTemplate,{hideText:e.buttonHideText})).css({left:c.realLeft+k-10,top:c.realTop+k-10}).insertAfter(c.text)},rePositionButton:function(){f&&f.css({left:c.realLeft+k-10,top:c.realTop+k-10})},createFxQueue:function(){c.bubble.queue("fx");c.text.queue("fx");c.bubble.delay(e.showAfter);c.text.delay(e.showAfter);f&&f.delay(e.showAfter)},showBubble:function(){h.isVisible!=!0&&(e.showAfter&&h.createFxQueue(),a.browser.msie===!0?(c.bubble.queue("fx",function(a){c.bubble.show();
a()}),c.text.queue("fx",function(a){c.text.show();a()}),f&&f.queue("fx",function(a){f.show();a()})):(c.bubble.fadeTo("fast",1),c.text.fadeTo("fast",1),f&&f.fadeTo("fast",1)),c.bubble.queue("fx",function(a){h.isVisible=!0;(e.hideOnClick||e.hasHideButton)&&h.hideOnClick();h.doOnShowCallback();a()}),e.hideAfter&&h.hideBubble())},hideBubble:function(){c.bubble.delay(e.hideAfter);c.text.delay(e.hideAfter);c.bubble.queue("fx",function(a){h.doOnBeginHideCallback();a()});a.browser.msie===!0?(c.bubble.queue("fx",
function(a){c.bubble.hide();a()}),c.bubble.queue("fx",function(a){c.text.hide();a()}),f&&f.queue("fx",function(a){f.hide();a()})):(c.bubble.fadeOut(),c.text.fadeOut(),f&&f.fadeOut());c.bubble.queue("fx",function(a){h.isVisible=!1;h.doOnHideCallback();a()})},doOnBeginHideCallback:function(){e.onBeginHide(c,f)},doOnHideCallback:function(){e.onHide(c,f)},doOnShowCallback:function(){e.onShow(c,f)},hideOnClick:function(){setTimeout(function(){var b=function(){h.hideBubble(c,f);a(document.body).unbind("click.bubble",
b)};a(document.body).bind("click.bubble",b)},1E3)},prepareEvents:function(){a(window).bind("resize.bubble",function(){var a=b.offset(),d=a.top+b.height(),a=a.left+b.width()/2;c.adjust({top:d,left:a});h.rePositionButton()});b.bind("hide.bubble",function(){h.hideBubble(c,f)});b.bind("adjust.bubble",function(a){a.adjustments&&typeof a.adjustments==="object"&&c.adjust(a.adjustments)});b.bind("show.bubble",function(){h.showBubble(c,f)})}};h.init()})};a.fn.grumble.defaults={text:"",angle:45,size:50,sizeRange:[50,
100,150,200],distance:0,type:"",showAfter:0,hideAfter:!1,hideOnClick:!1,hasHideButton:!1,buttonTemplate:'<div class="grumble-button" style="display:none" title="{hideText}">x</div>',buttonHideText:"Hide",onHide:function(){},onShow:function(){},onBeginHide:function(){}};a(document).bind("keyup.bubble",function(d){d.keyCode===27&&a.each(g,function(a,b){b.grumble.bubble.clearQueue().hide();b.grumble.text.clearQueue().hide();b.button&&b.button.clearQueue().hide();b.onHide()})})})(jQuery,GrumbleBubble);

