/*
HTTP Host: static.ak.fbcdn.net
Generated: March 22nd 2010 4:19:10 AM PDT
Machine: 10.16.140.107
Locale: nu_ll
Path: js/ydir8cghkis0gkco.pkg.js
*/

if (window.CavalryLogger) { CavalryLogger.start_js(["js\/ydir8cghkis0gkco.pkg.js"]); }

Arbiter.inform("template\/registerTemplate", {"name":"\/gigaboxx\/templates\/GBSearchBox.tmpl","template":"\n<form bindPoint=\"root\" listen=\"submit: searchSubmit\" class=\"GBSearchBox\">\n  <span class=\"GBSearchBox_Input\">\n    <input bindPoint=\"typeahead\"\n              listen=\"focus: searchFocus\"\n                name=\"q\"\n           maxlength=\"100\"\n             results=\"0\"\n        autocomplete=\"off\"\n         placeholder=\"${placeholder}\"\/>\n  <\/span>\n  <span class=\"GBSearchBox_Submit\">\n    <a bindPoint=\"submit\" listen=\"click: searchSelectSubmit\" class=\"GBSearchBox_SubmitLink\" href=\"#\">\n      <span class=\"GBSearchBox_Button\">&nbsp;<\/span>\n    <\/a>\n  <\/span>\n<\/form>\n"}, Arbiter.BEHAVIOR_PERSISTENT);
Arbiter.inform("template\/registerTemplate", {"name":"\/gigaboxx\/templates\/ThreadMessageRow.tmpl","template":"\n<div bindPoint=\"root\" class=\"GBThreadMessageRow clearfix\">\n  <div class=\"GBThreadMessageRow_Image\">\n    <a class=\"GBThreadMessageRow_Image_Link\" href=\"${author_href}\">\n      <img class=\"UIProfileImage UIProfileImage_Large\" src=\"${author_image_src}\" \/>\n    <\/a>\n  <\/div>\n\n  <div class=\"GBThreadMessageRow_Main\">\n    <div class=\"GBThreadMessageRow_Info\">\n      <span bindPoint=\"authorLinkWrapper\" class=\"GBThreadMessageRow_AuthorLink_Wrapper\">\n        <a class=\"GBThreadMessageRow_AuthorLink\" href=\"${author_href}\">${author_name}<\/a>\n      <\/span>\n      <span class=\"GBThreadMessageRow_Date\">\n        ${message_date}\n      <\/span>\n      <span class=\"GBThreadMessageRow_BranchLink\" bindPoint=\"branchLinkWrapper\"><\/span>\n      <span class=\"GBThreadMessageRow_ReportLink\" bindPoint=\"reportLinkWrapper\"><\/span>\n    <\/div>\n    <div class=\"GBThreadMessageRow_Body\">\n      <div class=\"GBThreadMessageRow_Body_Content\">\n        $H{message_body}\n      <\/div>\n      <div class=\"GBThreadMessageRow_ReferrerLink\">\n        $H{message_referrer}\n      <\/div>\n      <div class=\"GBThreadMessageRow_Body_Attachment\">\n        $H{message_attachment}\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n"}, Arbiter.BEHAVIOR_PERSISTENT);
Arbiter.inform("template\/registerTemplate", {"name":"\/gigaboxx\/templates\/ThreadRow.tmpl","template":"\n<div bindPoint=\"root\" class=\"GBThreadRow\">\n  <table bindPoint=\"thread_row\" id=\"${id}\" cellpadding=\"0\">\n    <tr>\n      <td class=\"badge_column\">\n        <a href=\"\"\n           class=\"badge\"\n           bindPoint=\"badge\"\n           listen=\"click: toggleUnread\"\n           onselectstart=\"return false;\"><\/a>\n      <\/td>\n      <td class=\"checkbox\" onselectstart=\"return false;\">\n        <label bindPoint=\"selectorLabel\">\n          <input bindPoint=\"selector\"\n                 listen=\"click: toggleSelect\"\n                 type=\"checkbox\"\n                 value=\"${id}\" \/>\n        <\/label>\n      <\/td>\n      <td class=\"icon\">\n        <div class=\"Thread_Icon\">\n          <a bindPoint=\"iconAnchor\">\n            <img class=\"UIProfileImage UIProfileImage_LARGE\" bindPoint=\"icon\" \/>\n          <\/a>\n        <\/div>\n      <\/td>\n      <td class=\"envelope clickable\" listen=\"click: readThread\">\n        <div bindPoint=\"authors\" class=\"authors line\"><\/div>\n        <div bindPoint=\"date\" class=\"date tagline\"><\/div>\n      <\/td>\n      <td class=\"thread_detail clickable\" listen=\"click: readThread\">\n        <div bindPoint=\"subject\" class=\"subject line\"><\/div>\n        <div bindPoint=\"preview\" class=\"preview tagline\"><\/div>\n      <\/td>\n      <td class=\"clickable\" listen=\"click: readThread\">\n        <a href=\"\"\n           class=\"delete_button UIObjectListing_RemoveLink\"\n           bindPoint=\"deleteButton\"\n           listen=\"click: deleteMessage\"><\/a>\n      <\/td>\n    <\/tr>\n  <\/table>\n<\/div>\n"}, Arbiter.BEHAVIOR_PERSISTENT);

function inbox_search_typeahead(obj,source,properties){this.anchor_block=true;this.parent.construct(this,obj,source,properties);}
inbox_search_typeahead.extend('typeaheadpro');copy_properties(inbox_search_typeahead.prototype,{auto_select:false,less_than_n_chars:true,touch_fired:false,show:function(){if(!this.less_than_n_chars){this.parent.show();this.dropdown.style.width='200px';}else{this.hide();}},hide:function(){this.parent.hide();var search_box=ge('inbox_search');if(search_box){CSS.removeClass(search_box,'typeahead_border');}},fireTouch:function(){if(!this.touch_fired){AsyncRequest.pingURI('/ajax/inbox/touch.php',{},false);this.touch_fired=true;}},found_suggestions:function(suggestions,text,fake_data){this.parent.found_suggestions(suggestions,text,fake_data);if(this.list.firstChild&&this.list.firstChild.firstChild){CSS.addClass(this.list.firstChild.firstChild,'blue_top_border');CSS.removeClass(this.list,'no_border_list');CSS.addClass(this.list.lastChild.lastChild,'blue_bottom_border');var search_box=ge('inbox_search');if(search_box){CSS.addClass(search_box,'typeahead_border');}}else{var search_box=ge('inbox_search');if(search_box){CSS.removeClass(search_box,'typeahead_border');}
CSS.addClass(this.list,'no_border_list');}}});

function inbox_search_friend_source(get_param){this.parent.construct(this,get_param);new AsyncRequest().setMethod('GET').setReadOnly(true).setURI('/ajax/inbox/inbox_search.php?'+get_param).setErrorHandler(function(){}).setHandler(function(response){this.values=response.getPayload().entries;this.build_index();}.bind(this)).send();}
inbox_search_friend_source.extend('static_source');copy_properties(inbox_search_friend_source.prototype,{cache_results:true,gen_html:function(friend,highlight){return['<div>',typeahead_source.highlight_found(friend.t,highlight),'</div><div><small>',friend.n,'</small></div>'].join('');},search_value:function(text){if(!this.is_ready){this.owner.less_than_n_chars=true;return[];}else if(text.length>=2){this.owner.fireTouch();this.owner.less_than_n_chars=false;return this.parent.search_value(text);}
return[];}});

function ObjectBrowserDataSource(filter,pageSize){this.data=filter.data;this.id=filter.id;this.meta=filter.meta;this.object_id=filter.object_id;this.object_class=filter.object_class;this.count=0;this.currentPage=0;this.pageSize=pageSize;this.pageData=[];if(filter.entities){this.pageData[0]=filter.entities;this.shouldFetch=false;}
this.fetchCompleteListener=null;this.scrollTopPosition=0;}
copy_properties(ObjectBrowserDataSource.prototype,{fetch:function(pageIndex){if(this.pageData[pageIndex]){if(this.pageData[pageIndex].requested){return;}
if(this.fetchCompleteListener){this.fetchCompleteListener(this.id,pageIndex,this.pageData[pageIndex],this.count);}}else{this.pageData[pageIndex]={'requested':true};if(this.object_id){SocialGraphManager.init(this.object_class,this.object_id);}
SocialGraphManager.fetch(this.data,this.meta,pageIndex,this.pageSize,this.onFetchComplete.bind(this));}},search:function(query,meta,callback){SocialGraphManager.search(query,meta,callback);},prefetch:function(){if(!this.shouldFetch){return;}
if(!this.pageData[this.currentPage]){this.fetch(this.currentPage);}else{this.fetch(this.currentPage+1);}},nextPage:function(){this.currentPage++;this.fetch(this.currentPage);},prevPage:function(){if(this.currentPage>0){this.currentPage--;}
this.fetch(this.currentPage);},setFetchCompleteListener:function(callback){this.fetchCompleteListener=callback;},onFetchComplete:function(response){if(!response){return;}
var payload=response.getPayload();if(!payload||payload.page==null){return;}
var page=payload.page;if(!this.pageData[page]||this.pageData[page].requested){if(payload.user_info){this.pageData[page]=payload.user_info;}else{this.pageData[page]={};}}
this.count=payload.count;if(this.fetchCompleteListener){this.fetchCompleteListener(this.id,page,payload.user_info,payload.count);}},removeItem:function(id){if(this.pageData[this.currentPage]&&this.pageData[this.currentPage][id]){delete this.pageData[this.currentPage][id];}},removePage:function(pageID){this.pageData[pageID]=null;}});function ObjectBrowserController(userData,elementID,filter_data,pageSize,objectType){this.filters={};this.currentFilter=null;this.pageSize=pageSize;this.elementID=elementID;this.pageData=null;this.pageDataArray=null;this.objectType=objectType;this.didPrefetchAll=false;this.objects={};this.arbiterTokens=[];this.segments=[];this.itemsPerSegment=10;this.itemHeight=55;this.segmentsFixed=false;this.container=$(elementID+'_object_browser_body');this.contentArea=$(elementID+'_object_browser_content_area');this.headerElement=$(elementID+'_object_browser_header_element');this.tabContainer=$(elementID+'_object_browser_tab_container');this.pagerNext=ge(elementID+'_object_browser_pager_more');this.pagerPrev=ge(elementID+'_object_browser_pager_less');this.searchBox=ge(elementID+'_object_browser_search_box');this.searchHeader=ge(elementID+'_object_browser_search_header');this.noResultsBanner=ge(elementID+'_object_browser_no_results');this.blockPeople=ge(elementID+'_object_browser_block_people');this.dialog=Dialog.getCurrent();if(filter_data){var fetchHandler=this.onFilterFetchComplete.bind(this);for(var i=0;i<filter_data.length;i++){var filter=new ObjectBrowserDataSource(filter_data[i],this.pageSize);filter.setFetchCompleteListener(fetchHandler);this.filters[filter_data[i].id]=filter;if(filter_data[i].selected){this.currentFilter=filter;}}}
if(userData){this.renderPage(userData);}
Event.listen(this.container,'scroll',this.onScroll.bind(this));if(this.currentFilter){if(!userData||userData.length==0){this.showLoadingUI();this.currentFilter.fetch(0);}}
var lastHeaderNode=this.searchBox;var firstHeaderNode=this.searchBox;var lis=DOM.scry(this.tabContainer,'li');if(lis.length){firstHeaderNode=lis[0];if(!lastHeaderNode){lastHeaderNode=lis[lis.length-1];}}
if(lastHeaderNode){var lastNodeOffset=lastHeaderNode.offsetTop-firstHeaderNode.offsetTop;var headerHeight=lastNodeOffset+lastHeaderNode.offsetHeight+3;CSS.setStyle(this.tabContainer,'height',headerHeight+'px');}
ObjectBrowserController.setController(elementID,this);}
copy_properties(ObjectBrowserController,{controllers:{},getController:function(elementID){return this.controllers[elementID];},setController:function(elementID,controller){var oldController=this.getController(elementID);if(oldController){oldController.cleanup();}
this.controllers[elementID]=controller;}});copy_properties(ObjectBrowserController.prototype,{setupSegments:function(){var numItems=this.pageDataArray.length;var numSegments=Math.ceil(numItems/this.itemsPerSegment);this.segments=[];var segment=null;var loadingIndicator=null;for(var i=0;i<numSegments;i++){var segment=$N('div',{className:'object_browser_segment_div clearfix'});var loadingIndicator=$N('div');CSS.setClass(loadingIndicator,'object_browser_segment_loading');CSS.setStyle(loadingIndicator,'height',(this.itemsPerSegment*this.itemHeight)+'px');segment.appendContent(loadingIndicator);this.segments.push(segment);}
if(loadingIndicator){CSS.setStyle(loadingIndicator,'height',((numItems%this.itemsPerSegment)*this.itemHeight)+'px');}
DOM.empty(this.contentArea);this.contentArea.appendContent(this.segments);},fixupSegments:function(){if(this.segments.length<=1||this.segmentsFixed){return;}
this.segmentsFixed=true;var segmentHeight=this.segments[0].clientHeight;var itemHeight=Math.round(segmentHeight/this.itemsPerSegment);if(itemHeight==this.itemHeight){return;}
this.itemHeight=itemHeight;for(var i=1;i<this.segments.length-1;i++){CSS.setStyle(this.segments[i],'height',segmentHeight+'px');}
CSS.setStyle(this.segments[this.segments.length-1],'height',((this.pageDataArray%this.itemsPerSegment)*itemHeight)+'px');},cleanup:function(){for(var i=0;i<this.arbiterTokens.length;i++){Arbiter.unsubscribe(this.arbiterTokens[i]);}
this.arbiterTokens=[];},setPageData:function(pageData){this.pageData=pageData;this.pageDataArray=[];for(var x in pageData){this.pageDataArray.push(pageData[x]);}},onScroll:function(){if(this.drawOnScrollTimeout){clearTimeout(this.drawOnScrollTimeout);}
this.drawOnScrollTimeout=setTimeout(this.drawOnScroll.bind(this),20);},drawOnScroll:function(){var viewportTop=this.container.scrollTop-this.pagerPrev.clientHeight;;var segmentHeight=this.itemsPerSegment*this.itemHeight;var firstSegment=Math.floor(viewportTop/segmentHeight);var lastSegment=Math.floor((viewportTop+this.container.clientHeight)/segmentHeight);firstSegment--;lastSegment++;for(var i=firstSegment;i<=lastSegment;i++){this.renderSegment(i);}},prefetchAllFilters:function(){if(this.didPrefetchAll){return;}
this.didPrefetchAll=true;for(var filterName in this.filters){this.filters[filterName].prefetch();}},onFilterClick:function(filterID){if(filterID==this.currentFilter.id){return false;}
this.currentFilter.scrollTopPosition=this.container.scrollTop;if(this.searchHeader){CSS.addClass(this.searchHeader,'hidden_elem');}
var filter=this.filters[filterID];if(!filter){Util.error('Filter '+filterID+' not found');return false;}
this.showLoadingUI();this.currentFilter=this.filters[filterID];filter.fetch(filter.currentPage);this.clearSearch();Arbiter.inform('/people_browser/filterclick/',{'id':filterID});return false;},setCurrentFilter:function(filterID){if((filterID==this.currentFilterID)||!this.filters[filterID]){return;}
var tabsetID=this.elementID+'_filter_tabs';var tabset=Tabset.getInstance(tabsetID);if(!tabset){return;}
tabset.selectTab(tabsetID+'_'+filterID);this.currentFilter=this.filters[filterID];},nextPage:function(){this.showLoadingUI();this.currentFilter.nextPage();this.currentFilter.prefetch();},prevPage:function(){this.showLoadingUI();this.currentFilter.prevPage();},search:function(){this.showLoadingUI();this.currentFilter.search(this.searchBox.value,{'wrapper_id':this.elementID},this.onSearchComplete.bind(this));return false;},showLoadingUI:function(){DOM.empty(this.contentArea);CSS.addClass(this.pagerNext,'hidden_elem');CSS.addClass(this.pagerPrev,'hidden_elem');if(this.dialog){this.dialog.setTitleLoading(true);}},hideLoadingUI:function(){if(this.dialog){this.dialog.setTitleLoading(false);}},onSearchComplete:function(response){if(!response){return;}
var payload=response.getPayload();if(!payload){return;}
if(payload.header){CSS.removeClass(this.searchHeader,'hidden_elem');DOM.setContent(this.searchHeader,HTML(payload.header));Event.listen($(this.elementID+'_search_header_cancel_link'),'click',this.onCancelSearch.bind(this));}
CSS.addClass(this.pagerNext,'hidden_elem');CSS.addClass(this.pagerPrev,'hidden_elem');this.container.scrollTop=0;this.renderPage(payload.user_info);Arbiter.inform('/people_browser/search_complete/',{'wrapper_id':this.elementID,'filter':this.currentFilter.id});},onCancelSearch:function(){this.clearSearch();this.currentPage=0;this.currentFilter.fetch(0);return false;},clearSearch:function(){if(!this.searchHeader){return;}
CSS.addClass(this.searchHeader,'hidden_elem');DOM.empty(this.searchHeader);this.searchBox.value="";},onFilterFetchComplete:function(filterID,pageIndex,userData,count){if(this.currentFilter.id!=filterID){return;}
if(this.filters[filterID].currentPage!=pageIndex){return;}
if(!this.container){Util.error('ObjectBrowserController.container not found');return;}
CSS.conditionClass(this.blockPeople,'hidden_elem',filterID!='blocked');this.renderPage(userData);this.container.scrollTop=this.filters[filterID].scrollTopPosition;var showNext=((pageIndex+1)*this.pageSize)<count;var showPrev=pageIndex>0;CSS.conditionClass(this.pagerPrev,'hidden_elem',!showPrev);CSS.conditionClass(this.pagerNext,'hidden_elem',!showNext);},removeItem:function(id){if(!this.objects[id]){Util.error('item not found in ObjectBrowserController.removeItem');return;}
var element=this.objects[id].root;animation(element).blind().to('height','0').duration(300).hide().go();if(this.currentFilter){this.currentFilter.removeItem(id);}},replaceItem:function(id,data){if(!this.objects[id]){Util.error('item not found in ObjectBrowserController.replaceItem');return;}
var element=this.objects[id].root;var row=this.renderUser(data,true);DOM.replace(element,row.root);},hideActionLink:function(id){if(!this.objects[id]){Util.error('item not found in ObjectBrowserController.hideActionLink');return;}
var element=this.objects[id].root;CSS.addClass(element,'object_browser_hidden_action');},setHeaderContent:function(content){DOM.setContent(this.headerElement,content);},showHeaderContent:function(show){CSS.conditionClass(this.headerElement,'hidden_elem',!show);},onRemoveClick:function(id){var title=this.pageData[id].title
var data={'id':id,'title':title,'element':this.elementID,'obj_label':this.objectType};if(this.pageData[id].removeArgs){copy_properties(data,this.pageData[id].removeArgs);}
Arbiter.inform('/people_browser/remove/',data);return false;},onActionClick:function(id,action){var title=this.pageData[id].title
var data={'id':id,'title':title,'action':action,'element':this.elementID,'obj_label':this.objectType};if(this.pageData[id].actionArgs){copy_properties(data,this.pageData[id].actionArgs);}
Arbiter.inform('/people_browser/action/'+action,data);return false;},addActionHandler:function(action,callback){var wrapped_callback=function(action,data){callback(data);};this.arbiterTokens.push(Arbiter.subscribe('/people_browser/action/'+action,wrapped_callback));},addRemoveHandler:function(callback){var wrapped_callback=function(action,data){callback(data);}
this.arbiterTokens.push(Arbiter.subscribe('/people_browser/remove/',wrapped_callback));},replaceActionButton:function(id,action,actionText){var button=new UIActionButton(actionText).setSuppressMargin(true).setOnclick(this.onActionClick.bind(this,id,action));this.objects[id].setActionControl(button);},renderUser:function(userData,forceRedraw){if(this.objects[userData.id]&&!forceRedraw){return this.objects[userData.id];}
var row=new UIObjectListing(userData);row.setPicPadding(true);row.paint();if(userData.removeable){row.setRemoveControl(true,this.onRemoveClick.bind(this,userData.id));}
if(userData.action){var button=new UIActionButton(userData.actionText);button.setSuppressMargin(true);button.setOnclick(this.onActionClick.bind(this,userData.id,userData.action));row.setActionControl(button);}
this.objects[userData.id]=row;return row;},renderPage:function(userData){this.setPageData(userData);this.setupSegments();this.hideLoadingUI();CSS.addClass(this.noResultsBanner,'hidden_elem');this.renderSegment(0);setTimeout(this.renderSegment.bind(this,1),0);setTimeout(this.fixupSegments.bind(this),0);CSS.conditionClass(this.noResultsBanner,'hidden_elem',this.pageDataArray.length!=0);this.prefetchAllFilters();},renderSegment:function(segment){if(segment<0||segment>=this.segments.length){return;}
if(this.segments[segment].rendered){return;}
var first=segment*this.itemsPerSegment;var last=first+this.itemsPerSegment-1;if(segment==this.segments.length-1){last=this.pageDataArray.length-1;}
var rows=[];for(var i=first;i<=last;i++){var row=this.renderUser(this.pageDataArray[i],true);rows.push(row.root);}
DOM.empty(this.segments[segment]);DOM.appendContent(this.segments[segment],rows);this.segments[segment].rendered=true;},reload:function(filterID){this.setCurrentFilter(filterID);this.currentFilter.scrollTopPosition=this.container.scrollTop;if(this.searchHeader){CSS.addClass(this.searchHeader,'hidden_elem');}
var filter=this.filters[filterID];if(!filter){Util.error('Filter '+filterID+' not found');return false;}
this.showLoadingUI();this.currentFilter=this.filters[filterID];this.currentFilter.removePage(filter.currentPage);filter.fetch(filter.currentPage);this.clearSearch();Arbiter.inform('/people_browser/filterclick/',{'id':filterID});return false;}});

