
Application.Tools.AjaxRequest=new Class({Implements:[Options,Events],userError:null,options:{},initialize:function(options){this.addEvent('error',this.defaultError);if(options.error){this.addEvent('error',options.error);}
if(options.success){this.addEvent('success',options.success);}
if(options.complete){this.addEvent('complete',options.complete);}
if(options.beforeSend){this.addEvent('beforeSend',options.beforeSend);}
this.setOptions(options);},execute:function(){var optionOverride={error:function(){this.fireEvent('error',arguments);},success:function(response,status,xhr){if(this.testRedirect(response,status,xhr)){return;}this.fireEvent('success',arguments);},complete:function(){this.fireEvent('complete',arguments);},beforeSend:function(){this.fireEvent('beforeSend',arguments);},context:this};var options=$.extend({},this.options,optionOverride);console.log("about to execute",options,$,$.ajax);window.foo=options;$.ajax(options);},testRedirect:function(response,status,xhr){if(!(xhr.responseXML)){return;}
var redirectNode=xhr.responseXML.getElementsByTagName('redirect');if(redirectNode.length>=1){var url=redirectNode[0].firstChild.nodeValue;url=decodeURIComponent((url+"").replace(/\+/g,"%20"));this.redirect(url);return true;}
return false;},defaultError:function(xml,status,error,undef){if((xml.status==301||xml.status==12150)&&xml.responseText!=undef){this.redirect(xml.responseText);}},redirect:function(url){window.location=url;}});Application.Tools.AjaxForm=new Class({Extends:Application.Tools.AjaxRequest,implements:[Options],options:{},targetSelector:null,targetForm:null,initialize:function(options,selector,context){var defaultCompleteHandler=this.onSubmitComplete,defaultBeforeSendHandler=this.onBeforeSend,defaultOnSubmitHandler=this.onFormSubmit,defaultSuccessHandler=this.onSubmitSuccess;context=context||document;if(selector instanceof jQuery){this.targetSelector=selector.attr('id');this.targetForm=selector;}
else{this.targetSelector=selector;this.targetForm=$(this.targetSelector,context);}
options.beforeSend=defaultBeforeSendHandler;options.success=defaultSuccessHandler;options.complete=defaultCompleteHandler;options.url=unescape(this.targetForm.attr('action'));this.setOptions(options);this.parent(options);this.targetForm.bind('submit',{self:this},defaultOnSubmitHandler);},execute:function(){this.options.data=this.gatherFormData();this.parent();},validate:function(data){var self=this,dataArray=this.gatherFormData(true),success=true;if(this.options.validators){self.clearFormErrors();$.each(dataArray,function(i,val){var n=dataArray[i].name,v=dataArray[i].value,result=undefined,$elem=$('[name='+n+']',self.targetForm);if(typeof self.options.validators[n]==='function'){result=self.options.validators[n].call(self,$elem,v);if(result!==true){success=false;self.markFormFieldWithError($elem);if(typeof result==='string'){self.displayErrorMessage(result);}}}});}
return success;},clearFormErrors:function(){this.targetForm.find('.error').removeClass('error');if(this.options.errorMessageContainer){this.targetForm.find(this.options.errorMessageContainer).html('').css('display','none');}},markFormFieldWithError:function($elem){$elem.parent().addClass('error');},disableButtons:function(){if(this.options.buttons){$elems=this.options.buttons;}
else{$elems=this.targetForm.find('.button').add('button');}
$elems.attr('disabled','disabled');},enableButtons:function(){if(this.options.buttons){$elems=this.options.buttons;}
else{$elems=this.targetForm.find('.button').add('button');}
$elems.attr('disabled',null);},displayErrorMessage:function(msg){msg='<p>'+msg+'</p>';if(this.options.errorMessageContainer){var $elem=this.targetForm.find(this.options.errorMessageContainer);if($elem.css('display')==='none'){$elem.html(msg).css('display','block');}
else{$elem.append(msg);}}},gatherFormData:function(asArray){if(asArray){return this.targetForm.serializeArray();}
else{return this.targetForm.serialize();}},onFormSubmit:function(e){e.stopPropagation();if(e.data.self.validate()){e.data.self.disableButtons();e.data.self.execute();}
return false;},onBeforeSend:function(XMLHttpRequest){this.disableButtons();if(this.options.myBeforeSubmit){return this.options.myBeforeSubmit.call(this,XMLHttpRequest);}
else{return true;}},onSubmitSuccess:function(data,textStatus,XMLHttpRequest){this.enableButtons();if(this.options.myCustomSubmit){this.options.myCustomSubmit.call(this,data,textStatus,XMLHttpRequest);}},onSubmitComplete:function(XMLHttpRequest,textStatus){console.log('onSubmitComplete');this.enableButtons();if(this.options.onSubmitComplete){this.options.onSubmitComplete.call(this,XMLHttpRequest,textStatus);}}});Application.Tools.AjaxTrigger=new Class({Extends:Application.Tools.AjaxRequest,$element:null,$target:null,initialize:function($element,options){this.$element=$element;if(options==null){options={};}
this.$element.data('ajax-trigger',this);if(options.success==null){if(this.$element.attr('target')){this.$target=$(this.$element.attr('target'));}
else if(options.$target!=null){this.$target=options.$target;}
options.success=this.defaultSuccess;}
if(options.context==null){options.context=this;}
if(this.$element.is('form')){this.setupForm(options);}
if(this.$element.is('a')){this.setupAnchor(options);}
this.parent(options);this.addEvent('complete',this.unlock);},checkSubmit:function(){if(this.options.disableLocks){return true;}
return this.locked===true?false:true;},execute:function(){if(this.checkSubmit()){this.lock();if(this.$element.is('form')){this.options.data=this.$element.serialize();}
this.parent();return true;}else{return false;}},lock:function(){this.$element.addClass('loading');this.locked=true;},unlock:function(){this.$element.removeClass('loading');this.locked=false;},defaultSuccess:function(data,status,request){if(this.$target!=null&&typeof data=='string'){this.$target.html(data);}},setupForm:function(options){var execute=this.execute,self=this;options.url=this.$element.attr('action');options.type=this.$element.attr('method');if(options.type==null){options.type='post';}
this.$element.submit(function(){if(!self.$element.valid()){return false;}
options.data=$(this).serialize();self.setOptions(options);self.execute();return false;});},setupAnchor:function(options){var execute=this.execute,self=this;options.url=this.$element.attr('href');this.$element.click(function(){execute.call(self);return false;});}});Application.Tools.TickOverlay=new Class({Implements:[Options,Events],tickerTooltipTimer:null,options:{tip:'#tickertip',datastore:'#ticker_data',container:null,delay:500,relative:true,position:['top','left'],autoScrollTimeout:3500},initialize:function(options){if(!options.container){throw'You must pass in a containing element';}
this.setOptions(options);this.initializeTooltip();this.initializeContainer();this.options.container.tooltip().show().hide();},initializeTooltip:function(){var controller=this;controller.options.container.tooltip(controller.getTooltipInitOptions());$(controller.options.tip).bind('mouseleave',controller.enableHidingTickOverlay.bind(controller)).bind('mouseenter',controller.disableHidingTickOverlay.bind(controller)).removeClass('top right bottom left').addClass(controller.options.position.join(' '));},initializeContainer:function(){var
controller=this,onMouseMove=function(e){if(e.target.nodeName.toLowerCase()=='img'){var $tick=$(this);if($tick.data('target')!=e.target||!controller.options.container.tooltip().isShown()){$tick.data('target',e.target);controller.showTickOverlay(controller.options.delay);}}
else{controller.hideTickOverlay(controller.options.delay);}};this.options.container.bind('mousemove',onMouseMove).bind('mouseleave',controller.enableHidingTickOverlay.bind(controller));this.options.container.find('a > img.user').bind('click',function(e){controller.disableHidingTickOverlay();});this.options.container.data('controller',controller);},getTooltipInitOptions:function(){return{tip:this.options.tip,relative:true,position:'top left',events:{def:"null,null",tooltip:"mouseenter,delayedmouseleave"}};},disableHidingTickOverlay:function(){clearTimeout(this.tickerTooltipTimer);},enableHidingTickOverlay:function(){clearTimeout(this.tickerTooltipTimer);this.tickerTooltipTimer=setTimeout(this.hideTickOverlay.bind(this),500);},showTickOverlay:function(delay){if(delay){clearTimeout(this.tickerTooltipTimer);this.tickerTooltipTimer=setTimeout(this.showTickOverlay.bind(this),delay);}
else{this.onTickOverImage($(this.options.container.data('target')),this);}},hideTickOverlay:function(delay){clearTimeout(this.tickerTooltipTimer);if(delay){this.tickerTooltipTimer=setTimeout(this.hideTickOverlay.bind(this),delay);}
else{this.fireEvent('beforeHide');this.options.container.tooltip().hide();this.fireEvent('hide');}},getTickPosition:function(el,relative){var p=(relative)?el.position():el.offset();return{top:p.top+el.height(),left:p.left+el.width()/2};},onTickOverImage:function($img,controller){var conf=controller.options.container.tooltip().getConf();var $tip=controller.options.container.tooltip().getTip();if(controller.options.container.tooltip().isShown()){controller.options.container.tooltip().hide();}
controller.refreshTooltipContents($img,$tip);controller.hideExtraTip();$tip.find('#tickertip_before').add('#tickertip_after').css('display','none');var pos=controller.calculatePosition($img);controller.fixArrowPosition();conf.offset=[pos.top,pos.left];$tip.find('#tickertip_before').add('#tickertip_after').css('display','block');controller.options.container.tooltip().show();},getBorderWidth:function($elem){var b=$elem.css('borderWidth')||$elem.css('borderTopWidth')||$elem.css('borderRightWidth')||$elem.css('borderBottomWidth')||$elem.css('borderLeftWidth');return parseInt(b);},fixArrowPosition:function(){var $tip=this.options.container.tooltip().getTip(),$before=$tip.find('#tickertip_before'),$after=$tip.find('#tickertip_after'),h=$tip.outerHeight();if(this.options.position[0]=='center'){$before.css('top',(h/2-this.getBorderWidth($before)/2)-1);$after.css('top',(h/2-this.getBorderWidth($after)/2));}
else{$before.css('top',null);$after.css('top',null);}},calculatePosition:function($img){var pos=this.getTickPosition($img,true);var $tip=this.options.container.tooltip().getTip();var cornerOffset=8;var a=this.options.position[0];var b=this.options.position[1];var xoff=0;var yoff=0;if(a=='top'){yoff=($tip.outerHeight())+$img.outerWidth(true)/2-cornerOffset;if(b=='left'){xoff+=$tip.outerWidth()-$img.outerWidth(true)/2-cornerOffset;}
else if(b=='center'){xoff+=($tip.outerWidth()/2);}
else{xoff+=$img.outerWidth(true)/2+cornerOffset;}}
else if(a=='center'){yoff=($tip.outerHeight()/2)-30;if(b=='left'){xoff+=$tip.outerWidth()-$img.outerWidth(true)-cornerOffset;}
else if(b=='center'){xoff+=($tip.outerWidth()/2);}
else{xoff-=($img.outerWidth(true)-(cornerOffset*3));}}
else{}
pos.left+=xoff;pos.top+=yoff;if(a=='center'){if(pos.left<$tip.parent().offset().left){pos.left+=$tip.outerWidth(true)+$img.outerWidth(true)+(cornerOffset*2);$tip.addClass('left').removeClass('right');}else{$tip.removeClass('left').addClass('right');}}
return pos;},refreshTooltipContents:function($uimage,$tip){var uid=$uimage.attr('data-uid');var html=$($(this.options.datastore).find('[data-uid="'+uid+'"]')[0]);if(uid&&html){$tip.children(':first').empty().append(html.clone(true));}
this.initSocialLinks($tip,uid);this.resetAutoScrollTimer();},initSocialLinks:function($tip,uid){Application.Tools.SocialLinks.initSocialLinks($tip,uid);},hideExtraTip:function(){var $tip=$('#unlinked_social_message');$tip.children().hide();$tip.fadeOut();},resetAutoScrollTimer:function(){window.clearInterval(this.autoScrolTimer);this.autoScrolTimer=window.setInterval(function(){var $tip=this.options.container.tooltip().getTip()
this.scrollHistory($tip);}.bind(this),this.options.autoScrollTimeout);},scrollHistory:function($tip){var $pane=$tip.find('div.history-pane'),scrollable=$pane.data('scrollable');if($pane.length>0){if(scrollable==null){scrollable=$pane.scrollable({circular:true}).scrollable();}
if(scrollable.getItems().length>1){scrollable.next();}}}});Application.Tools.TalkBubble=new Class({Implements:[Options,Events],options:{selector:'#talkbubble',speed:1000,tipPlacement:'bl',className:'talkbubble'},initialize:function(options){this.setOptions(options);if(this.options.$elem){this.$elem=this.options.$elem;}else{this.$elem=$(this.options.selector);}
this.$elem.addClass(this.options.className);this.setTipPlacement(this.options.tipPlacement);this.generateTips();this.hide(0);},generateTips:function(){var classNames=['_before','_after'];var i;for(i=0;i<classNames.length;i++){var name=this.options.className+classNames[i];if(this.$elem.find('.'+name).length<=0){var tip=$('<div/>').addClass(name);this.$elem.append(tip);}}},getTip:function(which){if(which==null){return this.$elem.children('[class$="_before"], [class$="_after"]');}else{return this.$elem.children('[class$=_'+which+']');}},show:function(speed,callback){var s=speed||this.options.speed;this.$elem.fadeIn(s,callback);},showAfter:function(delay,speed,callback){var self=this,s=speed||this.options.speed,delay=delay||1000,func=function(){self.show(speed,callback);};setTimeout(func,delay);},hide:function(speed,callback){var s=speed||this.options.speed;this.$elem.fadeOut(s,callback);},getElem:function(){return this.$elem;},setTipPlacement:function(placement){this.options.tipPlacement=placement;this.getElem().removeClass('tl tc tr bl bc br cr cl');this.getElem().addClass(placement);}});Application.Tools.Tooltip=new Class({Extends:Application.Tools.TalkBubble,Binds:['setContent','hoverIn','hoverOut','triggerShow'],_tb_options:{source:'--DEFAULT--',showWaitTime:500,hideWaitTime:300,placement:'tc',tipPlacement:'bl',hoverableTooltip:false,offset:{tl:{top:0,left:0},tc:{top:0,left:0},tr:{top:0,left:0},bl:{top:0,left:0},bc:{top:0,left:0},br:{top:0,left:0},cr:{top:0,left:0},cl:{top:0,left:0}}},addOffset:function(placement,offset){offset.left+=this.options.offset[placement].left;offset.top+=this.options.offset[placement].top;return offset;},hoverInWaiter:null,hoverOutWaiter:null,initialize:function(triggers,options){this.setOptions(this._tb_options);this.setOptions(options);if(!options){options={};}
options.selector=false;options.$elem=this.generateTooltipDom();this.initializeTriggers(triggers);this.parent(options);this.hide(0);this.getElem().addClass('tooltip');this.bindHoverableTooltipEvents();$('<div>').wrap(this.getTip());},bindHoverableTooltipEvents:function(){var clearHoverOutWaiter=function(){clearInterval(this.hoverOutWaiter);}.bind(this);if(this.options.hoverableTooltip){this.getElem().hover(clearHoverOutWaiter,this.hoverOut.bind(this));}
this.getTip().hover(clearHoverOutWaiter,this.hoverOut.bind(this));},bindTriggerEvents:function($trigger){$trigger.hover(this.hoverIn.bind(this),this.hoverOut.bind(this));},initializeTriggers:function(triggers){if(triggers instanceof jQuery){this.$triggers=triggers;}else{this.$triggers=$(triggers);}
this.$triggers.each(function(i,elem){var $elem=$(elem);this.bindTriggerEvents($elem);}.bind(this));},hoverIn:function(event){clearTimeout(this.hoverInWaiter);clearTimeout(this.hoverOutWaiter);this.hoverInWaiter=setTimeout(function(){this.triggerShow(event);}.bind(this),this.options.showWaitTime);},triggerShow:function(event){if(event.currentTarget==null&&event.target!=null){event.currentTarget=event.target;}
this.setContent(event);this.show();this.reposition(event);},reposition:function(event){var $trigger=$(event.currentTarget);var placement=this.getPlacement();var position={top:0,left:0};if(this.positionCalculators[placement]){this.autoPlaceTip(placement);position=this.positionCalculators[placement].bind(this)($trigger,this.getElem());position=this.addOffset(placement,position);}
this.getElem().css(position);},getPlacement:function(){return this.options.placement;},autoPlaceTip:function(placement){var target1=placement.substr(0,1);var target2=placement.substr(1,1);var newPlacement;if(target1=='c'){newPlacement=(target2=='l')?'cr':'cl';}else{newPlacement=(target1=='t')?'b'+target2:'t'+target2;}
this.setTipPlacement(newPlacement);},setContent:function(event){var $target=$(event.currentTarget);var content;if(typeof this.options.source=="function"){content=this.options.source.bind(this)(event);if(content==null){return;}}else if(this.options.source=='--DEFAULT--'){content=$target.attr('title');}else if(this.options.source===false){return;}else{content=$(this.options.source).detach().show();this.$content.append(content);return;}
this.$content.html(content);},hoverOut:function(event){clearTimeout(this.hoverInWaiter);clearTimeout(this.hoverOutWaiter);this.hoverOutWaiter=setTimeout(function(){this.hide();}.bind(this),this.options.hideWaitTime);},show:function(speed,callback){this.fireEvent('showing');if(!this.getElem().is(':visible')){this.getElem().show().css('opacity',0);}
var s=speed||this.options.speed;this.getElem().stop(true,true).animate({opacity:1},speed,null,function(){this.getElem().show();this.fireEvent('shown');if(callback){callback();}}.bind(this));},forceShow:function(){if(!this.getElem().is(':visible')){this.getElem().show();}},hide:function(speed,callback){var s=speed||this.options.speed;this.getElem().stop(true,true).animate({opacity:0},speed,null,function(){this.getElem().hide();this.fireEvent('hidden');if(callback){callback();}}.bind(this));},generateTooltipDom:function(){this.$content=$('<div/>').addClass(this.options.className+'_content');var $outer=$("<div>").addClass(this.options.className);$outer.append(this.$content);$('body').append($outer);return $outer;},cleanup:function(){clearTimeout(this.hoverInWaiter);clearTimeout(this.hoverOutWaiter);this.getElem().remove();},positionCalculators:{bl:function($trigger){this.forceShow();var offset=$trigger.offset();offset.top+=$trigger.outerHeight()+this.getTip('before').outerHeight(true)/2;return offset;},bc:function($trigger){var offset=this.positionCalculators.bl.bind(this)($trigger);offset.left+=$trigger.outerWidth()/2-this.getElem().outerWidth()/2;return offset;},br:function($trigger){var offset=this.positionCalculators.bl.bind(this)($trigger);offset.left-=this.getElem().outerWidth()-$trigger.outerWidth();return offset;},tl:function($trigger){this.forceShow();var offset=$trigger.offset();offset.top-=this.getElem().outerHeight()+$trigger.outerHeight();return offset;},tc:function($trigger){var offset=this.positionCalculators.tl.bind(this)($trigger);offset.left+=$trigger.outerWidth()/2-this.getElem().outerWidth()/2;return offset;},tr:function($trigger){var offset=this.positionCalculators.tl.bind(this)($trigger);offset.left-=this.getElem().outerWidth()-$trigger.outerWidth();return offset;},cl:function($trigger){this.forceShow();var offset=$trigger.offset();offset.left-=this.getElem().outerWidth();offset.top-=this.getElem().outerHeight()/2-$trigger.outerHeight()/2;return offset;},cr:function($trigger){var offset=this.positionCalculators.cl.bind(this)($trigger);offset.left+=this.getElem().outerWidth()+$trigger.outerWidth();return offset;}}});Application.Modules.HelpTip=new Class({Extends:Application.Tools.Tooltip,initialize:function(triggers,options){this.parent(triggers,options);this.getElem().addClass('help');this.$logo=$('<div class="logo" />');this.getElem().append(this.$logo);}});Application.Tools.DarkTip=new Class({Extends:Application.Tools.Tooltip,_rdb_options:{className:'dark-tip',placement:'bc',source:false},initialize:function($trigger,options){if(options==null){options=this._rdb_options;}else{options=$merge(this._rdb_options,options);}
this.parent($trigger,options);}});Application.Tools.GoogleAnalytics=new Class({trackPageView:function(url){if(window._gaq){_gaq.push('_trackPageview',url);}}});Application.Tools.GoogleAnalytics=new Application.Tools.GoogleAnalytics();Application.Tools.Touch=new Class({touchScrollElem:null,startTouchY:0,startTime:0,currentTouchY:0,contentOffsetY:0,contentStartOffsetY:0,momentumInAction:false,initialize:function(elem){this.touchScrollElem=elem;if('ontouchstart'in document.documentElement){this.bindTouchEvents();this.fixDomForTouch();}},fixDomForTouch:function(){this.touchScrollElem.css('overflow','visible');var transform='translate3d(0, 0px, 0)';this.touchScrollElem.css('webkitTransform',transform);},bindTouchEvents:function(){$(document).bind('touchmove',function(e){e.preventDefault();},false);this.touchScrollElem.bind('touchstart',{self:this},this.whenTouchStart);this.touchScrollElem.bind('touchmove',{self:this},this.whenTouchMove);this.touchScrollElem.bind('touchend',{self:this},this.whenTouchEnd);},whenTouchStart:function(e){console.log('whenTouchStart');var self=e.data.self;self.stopMomentum();self.startTime=self.getTime();e=e.originalEvent;self.startTouchY=e.touches[0].clientY;self.currentTouchY=self.startTouchY;self.contentStartOffsetY=self.contentOffsetY;},whenTouchMove:function(e){var self=e.data.self;if(self.isDragging()){e=e.originalEvent;self.currentTouchY=e.touches[0].clientY;var deltaY=self.currentTouchY-self.startTouchY;var newY=deltaY+self.contentStartOffsetY;var limitedY=self.limitTouchScrollBounds(newY);var limitedDeltaY=newY-limitedY;newY=newY-(limitedDeltaY/1.5);self.animateTo(newY);}},whenTouchEnd:function(e){console.log('whenTouchEnd');var self=e.data.self;if(self.isDragging()){e=e.originalEvent;if(self.shouldStartMomentum()){self.momentumInAction=true;self.doMomentum();}
else{self.momentumInAction=false;self.snapToBounds();}}},animateTo:function(offsetY){this.contentOffsetY=offsetY;var transform='translate3d(0, '+offsetY+'px, 0)';this.touchScrollElem.css('webkitTransform',transform);},doMomentum:function(){var velocity=this.getEndVelocity();var acceleration=-0.0005;var displacement=-(velocity*velocity)/(2*acceleration);var time=Math.abs(velocity/acceleration);var newY=(velocity<0)?(this.contentOffsetY+displacement):(this.contentOffsetY-displacement);this.contentOffsetY=newY;var transition='-webkit-transform '+time+'ms cubic-bezier(0.33, 0.66, 0.66, 1)';var transform='translate3d(0, '+newY+'px, 0)';var limitedY=this.limitTouchScrollBounds();if(newY<limitedY){console.log('less');}
else if(newY>limitedY){console.log('greater');}
this.touchScrollElem.css('webkitTransition',transition);this.touchScrollElem.css('webkitTransform',transform);},snapToBounds:function(){var limitedY=this.limitTouchScrollBounds();if(this.contentOffsetY!=limitedY){this.contentOffsetY=limitedY;var time='300';var transition='-webkit-transform '+time+'ms cubic-bezier(0.33, 0.66, 0.66, 1)';var transform='translate3d(0, '+limitedY+'px, 0)';this.touchScrollElem.css('webkitTransition',transition);this.touchScrollElem.css('webkitTransform',transform);}},limitTouchScrollBounds:function(Y){Y=Y||this.contentOffsetY;var min=0,max=-this.getScrollContentHeight();if(Y>min){return min;}
else if(Y<max){return max;}
return Y;},getEndVelocity:function(){var endTime=this.getTime();var deltaT=this.startTime-endTime;var deltaY=this.currentTouchY-this.startTouchY;return deltaY/deltaT;},getScrollContentHeight:function(){var c=this.touchScrollElem.children(),height=0;$.each(c,function(){height+=$(this).outerHeight(true);});height-=this.touchScrollElem.outerHeight(true);return height;},shouldStartMomentum:function(){return false;if(Math.abs(this.getEndVelocity())>0.4){return true;}
else{return false;}},isDragging:function(){return true;},isDecelerating:function(){return this.momentumInAction;},getTime:function(){var now=new Date();return now.getTime();},stopMomentum:function(){var elem=this.touchScrollElem;elem.css('webkitTransition','');this.momentumInAction=false;if(this.isDecelerating()){var style=document.defaultView.getComputedStyle(elem,null);var transform=new WebKitCSSMatrix(style.webkitTransform);this.touchScrollElem.css('webkitTransition','');this.animateTo(transform.m42);}}});Application.Tools.AutosaveOption=new Class({Extends:Application.Tools.AjaxRequest,implements:[Options],options:{elem:undefined},changed:false,initialize:function(options){var self=this;self.setOptions(options);self.elem=$(self.options.elem);self.form=self.elem.closest('form');self.elem.bind('change',function(e){self.onChange(e);});self.form.bind('submit',function(e){return self.onSubmit(e);});this.parent(options);},onChange:function(e){this.changed=true;this.save();},onSubmit:function(e){this.save();this.fireEvent('submit');e.stopPropagation();return false;},save:function(){if(this.changed){this.options.url=this.form.attr('action');this.options.data=this.form.serialize();this.execute();$_YOTTA_.User.Preferences['DisableLowerpriceVideo']=this.elem.attr("checked");this.changed=false;}}});Application.Tools.BasicTooltip=new Class({defaults:{predelay:400,offset:[10,2],effect:'slide'},initialize:function(){},initTooltips:function($selector,options){if(!$selector instanceof jQuery){$selector=$(selector);}
options=options||{};$selector=$selector.not('.basic-tooltip-initialized').addClass('basic-tooltip-initialized');return $selector.tooltip($.extend({},this.defaults,options));}});Application.Tools.BasicTooltip=new Application.Tools.BasicTooltip();Application.Tools.CreditCard=new Class({Implements:[Options,Events],options:{CARDS:{Visa:/^4[0-9]{12}(?:[0-9]{3})?$/,MasterCard:/^5[1-5][0-9]{14}$/,Discover:/^6(?:011|5[0-9]{2})[0-9]{12}$/},ut:"Unknown Type"},initialize:function(number){if(!number){return false;}
this.number=number.replace(/\s|\-/g,'').trim();for(var card in this.options.CARDS){this._addHandler(card);}},isValid:function(){return this._verifyLuhn();},_verifyLuhn:function(){var number=this.number;var sum=0,alt=false,i=number.length-1,num;if(number.length<13||number.length>19){return false;}
while(i>=0){num=parseInt(number.charAt(i),10);if(isNaN(num)){return false;}
if(alt){num*=2;if(num>9){num=(num%10)+1;}}
alt=!alt;sum+=num;i--;}
return(sum%10==0);},getType:function(){if(this._verifyLuhn()){for(var card in this.options.CARDS){if(this['is'+card]()){return card;}}
return this.options.ut;}else{return"The card is not valid!";}},_addHandler:function(card){return this['is'+card]=function(){return this.options.CARDS[card].test(this.number);};}});$(window).load(function(){if($_YOTTA_.LoadFacebook!==false){(function(){var e=document.createElement('script');e.async=true;e.src='jslib/fb.js';document.getElementById('fb-root').appendChild(e);}());}});var Facebook={getSingleton:function(){if(this.singleton==null){this.singleton=new FacebookRoutines();}
return this.singleton;}};var FacebookRoutines=new Class({fb_loaded:false,onParseCompleteEvents:[],parse:function(parseListener){this.onParseCompleteEvents.push(parseListener);},initialize:function(){var self=this;window.fbAsyncInit=function(){FB.init({appId:FBAPPID,status:true,cookie:true,xfbml:false});FB.XFBML.parse($('body')[0],this.onParseCompleteTigger);$(document).ready(function(){self.scriptLoadComplete();});self.fb_loaded=true;};},onParseCompleteTrigger:function(){$.each(this.onParseCompleteEvents,function(i,event){event();});},_ready:[],isReady:false,ready:function(callback){if(this.isReady==false){this._ready.push(callback);}else{callback();}},friends:{add:function(facebookId,callback){if(facebookId&&Facebook.getSingleton().fb_loaded){FB.ui({method:'friends.add',id:facebookId},callback);}}},onFacebookAction:function(e,params){console.log('onFacebookAction: ',params);if($_YOTTA_.User.uid==='guest'){window.location=$_YOTTA_.Application.GetApplicationURL('register.facebook');return;}
switch(params.action){case'friends.add':Facebook.getSingleton().friends.add(params.networkId,function(param){console.log("callback: ",param);callback=$_YOTTA_.Application.GetCurrentURL();if(param.action){var ajax=new Application.Tools.AjaxRequest({url:$_YOTTA_.Application.GetApplicationURL('friend_request.facebook',{'userId':params.id,'facebookId':params.networkId,'returnURL':encodeURIComponent(callback)})});ajax.execute();}});break;case'friends.poke':console.log("will poke...");break;default:break;}},scriptLoadComplete:function(){FB.Event.subscribe('auth.login',function(response){var expectedPermissions=['read_stream','user_about_me','user_birthday','email','publish_stream','offline_access'];if(response.perms!=null){var userPermissions=response.perms.split(',');var miss=false;$.each(expectedPermissions,function(i,permission){if(!$.inArray(permission,userPermissions)){miss=true;}});console.log("MADE IT HERE");if(miss===false){window.location='?action=register.facebook';}else{console.log("INSUFFICIENT PERMISSIONS");}}});FB.Event.subscribe('auth.logout',function(response){window.location='?action=login.logout';});$.each(this._ready,function(index,func){func();});},Invite:function($output){$output.dialog({modal:true,draggable:false,resizable:false,title:"Invite your friends",dialogClass:"rate-confirm-dialog",minHeight:300,width:660,close:function(){$output.remove();}});},InviteTriggerSettings:{success:function(html){var $html=$(html);$html.appendTo($('body'));$('script[type=text/fbml]').appendTo($('#facebook-invitation-form').children().first());FB.XFBML.parse();FacebookRoutines.Invite($('#facebook-invitation-form'));}}});Application.Tools.Filterer=new Class({Implements:Events,initialize:function($form,$target,url){this.url=url;this.$target=$target;this.target=$target.attr('name');this.$form=$form;this.$target.change((function(){this.fireEvent('changed');}).bind(this));this.$target.data('filterer',this);this.addEvent('changed',this.changeNeighbors);this.resetFilter();},resetFilter:function(){var request=new Application.Tools.AjaxRequest({url:this.url,type:'get',data:this.$form.serialize()+"&target="+this.target,success:this.handleList.bind(this)});request.execute();this.current=this.$target.find('option:selected').attr('value');this.$target.children().remove();this.$target.append($('<option value="">Loading</option>'));},handleList:function(html){this.$target.children().remove();this.$target.append(html);if(this.current!=null){this.$target.find('option:first[value='+this.current+']').attr('selected',true);}},changeNeighbors:function(){this.$form.find('select').not(this.$target).each(function(){var filterer=$(this).data('filterer');if(filterer){filterer.resetFilter();}});}});Application.Tools.ItemSearch=new Class({Extends:Application.Tools.AjaxTrigger,initialize:function($form,$target){this.parent($form,{});this.addEvent('success',this.handleResults);},handleResults:function(html){}});Application.Tools.fixTabs=function(items){var etype='keydown.tabcontrol';items.each(function(index,elem){$(this).find('button').add('a').unbind(etype).bind(etype,function(e){if(e.which===9)
return false;});});};Application.Tools.Form2Text=new Class({$form:null,initialize:function($form){this.$form=$form;},ToText:function(){this.$form.find('span.textified').remove();this.$form.find('input, select').each(function(){var $this=$(this);$this.hide().addClass('textified');var text=$this.is('select')?$this.find('option:selected').text():$this.val();var $text=$('<span>'+text+'</span>');$text.addClass('textified');$text.insertAfter($this);});},ToForm:function(){this.$form.find('input.textified, select.textified').each(function(){var $this=$(this);$this.removeClass('textified').show();});this.$form.find('span.textified').remove();}});Application.Tools.HistoryOverlay=new Class({Extends:Application.Tools.TickOverlay,tickerTooltipTimer:null,showToolTip:function(uid){this.options.container.tooltip().hide();setTimeout(function(){this.onTickOverImage($('img.user[data-uid='+uid+']'),this,true);}.bind(this),500);},initialize:function(options){this.options.autoScrollTimeout=3500;this.options.delay=50;this.parent(options);this.addEvent('hide',this.hideExtraTip);$('.user-detail a.socialLink').live('click',this.socialClick.bind(this));$('.user-detail img.photo').live('click',this.photoClick.bind(this));$('.user-detail .history .action .image img').live('click',this.saleClick.bind(this));this.resetAutoScrollTimer();var self=this;this.options.container.find('img.user').live('click',function(){self.onTickOverImage($(this),self);});},socialClick:function(event){this.showExtraTip('.social-click',event);},photoClick:function(event){this.showExtraTip('.photo-click',event);},saleClick:function(event){this.showExtraTip('.sale-click',event);},getTooltipInitOptions:function(){var opts=this.parent();opts.effect='fade';opts.onBeforeHide=this.hideExtraTip;return opts;},onTickOverImage:function($img,controller,calledByAutoTicker){if(calledByAutoTicker!==true){this.fireEvent('manualShow');}
this.parent($img,controller);var $ticker=$('#tickertip');var $extra=$('#extratip');$extra.css({top:$ticker.position().top+$ticker.height(),left:$ticker.position().left});},hideExtraTip:function(){$('#extratip').fadeOut();},showExtraTip:function(showSelector,event){var $tip=$('#extratip');var $target=$(event.currentTarget);var name=$target.closest('.user-detail').find('.user_name').html();$tip.children().hide();var $message=$tip.children(showSelector)
$message.find('span.target').html(name);$message.show();$tip.fadeIn();},refreshTooltipContents:function($uimage,$tip){var uid=$uimage.data('uid');$tip.find('.user-detail').hide();this.$userDetail=$tip.find('.user-detail[data-uid='+uid+']').show();this.resetAutoScrollTimer();},scrollHistory:function(){if(this.$userDetail==null){return;}
if(this.$userDetail.is(':visible')){this.parent(this.$userDetail);}},calculatePosition:function($img){var pos=this.parent($img);var $tip=this.options.container.tooltip().getTip();pos.top+=10;pos.left+=5;if(pos.left+$tip.width()>$(window).width()){pos.left-=$tip.width()-$img.outerWidth(true);$tip.addClass('right');}else{$tip.removeClass('right');}
return pos;}});Application.Tools.IframeOverlay=new Class({Implements:[Events,Options],Binds:['cleanup'],$container:null,$iframe:null,options:{$attachTo:$('body'),iframeAttributes:{name:'iframe-overlay'},containerAttributes:{},indicatorAttributes:{},src:'about:blank',overlayConfig:{mask:{color:'#fff',closeOnEsc:false,loadSpeed:'fast',opacity:0.8},load:true,closeOnEsc:true,clockOnClick:false,fixed:true,left:'center',top:'center',speed:'fast'}},initialize:function(options){this.setOptions(options);this.generateDOM();},generateDOM:function(){this.generateIndicator();this.generateIframe();this.generateContainer();this.options.$attachTo.append(this.$container);this.options.overlayConfig.onClose=this.cleanup;this.mask=this.$container.overlay(this.options.overlayConfig).overlay();},generateIndicator:function(){this.$indicator=$('<div class="indicator" />').attr(this.options.indicatorAttributes);},generateIframe:function(){this.$iframe=$('<iframe src='+this.options.src+'></iframe>').attr(this.options.iframeAttributes);this.$iframe.load(function(){this.$iframe.show();this.$indicator.hide();}.bind(this));},generateContainer:function(){this.$container=$('<div/>').addClass('iframe-overlay').attr(this.options.containerAttributes);this.$container.append(this.$iframe);this.$container.append(this.$indicator);this.$iframe.hide();this.$indicator.show();if(this.options.extraOverlayClass){this.$container.addClass(this.options.extraOverlayClass);}},cleanup:function(){this.$container.remove();}});Application.Tools.MailOverlay=new Class({displayOverlay:function(content){var overlay=this.getUnlockedStarOverlay();console.log(overlay);if(overlay){console.log('opening with: ',content);overlay.addItem(content);overlay.load();console.log('done');}},displayOverlay:function(content){var overlay=this.getUnlockedStarOverlay();console.log(overlay);if(overlay){console.log('opening with: ',content);overlay.addItem(content);overlay.load();console.log('done');}},closeApeOverlay:function(){var overlay=this.getUnlockedStarOverlay();if(overlay){overlay.close();}},close:function(){this.closeApeOverlay();},getUnlockedStarOverlay:function(){return $('#unlockedStarTrigger').data('overlay');}});Application.Tools.QuickDialog=new Class({$content:null,initialize:function(content,title,removeOnClose,options){if(options==null){options={};}
var shortcut=new Application.Tools.Shortcut();var $content=content instanceof jQuery?content:$('<div>'+content+'</div>');shortcut.parseShortcuts($content);if(removeOnClose==null){removeOnClose=false;}
this.$content=$content;var options=$.extend({},options,{closeOnEscape:true,title:title?title:'',close:function(){if(removeOnClose){$content.remove();}}});$content.dialog(options);},$dialogBox:function(){return this.$content.parent();},close:function(){this.$content.dialog('close');},setTitle:function(title){this.$content.dialog('option','title',title);}});Application.Tools.RandomStringGenerator=new Class({alphabet:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],generateRandomString:function(len){var outputString='',i=0,charCount=this.alphabet.length;len=len||5;for(i;i<len;i++){num=Math.floor(Math.random()*charCount);outputString+=this.alphabet[num];}
return outputString;}});Application.Tools.ReCaptcha=new Class({publicKey:'6LeqmL4SAAAAAIhcL_eUJrPc3KnmXdAws_aRcLHg',theme:'white',initialize:function(key,theme){if(key){this.publicKey=key;}
if(theme){this.theme=theme;}},create:function($element){Recaptcha.create(this.publicKey,$element[0],{theme:this.theme,callback:Recaptcha.focus_response_field});return true;}});Application.Tools.RedoBar=new Class({Implements:[Events,Options],options:{context:$('body'),sourceSelect:'.redo',countdownFormat:' {d<}{dn} day, {d>}{h<}{hn} hrs, {h>}{m<}{mn} min, {m>}{sn} sec',lowerSelect:'a.ajax-lower-price',buySelect:'a.buy-button',toolTip:true},initialize:function(options){this.setOptions(options);this.reset();},reset:function(){this.$redo=this.options.context.find(this.options.sourceSelect);this.initializeTooltip();var redoDate=new Date(this.$redo.data('refresh')*1000);var actionDate=new Date(this.$redo.data('last')*1000);var $counter=this.$redo.find('.counter');var $progressBar=this.$redo.find('.progress');var $numeric=this.$redo.find('.numeric span');if(this.options.countdownFormat=='meta'){this.options.countdownFormat=this.$redo.data('countdown-template');}
$counter.countdown('destroy').countdown({layout:this.options.countdownFormat,until:redoDate,onTick:function(){var now=new Date();var percent=(now-actionDate)/(redoDate-actionDate);if(percent>1){this.$redo.hide();}else{this.$redo.show();}
$progressBar.css({width:percent*100+'%'});$numeric.show();if($progressBar.width()<$numeric.width()){$numeric.parent().addClass('left').removeClass('right');}else{$numeric.parent().addClass('right').removeClass('left');}
$numeric.html(Math.floor(percent*100)+'%');}.bind(this),onExpiry:function(){var lower=this.options.context.find(this.options.lowerSelect).show().removeClass('hidden').css({display:'block'});if(lower.length>0){lower[0].style.display="";}
var buy=this.options.context.find(this.options.buySelect).addClass('hidden');}.bind(this)});},initializeTooltip:function(){if(this.options.toolTip){this.toolTip=new Application.Tools.RedoBarTip(this.$redo);}},cleanup:function(){if(this.toolTip){this.toolTip.cleanup();}}});Application.Tools.RedoBarTip=new Class({Extends:Application.Tools.Tooltip,_rdb_options:{className:'dark-tip',placement:'bc',source:false},initialize:function($redoBar,options){this.$redoBar=$redoBar;this.parent($redoBar,$merge(this._rdb_options,options));this.$counter=this.$redoBar.find('.counter');this.addEvent('showing',this.onShow.bind(this));this.addEvent('hidden',this.onHide.bind(this));},counterCopier:null,onShow:function(){clearInterval(this.counterCopier);var f=function(){console.log(this.$content,this.$counter,this.$counter.html());this.$content.html(this.$counter.html());}.bind(this);this.counterCopier=setInterval(f,1000);f();},onHide:function(){clearInterval(this.counterCopier);}});Application.Tools.ScoreUpdater=new Class({SetScore:function(score){console.log('ScoreUpdater.SetScore, Current Score: '+
$_YOTTA_.User.Score+', new score: '+score+', difference: '+
(score-$_YOTTA_.User.Score));if($_YOTTA_.User.Score<score){var $span=$('#current-user-score'),$p=$span.parent(),color=$p.css("color");$span.text(this.addCommas(score));$p.animate({opacity:0},500,function(){$(this).animate({color:"yellow",opacity:1},500,function(){$(this).animate({color:color},1000);});});$_YOTTA_.User.Score=score;}},IncrementScore:function(delta){$_YOTTA_.User.Score=Number($_YOTTA_.User.Score)+Number(delta);$('#current-user-score').text(this.addCommas($_YOTTA_.User.Score));},addCommas:function(nStr)
{nStr+='';x=nStr.split('.');x1=x[0];x2=x.length>1?'.'+x[1]:'';var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,'$1'+','+'$2');}
return x1+x2;}});Application.Tools.Shortcut=new Class({targetPlaxoSale:null,parseShortcuts:function($context){var self=this;if($context==null){$context=$('body');}
$context.find('a.ajax-trigger,form.ajax-trigger').not('.ajax-trigger-initialized').each(function(){$(this).addClass('ajax-trigger-initialized');new Application.Tools.AjaxTrigger($(this),{});});$context.find('a.button').not('.button-initialized').addClass('button-initialized');$context.find('form a.submit').not('form-submit-initialized').addClass('form-submit-initialized').click(function(){$(this).closest('form').submit();});if(typeof FB!='undefined'){FB.XFBML.parse($context[0]);}
$context.find('a.plaxo').not('.plaxo-initialized').each(function(){});}});Application.Tools.SlidingForm=new Class({Implements:[Events,Options],Binds:['resize','next','prev','animove','move','next','prev','first','seekTo','seekToAuto'],$form:null,$container:null,$steps:null,$_current:null,options:{containerClass:'.steps',stepClass:'.step',slideDuration:300,easing:'linear',direction:'horizontal',nextButtonClass:'.next',prevButtonClass:'.prev',firstButtonClass:'.first',lastButtonClass:'.last',seekToButtonClass:'.seekTo',hideDuration:300,hideEasing:'linear',initialStep:0},initialize:function($container,options){this.setOptions(options);this.$container=$container
this.$steps=this.$container.find(this.options.stepClass);this.$container.find(this.options.nextButtonClass).click(this.next);this.$container.find(this.options.prevButtonClass).click(this.prev);this.$container.find(this.options.firstButtonClass).click(this.first);this.$container.find(this.options.lastButtonClass).click(this.last);this.$container.find(this.options.seekToButtonClass).click(this.seekToAuto);this.seekTo(this.options.initialStep);$(window).resize(this.resize);this.resize(0);},resetCurrentPosition:function(time){if(time==null){time=this.options.slideDuration;}
this.$current().show().stop(true,false).animate({left:this.getCenterHPosition(),top:0},time,this.options.easing);},resize:function(time){if(time==null||typeof time=='object'){time=this.options.slideDuration;}
var width=$(window).width();this.$container.css({width:width});this.resetCurrentPosition(time);this.resetNextSteps();this.resetPrevSteps();},resetNextSteps:function(){var $target=this.$current();this.move('next',$target.nextAll(),0);},resetPrevSteps:function(){var $target=this.$current();this.move('prev',$target.prevAll(),0);},move:function(mode,$step,time){var method;if(mode=='next'){method=this.options.direction=='vertical'?this.toTheTop:this.toTheRight;}else{method=this.options.direction=='vertical'?this.toTheBottom:this.toTheLeft;}
method.bind(this)($step,time);this.fireEvent('moved',$step);},$current:function($newCurrent,time){if($newCurrent!=null){this.$_current=$newCurrent;this.resetCurrentPosition(time);}else if(this.$_current==null){this.$_current=this.$steps.first();}
return this.$_current;},getCenterHPosition:function(){return this.$container.width()/2-this.$current().outerWidth(true)/2;},next:function(){var $next=this.$current().next();if($next.length<=0){return;}
this.fireEvent('beforeNext',[this.$current(),$next]);this.move('prev',this.$current());this.$current($next);},prev:function(){var $prev=this.$current().prev();if($prev.length<=0){return;}
this.fireEvent('beforePrev',[this.$current(),$prev]);this.move('next',this.$current());this.$current($prev);},seekToAuto:function(event){var $button=$(event.currentTarget);var selector=$button.attr('rel');this.seekTo(selector);},seekTo:function(selector,time){if(selector.isNumeric()){selector=':nth-child('+(parseInt(selector)+1)+')';}
var $step=this.$container.children(selector);if($step.length<=0){return;}
this.move('prev',$step.prevAll(),time);this.move('next',$step.nextAll(),time);this.$current($step);},first:function(){if(this.$steps.first()!=this.$current()){this.move('next',this.$steps.not(this.$current(this.$steps.first())));}},last:function(){if(this.$steps.first()!=this.$current()){this.move('prev',this.$steps.not(this.$current(this.$steps.last())));}},animove:function($step,time,style){if(time==null){time=this.options.hideDuration;}
$step.stop(true,false).animate(style,time,this.options.hideEasing,function(){$step.hide();});},toTheTop:function($step,time){this.animove($step,time,{top:0-$step.height()-this.$container.offset().top,left:this.getCenterHPosition()});},toTheBottom:function($step,time){this.animove($step,time,{top:$(window).height()-this.$container.offset().top,left:this.getCenterHPosition()});},toTheLeft:function($step,time){this.animove($step,time,{left:0-$step.width(),top:0});},toTheRight:function($step,time){this.animove($step,time,{left:this.$container.width()+'px',top:0});}});String.prototype.isNumeric=function(){return(this-0)==this&&this.length>0;};Number.prototype.isNumeric=function(){return true;}
Application.Tools.SocialLinks=new Class({initSocialLinks:function($tip,uid){var self=this;$tip.find('.socialLink').each(function(){$(this).bind('click',{self:this},function(e){e.stopPropagation();var $a=$(this);if($a.hasClass('working')){return false;}
$a.addClass('working');if($a.data('networkid')){self.markAsWorking($(this));}
if(!$_YOTTA_.User.isFacebookUser&&$a.hasClass('facebook')){self.markAsWorking($(this));window.location=$_YOTTA_.Application.GetApplicationURL('facebook.linkAccount',{'return':$_YOTTA_.Application.GetCurrentURL()});return;}
if($a.data('networkid')){if($a.hasClass('twitter')){Twitter.getSingleton().onTwitterAction(e,{action:$a.attr('href').slice(1),id:uid});}
else if($_YOTTA_.User.isFacebookUser&&$a.hasClass('facebook')){Facebook.getSingleton().onFacebookAction(e,{action:$a.attr('href').slice(1),networkId:$a.data('networkid')});}}
else{if($a.hasClass('facebook')){self.showExtraTip('This user has not yet linked their Facebook Account');}
else if($a.hasClass('twitter')){self.showExtraTip('This user has not yet linked their Twitter Account');}}});});},markAsWorking:function($elem){$elem.removeClass('active').siblings('.social_spinner').css('display','block');},showExtraTip:function(content){var d=new Application.Tools.QuickDialog(content,'Oh Snap!');}});Application.Tools.SocialLinks=new Application.Tools.SocialLinks();Application.Tools.SocialTrigger=new Class({Extends:Application.Tools.AjaxTrigger,options:{tooltipId:'socialtip',displayTimeout:5000,attachTo:'body',listenOnScroll:'#layout-container',modalErrorDialog:true,zOverError:false},initialize:function($trigger,options){this.parent($trigger,options);this.addEvent('beforeSend',this.waitingState);this.addEvent('success',this.processRequest);this.$loader=this.$element.parent().find('div.social-wait');this.$element=$trigger;this.confirmTip=new Application.Tools.SocialTip($trigger,{placement:'bc',hoverableTooltip:true});},waitingState:function(){this.$loader.addClass('loading');},cleanup:function(){this.confirmTip.cleanup();},processRequest:function(html){console.log('the results',html);this.$loader.removeClass('loading');this.$element.removeClass('loading');html=this.replaceURLWithHTMLLinks(html);$returned=$(html);if($returned.is('.error')){this.error($returned);}else{this.confirm($returned);}},error:function($message){this.dialog=new Application.Tools.QuickDialog($message,'ooops',true,{modal:this.options.modalErrorDialog});if(this.options.zOverError){this.dialog.$dialogBox().css({zIndex:this.options.zOverError instanceof jQuery?parseInt(this.options.zOverError.css('zIndex'))+1:this.options.zOverError});}},confirm:function($message){this.confirmTip.show();window.test=this.confirmTip;this.confirmTip.setMessage($message);this.confirmTip.showTooltip();},replaceURLWithHTMLLinks:function(text){var exp=/(\b(https?|ftp|file):\/\/bit[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;var value=text.replace(exp,"<a href='$1'>$1</a>");return value;}});Application.Tools.SocialTip=new Class({Extends:Application.Tools.DarkTip,Binds:['triggerShow','showTooltip'],initialize:function($trigger,options){this.parent($trigger,options);this.$trigger=$trigger;this.getElem().addClass('social-confirm');},setMessage:function($message){this.$message=$message;},showTooltip:function(){this.triggerShow();},setContent:function(event){this.$content.empty().append(this.$message);},triggerShow:function(event){if(this.$message==null){return;}
if(event==null){event={};}
event.currentTarget=this.$trigger;this.parent(event);}});Application.Tools.StarList=new Class({setupBlinds:function($context){$context.find('.reward .container').each(function(){var $container=$(this);var $info=$container.find('.star-info');var $how=$container.find('.how');var $showHow=$container.find('a.show-how');var timeoutWaiter=null;var direction=false;var blindUp=function(event){clearTimeout(timeoutWaiter);timeoutWaiter=setTimeout(function(){if(direction==='up'){return;}direction='up';$how.stop(true,true).animate({top:'-150%'},100,'linear');},250);};var blindDown=function(event){clearTimeout(timeoutWaiter);if(direction==='down'){return;}direction='down';$how.stop(true,true).animate({top:'-50%'},1000,'easeOutElastic');};$showHow.bind('click mouseover',blindDown);$how.bind('mouseout',blindUp);$how.bind('mouseover',function(){clearTimeout(timeoutWaiter);});})}})
Application.Tools.StarUpdater=new Class({initialize:function(){},SetStarCount:function(c){$('#current-user-star-count').html(c);$_YOTTA_.User.StarCount=c;},IncrementStarCount:function(delta){$_YOTTA_.User.StarCount+=delta;$('#current-user-star-count').html($_YOTTA_.User.StarCount);}});Application.Tools.TextRenderer=new Class({className:'point-digits',map:{"+":{top:0,left:0,width:25,charClass:'plus'},"0":{top:0,left:-34},"1":{top:0,left:-68,width:18},"2":{top:0,left:-96},"3":{top:0,left:-125},"4":{top:0,left:-158},"5":{top:0,left:-188},"6":{top:0,left:-218},"7":{top:0,left:-248},"8":{top:0,left:-279},"9":{top:0,left:-311},"P":{top:0,left:-341,width:99}," ":{top:0,left:-451,width:10,charClass:'space'}},width:24,height:31,render:function(text,$container){var input=text.toString().split("");$container.css({'height':this.height});var totalWidth=0;for(var i=0;i<input.length;i++){var $item=$('<div></div>').addClass(this.className);var target=this.map[input[i]];var width=target.width?target.width:this.width;var charClass=target.charClass==null?input[i]:target.charClass;$item.css({backgroundPosition:target.left+"px "+target.top+"px",width:width,height:this.height}).addClass('c-'+charClass);totalWidth+=width;$container.append($item);}
$container.css({width:totalWidth});}});Application.Tools.DollarRenderer=new Class({Extends:Application.Tools.TextRenderer,className:'dollar-digits',map:{"$":{top:0,left:0,width:18,charClass:'dollar'},".":{top:0,left:-30,width:11,charClass:'dot'},"0":{top:0,left:-49,width:24},"1":{top:0,left:-82,width:17},"2":{top:0,left:-111,width:22},"3":{top:0,left:-141,width:23},"4":{top:0,left:-171,width:23},"5":{top:0,left:-205,width:21},"6":{top:0,left:-233,width:23},"7":{top:0,left:-263,width:22},"8":{top:0,left:-294,width:23},"9":{top:0,left:-324,width:23},"O":{top:0,left:-354,width:52}," ":{top:0,left:-346,width:10,charClass:'space'},"F":{top:0,left:-413,width:134,charClass:'for-everyone'},"c":{top:0,left:-555,width:17,charClass:'cents'}},height:36,width:22,initialize:function(){}});var Twitter={getSingleton:function(){if(this.singleton==null){this.singleton=new TwitterRoutines();}
return this.singleton;}};var TwitterRoutines=new Class({follow:function(userId){var callback,ajax;if($_YOTTA_.User.uid==='guest'){window.location=$_YOTTA_.Application.GetApplicationURL('login');return;}
if(userId){console.log('will follow user '+userId+'...');callback=$_YOTTA_.Application.GetCurrentURL();ajax=new Application.Tools.AjaxRequest({url:$_YOTTA_.Application.GetApplicationURL('friend_request.Twitter',{'userId':userId,'returnURL':encodeURIComponent(callback)})});ajax.execute();}},onTwitterAction:function(e,params){console.log('caught social action: ',e);console.log('action: ',params);switch(params.action){case'twitter.follow':console.log('will try following...');Twitter.getSingleton().follow(params.id);break;default:break;}}});
