/*    HTTP Host:  static.ak.fbcdn.net                                          */
/*    Generated:  June 10th 2009 4:16:35 PM PDT                                */
/*      Machine:  10.16.140.106                                                */
/*       Source:  Global Cache                                                 */
/*     Location:  js/chat/options.js h:4feimtru                                */
/*       Locale:  en_US                                                        */
/*         Path:  js/chat/options.js                                           */


function ChatOptions(visibility,settings){this.visibility=visibility;this.settings=settings;this._init();}
ChatOptions.prototype={_init:function(){this.visibilityHandlers=[];presence.registerStateStorer(this._storeState.bind(this));presence.registerStateLoader(this._loadState.bind(this));},registerVisibilityHandler:function(fn){this.visibilityHandlers.push(fn);},_storeState:function(presenceState){presenceState.vis=this.visibility;presenceState.smf=this.getSetting('minifeed');presenceState.bls=this.getSetting('sticky_buddylist');presenceState.blc=this.getSetting('compact_buddylist');presenceState.snd=this.getSetting('sound');return presenceState;},_loadState:function(presenceState){if(presenceState.vis!=this.visibility){this.setVisibility(presenceState.vis);}
this.setSetting('minifeed',presenceState.smf);this.setSetting('sticky_buddylist',presenceState.bls);this.setSetting('compact_buddylist',presenceState.blc);this.setSetting('sound',presenceState.snd);},setVisibility:function(visibility){if(visibility==this.visibility){return;}
this.visibility=visibility;if(visibility){channelManager.isActionRequest=true;channelManager.rebuild(ChannelRebuildReasons.UIRestart);}else{if(!chatDisplay.gatedFeatures['invisible_channel']){channelManager.setReady(false);}}
for(var i=0;i<this.visibilityHandlers.length;i++){this.visibilityHandlers[i]();}},_onVisibilityResponse:function(newVisibility,response){presence.pauseSync();this.setVisibility(newVisibility);if(!presence.inPopoutWindow&&!newVisibility){chatDisplay.unfocus();}
presence.resumeSync();if(presence.poppedOut){presence.popout();}},_onVisibilityError:function(response){var chat=_tx("Chat");presence.showAsyncError(response,_tx("Couldn't set {Chat} availability",{'Chat':chat}));},toggleVisibility:function(){this.sendVisibility(!this.visibility);},sendVisibility:function(visibility){if(this.visibility==visibility){return;}
this.visibilityAsync=new AsyncRequest().setHandler(this._onVisibilityResponse.bind(this,visibility)).setErrorHandler(this._onVisibilityError.bind(this)).setTransportErrorHandler(this._onVisibilityError.bind(this)).setData({'visibility':visibility}).setURI(chatDisplay.settingsURL).send();},getSetting:function(name){return this.settings[name];},setSetting:function(name,value){if(this.getSetting(name)==value){return;}
if(name=='minifeed'){chatDisplay.reloadTabs();}
if(name=='compact_buddylist'){buddyList.setCompactDisplay(value);}
this.settings[name]=value;}};

if (window.Bootloader) { Bootloader.done(["js\/chat\/options.js"]); }