function BroadcastManager(){}
copy_properties(BroadcastManager,{popup:function(){var async_request=new AsyncRequest().setURI('/ajax/gigaboxx/endpoint/BroadcastManager.php').setMethod('GET').setReadOnly(true);var dialog=new Dialog().setModal(true).setFullBleed(true).setAsync(async_request).show();return false;},popupUnsubscribe:function(data){BroadcastManager.updateSubscription(false,data.id);ObjectBrowserController.getController(data.element).replaceActionButton(data.id,'broadcast_subscribe',_tx("Suscr\u00edbete"));},popupSubscribe:function(data){BroadcastManager.updateSubscription(true,data.id);ObjectBrowserController.getController(data.element).replaceActionButton(data.id,'broadcast_unsubscribe',_tx("Anular suscrici\u00f3n."));},updateSubscription:function(subscribe,oid){var data={action:subscribe?'subscribe':'unsubscribe',oid:oid};new AsyncRequest().setURI('/ajax/gigaboxx/endpoint/BroadcastEndpoint.php').setData(data).setHandler(bagofholding).setErrorHandler(bagofholding).send();}});

function GBTabset(){var node=$N('div',{className:'GBTabset'},$N('span',{className:'GBTabset_Label'},_tx("Mostrar:")));copy_properties(this,{_selectedTab:null,_tabs:{},_tabsetNode:node});}
copy_properties(GBTabset.prototype,{getNode:function(){return this._tabsetNode;},addTab:function(tab_id,content,href,onselect,selected){selected=!!selected;var node=$N('a',{href:href,className:'GBTabset_Pill',onclick:bind(this,this.selectTab,tab_id)},$N('span',null,$N('span',null,$N('span',null,content))));this._tabs[tab_id]={node:node,href:href,onselect:onselect||bagofholding};if(selected){CSS.addClass(node,'selected');this._selectedTab=tab_id;}
this._tabsetNode.appendContent(node);return this;},updateTab:function(tab_id,new_content,new_href,new_onselect){if(this._tabs[tab_id]){var tab=this._tabs[tab_id];if(new_content){tab.node.find('span.GBTabset_Pill_Left').setContent(new_content);}
if(new_href){tab.href=new_href;tab.node.href=new_href;}
if(new_onselect){tab.onselect=new_onselect;}}
return this;},forceSelectTab:function(tab_id,event_obj){return this._selectTab(true,tab_id,event_obj);},selectTab:function(tab_id,event_obj){return this._selectTab(false,tab_id,event_obj);},_selectTab:function(suppress_callback,tab_id,event_obj){if(typeof(this._tabs[tab_id])=='undefined'){return true;}
var tab=null;if(this._selectedTab){tab=this._tabs[this._selectedTab];CSS.removeClass(tab.node,'selected');this._selectedTab=null;}
this._selectedTab=tab_id;tab=this._tabs[this._selectedTab];CSS.addClass(tab.node,'selected');if(!suppress_callback&&tab.onselect()!==false){URI(tab.href).go();}
return false;}});

function GBControlHeader(gigaboxx_controller){copy_properties(this,{_controller:gigaboxx_controller,_node:null,_rm:new RenderManager(this),_tabset:null,_selectedTabId:null});}
GBControlHeader.mixin({getNode:function(){if(!this._node){this._buildNode();}
return this._node;},getTabset:function(){return this._tabset;},setSelectedTabId:function(tab_id){if(this._selectedTabId!=tab_id){this._selectedTabId=tab_id;this._rm.dirty();}},paint:function(){if(this._controller.getConfig().showFilters){this._tabset.selectTab(this._selectedTabId);}},_buildNode:function(){var nodes=[];var GBMF=GigaboxxManager.Filters;this._tabset=new GBTabset().addTab('view_all',_tx("Todos"),this._controller.buildURI().addQueryData({filter:undefined,page:undefined}),null,this._controller.getViewState().getFilter()=='').addTab('view_unread',_tx("No le\u00eddos"),this._controller.buildURI().addQueryData({filter:GBMF.UNREAD,page:undefined}),null,this._controller.getViewState().getFilter()==GBMF.UNREAD);Arbiter.subscribe('gigaboxx/view_changed',this._updateTabset.bind(this));var select_list=[];select_list.push(_tx("Seleccionar {select_type_list}:",{select_type_list:''}));select_list.push(this._buildSelectLink(_tx("Todos"),bind(this._controller,this._controller._doSelect,function(row){return true;})));select_list.push(', ');select_list.push(this._buildSelectLink(_tx("Le\u00eddos"),bind(this._controller,this._controller._doSelect,function(row){return!row.isUnread();})));select_list.push(', ');select_list.push(this._buildSelectLink(_tx("Ninguno"),bind(this._controller,this._controller._doSelect,function(row){return false;})));nodes.push($N('span',{className:'GBSelectList'},select_list));if(this._controller.getConfig().showFilters){nodes.push(this._tabset.getNode());}
if(this._controller.getConfig().alternateToolbarUI){return;}
this._node=$N('div',{className:'GBControlHeader clearfix'},nodes);},_buildSelectLink:function(text,callback){var link=$N('a',{href:'#',onclick:callback},text);return link;},_updateTabset:function(){var GBMF=GigaboxxManager.Filters;this._tabset.updateTab('view_all',null,this._controller.buildURI().addQueryData({filter:undefined,page:undefined}),null);this._tabset.updateTab('view_unread',null,this._controller.buildURI().addQueryData({filter:GBMF.UNREAD,page:undefined}),null);}});

function GBErrorView(gigaboxx_controller){copy_properties(this,{_controller:gigaboxx_controller});this._initialize();}
copy_properties(GBErrorView.prototype,{paint:function(){var time_start=new Date().getTime();this._paintContentArea();this._controller.debugLog(this._controller.Debug.PAINT,"Paint Took "+(new Date().getTime()-time_start));},hide:function(){if(this._rootContainer.parentNode){DOM.replace(this._rootContainer,null);}},show:function(){var content_area=this._controller.getContentArea();content_area.appendContent(this._rootContainer);this._controller.hideMuffin();},getTitle:function(){return _tx("Error");},_initialize:function(){if(this._initialized){return;}
this._initialized=true;this._rootContainer=$N('div',{'className':'gigaboxx_error'});},_paintContentArea:function(){var time_start=new Date().getTime();this._rootContainer.setContent(this._controller._errorMsg);this._controller.debugLog(this._controller.Debug.PAINT,"Message Paint Took "+(new Date().getTime()-time_start));}});

function GBSearchRequest(){}
copy_properties(GBSearchRequest.prototype,{getId:abstractMethod,getLabel:abstractMethod,getQueryData:abstractMethod});function GBSearchRequestId(id,name){this.parent.construct(this);this.id=id;this.name=name;}
GBSearchRequestId.extend('GBSearchRequest');GBSearchRequest.mixin({getId:function(){return'Id:'+this.id;},getLabel:function(){return this.name;},getQueryData:function(){return{search_id:this.id,search_name:this.name};}});function GBSearchRequestTerms(terms){this.parent.construct(this);this.terms=terms;}
GBSearchRequestTerms.extend('GBSearchRequest');GBSearchRequestTerms.mixin({getId:function(){return'Terms:'+this.terms;},getLabel:function(){return this.terms;},getQueryData:function(){return{search_terms:this.terms}}});

