(function($){window.MashedIn.Widget={widget_id:"widget",canvas_wrapper_id:"widget-connections-container",canvas_arrow_els:["mutual-connections-top-arrow","mutual-connections-bot-arrow"],init:function(o){if(window.MashedIn){this.parent=window.MashedIn;this.parent.init.call(this.parent,o)}var self=this;window.onload=function(){self.drawCanvasArrows(false)}},attachEvent:{authOverlayNotice:function($els){var $auth_overlay=$("#auth-overlay");if(!$auth_overlay||!$els){return}$els.each(function(){var n=new MashedIn.Widget.NoticeEvent($(this),$auth_overlay)})}},drawCanvasArrows:function(called_from_settings){var bg=$("#"+this.widget_id).css("background-color"),widget_mid_bg=$("#"+this.canvas_wrapper_id).css("background-color"),arrow_height=13,arrow_width=25,line_to=12.5,fill_rect_x=40,fill_rect_y=60;function initSetup(ctx,i){var trans=(i===0)?[arrow_height,0]:[arrow_height,arrow_height];ctx.translate.apply(ctx,trans);ctx.save();ctx.fillStyle=bg;ctx.fillRect(-arrow_width,-arrow_height,fill_rect_x,fill_rect_y);ctx.fillStyle=widget_mid_bg;ctx.globalAlpha=1;ctx.beginPath();ctx.moveTo(0,0);if(i===0){ctx.lineTo(-line_to,arrow_height);ctx.lineTo(line_to,arrow_height)}else{ctx.lineTo(-line_to,-arrow_height);ctx.lineTo(line_to,-arrow_height)}ctx.closePath();ctx.fill();ctx.restore()}function updateStyle(ctx){ctx.fillStyle=bg;ctx.fillRect(-arrow_width,-arrow_height,fill_rect_x,fill_rect_y);ctx.fillStyle=widget_mid_bg;ctx.fill();ctx.restore()}var func=(!called_from_settings)?initSetup:updateStyle;for(var i=0,l=this.canvas_arrow_els.length;i<l;i++){var canvas;if(typeof(G_vmlCanvasManager)!=="undefined"){$("#"+this.canvas_arrow_els[i]).remove();canvas=document.createElement("canvas");canvas.id=this.canvas_arrow_els[i];canvas.setAttribute("width",arrow_width);canvas.setAttribute("height",arrow_height);var wrap=document.getElementById(this.canvas_wrapper_id);if(!wrap){return}wrap.appendChild(canvas);canvas=G_vmlCanvasManager.initElement(canvas);func=initSetup}else{canvas=document.getElementById(this.canvas_arrow_els[i])}if(!canvas||!canvas.getContext){return}func(canvas.getContext("2d"),i)}},recallEventsOnTransition:function(url){var self=this;if(this.parent){this.parent.init.call(this.parent)}if(url.match("/likes$")!="/likes"){$(function(){self.drawCanvasArrows()})}},Utils:{autoMagicalFontResizer:function(maxHeight,maxWidth,$element){var words=$element.text().split(/\s/g);var longestWord=words.sort(function(a,b){return a.length<b.length})[0];var $longestWord=jQuery("<"+$element.get(0).tagName+">").text(longestWord);$longestWord.css({position:"absolute",display:"none"}).appendTo("body");var currentFontSize=999;var smallerFontSize;while((($element.height()>maxHeight)||($longestWord.width()>maxWidth))&&(currentFontSize>=11)){currentFontSize=Number($element.css("font-size").replace(/px/g,""));smallerFontSize=(currentFontSize-1)+"px";$element.css("font-size",smallerFontSize);$longestWord.css("font-size",smallerFontSize)}$longestWord.remove()},transitionWidget:function(url,replaceTargetSelector,loaderSelector){if(!replaceTargetSelector){replaceTargetSelector="#widget"}if(!loaderSelector){loaderSelector="#loader img"}$(replaceTargetSelector).fadeTo("fast",0.3,function(){$(loaderSelector).show()});MashedIn.Ajax.Request(url,{dataType:"html"},function(data,textStatus,xhr){if(textStatus!=="success"){$(loaderSelector).hide(function(){$(replaceTargetSelector).fadeTo("fast",1)});return}var $replaceTarget=$(replaceTargetSelector);var $new=$(data).css("opacity",0.1);var cb_called=false;$replaceTarget.hide().before($new).remove();$new.fadeTo("fast",1,function(){$(loaderSelector).hide();if(!cb_called){MashedIn.Widget.recallEventsOnTransition(url);cb_called=true}})})}}};window.MashedIn.Widget.NoticeEvent=function($button,$messageOverlay,opts){var default_options={callbacks:{},context:null,showAuthOverlay:true,closeButtonClass:"close-button",eventAction:"click",hiddenClass:"hidden"};var notice_bound="notice-bound";this.$_button=(typeof($button)==="string")?$($button):$button;this.$_messageOverlay=(typeof($messageOverlay)==="string")?$($messageOverlay):$messageOverlay;this.opts=$.extend({},default_options,opts);if(this.$_messageOverlay&&!this.$_messageOverlay.data(notice_bound)){this.$_messageOverlay.data(notice_bound,true);this.bindOverlayCloseButton()}if(this.$_button){this.bindButton()}};window.MashedIn.Widget.NoticeEvent.prototype={bindButton:function(){var self=this;this.$_button[self.opts.eventAction](function(evt){evt.preventDefault();self.buttonClicked();if($.isFunction(self.opts.callbacks.onButtonClicked)){self.opts.callbacks.onButtonClicked.call(self.opts.context||null)}});this.$_button.css("cursor","pointer")},buttonClicked:function(){this.$_button.css("cursor","wait");if(this.opts.showAuthOverlay){this.$_messageOverlay.removeClass(this.opts.hiddenClass);this.$_button.unbind(this.opts.eventAction);this.bindButton()}},bindOverlayCloseButton:function(){var $closeButton=this.$_messageOverlay.find("."+this.opts.closeButtonClass);if($closeButton){var self=this;$closeButton.click(function(evt){evt.preventDefault();self.$_messageOverlay.fadeTo("slow",0,function(){self.$_messageOverlay.addClass(self.opts.hiddenClass).css("opacity",1)})})}}};window.MashedIn.Widget.LikesClient=function($panel,$messageOverlay,likerPuid,addLikeURL){this.$_panel=$panel;this.$_likeButton=$panel.find(".button");this.$_hud=$panel.find(".hud");this.$_messageOverlay=$messageOverlay;this._likerPuid=likerPuid;this._addLikeURL=addLikeURL;var options={showAuthOverlay:((!this._likerPuid)?true:false),callbacks:{onButtonClicked:function(){this.likeClicked()}},context:this};this.notice=new MashedIn.Widget.NoticeEvent(this.$_likeButton,this.$_messageOverlay,options)};window.MashedIn.Widget.LikesClient.prototype={bindLikeButton:function(){this.notice.bindButton()},likeClicked:function(){if(this._likerPuid){var self=this;MashedIn.Ajax.Request(this._addLikeURL,{type:"POST",dataType:"json"},function(data,textStatus,xhr){self.addLikeCallback(data)})}},addLikeCallback:function(response){if(response.successful){var self=this;this.$_likeButton.fadeTo("fast",0,function(){self.$_likeButton.toggleClass("hidden");self.$_hud.css("opacity",0);self.$_hud.toggleClass("hidden");self.$_hud.fadeTo("slow",1,function(){self.bindLikeButton()})});if(response.gaCommands){_gaq=_gaq||[];_gaq.push.apply(_gaq,response.gaCommands)}}else{this.$_messageOverlay.find(".message").text(response.errorMessage);this.$_messageOverlay.removeClass("hidden");this.bindLikeButton()}}}})(jQuery);
