(function(){var initializing=false,fnTest=/xyz/.test(function(){xyz;})?/\b_super\b/:/.*/;this.gClass=function(){};gClass.extend=function(prop){var _super=this.prototype;initializing=true;var prototype=new this();initializing=false;for(var name in prop){prototype[name]=typeof prop[name]=="function"&&typeof _super[name]=="function"&&fnTest.test(prop[name])?(function(name,fn){return function(){var tmp=this._super;this._super=_super[name];var ret=fn.apply(this,arguments);this._super=tmp;return ret;};})(name,prop[name]):prop[name];} function gClass(){if(!initializing&&this.initialize) this.initialize.apply(this,arguments);} gClass.prototype=prototype;gClass.constructor=gClass;gClass.extend=arguments.callee;return gClass;};})();if(Function.prototype.bind==undefined){jQuery.extend(Function.prototype,{bind:function(what){var thisfunc=this;return function(){thisfunc.apply(what,arguments);}}});} function $E(style,container) {var set=(arguments.length==1)?$ES(style):$ES(style,container);return(set.length>0)?set.pop():null;} function $ES(style,container) {if(arguments.length==1) {container=document;} if(typeof container=='string') {container=$(container);} if(container==null) {return new Array();} else {return Selector.findChildElements(container,$A(new Array(style)));}} var Message={options:{duration:3000,stable:false,onShow:function(){},onComplete:function(){}},showMessage:function(message,container,options){var currentOptions=this.options;jQuery.extend(currentOptions,options);this.renderMessage(message,container);if(currentOptions.stable!=true){setTimeout(function(){Message.renderMessage('',container);if(currentOptions.onComplete){currentOptions.onComplete();}},currentOptions.duration);} if(currentOptions.onShow){currentOptions.onShow();}},renderMessage:function(message,container){if(container.nodeName=='INPUT'){container.value=message;} else {container.innerHTML=message;} return true;}};var GawkerBase=gClass.extend({initialize:function(){},setOptions:function(options){var baseOptions=this.options;this.options=options;for(optionName in baseOptions){if(!this.options[optionName]) {this.options[optionName]=baseOptions[optionName];}}}});var XHR=GawkerBase.extend({options:{type:'POST',dataType:'json',klass:null},initialize:function(options){this.setOptions(options);},send:function(url,queryString){Logger.debugLog(this.options.klass+' sending...');this.options.url=url;this.options.data=queryString;jQuery.ajax(this.options);}});var GawkerWidget=GawkerBase.extend(function(){var EventDispatcherAgent={'observing':[],'eventmap':{},registerEventDispatcher:function(myeventmap){return function(e){var target=jQuery(e.target);for(var control_name in myeventmap){if(myeventmap.hasOwnProperty(control_name)){if(target.hasClass(control_name)){myeventmap[control_name](e);}}}};},doRegisterHandler:function(el,event_type,fn,control_name){el=(el.get?el.get(0):el);var ndx=this.observing.indexOf(el);if(ndx==-1){ndx=this.observing.push(el)-1;this.eventmap['n'+ndx]={};} ndx='n'+ndx;if(!this.eventmap[ndx][event_type]){this.eventmap[ndx][event_type]={'control_types':{}};this.eventmap[ndx][event_type]['realhandler']=this.registerEventDispatcher(this.eventmap[ndx][event_type]['control_types']);jQuery(el)[event_type](this.eventmap[ndx][event_type]['realhandler']);} this.eventmap[ndx][event_type]['control_types'][control_name]=fn;},doTearDownHandler:function(el,event_type,control_name){el=(el.get?el.get(0):el);var ndx=this.observing.indexOf(el);if(ndx>-1){ndx='n'+ndx;if(this.eventmap[ndx]&&this.eventmap[ndx][event_type]){if(this.eventmap[ndx][event_type]['control_types'][control_name]){delete this.eventmap[ndx][event_type]['control_types'][control_name];var clearthis=true;for(var nm in this.eventmap[ndx][event_type]['control_types']){if(this.eventmap[ndx][event_type]['control_types'].hasOwnProperty(nm)){clearthis=false;break;}} if(clearthis)jQuery(el).unbind(event_type,this.eventmap[ndx][event_type]['realhandler']);}}}}};return{options:{},registerEventHandler:function(for_element,eventType,fn){EventDispatcherAgent.doRegisterHandler(for_element,eventType,fn,this.getControlClass());},tearDownEventHandler:function(for_element,eventType){EventDispatcherAgent.doTearDownHandler(for_element,eventType,this.getControlClass());},getControlClass:function(){return this.options.controlClass?this.options.controlClass:'control';},fireEvent:function(event,attributes){if(this.options[event]){this.options[event](attributes);}},setControls:function(){this.controls={};var controlElements=jQuery('.'+this.getControlClass(),this.element);var controlNames=[];for(var i=0;i-1){this.input_fields[parentinput.name][validator_name]=this.setupErrorEffects(el,parentinput.name,validator_name);}}}},testRule:function(params,value){var bindfn=this.options.validators[params[0]].bind(this);return bindfn(value,params[1]);},validate:function(){var success=true;this.errorlist={};for(var i=0;i=parseInt(len,10);},'valid_maxlen':function(value,len){return value.length<=parseInt(len,10);},'valid_nonempty':function(value){var regex=/^[\s\S]+$/;return regex.test(value);},'valid_alpha':function(value){return(value==''||/^[a-zA-Z]+$/.test(value));},'valid_alphanum':function(value){return(value==''||/^\W+$/.test(value));},'valid_number':function(value){return(value==''||/^\d+$/.test(value));},'valid_email':function(value){return(value==''||/\w{1,}[@](([\w\-]{1,}[.])){1,}([\w\-]{2,})$/.test(value));},'valid_url':function(value){return(value==''||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(value));},'valid_date':function(value){var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(value))return false;var d=new Date(value.replace(regex,'$1/$2/$3'));return(parseInt(RegExp.$1,10)==(1+d.getMonth()))&&(parseInt(RegExp.$2,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear());},'valid_sameas':function(value,other_input_id){return value==this.options.scope[0][other_input_id].value;}},effects:{},infields:[],defaultEffects:function(el){return[function(){jQuery(el).removeClass('hide');},function(){jQuery(el).addClass('hide');}];}}});(function($){$.widget('ui.BuddyToggleWidget',$.extend({},GawkerWidget.prototype,{xhr:null,_init:function(){this.registerEventHandler(jQuery(this.options.container),'click',this.handleClick.bind(this));this.xhr=new XHR({klass:'buddytoggle',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},handleClick:function(e){if(jQuery(e.target).hasClass('user-friend-remove')) {this.toggleBuddyStatus(this.getParam('buddyid',jQuery(e.target)),'remove');e.stopPropagation();e.preventDefault();} else if(jQuery(e.target).hasClass('user-friend-follow')){this.toggleBuddyStatus(this.getParam('buddyid',jQuery(e.target)),'follow');e.stopPropagation();e.preventDefault();}},handleAjaxRequest:function(){},handleAjaxSuccess:function(data){jQuery('.buddyid_'+data.objectId).removeClass('user-friend-progress');jQuery('.buddyid_'+data.objectId).toggleClass('hide');},handleAjaxFail:function(){jQuery('.user-friend-progress').removeClass('user-friend-progress');},toggleBuddyStatus:function(buddyId,status){var params={'op':'saveusertag','objectType':'USER','objectId':buddyId};if(status=='follow'){params.tagName='buddy';} else if(status=='remove'){params.unTagName='buddy';} jQuery('.buddyid_'+buddyId).addClass('user-friend-progress');this.xhr.send('/',params);},hideWidget:function(){jQuery('.user-friend-follow').addClass('hide');},showWidget:function(){if(this.options.pagecontroller_instance.auth.user.id!=undefined){jQuery('.user-friend-follow').not('.buddyid_'+this.options.pagecontroller_instance.auth.user.id).removeClass('hide');this.options.pagecontroller_instance.auth.user.buddies.each(function(buddyId){jQuery('.buddyid_'+buddyId).toggleClass('hide');});}},resetWidget:function(){}}));$.extend($.ui.BuddyToggleWidget,{'version':'1.0','defaults':{'action_url':'/','controlClass':'buddycontrol'}});})(jQuery);jQuery.extend(settings.widgets,{buddytoggle:{klass:'BuddyToggleWidget',byselector:{'.commenter_tools':{eventHandlerBuilder:function(container,pagecontroller_instance){},terminating_el:'.commenter_tools_terminating',options:{}}}}});(function($){$.widget('ui.EditorControlsWidget',$.extend({},GawkerWidget.prototype,{controls:{},xhr:null,_init:function(){this.setControls();this.element.bind('click',this.handleClick.bind(this));this.xhr=new XHR({klass:'editorcontrols',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},handleClick:function(e){switch(e.target) {case(this.controls.slurp_toggle[0]):case(this.controls.slurp_cancel[0]):if(this.option('disabled')==false){this.toggleSlurpDialog();} break;case(this.controls.edit_link[0]):return true;break;case(this.controls.slurp_button[0]):if(this.controls.slurp_select[0].value==-1){Message.showMessage('Please select a site',this.controls.slurp_message[0],{});} else {this.controls.slurp_indicator.removeClass('hide');this.xhr.send('/',this.controls.slurp_form.serialize());} break;case(this.controls.draft_link[0]):if(confirm('Delete post?')){var params=[];params.push('op=changepoststatus');params.push('v2=true');params.push('id='+this.getParam(this.controls.draft_link,'postId'));params.push('publishStatus=DRAFT');params.push('realm=');this.xhr.send('/',params.join('&'));} break;} e.stopPropagation();return false;},handleAjaxRequest:function(){this.disableSlurpControls();},handleAjaxSuccess:function(data){if(data.success==true){switch(data.action){case'addsitetag':this.controls.slurp_indicator.addClass('hide');Message.showMessage(data.message,this.controls.slurp_message[0],{onComplete:function(){this.toggleSlurpDialog();this.enable();}.bind(this)});break;}} else {switch(data.action){case'addsitetag':this.controls.slurp_indicator.addClass('hide');Message.showMessage(data.message,this.controls.slurp_message[0]);this.enableSlurpControls();break;}}},handleAjaxFail:function(){},disableSlurpControls:function(){this.disable();jQuery('select, button',this.controls.slurp_form).each(function(i,element){element.disabled=true;});},enableSlurpControls:function(){this.enable();jQuery('select, button',this.controls.slurp_form).each(function(i,element){element.disabled=false;});},hideWidget:function(){this.element.addClass('hide');},showWidget:function(){if(this.options.pagecontroller_instance.auth.user.hasLevel('editors')){this.controls.for_editors.removeClass('hide');var postControlsEnabled=true;} if(this.setupSlurpForm()){var slurpControlEnabled=true;} if(postControlsEnabled||slurpControlEnabled){this.element.removeClass('hide');}},toggleSlurpDialog:function(){if(this.controls.slurp_dialog[0].style.display=='none'){this.enableSlurpControls();this.controls.slurp_form[0].reset();} this.controls.slurp_dialog.slideToggle();},setupSlurpForm:function(){var options=this.controls.slurp_select[0].options;var l=options.length-1;for(var i=l;i>0;i--){if(this.options.pagecontroller_instance.auth.site.siteId==options[i].value||!this.options.pagecontroller_instance.auth.user.hasLevel('editors',options[i].value)){options[i]=null;}} if(options.length<3){options[0]=null;} return(options.length>0);},resetWidget:function(){this.fireEvent('onReset',this);}}));$.extend($.ui.EditorControlsWidget,{version:'1.0',defaults:{}});})(jQuery);jQuery.extend(settings.widgets,{editorcontrols:{klass:'EditorControlsWidget',byselector:{'.editor_controls':{eventHandlerBuilder:function(container,pagecontroller_instance){return{};},terminating_el:'.terminating'}}}});(function($){$.widget("ui.GawkerAuth",$.extend({},GawkerWidget.prototype,{user:{},site:{},geoip:'',authenticated:false,xhr:null,_init:function(){this.xhr=new XHR({klass:'auth',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},getUserState:function(){this.xhr.send(this.options.action_url);},setUser:function(user){if(user){this.user=user;this.authenticated=true;}else{this.user=null;this.authenticated=false;}},setSite:function(site){if(site){this.site=site;}else{this.site=null;}},handleAjaxRequest:function(){this.fireEvent('onAjaxRequest');},handleAjaxFail:function(){this.fireEvent('onAuthFailure');},handleAjaxSuccess:function(data){this.setSite(data.site);this.geoip=data.geoip;if(data.action=='userstate'&&data.success==true) {data.user.hasLevel=function(level,siteId){if(siteId==undefined){siteId='current';} var levels=['removedusers','pendingusers','maybeusers','users','commenters','authors','commentadmins','editors','superusers'];return(jQuery.inArray(this.level[siteId],levels)>=jQuery.inArray(level,levels));};this.setUser(data.user);this.fireEvent('onAuthSuccess',{'data':data,'widget':this});} else {this.setUser({});this.fireEvent('onAuthFailure',{'data':data,'widget':this});}}}));$.extend($.ui.GawkerAuth,{version:'1.0',defaults:{}});})(jQuery);jQuery.extend(settings,{auth_options:{options:{action_url:'/?op=ajax_userstate'},eventHandlerBuilder:function(pagecontroller_instance){return{onAjaxRequest:function(args){},onAuthSuccess:function(args){pagecontroller_instance.onAuthSuccess({pc:pagecontroller_instance,userdata:args.data});},onAuthFailure:function(args){pagecontroller_instance.onAuthFailure({pc:pagecontroller_instance});}};}}});(function($){$.widget('ui.LoginWidget',$.extend({},GawkerWidget.prototype,{logintoggle:null,loginTimeout:null,validator:null,xhr:null,_init:function(){this.setControls();if(jQuery(this.options.selectors.logintoggle)) {this.logintoggle=jQuery(this.options.selectors.logintoggle);this.logintoggle.bind('click',function(event){return this.toggleWidget(event);}.bind(this));} this.controls.op_switch[0].value='ajax_login';this.validator=new Validator(jQuery.extend({},this.options.validator_options,{'scope':this.controls.login_form}));this.controls.username.bind('keyup',function(event){clearTimeout(this.loginTimeout);if(this.controls.username[0].value==''){this.loginTimeout=setTimeout(function(){this.logintoggle.trigger('click');}.bind(this),5000);}}.bind(this));this.controls.login_form.bind('submit',this.handleSubmit.bind(this));this.xhr=new XHR({klass:'login',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});this.enableInputs();},handleSubmit:function(e){if(this.validator.validate()) {this.sendXHR();this.disableInputs();} else {if(this.options.show_validation_errors) {this.fireEvent('onLoginFailure',{'data':{'message':'Enter your username and password'},'widget':this});} this.enableInputs();} clearTimeout(this.loginTimeout);e.stopPropagation();return false;},doLogin:function(credentials){this.controls.username[0].value=credentials.username;this.controls.password[0].value=credentials.password;this.controls.redirect_to[0].value=credentials.returnto;this.controls.remember[0].value=(credentials.remember==true)?1:0;this.sendXHR();},sendXHR:function(){this.xhr.send(this.options.action_url,this.controls.login_form.serialize());},handleAjaxRequest:function(){if(this.controls.indicator.length>0){this.controls.indicator.removeClass('hide');}},handleAjaxSuccess:function(data){if(data.action=='login'&&data.success==true){this.fireEvent('onLoginSuccess',{'data':data,'widget':this});} else {this.fireEvent('onLoginFailure',{'data':data,'widget':this});} this.enableInputs();},handleAjaxFail:function(){this.enableInputs();this.fireEvent('onAjaxFailure',this);},disableInputs:function(){jQuery('input:text, input:password',this.controls.login_form[0]).each(function(i,element){element.disabled=true;});},enableInputs:function(){jQuery('input:text, input:password',this.controls.login_form[0]).each(function(i,element){element.disabled=false;});},showWidget:function(){if(this.logintoggle){this.logintoggle.removeClass('hide');}},hideWidget:function(){if(this.logintoggle){this.logintoggle.addClass('hide');}},resetWidget:function(formContainer){if(!formContainer)formContainer=this.controls.login_form[0];jQuery('input:text, input:password, textarea',formContainer).each(function(i,element){element.value='';});},toggleWidget:function(e) {e.stopPropagation();var toggleButton=(jQuery(e.target).hasClass(this.options.selectors.logintoggle))?jQuery(e.target):jQuery(e.target).parents(this.options.selectors.logintoggle);var tabName=this.getParam('toggletab',toggleButton);var toggleElement=jQuery('.panel_'+tabName);if(!toggleElement){Logger.debugLog('Configured panel not found!');return false;} if(toggleElement[0].style.display=='none') {if(this.options.switch_tabs){jQuery(this.options.selectors.loginbox_tab).addClass(this.options.unselected_class).filter('.commentformtab_'+tabName).removeClass(this.options.unselected_class);jQuery('.'+this.options.selected_class,jQuery(this.options.selectors.loginbox_tab)).trigger('click');toggleButton.addClass(this.options.selected_class);} this.resetWidget(toggleElement);toggleElement.slideDown(300);if(toggleButton.hasClass(this.options.autocollapse_class)){this.loginTimeout=setTimeout(function(){this.trigger('click');}.bind(toggleButton),5000);} jQuery(this.options.selectors.focusedInput,toggleElement).focus();} else {clearTimeout(this.loginTimeout);toggleElement.slideUp(300);if(this.options.switch_tabs){toggleButton.removeClass(this.options.selected_class);}} return false;}}));$.extend($.ui.LoginWidget,{version:'1.0',defaults:{selectors:{},show_validation_errors:true,action_url:'/'}});})(jQuery);jQuery.extend(settings.widgets,{login:{klass:'LoginWidget',byselector:{'.menubar_login_container':{eventHandlerBuilder:function(container,pagecontroller_instance){return{onLoginSuccess:function(args){args.widget.controls.indicator.addClass('hide');Message.showMessage(args.data.message,args.widget.controls.message[0],{stable:true,onShow:function() {jQuery('#topnavbarHelp').addClass('hide');if(args.data.redirect_to&&args.data.redirect_to!=''&&window.location!=args.data.redirect_to){window.location=args.data.redirect_to;} else {window.location.reload();}}});},onLoginFailure:function(args){args.widget.controls.indicator.addClass('hide');Message.showMessage(args.data.message,args.widget.controls.message[0],{onShow:function() {jQuery('#topnavbarHelp').addClass('hide');},onComplete:function() {jQuery('#topnavbarHelp').removeClass('hide');}});}};},terminating_el:'.terminating',options:{switch_tabs:false,selectors:{logintoggle:'.menubar_login_toggle'},autocollapse_class:'autocollapse'}},'.commentform_login_container':{eventHandlerBuilder:function(container,pagecontroller_instance){return{onLoginSuccess:function(args){args.widget.controls.indicator.addClass('hide');Message.showMessage(args.data.message,args.widget.controls.message[0],{stable:true,onShow:function() {document.location.hash='loggedin';window.location.reload();}});},onLoginFailure:function(args){args.widget.controls.indicator.addClass('hide');Message.showMessage(args.data.message,args.widget.controls.message[0],{onShow:function() {},onComplete:function() {}});}};},terminating_el:'.terminating',options:{switch_tabs:true,selectors:{logintoggle:'.commentform_toggle',loginbox_tab:'.commentform_tabbar li',focusedInput:'.autofocus'},autocollapse_class:'autocollapse',selected_class:'selected',unselected_class:'unselected'}}}}});(function($){$.widget('ui.LogoutWidget',$.extend({},GawkerWidget.prototype,{_init:function(){this.container=this.options.container;this.logoutanchor=jQuery(this.options.selectors.logoutanchor,this.container);this.logoutanchor=this.container;this.logoutanchor.observe('click',this.handleLogoutClick.bind(this));this.xhr=new XHR({klass:'logout',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},handleLogoutClick:function(e){e.stop();var auth=this.options.pagecontroller_instance.auth;if(auth.site.facebook_connect.enabled==true&&auth.user.fb_uid!=undefined) {fbLogout();} else {this.xhr.send(this.options.action_url,null);}},handleAjaxRequest:function(){this.fireEvent('onAjaxRequest',this);},handleAjaxFail:function(){this.fireEvent('onAjaxFailure',this);},handleAjaxSuccess:function(data){if(data.action=='logout'&&data.success==true) {this.fireEvent('onLogoutSuccess',{'data':data,'widget':this});} else {this.fireEvent('onLogoutFailure',{'data':data,'widget':this});}},hideWidget:function(){this.fireEvent('onHide',this);},showWidget:function(){this.fireEvent('onShow',this);},fastHide:function(){this.options.container.addClass('hide');},fastShow:function(){this.options.container.removeClass('hide');},resetWidget:function(){this.fireEvent('onReset',this);}}));$.extend($.ui.LogoutWidget,{version:'1.0',defaults:{container:null,selectors:{logoutanchor:''},onAjaxRequest:function(widget){widget.logoutanchor.innerHTML='logging out...';},onAjaxFailure:function(widget){widget.logoutanchor.innerHTML='logout';},onLogoutSuccess:function(args){args.widget.logoutanchor.innerHTML='logged out.';args.widget.hideWidget();},onLogoutFailure:function(args){args.widget.logoutanchor.innerHTML='logout';},onHide:function(widget){widget.options.container.addClass('hide');},onShow:function(widget){widget.options.container.removeClass('hide');},action_url:''}});})(jQuery);jQuery.extend(settings.widgets,{logout:{klass:'LogoutWidget',byselector:{'.menubar_logout_container':{eventHandlerBuilder:function(container,pagecontroller_instance){return{onLogoutSuccess:function(args){args.widget.logoutanchor.innerHTML='logged out';window.location.reload();},onLogoutFailure:function(args){args.widget.logoutanchor.innerHTML='logout failed';},onAjaxRequest:function(widget){widget.logoutanchor.innerHTML='logging out...';},onShow:function(widget){jQuery(widget.element).removeClass('hide');},onHide:function(widget){jQuery(widget.element).addClass('hide');},onReset:function(widget){jQuery(widget.logoutanchor).setHTML('Logout');}};},terminating_el:'.terminating',options:{selectors:{logoutanchor:'.menubar_logout_container'},action_url:'/?op=ajax_logout'}},'.logout_div_aftercomments':{eventHandlerBuilder:function(container,pagecontroller_instance){var fb=jQuery('.feedbackmessage-aftercomments');var fb_fx=new Fx.Style(fb,'left',{duration:1200,transition:Fx.Transitions.Elastic.easeInOut});var showhidefx=new Fx.Style(container,'opacity',{transition:Fx.Transitions.Elastic.easeInOut,duration:1200});return{onLogoutSuccess:function(args){fb.innerHTML='you\'ve logged out';args.widget.logoutanchor.setHTML('logged out.');pagecontroller_instance.fireEvent('onLogout',{pc:pagecontroller_instance});return fb_fx.start.delay(2000,fb_fx,[340,-500]);},onLogoutFailure:function(args){fb.innerHTML='logout failed.';args.widget.logoutanchor.setHTML('logout');fb_fx.start.delay(2000,fb_fx,[340,-500]);},onShow:function(widget){showhidefx.set(0);widget.container.removeClass('hide');return showhidefx.start(0,1);},onHide:function(widget){return showhidefx.start(1,0).chain(function(){widget.container.addClass('hide');this.callChain();});},onReset:function(widget){widget.logoutanchor.setHTML('logout');},onAjaxRequest:function(widget){widget.logoutanchor.setHTML('logging out');fb.innerHTML='logging out...';return fb_fx.start(-500,340);}};},options:{selectors:{logoutanchor:'.logout_link'},action_url:'?op=ajax_logout'}}}}});(function($){$.widget('ui.PostClipWidget',$.extend({},GawkerWidget.prototype,{xhr:null,_init:function(){this.setControls();this.registerEventHandler(this.element,'click',this.handleClick.bind(this));this.xhr=new XHR({klass:'postclip',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},handleClick:function(e){this.togglePostClip(jQuery(e.target));e.stopPropagation();e.preventDefault();},handleAjaxRequest:function(){},handleAjaxSuccess:function(data){jQuery('.clipid_'+data.objectId).removeClass('clip-toggle-progress');if(data.command=='tag'){jQuery('.clipid_'+data.objectId).removeClass('clip-toggle-off').addClass('clip-toggle-on').attr({'title':'Un-clip this article'});}else{jQuery('.clipid_'+data.objectId).removeClass('clip-toggle-on').addClass('clip-toggle-off').attr({'title':'Clip this article'});jQuery('#event_'+data.objectId).fadeOut();}},handleAjaxFail:function(){jQuery('.clip-toggle-progress').removeClass('clip-toggle-progress');},togglePostClip:function(element){var params={'op':'saveusertag','objectType':'POST','objectId':this.getParam('clipid',element)};if(element.hasClass('clip-toggle-on')){params.unTagName='favorite';}else{params.tagName='favorite';} this.controls.postcliptoggle.addClass('clip-toggle-progress');this.xhr.send('/',params);},hideWidget:function(){jQuery('.clip-toggle-on, .clip-toggle-off').addClass('hide');},showWidget:function(){if(this.options.pagecontroller_instance.auth.user.id!=undefined&&this.controls.postcliptoggle){this.controls.postcliptoggle.removeClass('clip-toggle-on').addClass('clip-toggle-off').attr({'title':'Clip this article'});this.options.pagecontroller_instance.auth.user.clipped.each(function(item,key){jQuery('.clipid_'+item).removeClass('clip-toggle-off').addClass('clip-toggle-on').attr({'title':'Un-clip this article'});});this.controls.postcliptoggle.removeClass('hide');}},resetWidget:function(){}}));$.extend($.ui.PostClipWidget,{'version':'1.0','defaults':{'action_url':'/','controlClass':'postclipcontrol'}});})(jQuery);jQuery.extend(settings.widgets,{postclip:{klass:'PostClipWidget',byselector:{'.commenter_tools':{eventHandlerBuilder:function(container,pagecontroller_instance){},terminating_el:'.commenter_tools_terminating',options:{}}}}});(function($){$.widget('ui.ProfileWidget',$.extend({},GawkerWidget.prototype,{_init:function(){this.element.bind('click',function(event){this.handleClick(event);}.bind(this));},handleClick:function(e){e.stopPropagation();window.location='/profile/'+this.options.pagecontroller_instance.auth.user.username;},hideWidget:function(){this.element.addClass('hide');},showWidget:function(){this.element.removeClass('hide');},resetWidget:function(){}}));$.extend($.ui.ProfileWidget,{version:'1.0',defaults:{}});})(jQuery);jQuery.extend(settings.widgets,{profile:{klass:'ProfileWidget',byselector:{'.menubar_profile_container':{eventHandlerBuilder:function(container,pagecontroller_instance){return{};},terminating_el:'.terminating',options:{}}}}});(function($){$.widget('ui.ProfileEditorWidget',$.extend({},GawkerWidget.prototype,{validator:null,xhr:null,_init:function(){this.setControls();jQuery(this.element[0]).accordion({'autoHeight':false});this.controls.profileEditorForm.bind('submit',this.handleSubmit.bind(this));this.controls.passwordEditorForm.bind('submit',this.handleSubmit.bind(this));var profileValidator=new Validator(jQuery.extend({},this.options.validator_options,{'scope':this.controls.profileEditorForm}));this.controls.profileEditorForm.data('validator',profileValidator);this.controls.profileEditorForm.data('indicator',this.controls.profileIndicator);var passwordValidator=new Validator(jQuery.extend({},this.options.validator_options,{'scope':this.controls.passwordEditorForm}));this.controls.passwordEditorForm.data('validator',passwordValidator);this.controls.passwordEditorForm.data('indicator',this.controls.passwordIndicator);this.xhr=new XHR({klass:'profileeditor',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},setUser:function(user){for(groupId in user.groups){if(user.groups[groupId].name=='removedusers'){this.controls.screenNameRO.removeClass('hide');return true;}} this.controls.screenNameRW.removeClass('hide');return true;},handleSubmit:function(e){jQuery(e.target).data('validator').hideErrors();this.controls.profileMessage[0].innerHTML='';this.controls.passwordMessage[0].innerHTML='';if(jQuery(e.target).data('validator').validate()){jQuery(e.target).data('indicator').removeClass('hide');this.xhr.send(this.options.action_url,jQuery(e.target).serialize());} else {if(this.options.show_validation_errors){jQuery(e.target).data('validator').showErrors();}} return false;},handleAjaxRequest:function(){this.disableInputs();},handleAjaxSuccess:function(data){switch(data.action) {case'setprofile':var messageContainer=this.controls.profileMessage;break;case'setpassword':var messageContainer=this.controls.passwordMessage;break;} Message.showMessage(data.message,messageContainer[0],{stable:!data.success});this.controls.profileIndicator.addClass('hide');this.controls.passwordIndicator.addClass('hide');this.enableInputs();},handleAjaxFail:function(){var message='Error occurred, please try again later.';Message.showMessage(message,this.controls.profileMessage[0]);Message.showMessage(message,this.controls.passwordMessage[0]);this.controls.profileIndicator.addClass('hide');this.controls.passwordIndicator.addClass('hide');this.enableInputs();},hideWidget:function(){},showWidget:function(){},resetWidget:function(){},disableInputs:function(){jQuery('input:text, input:password',this.element).each(function(i,element){element.disabled=true;});},enableInputs:function(){jQuery('input:text, input:password',this.element).each(function(i,element){element.disabled=false;});}}));$.extend($.ui.ProfileEditorWidget,{version:'1.0',defaults:{show_validation_errors:true,action_url:'/'}});})(jQuery);jQuery.extend(settings.widgets,{profileeditor:{klass:'ProfileEditorWidget',byselector:{'#profileEditor':{eventHandlerBuilder:function(container,pagecontroller_instance){},terminating_el:'.terminating',options:{}}}}});(function($){$.widget('ui.RatingWidget',$.extend({},GawkerWidget.prototype,{actualRating:null,xhr:null,_init:function(){this.setControls();this.element.bind('mouseout',function(event){return this.handleMouseout(event);}.bind(this));this.element.bind('mouseover',function(event){return this.handleMouseover(event);}.bind(this));this.element.bind('click',function(event){return this.handleClick(event);}.bind(this));this.xhr=new XHR({klass:'rating',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},handleMouseover:function(e){for(var i=0;i0) {this.controls.replycount[0].innerHTML=this.options.pagecontroller_instance.auth.user.reply_count;this.element.removeClass('hide');}},resetWidget:function(){}}));$.extend($.ui.ReplycountWidget,{version:'1.0',defaults:{}});})(jQuery);jQuery.extend(settings.widgets,{replycount:{klass:'ReplycountWidget',byselector:{'.menubar_replycount_container':{eventHandlerBuilder:function(container,pagecontroller_instance){return{};},terminating_el:'.terminating',options:{}}}}});(function($){$.widget('ui.ResetPasswordWidget',$.extend({},GawkerWidget.prototype,{validator:null,xhr:null,_init:function(){this.setControls();this.controls.form.bind('submit',this.handleSubmit.bind(this));this.validator=new Validator(jQuery.extend({},this.options.validator_options,{'scope':this.controls.form}));this.xhr=new XHR({klass:'resetpassword',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},handleSubmit:function(e){this.validator.hideErrors();if(this.validator.validate()){this.xhr.send(this.options.action_url,jQuery(e.target).serialize());} else {if(this.options.show_validation_errors){this.validator.showErrors();}} return false;},handleAjaxRequest:function(){this.disableInputs();this.controls.indicator.removeClass('hide');},handleAjaxSuccess:function(data){Message.showMessage(data.message,this.controls.message[0],{stable:true});this.enableInputs();this.controls.indicator.addClass('hide');},handleAjaxFail:function(){var message='Error occurred, please try again later.';Message.showMessage(message,this.controls.message[0]);this.controls.indicator.addClass('hide');this.enableInputs();},hideWidget:function(){},showWidget:function(){},resetWidget:function(){},disableInputs:function(){jQuery('input',this.element).each(function(i,element){element.disabled=true;});},enableInputs:function(){jQuery('input',this.element).each(function(i,element){element.disabled=false;});}}));$.extend($.ui.ResetPasswordWidget,{version:'1.0',defaults:{show_validation_errors:true,action_url:'/'}});})(jQuery);jQuery.extend(settings.widgets,{resetpassword:{klass:'ResetPasswordWidget',byselector:{'#resetPassword':{eventHandlerBuilder:function(container,pagecontroller_instance){},terminating_el:'.terminating',options:{}}}}});(function($){$.widget('ui.StatusUpdateWidget',$.extend({},GawkerWidget.prototype,{_init:function(){this.setControls();this.controls.toggle.bind('click',this.toggleStatusForm.bind(this));this.controls.cancel.bind('click',this.cancelUpdate.bind(this));this.controls.statusForm.bind('submit',this.submitUpdate.bind(this));this.controls.submit.bind('click',this.submitUpdate.bind(this));this.xhr=new XHR({klass:'statusupdate',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},cancelUpdate:function(){this.toggleStatusForm();this.resetWidget();return false;},submitUpdate:function(e){e.stopPropagation();if(this.isEnabled()){this.xhr.send(this.options.action_url,this.controls.statusForm.serialize());} return false;},handleAjaxRequest:function(){this.disable();this.toggleIndicator();this.toggleButtons();},handleAjaxFail:function(){this.enable();this.toggleIndicator();this.toggleButtons();},handleAjaxSuccess:function(data){if(data.action=='setprofile'&&data.success==true){this.fireEvent('onUpdateSuccess',{'data':data,'widget':this});}else{this.fireEvent('onUpdateFailure',{'data':data,'widget':this});}},toggleStatusForm:function(){this.controls.toggle.toggleClass('hide');this.controls.statusForm.toggleClass('hide');return false;},toggleIndicator:function(){this.controls.indicator.toggleClass('hide');},toggleButtons:function(){this.controls.submit.toggleClass('hide');this.controls.cancel.toggleClass('hide');},showWidget:function(){this.element.removeClass('hide');},hideWidget:function(){this.element.addClass('hide');},resetWidget:function(){this.controls.status[0].value=this.controls.originalStatus[0].innerHTML;}}));$.extend($.ui.StatusUpdateWidget,{version:'1.0',defaults:{action_url:'/?op=setstatusupdate'}});})(jQuery);jQuery.extend(settings.widgets,{statusupdate:{klass:'StatusUpdateWidget',byselector:{'.statusUpdateWidget':{eventHandlerBuilder:function(container,pagecontroller_instance){return{onUpdateSuccess:function(args){args.widget.controls.originalStatus[0].innerHTML=args.widget.controls.status[0].value;args.widget.enable();args.widget.toggleStatusForm();args.widget.toggleIndicator();args.widget.toggleButtons();},onUpdateFailure:function(args){args.widget.toggleIndicator();Message.showMessage(args.data.message,args.widget.controls.message[0],{stable:false,onComplete:function(){args.widget.toggleButtons();args.widget.enable();}});}};},terminating_el:'.terminating',options:{}}}}});(function($){$.widget('ui.StarInviteWidget',$.extend({},GawkerWidget.prototype,{xhr:null,_init:function(){this.setControls();this.controls.email.bind('blur',this.inputBlur.bind(this));this.controls.email.bind('focus',this.inputFocus.bind(this));this.controls.toggle.bind('click',this.toggleForm.bind(this));this.controls.form.bind('submit',this.handleSubmit.bind(this));this.xhr=new XHR({klass:'starinvite',beforeSend:this.handleAjaxRequest.bind(this),error:this.handleAjaxFail.bind(this),success:this.handleAjaxSuccess.bind(this)});},handleSubmit:function(e){this.xhr.send(this.options.action_url,this.controls.form.serialize());e.stopPropagation();return false;},handleAjaxRequest:function(){this.controls.indicator.removeClass('hide');this.disableInputs();},handleAjaxSuccess:function(data){this.clearMessages();this.controls.indicator.addClass('hide');this.enableInputs();if(data.success==true){Message.showMessage(data.message,this.controls.message[0],{stable:false,onComplete:function(){this.toggleForm();this.hideWidget();}.bind(this)});} else {Message.showMessage(data.message,this.controls.message[0],{stable:true});for(var i=0;i<3;i++){if(data.errorMessage[i]!=''){this.controls.emailmessage[i].innerHTML=data.errorMessage[i];jQuery(this.controls.emailmessage[i]).removeClass('hide');}}}},handleAjaxFail:function(){},inputBlur:function(e){if(e.target.value==''){jQuery(e.target).addClass('themEmail');}},inputFocus:function(e){jQuery(e.target).removeClass('themEmail');},clearMessages:function(){this.controls.message[0].innerHTML='';this.controls.emailmessage.each(function(i,element){element.innerHTML='';jQuery(element).addClass('hide');});},disableInputs:function(){this.disable();jQuery('input, button',this.controls.form).each(function(i,element){element.disabled=true;});},enableInputs:function(){this.enable();jQuery('input, button',this.controls.form).each(function(i,element){element.disabled=false;});},hideWidget:function(){this.element.addClass('hide');},showWidget:function(){var inviteSent=Cookie.get('starInviteSent');if(inviteSent!=1){if(this.options.pagecontroller_instance.auth.user.starCommenter==true||this.options.pagecontroller_instance.auth.user.hasLevel('editors')){this.element.removeClass('hide');}} this.resetWidget();},toggleForm:function(e){if(e!=undefined){e.stopPropagation();} this.controls.formcontainer.slideToggle();return false;},resetWidget:function(){this.clearMessages();this.controls.form[0].reset();}}));$.extend($.ui.StarInviteWidget,{version:'1.0',defaults:{action_url:'/'}});})(jQuery);jQuery.extend(settings.widgets,{starinvite:{klass:'StarInviteWidget',byselector:{'#ganjaStarInviteContainer':{eventHandlerBuilder:function(container,pagecontroller_instance){return{};},terminating_el:'.terminating',options:{}}}}});settings.widgets.login.byselector['.menubar_login_container'].options.validator_options=settings.validator_options;settings.widgets.login.byselector['.commentform_login_container'].options.validator_options=settings.validator_options;settings.widgets.profileeditor.byselector['#profileEditor'].options.validator_options=settings.validator_options;settings.widgets.register.byselector['#registerForm'].options.validator_options=settings.validator_options;settings.widgets.resetpassword.byselector['#resetPassword'].options.validator_options=settings.validator_options;var PageController=GawkerWidget.extend({options:{},widgets:{},fn_queue:{},stop_periodicals:false,gwIds:{},auth:null,onInit:function(){Logger.debugLog('PageController onInit');},onLogin:function(args){Logger.debugLog('PageController onLogin');this.auth.setUser(args.userdata.user);this.doStateTransition('login',function(it){it.hideWidget();});this.doStateTransition('logout',function(it){it.showWidget();});this.doStateTransition('profile',function(it){it.showWidget();});this.doStateTransition('replycount',function(it){it.showWidget();});},onLogout:function(args){Logger.debugLog('PageController onLogout');this.auth.setUser(null);this.doStateTransition('login',function(it){it.showWidget();});this.doStateTransition('logout',function(it){it.hideWidget();});this.doStateTransition('profile',function(it){it.hideWidget();});this.doStateTransition('replycount',function(it){it.hideWidget();});},onAuthSuccess:function(args){Logger.debugLog('PageController onAuthSuccess');this.doStateTransition('login',function(it){it.hideWidget();});this.doStateTransition('logout',function(it){it.showWidget();});this.doStateTransition('profile',function(it){it.showWidget();});this.doStateTransition('replycount',function(it){it.showWidget();});},onAuthFailure:function(args){Logger.debugLog('PageController onAuthFailure');this.doStateTransition('login',function(it){it.showWidget();});this.doStateTransition('logout',function(it){it.hideWidget();});this.doStateTransition('profile',function(it){it.hideWidget();});this.doStateTransition('replycount',function(it){it.hideWidget();});},onGetUserState:function(){},initialize:function(options){this.setOptions(options);this.setupWidgets();authOptions=this.options.auth_options.options;jQuery.extend(authOptions,this.options.auth_options.eventHandlerBuilder(this));jQuery().GawkerAuth(authOptions);this.auth=jQuery().data('GawkerAuth');this.auth.getUserState();this.onInit();jQuery().ajaxStop(function(){this.cleanWidgets();}.bind(this));},setupWidgets:function(){for(var widgettype in this.options.widgets){if(this.options.widgets.hasOwnProperty(widgettype)){if(!this.widgets[widgettype]){this.widgets[widgettype]=[];this.fn_queue[widgettype]=[];} var setupFunction=this.setupWidgetGroup.bind(this,this.options.widgets[widgettype],widgettype);jQuery().at_intervals(setupFunction,{name:widgettype,delay:settings.scan_interval});}}},cleanWidgets:function(){Logger.debugLog('checking widgets');for(var widgettype in this.options.widgets){oldWidgets=[];if(this.widgets[widgettype]&&this.widgets[widgettype].length>0){for(var i=0;i0){oldWidgets.push(this.widgets[widgettype][i]);}} this.widgets[widgettype]=oldWidgets;}} this.setupWidgets();},finishSetup:function(){Logger.debugLog('finish setup fires');this.stop_periodicals=true;var clipping=jQuery('.clipping_control');if(clipping.length>0&&this.auth.user.username!=null) {clipping[0].style.display='inline';} if(this.auth.user&&this.auth.user.hasLevel&&this.auth.user.hasLevel('editors')){new PostStatusToggler($('content'),PostStatusToggler.default_options);}},doStateTransition:function(widgettype,fn){if(this.widgets[widgettype]) {for(var i=0,l=this.widgets[widgettype].length;i0){Logger.debugLog('found new widget '+widgettype+'['+selector+']');jQuery(selector).addClass('gawkerWidget_'+widgettype);jQuery(selector).addClass('gwId_'+this.gwId());var myoptions=jQuery.extend(widgetoptions.byselector[selector].options,{container:containers[i]});if(widgetoptions.byselector[selector].eventHandlerBuilder){jQuery.extend(myoptions,widgetoptions.byselector[selector].eventHandlerBuilder(containers[i],this));}else{jQuery.extend(myoptions,widgetoptions.eventHandlerBuilder(containers[i],this));} jQuery.extend(myoptions,{'pagecontroller_instance':this});jQuery(selector)[widgetoptions['klass']](myoptions);var brandnew_widget=jQuery(selector).data(widgetoptions['klass']);this.widgets[widgettype].push(brandnew_widget);for(var ii=0,ll=this.fn_queue[widgettype].length;ii