function GBSearchBox(gigaboxx_manager){copy_properties(this,{_touchSent:false,_typeaheadInitialized:false,_typeaheadObject:null,_controller:gigaboxx_manager,root:null,typeahead:null});this.parent.construct(this,URI('/gigaboxx/templates/GBSearchBox.tmpl'),{placeholder:_tx("Buscar en los mensajes")});new TextInputControl(this.typeahead).setPlaceholderText(this.typeahead.getAttribute('placeholder'));}
GBSearchBox.extend('TemplateObject');copy_properties(GBSearchBox.prototype,{getRoot:function(){return this.root;},searchFocus:function(){bind(this,this._doTouch).defer();this._initializeTypeahead();return false;},searchSelectSubmit:function(){if(search_validate(this.typeahead)){this.searchSubmit();}
return false;},searchSubmit:function(typeahead_item){typeahead_item=this._typeaheadObject.get_current_selection();var search_request=null;if(typeahead_item){search_request=new GBSearchRequestId(typeahead_item.i,typeahead_item.t);}else{var value=this._typeaheadObject.get_value();if(value){search_request=new GBSearchRequestTerms(value);}}
if(search_request){this._controller.buildURI(true).addQueryData(search_request.getQueryData()).go();this._typeaheadObject.blur();this._typeaheadObject.set_value('');this._typeaheadObject.dirty_results();}
return false;},_doTouch:function(){if(!this._touchSent){new AsyncSignal('/ajax/gigaboxx/endpoint/SearchTouch.php').send();this._touchSent=true;}},_initializeTypeahead:function(){if(this._typeaheadInitialized){return;}
this._typeaheadInitialized=true;var ta_source=new inbox_search_friend_source('');ta_source.search_limit=5;ta_source.text_noinput='';ta_source.text_nomatch='';ta_source.text_placeholder='';this._typeaheadObject=new inbox_search_typeahead(this.typeahead,ta_source,{onsubmit:bind(this,this.searchSubmit),max_results:5});}});

function GBMessageHistoryView(gigaboxx_controller){copy_properties(this,{_controller:gigaboxx_controller});}
copy_properties(GBMessageHistoryView.prototype,{paint:function(){IL().b('MessageHistory Paint');var time_start=new Date().getTime();this._paintContentArea();this._controller.debugLog(this._controller.Debug.PAINT,"Paint Took "+(new Date().getTime()-time_start));IL().e('MessageHistory Paint');},hide:function(){var content_area=this._controller.getContentArea();var canvas=ge(content_area.id+'_message_pane');if(canvas){hide(canvas);DOM.empty(canvas);}},show:function(){var content_area=this._controller.getContentArea();show(content_area.id+'_message_pane');this._controller.showMuffin();},getTitle:function(){return this._controller._activeThreadData.subject;},_fetchBranch:function(base_thread,thread){var data={'tid':thread.threadId,'base_thread':base_thread.threadId};new AsyncRequest().setData(data).setURI('/ajax/gigaboxx/endpoint/ReadBranch.php').setReadOnly(true).setMethod('GET').setHandler(bind(this,this._fetchBranchHandler,base_thread,thread)).setErrorHandler(bind(this,this._fetchBranchError,thread)).send();},_fetchBranchHandler:function(base_thread,thread,asyncResponse){var payload=asyncResponse.getPayload();var parent=payload.thread;var messages_content_node=ge(base_thread.threadId+'_messages');if(messages_content_node){if(parent.messages){var built_messages=this._buildMessages(base_thread.threadId,parent.messages,true);messages_content_node.prependContent(built_messages.message_nodes);built_messages.onload_script();}
if(parent.parentThread){messages_content_node.prependContent(this._buildBranchLink(base_thread,parent));}}
var branch_node=ge('branch_message_'+thread.threadId);if(branch_node){branch_node.parentNode.removeChild(branch_node);}},_fetchBranchError:function(thread,asyncResponse){var branch_node=ge('branch_message_'+thread.threadId);if(branch_node){branch_node.setContent(_tx("Se ha producido un error al recuperar mensajes anteriores. Por favor, int\u00e9ntalo m\u00e1s tarde."));}},_showHiddenMessages:function(thread_id,messages,hidden_msg_node){var message_wrapper=ge(thread_id+'_messages');if(message_wrapper){var built_messages=this._buildMessages(thread_id,messages,true);message_wrapper.prependContent(built_messages.message_nodes);built_messages.onload_script();}
if(hidden_msg_node){DOM.remove(hidden_msg_node);}},_changeSubscription:function(thread,subscribe){var link=ge('gigaboxx_subscription_link_'+thread.originalAuthor);if(link){thread.subscription.subscribed=subscribe;var new_link=this._buildSubscriptionLink(thread);DOM.replace(link,new_link);BroadcastManager.updateSubscription(subscribe,thread.originalAuthor);}},_buildMessages:function(thread_id,messages,show_all){var message_nodes=[];var onload_script="";var num_shown=0;var displayed_unread=false;var show_message=false;for(var iter=messages.length-1;iter>=0;iter--){var message=messages[iter];var row=new ThreadMessageRow(this._controller,message,thread_id);message_nodes=row.getNodes().concat(message_nodes);onload_script=onload_script.concat(message.messageOnload);num_shown++;if(!show_all&&!message.unread&&num_shown>=this._controller.getConfig().messageDisplayCount){break;}}
if(num_shown<messages.length){var tokens={'View_previous_messages_link':''};var hidden_msg_node=$N('h6',{'className':'gigaboxx_thread_hidden_messages'},[_tx("{View_previous_messages_link}",tokens)]);var hl_onclick=this._showHiddenMessages.bind(this,thread_id,messages.slice(0,messages.length-num_shown),hidden_msg_node);var hidden_link=$N('a',{'onclick':hl_onclick},_tx("Mensajes anteriores"));hidden_msg_node.appendContent(hidden_link);message_nodes.unshift(hidden_msg_node);}
return{message_nodes:message_nodes,onload_script:new Function(onload_script)};},_buildSubscriptionLink:function(thread){if(thread.subscription.subscribed){var onclick=this._changeSubscription.bind(this,thread,false);var label=_tx("Darse de baja de {entity_name}",{'entity_name':thread.subscription.name});}else{var onclick=this._changeSubscription.bind(this,thread,true);var label=_tx("Inscribirse en {entity_name}",{'entity_name':thread.subscription.name});}
var link=$N('a',{'id':'gigaboxx_subscription_link_'+thread.originalAuthor,'className':'gigaboxx_subscription_link','onclick':onclick},label);return link;},_buildBranchLink:function(base_thread,thread){var branch_onclick=this._fetchBranch.bind(this,base_thread,thread);var branch_link=$N('a',{'onclick':branch_onclick},_tx("Ver hilo anterior."));var tokens={'View_previous_thread_link':''};var branch_node=$N('h6',{'className':'gigaboxx_thread_branch_message','id':'branch_message_'+thread.threadId},[_tx("Esta cadena de mensajes se ha creado a partir de otra. {View_previous_thread_link}",tokens),branch_link]);return branch_node;},_paintContentArea:function(){var time_start=new Date().getTime();IL().b('MessageHistory Paint ContentArea');var thread=this._controller._activeThreadData;var nodes=[];nodes.push(this._buildReadMessageHeader(thread));if(thread.parentThread){nodes.push(this._buildBranchLink(thread,thread));}
var built_messages={message_nodes:null,onload_script:new Function()};if(thread.messages){built_messages=this._buildMessages(thread.threadId,thread.messages);}
nodes.push($N('div',{'id':thread.threadId+'_messages'},built_messages.message_nodes));var composer_js='';if(thread.renderedReplyComposer){var mk=HTML(thread.renderedReplyComposer[0]);nodes.push(mk);composer_js=thread.renderedReplyComposer[1];}
if(thread.subscription){var footer_nodes=[];var subscription_link=this._buildSubscriptionLink(thread);footer_nodes.push(subscription_link);var footer=$N('div',{'className':'gigaboxx_thread_footer'},footer_nodes);nodes.push(footer);}
var message_pane=this._controller._getMessagePane();DOM.setContent(message_pane,nodes);built_messages.onload_script();(new Function(composer_js))();this._controller._activeThreadMessagesRoot=$(thread.threadId+'_messages');IL().e('MessageHistory Paint ContentArea');this._controller.debugLog(this._controller.Debug.PAINT,"Message Paint Took "+(new Date().getTime()-time_start));},_buildReadMessageHeader:function(thread){var subj_node=$N('h2',{'className':'gigaboxx_thread_header_subject'},thread.subject);var authors_node=$N('div',{'className':'gigaboxx_thread_header_authors'},HTML(thread.renderedAuthorList));var header_node=$N('div',{'className':'gigaboxx_thread_header'},[subj_node,authors_node]);return header_node;},_getFolderName:function(){var view_state=this._controller.getViewState();if(view_state.isSearchRequest()){return view_state.searchRequest.getLabel();}
switch(view_state.folder){case GigaboxxManager.Folders.REQUESTS:return _tx("Requests");case GigaboxxManager.Folders.UPDATES:return _tx("Actualizaciones");case GigaboxxManager.Folders.SENT:return _tx("Enviados");case GigaboxxManager.Folders.MESSAGES:default:return _tx("Mensajes");}}});

function GigaboxxThreadCache(){copy_properties(this,{_cache:{}});}
GigaboxxThreadCache.mixin('Arbiter',{getThreadData:function(thread_id){return this._cache[thread_id]||null;},isCached:function(thread_id){return this._cache[thread_id]!=undefined;},flushCache:function(){this._cache={};},mergeThreadData:function(data){copy_properties(this._cache,data);for(var tid in data){this.dirty(tid);}},mergeMessageData:function(thread_id,message){var data=this._cache[thread_id];if(data){data.snippet=message.message.substr(0,60);this.dirty(thread_id);}},dirty:function(thread_id){this.inform('GigaboxxThreadCache/dirty/'+thread_id,null,Arbiter.BEHAVIOR_STATE);},getCache:function(){return this._cache;}});

function UIButtonStrip(){copy_properties(this,{_buttons:[],_disabledStates:[],_wrapperNodes:[],_rm:new RenderManager(this),_root:$N('span',{className:'UIButtonStrip'})});}
copy_properties(UIButtonStrip.prototype,{addButton:function(button){button.setSuppressMargin(true);var button_idx=this._buttons.length;this._buttons.push(button);this._disabledStates[button_idx]=button.getDisabled();button.setDisabledOriginal=button.setDisabled;button.setDisabled=this.setDisabled.bind(this,button);this._rm.dirty();return this;},setDisabled:function(button,disabled){var button_idx=this._buttons.indexOf(button);this._disabledStates[button_idx]=disabled;this._rm.dirty();return this;},paint:function(){var new_nodes=[];var last_wrapper=null;for(var i=0;i<this._buttons.length;i++){var button_nodes=this._buttons[i].getNodes();if(this._wrapperNodes[i]===undefined){new_nodes.push(this._wrapperNodes[i]=$N('span',{className:'UIButtonStrip_Wrapper'},button_nodes));}
var wrapper=this._wrapperNodes[i];var is_disabled=this._disabledStates[i];if(i>0&&is_disabled&&!this._disabledStates[i-1]){CSS.addClass(last_wrapper,'UIButtonStrip_EnabledToDisabled');CSS.addClass(wrapper,'UIButtonStrip_DisabledFromEnabled');}else{CSS.removeClass(wrapper,'UIButtonStrip_DisabledFromEnabled');if(i>0&&(!is_disabled||this._disabledStates[i-1])){CSS.removeClass(last_wrapper,'UIButtonStrip_EnabledToDisabled');}}
this._buttons[i].setDisabledOriginal(is_disabled);last_wrapper=wrapper;}
if(new_nodes){this._root.appendContent(new_nodes);}
return;},getNodes:function(){return[this._root];}});

function GBThreadListView(gigaboxx_controller){copy_properties(this,{_controller:gigaboxx_controller,_header:new GBControlHeader(gigaboxx_controller),_broadcastManagerLink:null});this._initialize();}
copy_properties(GBThreadListView.prototype,{paint:function(){var time_start=new Date().getTime();IL().b('ThreadList Paint');this._paintControlHeader();this._paintContentArea();IL().e('ThreadList Paint');this._controller.debugLog(this._controller.Debug.PAINT,"Paint Took "+(new Date().getTime()-time_start));},hide:function(){var content_area=this._controller.getContentArea();hide(content_area.id+'_thread_list');hide(this._header.getNode());hide(this._broadcastManagerLink);},show:function(){var content_area=this._controller.getContentArea();show(content_area.id+'_thread_list');show(this._header.getNode());show(this._broadcastManagerLink);this._controller.hideMuffin();},getTitle:function(){return null;},_initialize:function(){if(this._initialized){return;}
this._initialized=true;var content_area=this._controller.getContentArea();content_area.prependContent(this._header.getNode());},_paintControlHeader:function(){var time_start=new Date().getTime();IL().b('ThreadList Paint Control');var view_state=this._controller.getViewState();if(view_state.getSearchRequest()||(view_state.getFolder()==GigaboxxManager.Folders.MESSAGES&&view_state.getSubFolder())||view_state.getFolder()==GigaboxxManager.Folders.SENT){hide(this._header.getTabset().getNode());}else{var tab_id=null;switch(view_state.getFilter()){case GigaboxxManager.Filters.UNREAD:tab_id='view_unread';break;case null:default:tab_id='view_all';break;}
this._header.getTabset().forceSelectTab(tab_id);show(this._header.getTabset().getNode());}
IL().e('ThreadList Paint Control');this._controller.debugLog(this._controller.Debug.PAINT,"Header Paint Took "+(new Date().getTime()-time_start));},_paintContentArea:function(){var view_state=this._controller.getViewState();var time_start=new Date().getTime();IL().b('ThreadList Paint ContentArea');var threads=this._controller._getViewStateData().list.getPage(this._controller.getPage());for(var i=0;i<this._controller._pageSize;i++){var thread_id=threads&&threads[i]||null;this._paintThreadRow(i,thread_id);}
if(view_state.getFolder()==GigaboxxManager.Folders.UPDATES){if(!this._broadcastManagerLink){var content_area=this._controller.getContentArea();this._broadcastManagerLink=$N('div',{className:'BroadcastOptionsLink'},$N('a',{onclick:BroadcastManager.popup},_tx("Editar suscripciones")));content_area.appendContent(this._broadcastManagerLink);}}else if(this._broadcastManagerLink){DOM.remove(this._broadcastManagerLink);this._broadcastManagerLink=null;}
this._controller._updateToolbarOnSelect();IL().e('ThreadList Paint ContentArea');this._controller.debugLog(this._controller.Debug.PAINT,"Message Paint Took "+(new Date().getTime()-time_start));},_paintThreadRow:function(position,thread_id){if(thread_id==null){this._controller._threadList.setThreadRow(position,null);}else{var row_obj=this._controller._getThreadRow(thread_id);row_obj.paint(position);this._controller._threadList.setThreadRow(position,row_obj);}}});

function Collection(type,objects){if(!type.__collection__){var collection=new Function();for(var method in type.prototype){collection.prototype[method]=Collection._call.bind(null,method);}
type.__collection__=collection;}
var list=new type.__collection__;list._elements=objects;return list;}
Collection._call=function(method){var args=Array.prototype.slice.call(arguments,1);this._elements.each(function(instance){instance[method].apply(instance,args);});return this;}

function GBToolbarManager(controller,toolbar_top,toolbar_bottom,toolbar_search){copy_properties(this,{_controller:controller,_components:{},_searchToolbar:toolbar_search,_topToolbar:toolbar_top,_bottomToolbar:toolbar_bottom,_needToUpdateBackButton:false});this._controller.subscribe('gigaboxx/viewChanged',this._viewChanged.bind(this));this._initialize.bind(this).defer();}
GBToolbarManager.Locations=['top','bottom','search'];GBToolbarManager.mixin({_viewChanged:function(){this._needToUpdateBackButton=true;},_initialize:function(){IL().b('ToolbarManager initialize');this._initialized=true;var st=this._searchToolbar;var tt=this._topToolbar;var bt=this._bottomToolbar;st.reset();st.addContent(this.getComponent('SearchBox','top').getRoot(),'left');tt.reset();tt.addContent(this._controller._topPager.getRoot(),'right');tt.addContent(this._controller._topMessagePager.getRoot(),'right');tt.addButton(this.getComponent('BackButton','top'),'left');tt.addButton(this.getComponent('ComposeButton','top'),'left');tt.addButton(this.getComponent('ToolbarDivider','top'),'left');tt.addButton(this.getComponent('SelectAllButton','top'),'left');tt.addButton(this.getComponent('SelectNoneButton','top'),'left');tt.addButton(this.getComponent('ReadButton','top'),'left');tt.addButton(this.getComponent('UnreadButton','top'),'left');tt.addContent(this.getComponent('DeleteAndReportSpamButtonStrip','top').getNodes(),'left');bt.reset();bt.addContent(this._controller._bottomPager.getRoot(),'right');bt.addContent(this._controller._bottomMessagePager.getRoot(),'right');bt.addButton(this.getComponent('BackButton','bottom'),'left');IL().e('ToolbarManager initialize');},paint:function(){var time_start=new Date().getTime();IL().b('ToolbarManager Paint Toolbar');switch(this._controller.getView()){case'read_message':var folder=this._controller.getViewState().getFolder();var is_sent_folder=folder==GigaboxxManager.Folders.SENT;var is_update=folder==GigaboxxManager.Folders.UPDATES;var any_subscriptions=false;if(is_update){var thread_data=this._controller._activeThreadData;any_subscriptions|=thread_data.subscription&&thread_data.subscription.subscribed;}
this.getComponent('UnreadButton').setDisabled(is_sent_folder).setHidden(false);this.getComponent('ReadButton').setHidden(true);this.getComponent('ReportSpamButton').setDisabled(is_sent_folder).setHidden(false);this.getComponent('DeleteButton').setDisabled(false).setHidden(false);this.getComponent('ComposeButton').setHidden(true);this.getComponent('BackButton').setHidden(false);this.getComponent('SelectAllButton').setHidden(true);this.getComponent('SelectNoneButton').setHidden(true);this._controller._topPager.setHidden(true);this._controller._bottomPager.setHidden(true);this._controller._topMessagePager.setHidden(false);this._controller._bottomMessagePager.setHidden(false);break;case'thread_list':default:this.getComponent('ComposeButton').setHidden(false);this.getComponent('BackButton').setHidden(true);this._controller._topPager.setHidden(false);this._controller._bottomPager.setHidden(false);this._controller._topMessagePager.setHidden(true);this._controller._bottomMessagePager.setHidden(true);break;}
if(this._needToUpdateBackButton){this.getComponent('BackButton','top').setTitle(this._buildBackButtonContent());this.getComponent('BackButton','bottom').setTitle(this._buildBackButtonContent());this._needToUpdateBackButton=false;}
IL().e('ToolbarManager Paint Toolbar');this._controller.debugLog(this._controller.Debug.PAINT,"Toolbar Paint Took "+(new Date().getTime()-time_start));},getComponent:function(name,position){var key=name;if(position!==undefined&&name!='SearchBox'){key+='_'+position;}
if(this._components[key]===undefined){this._initComponent(name);}
return this._components[key];},_initComponent:function(name){var func_name='_init'+name;if(typeof(this[func_name])!='function'){this._components[name]=null;}else{this[func_name]();}},_buildBackButtonContent:function(){return[_tx("Volver a {folder_name}",{folder_name:this._getFolderName()})];},_getFolderName:function(){var view_state=this._controller.getViewState();if(view_state.isSearchRequest()){return _tx("Resultados");}
switch(view_state.folder){case GigaboxxManager.Folders.REQUESTS:return _tx("Requests");case GigaboxxManager.Folders.UPDATES:return _tx("Actualizaciones");case GigaboxxManager.Folders.SENT:return _tx("Enviados");case GigaboxxManager.Folders.MESSAGES:default:return _tx("Mensajes");}},_initSearchBox:function(){this._components['SearchBox']=new GBSearchBox(this._controller);return false;},_initToolbarDivider:function(){var components=[];GBToolbarManager.Locations.forEach(function(loc_name){components.push(this._components['ToolbarDivider_'+loc_name]=new UIActionButton('').setOnclick(function(){return false;}));CSS.addClass(this._components['ToolbarDivider_'+loc_name].getNodes()[0],'GBToolbarDivider');},this);this._components['ToolbarDivider']=new Collection(UIActionButton,components);},_initComposeButton:function(){var components=[];GBToolbarManager.Locations.forEach(function(loc_name){components.push(this._components['ComposeButton_'+loc_name]=new UIActionButton(_tx("Escribir mensaje")).setOnclick(Dialog.bootstrap.curry('/gigaboxx/dialog/MessageComposer.php')).setIcon(UIActionButton.iconPlus));},this);this._components['ComposeButton']=new Collection(UIActionButton,components);},_initDeleteAndReportSpamButtonStrip:function(){var components=[];GBToolbarManager.Locations.forEach(function(loc_name){components.push(this._components['DeleteAndReportSpamButtonStrip_'+loc_name]=new UIButtonStrip().addButton(this.getComponent('ReportSpamButton',loc_name)).addButton(this.getComponent('DeleteButton',loc_name)));},this);this._components['DeleteAndReportSpamButtonStrip']=new Collection(UIButtonStrip,components);},_initSelectAllButton:function(){this.__initActionButton('SelectAllButton',_tx("Selecciona todas"),'select_all');},_initSelectNoneButton:function(){this.__initActionButton('SelectNoneButton',_tx("No seleccionar ninguna"),'select_none');},_initDeleteButton:function(){this.__initActionButton('DeleteButton',_tx("Eliminar"),'delete');},_initDeleteUpdateButton:function(){this.__initActionButton('DeleteUpdateButton',_tx("Eliminar"),'delete');},_initUnsubscribeUpdateButton:function(){this.__initActionButton('UnsubscribeUpdateButton',_tx("Anular suscrici\u00f3n."),'unsubscribe');},_initReportSpamButton:function(){this.__initActionButton('ReportSpamButton',_tx("Denunciar correo no deseado"),'report');},_initUnreadButton:function(){this.__initActionButton('UnreadButton',_tx("Marcar como no le\u00eddo"),'unread');},_initReadButton:function(){this.__initActionButton('ReadButton',_tx("Marcar como le\u00eddo"),'read');},_initBackButton:function(){var components=[];GBToolbarManager.Locations.forEach(function(loc_name){components.push(this._components['BackButton_'+loc_name]=new UIActionButton(this._buildBackButtonContent()).setOnclick(function(){this._controller.buildURI().go();return false;}.bind(this)));},this);this._components['BackButton']=new Collection(UIActionButton,components);},__initActionButton:function(name,label,action){var components=[];GBToolbarManager.Locations.forEach(function(loc_name){components.push(this._components[name+'_'+loc_name]=new UIActionButton(label).setOnclick(bind(this._controller,this._controller._doSelectedAction,action)).setDisabled(true));},this);this._components[name]=new Collection(UIActionButton,components);}});

function GBUndoManager(controller){copy_properties(this,{_controller:controller,_action:$('GBUndoAction'),_currently_displaying:false,_deferred_notification:null});}
GBUndoManager.mixin({deferUndoNotification:function(undo){this._deferred_notification=undo;},hasPendingDeferredNotification:function(){return!!this._deferred_notification;},displayDeferredNotification:function(){this.setUndoNotification(this._deferred_notification);this._deferred_notification=null;},setUndoNotification:function(undo){if(!undo){return;}
var updateContent=function(){this._action.setContent($N('span',{className:'GBUndoAction_notification'},[$N('span',{className:'GBUndoAction_notification_text'},HTML(undo.text)),$N('a',{className:'GBUndoAction_link',href:'#',onclick:this._sendUndoRequest.bind(this,undo.action)},HTML(_tx("Deshacer")))]));}.bind(this);if(this._currently_displaying){animation(this._action).to('opacity',0.5).duration(100).checkpoint(1,updateContent).to('opacity',1).duration(100).go();}else{this._action.style.opacity=0;updateContent();animation(this._action).show().to('height','auto').from('marginTop',0).from('marginBottom',0).to('marginTop',10).to('marginBottom',10).duration(300).checkpoint().to('opacity',1).duration(300).ease(animation.ease.both).go();this._currently_displaying=true;}},clearNotification:function(){if(this._currently_displaying){animation(this._action).to('opacity',0).duration(300).ease(animation.ease.both).checkpoint().to('height',0).from('marginTop',10).from('marginBottom',10).to('marginTop',0).to('marginBottom',0).duration(300).hide().go();this._currently_displaying=false;}},_sendUndoRequest:function(undo_data){new AsyncRequest('/ajax/gigaboxx/endpoint/UndoAction.php').setMethod('POST').setData({data:undo_data}).setHandler(this._handleUndoResponse.bind(this,undo_data)).setStatusElement(this._action).send();return false;},_handleUndoResponse:function(undo_data,response){DOM.remove(DOM.find(this._action,'.GBUndoAction_link'));if(!this._updateViewOnUndo(undo_data,response)){this.clearNotification();}},_updateViewOnUndo:function(undo_data,response){switch(undo_data.type){case'GigaboxxUndoableDeleteAction':case'GigaboxxUndoableReportAsSpamAction':return this._controller.updateViewOnUndoDelete(response);case'GigaboxxUndoableUnsubscribeAction':return this._controller.updateViewOnSubscriptionChange(response.getPayload(),true);}
return false;}});

function GBViewState(folder,subfolder,filter,page){copy_properties(this,{_onViewChangeHandler:bagofholding,_onPropertyChangeHandlers:{},folder:folder||'',subfolder:subfolder||'',filter:filter||'',page:page||1,searchRequest:null});}
copy_properties(GBViewState,{constructFromStruct:function(view_struct){var view_state=new GBViewState();for(var key in view_struct){switch(key){case'folder':view_state.setFolder(view_struct[key]);break;case'subfolder':view_state.setSubFolder(view_struct[key]);break;case'filter':view_state.setFilter(view_struct[key]);break;case'search_id':view_state.setSearchRequest(new GBSearchRequestId(view_struct[key].id,view_struct[key].name));break;case'search_terms':view_state.setSearchRequest(new GBSearchRequestTerms(view_struct[key]));break;}}
return view_state;}});copy_properties(GBViewState.prototype,{isSearchRequest:function(){return!!this.searchRequest;},getViewId:function(){if(this.searchRequest){return'Search:'+this.searchRequest.getId();}
return this.folder+':'+this.subfolder+':'+this.filter;},setOnViewChangeHandler:function(callback){this._onViewChangeHandler=callback;return this;},setOnPropertyChangeHandler:function(property,callback){this._onPropertyChangeHandlers[property]=callback;return this;},setFolder:function(folder){return this._mutate('folder',folder);},getFolder:function(){return this.folder;},setSubFolder:function(subfolder){return this._mutate('subfolder',subfolder);},getSubFolder:function(){return this.subfolder;},setFilter:function(filter){return this._mutate('filter',filter);},getFilter:function(){return this.filter;},setPage:function(page){return this._mutate('page',page);},getPage:function(){return this.page;},setSearchRequest:function(search_request){return this._mutate('searchRequest',search_request);},clearSearchRequest:function(){this.setSearchRequest(null);},getSearchRequest:function(){return this.searchRequest;},getViewData:function(){var data={};if(this.searchRequest){copy_properties(data,this.searchRequest.getQueryData());}else{data.folder=this.folder;if(this.subfolder){data.subfolder=this.subfolder;}
if(this.filter){data.filter=this.filter;}}
if(this.page){data.page=this.page;}
return data;},_mutate:function(property,value){var old_view=this.getViewId();var old_value=this[property];this[property]=value;var new_view=this.getViewId();var new_value=this[property];if(old_value!=new_value&&typeof(this._onPropertyChangeHandlers[property])=='function'){this._onPropertyChangeHandlers[property]();}
if(old_view!=new_view){this._onViewChangeHandler();}
return this;},toString:function(){return["Folder: ",this.folder," Subfolder: ",this.subfolder," Filter: ",this.filter," Page: ",this.page," Search: ",this.searchRequest].join('');}});

function ThreadRow(gigaboxx_manager,thread_id){copy_properties(this,{threadId:thread_id,_controller:gigaboxx_manager,_dirty:true,root:null,readLinks:[],authors:null,date:null,subject:null,preview:null,selector:null,selectorLabel:null});this._controller.threadCache.subscribe('GigaboxxThreadCache/dirty/'+thread_id,this.dirty.bind(this),Arbiter.SUBSCRIBE_NEW);this.parent.construct(this,URI('/gigaboxx/templates/ThreadRow.tmpl'),{id:thread_id});Event.listen(this.root,'mouseover',CSS.addClass.curry(this.root,'GBThreadRow_Hover'));Event.listen(this.root,'mouseout',CSS.removeClass.curry(this.root,'GBThreadRow_Hover'));var hover_blockers=[this.selectorLabel,this.icon,this.badge,this.deleteButton];for(var i=0;i<hover_blockers.length;i++){var hover_blocker=hover_blockers[i];Event.listen(hover_blocker,'mouseover',CSS.addClass.curry(this.root,'GBThreadRow_HoverBlocker'));Event.listen(hover_blocker,'mouseout',CSS.removeClass.curry(this.root,'GBThreadRow_HoverBlocker'));}}
ThreadRow.extend('TemplateObject');copy_properties(ThreadRow.prototype,{deleteMessage:function(){this._controller.deleteMessages(this.threadId);return false;},toggleUnread:function(){if(this._controller.getViewState().getFolder()!=GigaboxxManager.Folders.SENT||this.isUnread()){this._controller.setMessageTag(this.threadId,GigaboxxManager.Filters.UNREAD,this.isUnread());}
return false;},toggleSelect:function(e){e=$E(e);if(e.shiftKey||e.ctrlKey||e.metaKey){var data=this._controller.threadCache.getThreadData(this.threadId);if(data){var has_tag=data.tags.contains(GigaboxxManager.Filters.UNREAD);if((e.shiftKey&&has_tag)||e.ctrlKey||e.metaKey){this._controller.setMessageTag(this.threadId,GigaboxxManager.Filters.UNREAD,has_tag);}}
e.kill();return false;}
this._controller._updateToolbarOnSelect();},readThread:function(e){var target=$E(e).getTarget();if(target&&target.href&&!this._controller.isGigaboxxURI(target.href)){return true;}
var baseURL=URI(this._controller.buildURI()).addQueryData({tid:this.threadId}).go();return false;},isUnread:function(){return this._getThreadData().tags.contains(GigaboxxManager.Filters.UNREAD);},isReplied:function(){var recentAuthors=this._getThreadData().recentAuthors;return recentAuthors.length&&recentAuthors[0]==this._controller._userId;},getFolderTags:function(){return values(GigaboxxManager.Folders).filter(function(folder){return this._getThreadData().tags.contains(folder);});},_getThreadData:function(){return this._controller.threadCache.getThreadData(this.threadId);},dirty:function(){this._dirty=true;},paint:function(position){if(!this._dirty){return;}
this._dirty=false;if(this._controller.getConfig().alternateToolbarUI&&!position){CSS.addClass(this.root,'GBThreadRow_NoBorder');}
var data=this._getThreadData();if(data.inaccessible){if(this._controller.getViewState().isSearchRequest()){CSS.addClass(this.root,'hidden_elem');}else{this._inaccessible=$N('div',{className:'GBThreadRow_InaccessibleWarning'},_tx("Lo sentimos, los contenidos de este hilo no est\u00e1n disponibles temporalmente."));DOM.appendContent(this.root,this._inaccessible);CSS.addClass(this.root,'GBThreadRow_Inaccessible');}
return;}else if(this._inaccessible){DOM.remove(this._inaccessible);delete this._inaccessible;CSS.removeClass(this.root,'GBThreadRow_Inaccessible');}else{CSS.removeClass(this.root,'hidden_elem');}
var authors=[];var authors_data=data.recentAuthorsData;for(var author in authors_data){var author_data=authors_data[author];if(author_data.href){var author_node=$N('a',{href:author_data.href,title:author_data.title},author_data.html);authors.push(author_node);Event.listen(author_node,'mouseover',CSS.addClass.curry(this.root,'GBThreadRow_HoverBlocker'));Event.listen(author_node,'mouseout',CSS.removeClass.curry(this.root,'GBThreadRow_HoverBlocker'));}else{authors.push(author_data.html);}
authors.push(', ');}
authors.pop();var preview=data.snippet;var subject=data.subject;this.icon.src=data.icon.image;this.icon.alt=data.icon.alt;this.iconAnchor.href=data.icon.href;DOM.setContent(this.authors,authors);DOM.setText(this.date,data.timeLastUpdatedRendered);DOM.setContent(this.preview,preview);DOM.setContent(this.subject,subject);CSS.conditionClass(this.thread_row,'unread',this.isUnread());CSS.conditionClass(this.thread_row,'replied',this.isReplied());}});

function ThreadList(controller,size){var rows=[];for(var i=0;i<size;i++){rows.push($N('div'));}
var list_node=$N('div',{className:'ThreadList'},rows);var list_id=controller.getContentArea().id+'_thread_list';var wrapper_node=$N('div',{id:list_id,className:'ThreadListWrapper'},list_node);copy_properties(this,{_controller:controller,_fallback:null,_threadList:list_node,_threadListWrapper:wrapper_node,_rm:new RenderManager(this),_rowNodes:rows,_rowObjects:[],_size:size});}
copy_properties(ThreadList.prototype,{getNode:function(){return this._threadListWrapper;},getThreadRows:function(){return this._rowObjects;},setSize:function(new_size){if(new_size==this._size){return;}
if(new_size>this._size){var new_nodes=[];for(var i=this._size;i<new_size;i++){var row_node=$N('div');this._rowNodes.push(row_node);new_nodes.push(row_node);}
this._threadList.appendContent(new_nodes);}else{for(var i=this._size;i>new_size;i--){var row_node=this._rowNodes[i-1];while(row_node.firstChild){row_node.removeChild(row_node.firstChild);}
DOM.remove(row_node);}
this._rowNodes.splice(new_size,this._size-new_size);}
this._size=new_size;},setThreadRow:function(position,thread_row){var row_node=this._rowNodes[position];var row_object=this._rowObjects[position];if(thread_row!=null){if(row_object!=thread_row){this._rowObjects[position]=thread_row;while(row_node.firstChild){row_node.removeChild(row_node.firstChild);}
DOM.setContent(row_node,thread_row.root);}}else{delete this._rowObjects[position];while(row_node.firstChild){row_node.removeChild(row_node.firstChild);}}
this._rm.dirty();return this;},paint:function(){if(this._hasThreadRows()){if(this._fallback){DOM.remove(this._fallback);this._fallback=null;}}else{if(!this._fallback){this._fallback=$N('div',{className:'ThreadListFallback'},this._buildFallbackContent());this._threadListWrapper.appendContent(this._fallback);}}},_hasThreadRows:function(){for(var i=0;i<this._size;i++){if(this._rowObjects[i]!=undefined){return true;}}
return false;},_buildFallbackContent:function(){var content;var view_state=this._controller.getViewState();if(view_state.isSearchRequest()){var search_term='<b>'+view_state.searchRequest.getLabel()+'</b>';content=HTML(_tx("No hay mensajes que correspondan con tu b\u00fasqueda de {search_value}.",{search_value:search_term}));}else if(view_state.getFilter()==GigaboxxManager.Filters.UNREAD){var view_all_href=this._controller.buildURI().addQueryData({filter:undefined});content=[_tx("En este momento no tienes mensajes sin leer."),' ',$N('a',{href:view_all_href},_tx("Ver todos los mensajes."))];}else if(view_state.getFolder()==GigaboxxManager.Folders.MESSAGES){var click_js=Dialog.bootstrap.curry('/gigaboxx/dialog/MessageComposer.php');content=[_tx("No hay mensajes."),' ',$N('a',{onclick:click_js},_tx("Escribir un mensaje"))];}else if(view_state.getFolder()==GigaboxxManager.Folders.UPDATES){content=[_tx("No hay mensajes.")];}
return content;}});

function PaginatedObjectList(page_size){if(page_size<=0){Util.error('Invalid Page Size');page_size=10;}
copy_properties(this,{_dirty:{},_objectList:[],_pageHandler:bagofholding,_pageSize:page_size||10});}
copy_properties(PaginatedObjectList.prototype,{getPageSize:function(){return this._pageSize;},hasFullPage:function(page_num){var start=(page_num-1)*this._pageSize;var end=Math.min((page_num)*this._pageSize,this._objectList.length);if(start>=this._objectList.length){return false;}
var last_page=end==this._objectList.length;var found_start=false;var found_end=false;for(var i=start;i<end;i++){if(typeof(this._objectList[i])=='undefined'){if(!last_page||(last_page&&!found_start)){return false;}else{found_end=true;}}else if(last_page){if(found_end){return false;}else{found_start=true;}}}
return true;},hasPage:function(page_num){var start=(page_num-1)*this._pageSize;var end=(page_num)*this._pageSize;for(var i=start;i<this._objectList.length&&i<end;i++){if(typeof(this._objectList[i])!='undefined'){return true;}}
return false;},getPage:function(page_num){var start=(page_num-1)*this._pageSize;if(start>(this._objectList.length-1)||start<0){return null;}
var list=this._objectList.slice(start,start+this._pageSize);var last_idx=list.length-1;while(last_idx>=0&&typeof(list[last_idx])=='undefined'){last_idx--;}
return last_idx>=0?list.slice(0,last_idx+1):null;},setPage:function(page_num,objects){if(!hasArrayNature(objects)){Util.warn('Invalid object for setPage');return this;}
if(objects.length==0){return this;}
var required_length=page_num*this._pageSize;if(this._objectList.length<required_length){this._objectList.length=required_length;}
var current_objects=objects.splice(0,this._pageSize);if(current_objects.length<this._pageSize){current_objects.length=this._pageSize;}
Array.prototype.splice.apply(this._objectList,[required_length-this._pageSize,this._pageSize].concat(current_objects));if(objects.length>0){this.setPage(page_num+1,objects);}
return this;},unsetPage:function(page_num){var start=(page_num-1)*this._pageSize;var tombstone=[];tombstone.length=this._pageSize;this.setPage(page_num,tombstone);},maxPage:function(){var last_object_idx=this._objectList.length-1;while(this._objectList[last_object_idx]===undefined&&last_object_idx>0){last_object_idx--;}
return Math.floor((last_object_idx/this._pageSize)+1);},setPageHandler:function(func){this._pageHandler=func;return this;},deleteObject:function(delete_me){var deleted=false;for(var i=0;i<this._objectList.length;i++){if(this._objectList[i]==delete_me){this._objectList.splice(i,1);deleted=true;i--;}}
for(var page=1,page_count=Math.ceil(this._objectList.length/this._pageSize);page<=page_count;page++){this._dirtyPage(page);}
return this;},_dirtyPage:function(page_num){if(!this._dirty[page_num]){this._dirty[page_num]=true;bind(this,this._doCallback,page_num).defer();}},_doCallback:function(page_num){this._dirty[page_num]=false;this._pageHandler(this,page_num);}});

function ThreadMessageRow(gigaboxx_manager,data,thread_id){copy_properties(this,{_controller:gigaboxx_manager,_data:data,threadId:thread_id,root:null,authorLinkWrapper:null,branchLinkWrapper:null,reportLinkWrapper:null});var dict={author_href:data.author.href||this._controller.buildURI().addQueryData({tid:thread_id}),author_name:data.author.name,author_image_src:data.author.picture,message_date:data.time_rendered,message_body:data.message,message_referrer:data.referrer_rendered||'',message_attachment:data.attachment_rendered||''};this.parent.construct(this,URI('/gigaboxx/templates/ThreadMessageRow.tmpl'),dict);if(data.unread){CSS.addClass(this.root,'GBThreadMessageRow_Unread');}
if(data.can_branch){var branch_onclick=Dialog.bootstrap.curry('/gigaboxx/dialog/MessageComposer.php',{'thread':this.threadId,'msg_id':this._data.msg_id,'id':this._data.author.id});var branch_link=$N('a',{'onclick':branch_onclick},_tx("Responder"));DOM.setContent(this.branchLinkWrapper,branch_link);}
if(data.report_link){var report_content=(data.can_branch?' &bull; ':'')
+data.report_link;DOM.setContent(this.reportLinkWrapper,HTML(report_content));}
if(!this._data.author.href){DOM.setContent(this.authorLinkWrapper,this._data.author.name);}}
ThreadMessageRow.extend('TemplateObject');

function GigaboxxManager(user_id,folder_nav,toolbar_top,toolbar_bottom,toolbar_search,content_area,config){window.gbm=this;this.Debug={NONE:0,ALL:1,STATES:2,PAINT:4,DATA_LOAD:8,DATA:16,DATA_SET:32};this.STATE_MAP={'*GLOBAL*':{Dirty:'CHECK_DATA'},'UNINITIALIZED':{},'CHECK_DATA':{_action:this._deferCheckDataCache.bind(this),CheckComplete:'LOAD_DATA'},'LOAD_DATA':{_action:this._checkDoDataLoad.bind(this),Loaded:'PRE_PAINT',Loading:'LOAD_PENDING'},'LOAD_PENDING':{_action:this._pendingDataLoad.bind(this),Pending:'LOAD_PENDING',Failed:'FAILED_LOAD',PendingComplete:'PRE_PAINT'},'FAILED_LOAD':{_action:this._doFailedLoadData.bind(this)},'PRE_PAINT':{_action:this._doPrePaintHooks.bind(this),PreHooksComplete:'PAINT'},'PAINT':{_action:this._doRepaint.bind(this),Painted:'POST_PAINT'},'POST_PAINT':{_action:this._doPostPaintHooks.bind(this),PostHooksComplete:'IDLE'},'IDLE':{}};if(config.debugLevel){this.debug=config.debugLevel;}
copy_properties(this,{_userId:user_id,_originalPageTitle:document.title,_config:config||{},_folderNav:folder_nav,toolbarManager:new GBToolbarManager(this,toolbar_top,toolbar_bottom,toolbar_search),_toolbars:[toolbar_top,toolbar_bottom,toolbar_search],_content_area:content_area,_undo_manager:new GBUndoManager(this),_state:'UNINITIALIZED',_isDirty:false,_blockLoadData:false,_asyncRequestQueue:[],_asyncPendingRequestQueue:[],_prePaintHooks:[],_postPaintHooks:[],_activeThread:null,_viewState:new GBViewState(GigaboxxManager.Folders.MESSAGES,'','',1).setOnViewChangeHandler(bind(this,this._viewChanged)).setOnPropertyChangeHandler('page',bind(this,this._pageChanged)),_view:GigaboxxManager.Views.THREAD_LIST,_pageSize:config.pageSize,_savedSearches:{},_viewStateData:{},threadCache:new GigaboxxThreadCache(),_threadRows:{},_resetPending:false,_threadList:null,_pagerCollection:null,_messagePagerCollection:null,_topPager:null,_bottomPager:null,_topMessagePager:null,_bottomMessagePager:null,_activeThreadData:null,_hasShownMuffin:false,_activeReplyForm:null,_activeThreadMessagesRoot:null,_errorCode:null,_errorMsg:null});PageTransitions.registerHandler(this._pageTransitionHandler.bind(this));this._initialize();GigaboxxManager.instances[user_id]=this;}
copy_properties(GigaboxxManager,{getInstance:function(instance_id){return GigaboxxManager.instances[instance_id]||null;},instances:{},Folders:{MESSAGES:'[fb]messages',REQUESTS:'[fb]requests',UPDATES:'[fb]updates',SENT:'[fb]sent'},Views:{THREAD_LIST:'thread_list',COMPOSE_MESSAGE:'compose',READ_MESSAGE:'read_message',ERROR:'error'},Filters:{UNREAD:'[fb]unread'}});GigaboxxManager.mixin('Arbiter',{getFolderNav:function(){return this._folderNav;},getContentArea:function(){return this._content_area;},getToolbars:function(){return this._toolbars;},getConfig:function(){return this._config;},isGigaboxxURI:function(uri){var re;if(this._config.forceLaunch){re=/\/gigaboxx|inbox\//;}else{re=/\/gigaboxx\//;}
if(typeof(uri)=='string'){uri=new URI(uri);}
return re.test(uri.getPath());},_pageTransitionHandler:function(uri){if(!this.isGigaboxxURI(uri)){return false;}
var state=this.interpretURI(uri);this.load(state||{},true);PageTransitions.transitionComplete();return true;},interpretURI:function(uri){var query_data=uri.getQueryData();var state={};if(query_data.folder){switch(query_data.folder){case GigaboxxManager.Folders.MESSAGES:case GigaboxxManager.Folders.REQUESTS:case GigaboxxManager.Folders.UPDATES:case GigaboxxManager.Folders.SENT:state['folder']=query_data.folder;break;default:return null;}}
if(typeof(query_data.subfolder)!='undefined'){state['subfolder']=query_data.subfolder;}else{state['subfolder']='';}
if(typeof(query_data.filter)!='undefined'){state['filter']=query_data.filter;}else{state['filter']='';}
if(typeof(query_data.page)!='undefined'){state['page']=query_data.page;}else{state['page']=1;}
if(query_data.tid){state['thread']=query_data.tid;state['view']=GigaboxxManager.Views.READ_MESSAGE;}else{state['view']=GigaboxxManager.Views.THREAD_LIST;}
if(query_data.search_id||query_data.search_terms){if(query_data.search_id){state['search_id']={id:query_data.search_id,name:query_data.search_name||''};}else{state['search_terms']=query_data.search_terms;}}
return state;},load:function(state,signal_if_cached){var properties=['folder','subfolder','filter','search_terms','search_id','page','thread','view'];properties.forEach(function(property){var value=state[property];if(value!==undefined){this.debugLog(this.Debug.DATA_SET,'Load: ',property,' ',value);switch(property){case'folder':this.setFolder(value);break;case'subfolder':this.setSubFolder(value);break;case'filter':this.setFilter(value);break;case'view':this.setView(value);break;case'page':this.setPage(value);break;case'thread':this.setActiveThread(value);break;case'search_terms':this.setSearchRequest(new GBSearchRequestTerms(value));break;case'search_id':this.setSearchRequest(new GBSearchRequestId(value.id,value.name));break;}}},this);if(signal_if_cached&&this._config.logCachedViews){this._doCachedAsyncSignal();}
this._dirty();return false;},setFolder:function(folder){if(this._viewState.getFolder()!=folder){if(this._isValidFolder(folder)){$('gigaboxx_wrapper').removeClass(this._cssClassForFolder(this._viewState.getFolder()));$('gigaboxx_wrapper').addClass(this._cssClassForFolder(folder));this.debugLog(this.Debug.DATA,'Switching folder:',folder);this._viewState.setFolder(folder);this.setSubFolder('');this.setFilter('');this._viewState.clearSearchRequest();this._dirty();}else{Util.warn('Invalid folder %s',folder);}}},_cssClassForFolder:function(folder){if(!folder.length){return folder;}
folder=folder.replace('[fb]','');return'GBFolder_'+folder.charAt(0).toUpperCase()+folder.substring(1);},_isValidFolder:function(folder){return(folder==GigaboxxManager.Folders.MESSAGES||folder==GigaboxxManager.Folders.REQUESTS||folder==GigaboxxManager.Folders.UPDATES||folder==GigaboxxManager.Folders.SENT);},setSubFolder:function(subfolder){this._viewState.setSubFolder(subfolder);this._viewState.setFilter('');if(subfolder){this._viewState.clearSearchRequest();}
this._dirty();return this;},setFilter:function(filter){if(this._viewState.getFilter()!=filter){if(this._isValidMessageFilter(filter)){this._viewState.setFilter(filter);this._viewState.clearSearchRequest();this._dirty();}else{Util.warn('Invalid filter %s',filter);}}
return this;},setSearchRequest:function(search_request){this._viewState.setSearchRequest(search_request);this._viewState.setFolder('');this._viewState.setSubFolder('');this._viewState.setFilter('');if(!this._savedSearches[search_request.getId()]){var nav_item=new UINestedNavItem(search_request.getId()).setIcon('/images/app_icons/search.gif').setTitle(search_request.getLabel()).setHref(this.buildURI(true).addQueryData(search_request.getQueryData())).setCloseHandler(this._deleteSavedSearch.bind(this));this.getFolderNav().addNavItem(nav_item,true);this._savedSearches[search_request.getId()]=nav_item;}
this._dirty();},setError:function(error_code,error_message){if(error_code){this._errorCode=error_code;this._errorMsg=error_message;this.setView(GigaboxxManager.Views.ERROR);}else{this._errorCode=null;this._errorMsg=null;var state=this.interpretURI(URI.getRequestURI());this.load(state||{},true);}
this._dirty();return this;},_deleteSavedSearch:function(nav_item){if(this._viewState.isSearchRequest()&&this._viewState.searchRequest.getId()==nav_item.id){this.buildURI(true).addQueryData({folder:GigaboxxManager.Folders.MESSAGES}).go();this._folderNav.selectTab('gb_nav_folder_messages');}
delete this._savedSearches[nav_item.id];return false;},getViewState:function(){return this._viewState;},_viewChanged:function(){this.setPage(1);for(var search_id in this._savedSearches){this._folderNav.removeNavItem(this._savedSearches[search_id]);this._deleteSavedSearch(this._savedSearches[search_id]);}
if(this._resetPending){this.debugLog(this.Debug.DATA,'Performing pending reset.');this.flushCaches();this._resetPending=false;}
Arbiter.inform('gigaboxx/view_changed',this.getViewState());this.inform('gigaboxx/viewChanged',this.getViewState());},_pageChanged:function(){var page=this._viewState.getPage();if(this._pagerCollection){this._pagerCollection.setPage(page);}},_isValidMessageFilter:function(filter){var filters=values(GigaboxxManager.Filters);return filter==''||filters.contains(filter);},setPageData:function(view_struct,page,data){var view_state=GBViewState.constructFromStruct(view_struct);this._mergeThreadList(view_state,page,data);return this;},setActiveThreadData:function(data){this._activeThreadData=data;return this;},_getViewStateData:function(view_state){view_state=view_state||this._viewState;var view_id=view_state.getViewId();if(this._viewStateData[view_id]!==undefined){var cache_time=new Date().getTime()-
this._viewStateData[view_id].time;if(cache_time>this._config.cacheExpire){this.debugLog(this.Debug.DATA,'Expiring View: ',view_id,cache_time);delete this._viewStateData[view_id];}}
if(typeof(this._viewStateData[view_id])=='undefined'){var list=new PaginatedObjectList(this._pageSize).setPageHandler(bind(this,this._onPageUpdate));var count=-1;this._viewStateData[view_id]={list:list,count:count,time:new Date().getTime()};}
return this._viewStateData[view_id];},_onPageUpdate:function(list,page_num){if(this._getViewStateData().list==list){if(this.getPage()==page_num){if(list.hasFullPage(page_num)){this._dirty();}else{for(var view_id in this._viewStateData){if(this._viewStateData[view_id].list==list){this.debugLog(this.Debug.DATA,'Expire View ',view_id,' on dirty page ',page_num);delete this._viewStateData[view_id];this._dirty();}}}}}},_onCounterUpdate:function(type,data){this.debugLog(this.Debug.DATA,'Counter update',type,data);this.flushCaches();if(this.isGigaboxxURI(URI.getRequestURI())&&this._view==GigaboxxManager.Views.THREAD_LIST&&this.getPage()==1){this._dirty();}},setView:function(view){if(this._view!=view){if(this._isValidView(view)){this._view=view;if(view!=GigaboxxManager.Views.ERROR){this._errorCode=null;this._errorMessage=null;}
if(view!=GigaboxxManager.Views.READ_MESSAGE&&this._activeThread){this.setActiveThread(null);}
this._dirty();}else{Util.warn('Invalid view %s',view);}}
return this;},getView:function(){return this._view;},_isValidView:function(view){if(view==GigaboxxManager.Views.READ_MESSAGE){if(this._activeThread==null){return false;}}
return values(GigaboxxManager.Views).contains(view);},getPage:function(){return this._viewState.getPage();},_computeOffset:function(page,page_size){page=page||this.getPage();page_size=page_size||this._pageSize;return Math.max(page-1,0)*page_size;},setPage:function(page){if(this._viewState.getPage()!=page){this._viewState.setPage(Math.max(page,1));this._dirty();if(this._getViewStateData().count<0){this._pagerCollection.setTotal(this._computeOffset()+this._pageSize+1);}}
return this;},setPageSize:function(page_size){if(page_size!=this._pageSize){this._threadList.setSize(page_size);this._pageSize=page_size;this._topPager.setMaxPerPage(page_size);this._bottomPager.setMaxPerPage(page_size);this.flushCaches();this.buildURI(true).go();}},_gotoPageByOffset:function(offset){var page=offset/this._pageSize+1;this.buildURI().addQueryData({page:page}).go();},_gotoAdjacentMessage:function(index,dir){this._ensurePageCached(this._onLoadThreadListGotoAdjacentMessage.bind(this,index,dir,this._viewState));this._dirty();},_onLoadThreadListGotoAdjacentMessage:function(index,dir,view_state,response){if(response){this._onLoadThreadList(view_state,response);}
var threads=this._getCurrentThreads();var currentIndex=this._determineActiveThreadIndex(threads,this._activeThread);if(currentIndex==-1){this.buildURI().addQueryData({page:this.getPage()}).go();return;}
var indexWithinPage=currentIndex+dir;if(indexWithinPage>=0&&indexWithinPage<threads.length){this.buildURI().addQueryData({tid:threads[indexWithinPage]}).go();}else{if(indexWithinPage<0){var currentPage=this.getPage();if(currentPage<=1){this.buildURI().addQueryData({page:1}).go();return;}else{this.setPage(this.getPage()-1);}}else{this.setPage(this.getPage()+1);}
this._ensurePageCached(this._onLoadThreadListGotoThread.bind(this,this._viewState,indexWithinPage>0));this._dirty();}},_onLoadThreadListGotoThread:function(view_state,firstThread,response){if(response){this._onLoadThreadList(view_state,response);}
var threads=this._getCurrentThreads();if(!threads){this.buildURI().addQueryData({page:this.getPage()-1}).go();}else if(firstThread){this.buildURI().addQueryData({tid:threads[0]}).go();}else{this.buildURI().addQueryData({tid:threads[threads.length-1]}).go();}},getActiveThread:function(){return this._activeThread;},setActiveThread:function(thread_id){if(this._activeThread!=thread_id&&thread_id){this.debugLog(this.Debug.DATA_LOAD,'New thread: ',this._activeThread,' != ',thread_id);this._prePaintHooks.push(function(thread_id){var thread=this._activeThreadData;if(thread&&thread.threadId==thread_id&&thread.tags.contains(GigaboxxManager.Filters.UNREAD)){this._updateTags([thread_id],GigaboxxManager.Filters.UNREAD,true);this._postPaintHooks.push(function(thread_id){var thread=this._activeThreadData;if(thread&&thread.threadId==thread_id){this.setMessageTag(thread.threadId,GigaboxxManager.Filters.UNREAD,true,{'from_read':1});}}.bind(this,thread_id));}}.bind(this,thread_id));}
this._activeThread=thread_id;this._messagePagerCollection.setTotal(this._pageSize);this._messagePagerCollection.setPage(this._pageSize/2);this._dirty();if(this._activeThread==null&&this._view==GigaboxxManager.Views.READ_MESSAGE){this.setView(GigaboxxManager.Views.THREAD_LIST);}
return this;},_determineActiveThreadIndex:function(threads,thread_id){if(!thread_id){return-1;}
var threads=this._getCurrentThreads();for(var i=0;i<threads.length;i++){if(threads[i]==thread_id){return i;}}
return-1;},buildURI:function(without_data){var uri;if(this._config.forceLaunch){uri=URI('/inbox/');}else{uri=URI('/gigaboxx/');}
if(!without_data){uri.addQueryData(this._viewState.getViewData());}
return uri;},_doTransition:function(transition){this.debugLog(this.Debug.STATES,'Transition: ',transition,' in State:',this._state);var global_transitions=this.STATE_MAP['*GLOBAL*'];var state_transitions=this.STATE_MAP[this._state];if(!state_transitions){Util.error('Unknown state: %s',this._state);return;}
var new_state=state_transitions[transition];if(new_state==undefined){new_state=global_transitions[transition];}
if(new_state==undefined){Util.warn('Unhandled transition: %s in state %s',transition,this._state);return;}
this._executeState(new_state);},_executeState:function(new_state){this._state=new_state;var state_map=this.STATE_MAP[new_state];if(state_map){var action=state_map._action;if(typeof(action)=='function'){action();}}else{Util.error('State without action: %s',this._state);}},_initialize:function(){this._initializeThreadListPlaceholders();this._initializePagers();this._initializeCounterDisplays();this._initializeSubscriptions();this._postPaintHooks.push(this._setVisible.bind(this));},_initializeThreadListPlaceholders:function(){var content_area=this.getContentArea();if(this._threadList==null){this._threadList=new ThreadList(this,this._pageSize);}
content_area.setContent(this._threadList.getNode());},_initializePagers:function(){var offset=this._computeOffset();var count=offset+this._pageSize+1;var view_count=this._getViewStateData().count;if(view_count>=0){count=view_count;}
this._topPager=new UIPager(count,this._pageSize,offset,this._gotoPageByOffset.bind(this)).setSummaryTextHandler(identity.curry(''));this._bottomPager=new UIPager(count,this._pageSize,offset,this._gotoPageByOffset.bind(this)).setSummaryTextHandler(identity.curry(''));this._topMessagePager=new UIPager(this._pageSize,1,this._pageSize/2,this._gotoAdjacentMessage.bind(this)).setSummaryTextHandler(identity.curry(''));this._bottomMessagePager=new UIPager(this._pageSize,1,this._pageSize/2,this._gotoAdjacentMessage.bind(this)).setSummaryTextHandler(identity.curry(''));this._pagerCollection=new Collection(UIPager,[this._topPager,this._bottomPager]);this._messagePagerCollection=new Collection(UIPager,[this._topMessagePager,this._bottomMessagePager]);},_initializeCounterDisplays:function(){var folders=DOM.scry(this._folderNav.getContentArea(),'li.UINestedFilterList_Item');folders.forEach(function(folder_elem){if(folder_elem.id){var match=folder_elem.id.match(/gb_nav_folder_(.*)/);var count_elem=DOM.scry(folder_elem,'div.BubbleCount_Number');var wrapper_elem=DOM.scry(folder_elem,'div.BubbleCount');if(match&&count_elem.length>0){new CounterDisplay(match[1]+'_unread',count_elem[0],wrapper_elem[0]);}}});},_initializeSubscriptions:function(){var types=[];for(var folder in GigaboxxManager.Folders){var folder_name=GigaboxxManager.Folders[folder].substring(4);types.push(CounterDisplay.EVENT_TYPE_UPDATE+'/'+folder_name+'_unread');}
Arbiter.subscribe(types,this._onCounterUpdate.bind(this),Arbiter.SUBSCRIBE_NEW);},_deferCheckDataCache:function(){if(!this._isDirty){this._isDirty=true;bind(this,this._doCheckDataCache).defer();}},_ensurePageCached:function(callback){if(this._threadListPageCached(this._viewState,this.getPage())){this.debugLog(this.Debug.DATA_LOAD,'View Cached. '+this._viewState);callback(null);}else{var data={start:this._computeOffset(this._viewState.getPage(),this._pageSize),limit:this._pageSize};var view_data=this._viewState.getViewData();delete view_data.page;copy_properties(data,view_data);var async=new AsyncRequest('/ajax/gigaboxx/endpoint/ListThreads.php').setMethod('GET').setReadOnly(true).setData(data);var request_entry={async:async,handler:callback};this.debugLog(this.Debug.DATA_LOAD,'Need thread list. '+this._viewState);this._asyncRequestQueue.push(request_entry);}},_doCachedAsyncSignal:function(){var should_send=false;var data={};if(this._view==GigaboxxManager.Views.READ_MESSAGE){if(this._messageCached(this._activeThread)){data={action:'read',tid:this._activeThread};should_send=true;}}else if(this._view==GigaboxxManager.Views.THREAD_LIST){if(this._threadListPageCached(this._viewState,this.getPage())){data={start:this._computeOffset(this._viewState.getPage(),this._pageSize),limit:this._pageSize};var view_data=this._viewState.getViewData();delete view_data.page;copy_properties(data,view_data);should_send=true;}}
if(should_send){data['cached']=true;new AsyncSignal('/ajax/gigaboxx/endpoint/ListThreads.php',data).send();}},_doCheckDataCache:function(){IL().b('check_data');this._isDirty=false;this.debugLog(this.Debug.STATES,'View State: View/',this._view,' Folder/',this._viewState.getFolder(),' Filter/',this._viewState.getFilter(),' Page/',this.getPage());if(this._view==GigaboxxManager.Views.ERROR){this.debugLog(this.Debug.DATA_LOAD,'Errored, no data loads');}else if(this._view==GigaboxxManager.Views.READ_MESSAGE){if(!this._messageCached(this._activeThread)){var async=new AsyncRequest('/ajax/gigaboxx/endpoint/ReadThread.php').setMethod('GET').setReadOnly(true).setData({tid:this._activeThread,readonly:true});var request_entry={async:async,handler:this._onMessageLoad.bind(this)};this.debugLog(this.Debug.DATA_LOAD,'Need Thread History',this._activeThread);this._asyncRequestQueue.push(request_entry);}else{if(this._hasShownMuffin){ads_refresh(null,'/inbox/',this._onMuffinLoad.bind(this),null,null,null,true);}else{this._hasShownMuffin=true;}}}else{this._ensurePageCached(this._onLoadThreadList.bind(this,this._viewState));}
this._doTransition('CheckComplete');IL().e('check_data');},_checkDoDataLoad:function(){if(this._asyncRequestQueue.length){this._doLoadData.bind(this).deferUntil(function(){return!this._blockLoadData;}.bind(this),10000);CSS.addClass(this.getContentArea(),'async_saving');}else{this._doTransition('Loaded');}},_doLoadData:function(){var content_area=this.getContentArea();this._asyncRequestQueue.forEach(function(request_entry){var handler=bind(this,this._loadDataHandler,request_entry);var error_handler=bind(this,this._loadDataErrorHandler,request_entry);var finally_handler=bind(this,this._loadDataFinallyHandler,request_entry);request_entry.async.setHandler(handler).setErrorHandler(error_handler).setFinallyHandler(finally_handler).setStatusElement(content_area).send();this._asyncPendingRequestQueue.push(request_entry);},this);this._asyncRequestQueue=[];this._doTransition('Loading');},_pendingDataLoad:function(){if(this._asyncPendingRequestQueue.length){this.debugLog(this.Debug.DATA_LOAD,'Pending Request Count: ',this._asyncPendingRequestQueue.length);}else{this._doTransition('PendingComplete');}},_doFailedLoadData:function(){this.setView(GigaboxxManager.Views.ERROR);this._dirty();},_loadDataHandler:function(request_entry,response){if(typeof(request_entry.handler)=='function'){request_entry.handler(response);}
request_entry.success=true;},_loadDataErrorHandler:function(request_entry,response){if(typeof(request_entry.errorHandler)=='function'){request_entry.errorHandler(response);}
this._errorCode=response.getError();this._errorMsg=response.getErrorDescription();},_loadDataFinallyHandler:function(request_entry,response){this._asyncPendingRequestQueue.remove(request_entry);if(request_entry.success){this._doTransition('Pending');}else{this._doTransition('Failed');}},_setVisible:function(){$('gigaboxx_wrapper').style.visibility='visible';},_doPrePaintHooks:function(){if(this._prePaintHooks.length){this._prePaintHooks.forEach(function(callback){callback();});this._prePaintHooks=[];}
this._doTransition('PreHooksComplete');},_doPostPaintHooks:function(){if(this._postPaintHooks.length){this._postPaintHooks.forEach(function(callback){callback();});this._postPaintHooks=[];}
this._doTransition('PostHooksComplete');},_doRepaint:function(){bind(this,this._paint).defer();},_dirty:function(){this._doTransition('Dirty');},_paint:function(){IL().b('gb paint');this._isDirty=false;var content_area=this.getContentArea();if(!this._threadListView){this._threadListView=new GBThreadListView(this);}
if(!this._messageHistoryView){this._messageHistoryView=new GBMessageHistoryView(this);}
if(!this._errorView){this._errorView=new GBErrorView(this);}
var page_title=null;switch(this._view){case GigaboxxManager.Views.COMPOSE_MESSAGE:case GigaboxxManager.Views.THREAD_LIST:this._threadListView.paint();page_title=this._threadListView.getTitle();this._errorView.hide();this._messageHistoryView.hide();this._threadListView.show();break;case GigaboxxManager.Views.READ_MESSAGE:this._messageHistoryView.paint();page_title=this._messageHistoryView.getTitle();this._errorView.hide();this._threadListView.hide();this._messageHistoryView.show();DOMScroll.scrollTo(new Vector2(0,0,'document'));break;case GigaboxxManager.Views.ERROR:this._errorView.paint();page_title=this._errorView.getTitle();this._errorView.show();this._messageHistoryView.hide();this._threadListView.hide();break;default:Util.warn('Unable to paint view %s',this._view);}
this.toolbarManager.paint();document.title=page_title?'Facebook | '+_tx("Mensajes")+' - '+page_title:this._originalPageTitle;if(this._undo_manager.hasPendingDeferredNotification()){this._undo_manager.displayDeferredNotification();}else{this._undo_manager.clearNotification();}
this._doTransition('Painted');IL().e('gb paint');},_updateToolbarOnSelect:function(){var sel_threads=this._getSelectedThreads();var enable_delete=sel_threads.length>0;var enable_unread=false;var enable_read=false;var enable_report_spam=sel_threads.length;var enable_select_all=!sel_threads.length;var enable_unsubscribe=false;for(var i=0;i<sel_threads.length;i++){var tid=sel_threads[i];var data=this.threadCache.getThreadData(tid);if(!data){enable_read=true;enable_unread=true;}else{if(data.tags.contains(GigaboxxManager.Filters.UNREAD)){enable_read=true;}else{enable_unread=true;}
if(data.subscription&&data.subscription.subscribed){enable_unsubscribe=true;}}}
var folder=this.getViewState().getFolder();var is_sent_folder=(folder==GigaboxxManager.Folders.SENT);var is_updates_folder=(folder==GigaboxxManager.Folders.UPDATES);this.toolbarManager.getComponent('SelectAllButton').setDisabled(false).setHidden(!(this._config.alternateToolbarUI&&enable_select_all));this.toolbarManager.getComponent('SelectNoneButton').setDisabled(false).setHidden(!this._config.alternateToolbarUI||enable_select_all);this.toolbarManager.getComponent('UnreadButton').setDisabled(!enable_unread||is_sent_folder).setHidden(enable_read);this.toolbarManager.getComponent('ReadButton').setDisabled(false).setHidden(!enable_read);this.toolbarManager.getComponent('DeleteButton').setDisabled(!enable_delete).setHidden(false);this.toolbarManager.getComponent('ReportSpamButton').setDisabled(!enable_report_spam||is_sent_folder).setHidden(false);},_doSelect:function(criteria){var threads=this._getViewStateData().list.getPage(this.getPage());if(threads){for(var i=0;i<threads.length;i++){var tid=threads[i];var message_row=this._threadRows[tid];var data=this.threadCache.getThreadData(tid);if(!data||data.inaccessible){continue;}
if(typeof(criteria)=='function'&&criteria(message_row)){message_row.selector.checked=true;}else{message_row.selector.checked=false;}}}
this._updateToolbarOnSelect();return false;},_getSelectedThreads:function(){var sel_threads=[];if(this._view==GigaboxxManager.Views.READ_MESSAGE){sel_threads.push(this._activeThread);}else{var thread_rows=this._threadList.getThreadRows();for(var i=0;i<thread_rows.length;i++){if(thread_rows[i]&&thread_rows[i].selector.checked){sel_threads.push(thread_rows[i].threadId);}}}
return sel_threads;},_getCurrentThreads:function(){return this._getViewStateData().list.getPage(this.getPage());},addReplyContent:function(content){var notified=false;var thread_id=content.thread_id;var message=content.message;if(thread_id==this._activeThread&&this._activeThreadMessagesRoot){var row=new ThreadMessageRow(this,message,thread_id);DOM.appendContent(this._activeThreadMessagesRoot,row.getNodes());animation(row.root).from('height',0).to('auto').from('opacity',0).to(1).duration(250).ease(animation.ease.both).go();notified=true;}
if(this._messageCached(thread_id)){this._activeThreadData.messages.push(message);}
if(this.threadCache.isCached(thread_id)){this.threadCache.mergeMessageData(thread_id,content.message_raw);}
return notified;},_getThreadRow:function(thread_id){if(!this._threadRows[thread_id]){var row=new ThreadRow(this,thread_id);this._threadRows[thread_id]=row;}
return this._threadRows[thread_id];},_getMessagePane:function(){var content_area=this.getContentArea();var pane_id=content_area.id+'_message_pane';var pane=ge(pane_id);if(pane==null){pane=this._createMessagePane(pane_id);content_area.appendContent(pane);}
return pane;},_createMessagePane:function(pane_id){var node=$N('div',{id:pane_id,className:'message_pane',style:{display:'none'}});return node;},_threadListPageCached:function(view_state,page){var view_data=this._getViewStateData(view_state);return view_data.list.hasFullPage(page);},_messageCached:function(active_thread){return this._activeThreadData&&this._activeThreadData.threadId==active_thread;},flushCaches:function(){this.debugLog(this.Debug.DATA,'Flushing Caches');this.threadCache.flushCache();this._threadRows={};this._viewStateData={};this._activeThreadData=null;},setMessageTag:function(thread_ids,tag,to_remove,extra_data){thread_ids=arrayize(thread_ids);to_remove=!!to_remove;var tag_handler=bind(this,this._setMessageTagHandler,thread_ids,tag,to_remove);this._updateTags(thread_ids,tag,to_remove);var data={tid:thread_ids,tag:tag,to_remove:to_remove};copy_properties(data,extra_data||{});new AsyncRequest('/ajax/gigaboxx/endpoint/TagThread.php').setMethod('POST').setData(data).setErrorHandler(tag_handler).setHandler(tag_handler).send();if(tag==GigaboxxManager.Filters.UNREAD&&to_remove==false&&thread_ids.contains(this._activeThread)){this.buildURI().go();}
return false;},_setMessageTagHandler:function(thread_ids,tag,to_remove,response){if(!response.error&&response.getPayload().success){this._resetPending=true;}else{this._updateTags(thread_ids,tag,!to_remove);}},_updateTags:function(thread_ids,tag,to_remove){var count_updates={};for(var i=0;i<thread_ids.length;i++){var thread_id=thread_ids[i];this._setCountUpdate(thread_id,tag,to_remove,count_updates);if(to_remove){this.debugLog(this.Debug.DATA,'Remove Tag',tag,'from',thread_id);if(this.threadCache.isCached(thread_id)){this.threadCache.getThreadData(thread_id).tags.remove(tag);this.threadCache.dirty(thread_id);}
if(this._messageCached(thread_id)){this._activeThreadData.tags.remove(tag);}}else{this.debugLog(this.Debug.DATA,'Add Tag',tag,'from',thread_id);if(this.threadCache.isCached(thread_id)){array_set_add(this.threadCache.getThreadData(thread_id).tags,tag);this.threadCache.dirty(thread_id);}
if(this._messageCached(thread_id)){array_set_add(this._activeThreadData.tags,tag);}}}
for(var name in count_updates){CounterDisplay.adjustCount(name,count_updates[name]);}
this._dirty();},_setCountUpdate:function(thread_id,tag,to_remove,count_updates,undo){if(tag!=GigaboxxManager.Filters.UNREAD){return;}
var value=0;var counter_names=[];var folders=null;var is_unread=!to_remove;var thread_data=null;if(this.threadCache.isCached(thread_id)){thread_data=this.threadCache.getThreadData(thread_id);folders=values(GigaboxxManager.Folders).filter(function(folder){return thread_data.tags.contains(folder);});is_unread=thread_data.tags.contains(GigaboxxManager.Filters.UNREAD);}else if(this._messageCached(thread_id)){thread_data=this._activeThreadData;folders=values(GigaboxxManager.Folders).filter(function(folder){return this._activeThreadData.tags.contains(folder);},this);is_unread=this._activeThreadData.tags.contains(GigaboxxManager.Filters.UNREAD);}else{Util.warn('Can\'t find thread '+thread_id);}
if(is_unread&&to_remove){value=undo?1:-1;}else if(!is_unread&&!to_remove){value=undo?-1:1;}
if(folders){folders.map(function(folder){counter_names.push(folder.substring(4)+'_unread');});}
counter_names.forEach(function(counter_name){if(count_updates[counter_name]===undefined){count_updates[counter_name]=0;}
count_updates[counter_name]+=value;});this._updateSeenThread(thread_data,value);},deleteMessages:function(thread_ids){thread_ids=arrayize(thread_ids);var thread_map={};for(var iter=0;iter<thread_ids.length;iter++){var tid=thread_ids[iter];var thread_data=this.threadCache.getThreadData(tid);if(!thread_data){this.debugLog(this.Debug.DATA,'Delete missing thread data:',tid);continue;}
thread_map[tid]=thread_data.timeLastUpdated;}
var delete_handler=this._deleteMessagesHandler.bind(this);new AsyncRequest('/ajax/gigaboxx/endpoint/DeleteThread.php').setMethod('POST').setData({tids:thread_map}).setStatusElement(this.getContentArea()).setErrorHandler(delete_handler).setHandler(delete_handler).setFinallyHandler(this._deleteMessagesFinallyHandler.bind(this)).send();this._deleteThreads(keys(thread_map));return false;},_deleteThreads:function(thread_ids,confirmed){if(confirmed||confirmed===undefined){this._blockLoadData=true;for(var view_id in this._viewStateData){var view_data=this._viewStateData[view_id];for(var i=0;i<thread_ids.length;i++){this.debugLog(this.Debug.DATA,'Delete thread ',thread_ids[i],' in view ',view_id);view_data.list.deleteObject(thread_ids[i]);}}}},_deleteMessagesHandler:function(response){var successful=false;if(!response.error){successful=true;var payload=response.getPayload();if(payload.results){for(var tid in payload.results){successful&=payload.results[tid];}}
this._undo_manager.deferUndoNotification(payload.undo);}else{ErrorDialog.showAsyncError(response);}
if(successful){var count_updates={};for(var tid in payload.results){delete this._threadRows[tid];this._setCountUpdate(tid,GigaboxxManager.Filters.UNREAD,true,count_updates);}
for(var name in count_updates){CounterDisplay.adjustCount(name,count_updates[name]);}
this.buildURI().go();}else{this.flushCaches();this._dirty();}},_deleteMessagesFinallyHandler:function(response){if(this._blockLoadData){this._blockLoadData=false;this._dirty();}},updateViewOnUndoDelete:function(response){var count_updates={};for(var tid in response.getPayload()){this._setCountUpdate(tid,GigaboxxManager.Filters.UNREAD,true,count_updates,true);}
for(var name in count_updates){CounterDisplay.adjustCount(name,count_updates[name]);}
if(this.isGigaboxxURI(URI.getRequestURI())&&this._view==GigaboxxManager.Views.THREAD_LIST){this.flushCaches();this._dirty();return true;}
return false;},reportSpam:function(thread_ids){thread_ids=arrayize(thread_ids);var report_handler=this._deleteMessagesHandler.bind(this);new AsyncRequest('/ajax/gigaboxx/endpoint/ReportThread.php').setMethod('POST').setData({tids:thread_ids}).setStatusElement(this.getContentArea()).setTransportErrorHandler(report_handler).setErrorHandler(report_handler).setFinallyHandler(this._deleteMessagesFinallyHandler.bind(this)).setHandler(report_handler).send();this._deleteThreads(thread_ids);return false;},unsubscribeUpdates:function(thread_ids){thread_ids=arrayize(thread_ids);var tid_sender_map={};for(var i=0;i<thread_ids.length;i++){var tid=thread_ids[i];var cached_data=this.threadCache.getThreadData(tid);if(!cached_data){tid_sender_map[tid]=0;}else if(cached_data.subscription&&cached_data.subscription.subscribed){tid_sender_map[tid]=cached_data.originalAuthor;}}
new AsyncRequest('/ajax/gigaboxx/endpoint/UnsubscribeUpdate.php').setMethod('POST').setData({tid_sender_map:tid_sender_map}).setStatusElement(this.getContentArea()).setHandler(this._unsubscribeUpdatesHandler.bind(this)).send();return false;},_unsubscribeUpdatesHandler:function(response){var payload=response.getPayload();this.updateViewOnSubscriptionChange(payload.results,false);this._undo_manager.setUndoNotification(payload.undo);},updateViewOnSubscriptionChange:function(updated_senders,subscribe){var cache=this.threadCache.getCache();for(var tid in cache){var thread=cache[tid];if(updated_senders[thread.originalAuthor]){thread.subscription.subscribed=subscribe;}}
if(this._activeThreadData&&updated_senders[this._activeThreadData.originalAuthor]){this._activeThreadData.subscription.subscribed=subscribe;}
this._updateToolbarOnSelect();return false;},_doSelectedAction:function(action){var GBMF=GigaboxxManager.Filters;var threads=this._getSelectedThreads();switch(action){case'unread':return this.setMessageTag(threads,GBMF.UNREAD,false);case'read':return this.setMessageTag(threads,GBMF.UNREAD,true);case'delete':return this.deleteMessages(threads);case'report':return this.reportSpam(threads);case'select_all':return this._doSelect(function(row){return true;});case'select_none':return this._doSelect(function(row){return false;});case'unsubscribe':return this.unsubscribeUpdates(threads);}
return true;},_onMessageLoad:function(response){var payload=response.getPayload();this._activeThreadData=payload.thread;this._onMuffinLoad(response);},_updateLastSeenTime:function(){var folder=this._viewState.getFolder();if(this._config.fbxGroup&&folder==GigaboxxManager.Folders.MESSAGES){new AsyncSignal('/ajax/gigaboxx/endpoint/UpdateLastSeenTime.php',{folder:folder}).send();Arbiter.inform(CounterDisplay.EVENT_TYPE_UPDATE+'/'+
folder.substring(4)+'_unseen',0);this._config.lastSeenTime=0;}},_updateSeenThread:function(thread,value){var folder=this._viewState.getFolder();if(thread&&this._config.lastSeenTime&&folder==GigaboxxManager.Folders.MESSAGES&&thread.timeLastUpdated>this._config.lastSeenTime){Arbiter.inform(CounterDisplay.EVENT_TYPE_ADJUST+'/'+
folder.substring(4)+'_unseen',value);}},_onMuffinLoad:function(response){var payload=response.getPayload();if(payload.sidebar_ads){this._setMuffinHtml(payload.sidebar_ads);}},_onLoadThreadList:function(view_state,response){this._updateLastSeenTime.bind(this).defer();if(!response){return;}
var thread_list=response.getPayload().thread_list;if(thread_list){this.threadCache.mergeThreadData(thread_list);var thread_ids=[];for(var thread_id in thread_list){thread_ids.push(thread_id);}
this._mergeThreadList(copy_properties({},view_state),view_state.getPage(),thread_ids);}},_mergeThreadList:function(view_state,page_num,threads){var thread_list=this._getViewStateData(view_state).list;var offset=0;var synced=true;for(var offset=0;offset<threads.length;offset+=this._pageSize){var t=threads.slice(offset,offset+this._pageSize);t.push(undefined);if(thread_list.hasPage(page_num)){synced=false;}
if(!synced){thread_list.unsetPage(page_num);this.debugLog(this.Debug.DATA,'Expiring Page: ',page_num,' on merge');}
thread_list.setPage(page_num,t);page_num++;}
if(!synced){for(;page_num<thread_list.maxPage();page_num++){thread_list.unsetPage(page_num);this.debugLog(this.Debug.DATA,'Expiring Page: ',page_num,' on merge');}}},addData:function(data){this.threadCache.mergeThreadData(data);},_setMuffinHtml:function(html){$('gb_muffin_area').innerHTML=html;},showMuffin:function(){$('gb_muffin_area').style.display='block';$('gigaboxx_wrapper').addClass('gb_has_muffin');},hideMuffin:function(){hide('gb_muffin_area');$('gigaboxx_wrapper').removeClass('gb_has_muffin');},debugLog:function(){var arg1=arguments[0];var args=to_array(arguments);var check_level=this.Debug.NONE;if(typeof(arg1)=='number'){check_level=arg1;args.shift();}
if(((this.debug&check_level)||(this.debug&this.Debug.ALL))&&console&&console.log){console.log.apply(console,args);}}});

function UINestedFilterList(content_area){copy_properties(this,{useAnimation:false,_contentArea:content_area,_list:DOM.find(content_area,'ul.UINestedFilterList_List'),_selectedItemId:null,_selectedSubItemIndex:null,_itemRecords:null});this.initialize();}
copy_properties(UINestedFilterList.prototype,{getContentArea:function(){return this._contentArea;},initialize:function(){this._itemRecords=[];this._selectedItemId=null;var nav_item_elems=DOM.scry(this._contentArea,'li.UINestedFilterList_Item');var temp=DOM.scry(this._contentArea,'li.UINestedFilterList_Item_SubList');var sub_list_elems={};temp.forEach(function(sublist){var match=sublist.id.match(/sublists_(.*)/);if(match){sub_list_elems[match[1]]=sublist;}});for(var i=0;i<nav_item_elems.length;i++){var elem=nav_item_elems[i];var elem_id=elem.id||i;if(CSS.hasClass(elem,'UINestedFilterList_Selected')||CSS.hasClass(elem,'UINestedFilterList_SubSelected')){this._selectedItemId=elem_id;}
var sub_list=sub_list_elems[elem_id];var sub_item_elems=null;if(sub_list){sub_item_elems=DOM.scry(sub_list,'li.UINestedFilterList_SubItem');for(var j=0;j<sub_item_elems.length;j++){if(CSS.hasClass(sub_item_elems[j],'UINestedFilterList_SubItem_Selected')){this._selectedSubItemIndex=j;}}}
var nav_item={id:elem_id,item:new UINestedNavItem(elem_id),itemElem:elem,subListElem:sub_list,subItemElems:sub_item_elems};this._itemRecords.push(nav_item);}},addNavItem:function(item,is_selected){is_selected=!!is_selected;var state_classes=[];var anchor_elems=[$N('span',{className:'UINestedFilterList_Title'},item.title),$N('span',{className:'UINestedFilterList_ItemRight'})];if(item.icon){var item_class=item.isSprited?'UINestedFilterList_Icon':'UINestedFilterList_Icon UINestedFilterList_IconNonSprite';anchor_elems.unshift($N('span',{className:item_class,style:{backgroundImage:"url("+
item.icon+")"}}));}
var contents=$N('a',{href:item.href||'#',className:'UINestedFilterList_Item_Link',onclick:this.selectTab.bind(this,item.id)},anchor_elems);if(item.closeHandler){var close_span=$N('span',{className:'UINestedFilterList_Item_CloseLink_Icon'});var close_link=$N('span',{className:'UINestedFilterList_Item_CloseLinkWrapper'},$N('a',{href:'#',className:'UINestedFilterList_Item_CloseLink',onclick:this._onCloseTab.bind(this,item,item.closeHandler)},close_span));state_classes.push('UINestedFilterList_Item_hasCloseLink');contents=$N('div',{className:'UINestedFilterList_Item_Contents'},[contents,close_link]);}
var item_classes='UINestedFilterList_Item '+state_classes.join(' ');var item_elem=$N('li',{className:item_classes},contents);var sublist_classes='UINestedFilterList_Item_SubList';var sublist_elem=$N('li',{className:sublist_classes});var item_record={id:item.id,item:item,itemElem:item_elem,subListElem:sublist_elem,subItemElems:[]};this._list.appendContent([item_elem,sublist_elem]);this._itemRecords.push(item_record);if(is_selected){this.selectTab(item.id);}
return this;},removeNavItem:function(item){var record=null;for(var i=0;i<this._itemRecords.length;i++){if(item.id==this._itemRecords[i].id){record=this._itemRecords[i];this._itemRecords.splice(i,1);break;}}
if(!record){return;}
DOM.remove(record.itemElem);if(record.subListElem){DOM.remove(record.subListElem);}
if(record.id==this._selectedItemId){this.selectTab(null);}
return this;},selectTab:function(item_id,subindex){var previous_item;var previous_subitem;var selected_item;var selected_subitem;for(var i=0;i<this._itemRecords.length;i++){var record=this._itemRecords[i];if(record.id==this._selectedItemId){previous_item=record;if(this._selectedSubItemIndex!==undefined&&this._selectedSubItemIndex!==null&&record.subItemElems!==undefined){previous_subitem=record.subItemElems[this._selectedSubItemIndex];}}
if(record.id==item_id){selected_item=record;if(subindex!==undefined&&record.subItemElems!==undefined){selected_subitem=record.subItemElems[subindex];}}}
if(previous_item!=selected_item){if(previous_item&&previous_item.subListElem){this._closeSubList(previous_item.subListElem);}
if(selected_item&&selected_item.subListElem){this._openSubList(selected_item.subListElem);}}
if(previous_subitem){CSS.removeClass(previous_subitem,'UINestedFilterList_SubItem_Selected');CSS.removeClass(previous_subitem,'UIObject_SelectedItem');}
if(selected_subitem){CSS.addClass(selected_subitem,'UINestedFilterList_SubItem_Selected');CSS.addClass(selected_subitem,'UIObject_SelectedItem');}
if(previous_item){var class_name='UINestedFilterList_Selected';if(previous_subitem){class_name='UINestedFilterList_SubSelected';}else{CSS.removeClass(previous_item,'UIObject_SelectedItem');}
CSS.removeClass(previous_item.itemElem,class_name);CSS.removeClass(previous_item.itemElem,'UIObject_SelectedItem');}
if(selected_item){var class_name='UINestedFilterList_Selected';if(selected_subitem){class_name='UINestedFilterList_SubSelected';}else{CSS.addClass(selected_item,'UIObject_SelectedItem');}
CSS.addClass(selected_item.itemElem,class_name);CSS.addClass(selected_item.itemElem,'UIObject_SelectedItem');}
this._selectedItemId=item_id;this._selectedSubItemIndex=subindex;},_onCloseTab:function(nav_item,handler){if(!handler(nav_item)){this.removeNavItem(nav_item);}
return false;},_openSubList:function(sublist_elem){if(this.useAnimation){this._animateOpen(sublist_elem);}else{CSS.addClass(sublist_elem,'UINestedFilterList_Item_SubList_Open');}},_closeSubList:function(sublist_elem){if(this.useAnimation){this._animateClose(sublist_elem);}else{CSS.removeClass(sublist_elem,'UINestedFilterList_Item_SubList_Open');}},_animateOpen:function(elem){animation(elem).to('height','auto').from('0px').to('opacity',1).from(0).blind().show().duration(this.animationDuration||200).checkpoint(1,function(){CSS.addClass(elem,'UINestedFilterList_Item_SubList_Open');}).go();},_animateClose:function(elem){animation(elem).to('height','0px').to('opacity',0).hide().duration(this.animationDuration||200).checkpoint(1,function(){CSS.removeClass(elem,'UINestedFilterList_Item_SubList_Open');}).go();},_changeCollapse:function(item_id,collapse){for(var i=0;i<this._itemRecords.length;i++){var record=this._itemRecords[i];if(record.id!=item_id){continue;}
var class_base='UINestedFilterList_SubItem_';var class_to_remove=class_base
+(collapse?'Uncollapsed':'Collapsed');var class_to_add=class_base
+(collapse?'Collapsed':'Uncollapsed');for(var j=0;j<record.subItemElems.length;j++){if(CSS.hasClass(record.subItemElems[j],class_to_remove)){CSS.removeClass(record.subItemElems[j],class_to_remove);CSS.addClass(record.subItemElems[j],class_to_add);}}
var more_link=$(item_id+'_CollapseLinkMore');var hide_link=$(item_id+'_CollapseLinkHide');if(collapse){more_link.style.display='block';hide(hide_link);}else{hide(more_link);hide_link.style.display='block';}}},showCollapsed:function(item_id){this._changeCollapse(item_id,false);},hideCollapsed:function(item_id){this._changeCollapse(item_id,true);}});function UINestedNavItem(id){copy_properties(this,{id:id,icon:null,isSprited:false,href:null,title:null,subTitle:null,subItems:[],closeHandler:null});}
copy_properties(UINestedNavItem.prototype,{setId:function(id){return this._mutate('id',id);},setTitle:function(title){return this._mutate('title',title);},setSubTitle:function(sub_title){return this._mutate('subTitle',sub_title);},setHref:function(href){return this._mutate('href',href);},setIcon:function(icon){this.isSprited=false;return this._mutate('icon',icon);},setSubItems:function(sub_items){return this._mutate('subItems',sub_items)},setCloseHandler:function(handler){return this._mutate('closeHandler',handler);},_mutate:function(key,value){this[key]=value;return this;}});

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