var c={GetBlockedUsers:["permtime"],GetFileRevisions:["filetime"],GetNetworkUsers:["net_permtime","net_grouptime"],GetObjectsNOM:["foldertime","pagetime","filetime","permtime"],GetPage:["pagetime","foldertime","permtime"],GetPendingUsers:["permtime"],GetUsersInfos:["permtime","grouptime"],ListWorkspaceUserGroups:["grouptime"]};var PBcacheability=PBcacheability||c;if(Object.extend){Object.extend(PBcacheability,c)}var c={kPolicyFullDateTimeFormat:"%B %e, %Y %I:%M:%S %p",kFiFViewOptionsPrefsKey:"fifprefs",kBrowseFolderTreeOpenNodes:"browse_open_folders",kMaxGroupNameLength:100,kUserPref_UsersPanel_SortBy:"userspanel_sortby",ObjectModel:{kNoParent:0,kMaxParents:5,kNetworkIdStub:1,kShardIdStub:1}};var PBconst=PBconst||c;if(Object.extend){Object.extend(PBconst,c)}PBwiki.ObjectBrowser={classname:"PBwiki.ObjectBrowser",can_run:function(){return(this.table=$("object_table_view"))!==null},initialize:function(){if(!this.can_run()){return }this.canWrite=false;this.defaultViewName="ViewAllObjects";this.tableContent=this.table.down("tbody");this.tableColumnHeaderRow=this.table.down("thead").down();this.folderList=$("objectbrowser_folder_list");this.folderAdd=$("objectbrowser_folder_add");this.menubar=$("objectbrowser_menubar");this.newbar=$("objectbrowser_newbar");this.header=$("objectbrowser_header");this.footer=$("objectbrowser_view_footer");this.filter=$("objectbrowser_filter").down("input");this.current_filter="filter_all";this.linksList=function(){return $$("#objectbrowser_major_views li a, #objectbrowser_folder_list li a, #objectbrowser_folder_list div.row")};this.listItems=function(){return $$("#objectbrowser_major_views li, #objectbrowser_folder_list li, #objectbrowser_folder_list div.row")};this.createNewButton();$("object_table_view").addClassName("cleanup");this.majorViewLinks={ViewAllObjects:function(){return $("objectbrowser_major_views").down(".allobjects")},ViewAllPages:function(){return $("objectbrowser_major_views").down(".allpages")},ViewAllFiles:function(){return $("objectbrowser_major_views").down(".allfiles")},ViewFolder:function(C){return this.folderListObj.getActiveLink(C)}.bind(this),ViewUnfiled:function(){return $("objectbrowser_major_views").down(".unfileditems")}};$H(this.majorViewLinks).each(function(D){if(D.key=="ViewFolder"||D.key=="ViewFolderNewGui"){return }var C=D.value();C.observe("click",this.selectView.curry(D.key,null).bind(this)).down().href="/w/browse/#view="+D.key}.bind(this));PBwiki.currentTree=this.folderListObj=new PBwiki.ObjectBrowser.FoldersTree({elm:this.folderList});(new PBwiki.ObjectBrowser.UserNotification());this.filter.observe("keypress",this.filterView.bindAsEventListener(this));this.filterText=new InputText(this.filter);document.observe("objectbrowser:viewchanged",function(){delete this.defaultRefreshOptions.filter;this.filter.value="";this.filterText.onBlur()}.bind(this));document.observe("objectbrowser:selectfolder",function(D){var C=(D)?D.memo:null;this.selectView("ViewFolder",C,D)}.bind(this));document.observe("objectbrowser:selectpage",this.onSelectPage.bind(this));document.observe("objectbrowser:renameobject",this.setupObjectRename.bind(this));document.observe("objectbrowser:renamefolder",this.setupFolderRename.bind(this));document.observe("objectbrowser:refreshcurrentview",this.refreshCurrentView.bind(this));document.observe("objectbrowser:updatedroppables",this.updateDroppables.bind(this));document.observe("objectbrowser:select_viewallpages",function(){this.selectView("ViewAllPages")}.bind(this));document.observe("objectbrowser:select_viewallfiles",function(){this.selectView("ViewAllFiles")}.bind(this));document.observe("objectbrowser:upload_start",function(C){if(C&&C.memo){this.upload_memo=C.memo}}.bind(this));document.observe("objectbrowser:upload_complete",function(){this.defaultRefreshOptions={sortby:"mtime",reverse:true};var C;if(this.upload_memo){C=this.upload_memo;delete this.upload_memo}new PBwiki.APIRequest("GetTimes",{},{onSuccess:function(){var D;if(this.view.name!=="ViewAllPages"&&this.view.name!=="ViewAllFiles"&&this.view.name!=="ViewFileRevision"){D=this.view.name}else{if(C&&C.filecount===0&&C.pagecount>0){D="ViewAllPages"}else{D="ViewAllFiles"}}if(D==this.view.name){this.refreshCurrentView()}else{this.selectView(D)}document.fire("storageindicator:update");document.fire("objectbrowser:refreshfolderlist")}.bind(this),method:"get"})}.bind(this));var B=function(C,D){if(D){document.fire("objectbrowser:onNotifyUser",{message:"Error uploading files: "+D,mode:"error"})}else{if(C==0){document.fire("objectbrowser:onNotifyUser",{message:"Did not upload any files",mode:"error"})}else{document.fire("objectbrowser:onNotifyUser",{message:"Uploaded "+C+" file"+((C!=1)?"s":"")+" successfully"});document.fire("objectbrowser:upload_complete")}}};$("upload_file_button").remove();var A=new Element("a",{id:"upload_file_button","class":"button"}).update("<span>Upload files</span>");$("objectbrowser").down("div.secondarypagetoolbar").appendChild(A);this.uploadButton=new PBwiki.Upload({elm:A,onGetFolder:function(){return(this.view&&this.view.options)?this.view.options.folder:false}.bind(this),onUploaded:B});new PBwiki.DragUploader({elm:$("object_table_view"),onGetFolder:function(){return(this.view&&this.view.options)?this.view.options.folder:false}.bind(this),onUploaded:function(C){document.fire("objectbrowser:onNotifyUser",{message:"Uploaded "+C.count+" file"+((C.count!=1)?"s":"")+" successfully"});document.fire("objectbrowser:upload_complete")}.bind(this)});new PeriodicalExecuter(this.autoRefresh.bind(this),10);PBwiki.APIRequest.observePostOp("GetTimes",this.checkRefreshView.bind(this));document.observe("objectbrowser:setactivelink",function(){this.setActiveLink(this.getActiveLink(this.view.name,this.view.options.parameter))}.bind(this));document.observe("objectbrowser:refreshsecurity",this.redrawHeader.bind(this));document.observe("objectbrowser:select_viewunfiled",this.selectView.curry("ViewUnfiled",null).bind(this));document.observe("objectbrowser:refreshcommands",this.updateCommandBar.bind(this));document.observe("objectbrowser:setrefreshoptions",function(C){if(C.memo){this.defaultRefreshOptions=C.memo}}.bind(this));document.observe("objectbrowser:clearsearch",function(){delete this.defaultRefreshOptions.filter;this.refreshCurrentView();this.filter.value="";this.filter.fire("ui:clearfield")}.bind(this));this.header.observe("click",this.header.fire.curry("objectbrowser:renamefolder"));this.paging=new PBwiki.ObjectBrowser.Paging("objectbrowser_pager");this.browserHistory=new PBHistory();this.browserHistory.start();if(location.hash.length<=1){this.selectView(this.defaultViewName)}else{this.selectView(this.browserHistory.getKey("view").getValue(),this.browserHistory.getKey("param").getValue())}this.browserHistory.getKey("view").observe("onChange",this.viewHistoryChange.bind(this));this.browserHistory.getKey("param").observe("onChange",this.viewHistoryChange.bind(this));PBwiki.ObjectBrowser.getCurrentViewObject=function(){return this.view}.bind(this)},bindSidebarButtons:function(){this.createPageObserver=this.createPageHandler.bind(this);this.createFolderObserver=this.createFolderHandler.bind(this);$("sidebar-newpage").observe("click",this.createPageObserver);$("sidebar-newfolder").observe("click",this.createFolderObserver);$("tree-newfolder").observe("click",this.createFolderObserver)},unbindSidebarButtons:function(A){$("sidebar-newpage").stopObserving("click",this.createPageObserver);$("sidebar-newfolder").stopObserving("click",this.createFolderObserver);$("tree-newfolder").stopObserving("click",this.createFolderObserver)},createPageHandler:function(A){if(this.canWrite){this.runCommand("createpage");A.stop()}},createFolderHandler:function(A){if(this.canWrite){this.runCommand("createfolder");A.stop()}},refreshCurrentView:function(A){this.selectView(this.view.name,this.view.displayTitle,null,A)},createNewButton:function(){this.objectNewMenu=new PBMenu({toggle:$("new_page_button"),items:[{name:"newpage",txt:"Create a page&hellip;",className:"iconbutton pagelined",onClick:this.runCommand.bind(this,"createpage")},{name:"newfolder",txt:"Create a folder&hellip;",onClick:this.runCommand.bind(this,"createfolder"),className:"iconbutton folderadd"}]})},getCurrentView:function(){if(this.view&&this.view.displayTitle){return this.view.displayTitle}else{return false}},viewHistoryChange:function(B,A){this.selectView(this.browserHistory.getValue("view"),this.browserHistory.getValue("param"))},setupFolderRename:function(E){if(this.view instanceof PBwiki.ObjectBrowser.ViewFolder&&!(this.view instanceof PBwiki.ObjectBrowser.ViewUnfiled)&&!(this.header&&this.header.down())&&PBwiki.ObjectBrowser.Commands.renamefolder.hasPermission(this.view.metadata.perms)){var B=new Element("input",{type:"text",className:"text",value:this.view.options.folder});this.header.title=this.view.options.folder;var D=480+"px";B.setStyle({width:D});this.header.update("");this.header.insert({top:B});B.focus();B.select();var C=false;var A=function(J){var I=J.element().value.toString().strip();if(I===this.header.title||I.length<1){this.header.innerHTML=this.header.title.escapeHTML();return }var H=Util.is_valid_folder_name(I);if(H!==true){document.fire("objectbrowser:onNotifyUser",{message:H,mode:"error"});return }if(C){return }C=true;document.fire("objectbrowser:onNotifyUser",{message:"Saving&hellip;"});J.element().addClassName("disabled");var G=[];G.push(["RenameFolder",{folder:this.header.title,to:I},{}]);G.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);var F=Object.clone(this.view.refreshOptions);F.folder=I;G.push([this.view.apiMethod,F,{counted:false}]);new PBwiki.MultiAPIRequest(G,{incUsess:true,onAllComplete:function(K){if(K.successful!=1){document.fire("objectbrowser:onNotifyUser",{message:"Failed to rename folder to '"+I.escapeTruncate()+"': "+K.lastError,mode:"error"})}else{document.fire("objectbrowser:onNotifyUser",{message:"'"+this.header.title.escapeTruncate()+"' was renamed to '"+I.escapeTruncate()+"'"});document.fire("objectbrowser:refreshfolderlist");this.selectView("ViewFolder",I)}C=false}.bind(this),onFailure:function(L){var K=this.header.down();K.disabled=false;K.focus();K.select();document.fire("objectbrowser:onNotifyUser",{message:L,mode:"error"})}.bind(this)})};B.observe("folder:rename",A.bind(this)).observe("keydown",function(F){if(F.keyCode==Event.KEY_RETURN){F.stop();F.element().fire("folder:rename")}else{if(F.keyCode==Event.KEY_ESC){this.header.innerHTML=this.header.title.escapeHTML();F.stop()}}}.bind(this)).observe("blur",function(F){F.element().fire("folder:rename");F.stop()}.bind(this))}},setupObjectRename:function(C){C.stop();if(!C.memo){return }var D=C.memo;var H=D.down("a.object_link");if(D.down("input.text")){return }var F=new Element("input",{type:"text",className:"text",value:H.innerHTML.unescapeHTML().replace(/&nbsp;/g," ")});F.setStyle({width:H.up().getWidth()-40+"px"});H.parentNode.insertBefore(F,H.nextSibling);H.hide();F.focus();var I=false;var E=F.value.lastIndexOf(".");if(!E||E==-1){E=F.value.length}if(F.createTextRange){var B=F.createTextRange();B.moveStart("character",0);B.moveEnd("character",-F.value.length+E);B.select()}else{F.setSelectionRange(0,E)}var G=(function(O){if(I){return }I=true;O.stop();if(D.dataObject.name==F.value){F.parentNode.removeChild(F);H.show();return }var N=this.view.getObjectInfo(D);var P={from:D.dataObject.name,to:F.value};if(N.type.toLowerCase()=="folder"){P.folder=P.from;delete P.from}var Q="Rename"+N.type;var L=[];var M=F.value;if(N.type.toLowerCase()=="file"){var K=Util.is_valid_file_name(M);if(K!==true){document.fire("objectbrowser:onNotifyUser",{message:K,mode:"error"});I=false;return }}else{if(N.type.toLowerCase()=="page"){var J=Util.is_valid_page_name(P.to);if(J!==true){document.fire("objectbrowser:onNotifyUser",{message:J,mode:"error"});I=false;return }}else{if(N.type.toLowerCase()=="folder"){var J=Util.is_valid_folder_name(P.to);if(J!==true){document.fire("objectbrowser:onNotifyUser",{message:J,mode:"error"});I=false;return }}}}document.fire("objectbrowser:onNotifyUser",{message:"Saving&hellip;"});L.push([Q,P,{}]);L.push(["GetFolders",{verbose:true},{cacheability:["foldertime","filetime","foldertime"],counted:false}]);L.push([this.view.apiMethod,this.view.refreshOptions,{counted:false}]);new PBwiki.MultiAPIRequest(L,{incUsess:true,onAllComplete:function(R){if(R.successful!=1){document.fire("objectbrowser:onNotifyUser",{message:"Failed to rename '"+D.dataObject.name+"'. "+R.lastError,mode:"error"});I=false;return }document.fire("objectbrowser:onNotifyUser",{message:"'"+D.dataObject.name.toString().escapeTruncate()+"' was renamed to '"+F.value.escapeTruncate()+"'"});if(N.type.toLowerCase()=="folder"){document.fire("objectbrowser:refreshfolderlist")}document.fire("objectbrowser:refreshcurrentview");if(N.type.toLowerCase()=="page"&&P.from==PBinfo.CurrentWiki.front_page){PBinfo.CurrentWiki.front_page=P.to}},onFailure:function(R){F.parentNode.removeChild(F);H.show();document.fire("objectbrowser:onNotifyUser",{message:"Rename Failed: "+R})}.bind(this)})}).bind(this);var A=function(J){G(J)};F.observe("keydown",function(J){if(J.keyCode==Event.KEY_RETURN){G(J)}else{if(J.keyCode==Event.KEY_ESC){document.stopObserving("ui:click",A);F.stopObserving("blur",A);F.remove();H.show();J.stop()}}}.bind(this)).observe("blur",A);document.observe("ui:click",A)},filterView:function(A){if(A.keyCode==13){if(this.filter.value.strip()){this.defaultRefreshOptions={filter:this.filter.value.strip()}}else{delete this.defaultRefreshOptions.filter}this.refreshCurrentView(true)}},autoRefresh:function(){var A=(this.viewChangeTime&&PBwiki.getTimestamp()-this.viewChangeTime<300)?60:300;if(PBwiki.getTimestamp()-PBwiki.APIRequest.lastClientTime>A){new PBwiki.APIRequest("GetTimes",{},{method:"get"})}},checkRefreshView:function(A){if(this.view&&this.view.apiHandlers.cacheability){this.view.apiHandlers.cacheability.each(function(B){if(this.getCurrentViewCachablityTime(B)!=A[B]&&!this.currentViewHasUserInteraction()){this.refreshCurrentView();throw $break}}.bind(this))}},getCurrentViewCachablityTime:function(A){if(!this.view.apiMethod){return false}try{return PBwiki.getCache(this.view.apiMethod)["_perm_cache_times"][A]}catch(B){}},currentViewHasUserInteraction:function(){if(!this.view){return true}if(this.view.getSelectedObjects().length>0){return true}if(this.tableContent.down("input.text")){return true}if(PBwiki.getTimestamp()-PBwiki.APIRequest.lastClientTime<10){return true}return false},onMasterCheckBoxChange:function(B){var A=B.element();this.tableContent.select("input[type=checkbox]").invoke("fire","objectbrowser:setCheckboxState",{checked:A.checked})},setActiveLink:function(A){if(!A||!A.addClassName){return }this.linksList().invoke("removeClassName","active");this.folderList.select("li").invoke("removeClassName","active");A.addClassName("active");A.up().addClassName("active");A.blur()},getActiveLink:function(A,D,B){var C;if(D){if(this.majorViewLinks[A]){C=this.majorViewLinks[A](D)}}else{if(B){C=B.element();if(B.memo&&B.memo.element){C=B.memo.element}}else{if(this.majorViewLinks[A]){C=this.majorViewLinks[A](D)}}}return C},selectView:function(C,F,E,D){if(!D){delete this.defaultRefreshOptions.filter;this.filter.value="";this.filter.fire("ui:clearfield")}if(PBwiki.ObjectBrowser[C]){this.listItems().invoke("removeClassName","active");this.setActiveLink(this.getActiveLink.apply(this,arguments));if(E){E.stop()}if(!this.view){this.showLoadingDataMessage()}else{this.loadMsgTimeout=setTimeout(this.showLoadingDataMessage.bind(this),300)}if(!this.view||this.view.name!=C){delete this.defaultRefreshOptions.offset;document.fire("objectbrowser:viewchanged")}if(this.view){this.view.cancel();delete this.view}document.fire("objectbrowser:pagechanged");try{this.view=new PBwiki.ObjectBrowser[C]({callback:this.setTableRows.bind(this),parameter:F,cache:true});if(!this.defaultRefreshOptions.sortby&&!this.defaultRefreshOptions.reverse){try{var B=PBwiki.UserPrefs.get(PBconst.kFiFViewOptionsPrefsKey);if(typeof (B)!="object"){B={}}B=B[this.view.options.folder||this.view.name]||{};Object.extend(this.defaultRefreshOptions,B)}catch(E){}}this.header.update(this.view.displayTitle.escapeHTML());this.view.refreshView(this.defaultRefreshOptions);if(this.defaultRefreshOptions){delete this.defaultRefreshOptions.sortby;delete this.defaultRefreshOptions.reverse;delete this.defaultRefreshOptions.offset}}catch(E){PBwiki.warn(E);document.fire("objectbrowser:onNotifyUser",{message:C+" failed to load: "+E.message,mode:"error"});if(C!=this.defaultViewName){this.selectView(this.defaultViewName)}return }if(this.view.metadata){this.folderListObj.showFolder(this.view.metadata.oid)}this.browserHistory.setValues({view:C,param:F});if(this.view instanceof PBwiki.ObjectBrowser.ViewFileRevision){this.filter.hide();var A="headericon "+Util.iconMap[Util.getFileExtension(F)];this.header.addClassName(A)}else{this.filter.show();this.header.className=""}this.viewChangeTime=PBwiki.getTimestamp()}},getFolderPermissions:function(B){var A=PBwiki.getCache("GetFolders");if(!A||!A.folders){return false}var B=A.folders.find(function(C){return(C.name==B)});if(!B){return false}return B.perms},clearTableContent:function(){while(this.tableContent.rows.length){this.tableContent.deleteRow(this.tableContent.rows.length-1)}},createSearchMessage:function(A){var F=new Element("tr"),E=this.view.columns.length,B="item";var C="<div>",D="";B=(this.view.name=="ViewAllPages"?"page":B);B=(this.view.name=="ViewAllFiles"?"file":B);if(!A){C+="No results for ";D="noresults"}else{C+="Searching "+B+" names for "}C+="<strong>"+this.view.refreshOptions.filter.escapeHTML()+"</strong> <span>|</span> <a href='/FindPage?SearchFor="+encodeURIComponent((this.view.refreshOptions.folder?'folder:"'+this.view.refreshOptions.folder+'" ':"")+this.view.refreshOptions.filter)+"'>Search "+(this.view.refreshOptions.folder?"folder":"workspace")+'</a> &nbsp; <a href="" onclick="document.fire(\'objectbrowser:clearsearch\'); return false;">Clear</a></div>';F.appendChild(new Element("td",{colspan:E,className:"searchmessage"}).update(C).addClassName(D));return F},showLoadingDataMessage:function(){var G=this.tableContent.getHeight();this.clearTableContent();var C=this.tableColumnHeaderRow.cleanWhitespace().childNodes.length||1;var D=this.tableContent.insertRow(-1);var F=D.insertCell(-1);F.colSpan=C;F.className="loading";var E=new Element("div");F.appendChild(E);E.innerHTML="Loading&hellip;";var A=this.tableContent.getHeight();if(A<G){var B=parseInt(E.getStyle("margin-bottom"))+(G-A);E.setStyle({marginBottom:B+"px"})}E=D=F=null},showEmptyViewMessage:function(){this.clearTableContent();var C=this.tableColumnHeaderRow.childElements().length;var D=this.tableContent.insertRow(-1);var B="items";if(this.current_filter==="filter_pages"){B="pages"}else{if(this.current_filter==="filter_files"){B="files"}}var A=!Prototype.Browser.IE?"<h3>There are no "+B+" to display.</h3>Drag and drop files here to upload":"There are no "+B+" to display.";D.appendChild(new Element("td",{colspan:C,className:"empty"}).update(A))},saveColumnState:function(C){if(!PBwiki.getUID()){return }var A=PBwiki.UserPrefs.get(PBconst.kFiFViewOptionsPrefsKey);if(typeof (A)!="object"){A={}}var B=PBinfo.GetFolders.folders.pluck("name");var D={};$H(A).each(function(E){if(B.indexOf(E.key)!=-1||PBwiki.ObjectBrowser[E.key]){D[E.key]=E.value}});D[this.view.options.folder||this.view.name]=C;PBwiki.UserPrefs.set(PBconst.kFiFViewOptionsPrefsKey,D)},setTableColumns:function(B){while(this.tableColumnHeaderRow.cells.length){this.tableColumnHeaderRow.deleteCell(this.tableColumnHeaderRow.cells.length-1)}function A(E){if(window.event){E=Event.extend(window.event)}E.stop();var D=E.element();if(D.tagName.toLowerCase()=="span"){D=D.up()}var C={reverse:(this.view.refreshOptions.sortby==D.sortkey)?!this.view.refreshOptions.reverse:D.reverse,sortby:D.sortkey};try{this.saveColumnState(C)}catch(E){}this.view.refreshView(C)}B.each(function(E){if(!E){throw $break}var F=new Element("th");if(E.align){F.setStyle({textAlign:E.align})}if(E.width){F.setStyle({width:E.width.toString().indexOf("%")!=-1?E.width:E.width+"px"})}if(E.sortkey){var G=new Element("a",{href:""});F.appendChild(G);var D=new Element("span");G.appendChild(D);G.sortkey=E.sortkey;G.reverse=(typeof E.reverse!="undefined")?E.reverse:true;D.appendChild(document.createTextNode(E.name));if(G.attachEvent){G.attachEvent("onclick",A.bind(this))}else{G.observe("click",A.bind(this))}if(E.sortkey==this.view.refreshOptions.sortby){F.addClassName(!this.view.refreshOptions.reverse?"reverse":"forward")}}else{if(E.name==="__checkbox__"){var C=new Element("input");C.type="checkbox";F.appendChild(C)}else{F.appendChild(document.createTextNode(E.name))}}this.tableColumnHeaderRow.appendChild(F)}.bind(this));this.tableColumnHeaderRow.childElements().last().addClassName("last");this.tableColumnHeaderRow.down().addClassName("checkbox").down("input").observe("click",this.onMasterCheckBoxChange.bind(this));this.tableColumnHeaderRow.show()},createNewTable:function(){this.table.remove();this.table=new Element("table",{id:"object_table_view","class":"objecttable"});var A=new Element("thead");this.tableColumnHeaderRow=new Element("tr");this.tableColumnHeaderRow.wrap(A);A.wrap(this.table);this.tableContent=new Element("tbody");this.tableContent.wrap(this.table);this.footer.insert({before:this.table})},setTableRows:function(F){if(this.loadMsgTimeout){clearTimeout(this.loadMsgTimeout);delete this.loadMsgTimeout}if(document.documentMode==8){this.createNewTable()}this.clearTableContent();this.redrawHeader();this.setTableColumns(this.view.columns);if(this.view.permissions&&!PBinfo.CurrentWiki.readonly){this.canWrite=this.view.permissions.w}if(this.objectNewMenu){var H=this.objectNewMenu.getItem("newpage");if(this.canWrite){H.enable()}else{H.disable()}}var A=$("objectbrowser_folder_add");if(A){var I=this.objectNewMenu.getItem("newfolder");if(this.canWrite){I.enable();A.show()}else{I.disable();A.hide()}}if(this.uploadButton){if(this.canWrite){this.uploadButton.enable()}else{this.uploadButton.disable()}}$("objectbrowser_header").setStyle({cursor:((this.view.permissions.d&&!(this.view instanceof PBwiki.ObjectBrowser.ViewFileRevision))?"hand":"default")});if(this.view.refreshOptions.filter&&this.view.refreshOptions.filter.strip().length>0){this.tableContent.appendChild(this.createSearchMessage(F.length))}else{if(F.length===0){this.showEmptyViewMessage()}}F.each(function(K,J){this.tableContent.appendChild(K);if(J%2===1){K.addClassName("alternate")}this.addActionButton(K);if(K.dataObject.perms&&K.dataObject.perms.w){new Draggable(K,{delay:200,proxy:function(N,M){var L=this.getSelectedObjects().length;if(L==0){M.down("input").fire("objectbrowser:setCheckboxState",{checked:true});L=1}N.appendChild(new Element("strong").update(L));return N}.bind(this.view),onStart:function(){PBwiki.ObjectBrowser.dragging=PBwiki.ObjectBrowser.view.getSelectedObjects();if(document.selection){document.selection.empty();document.onselectstart=function(){return false}}},onEnd:function(){document.onselectstart=null;PBwiki.ObjectBrowser.dragging=false}})}if(K.dataObject&&K.dataObject.type=="folder"){K.down("a.object_link").observe("click",function(L){PBwiki.ObjectBrowser.selectView("ViewFolder",K.dataObject.name);L.stop()})}if(((this.commandButtons["delete"]&&!this.commandButtons["delete"].isEnabled)||(this.commandButtons.move&&!this.commandButtons.move.isEnabled))&&K.dataObject.perms.d&&(!PBinfo.CurrentNetwork||PBinfo.CheckPermissions.level)){this.commandButtons["delete"].enable();this.commandButtons.move.enable()}}.bind(this));document.fire("objectbrowser:updatedroppables");if(F.length<10){var D=(F.length>0?F.last().down("td").getHeight():42);var G='<td colspan="'+this.view.columns.length+'">&nbsp;</td>';for(var C=F.length;C<10;C++){var E=new Element("tr",{"class":"blank"}).setStyle({height:D+"px"});this.tableContent.appendChild(E);E.update(G);if(C%2===1){E.addClassName("alternate")}E.down().setStyle({height:D+"px"})}}if(Prototype.Browser.Gecko){var B=this.tableContent.down();B.setStyle({height:B.getHeight()+"px"})}return this.tableContent},onObjectDrop:function(A,D,C){var B=(D.dataObject&&D.dataObject.name)||D.down("a").name;if(D.hasClassName("drag_to_unfiled")){B=""}PBwiki.ObjectBrowser.Commands.move.moveObjects(PBwiki.ObjectBrowser.dragging,B)},updateDroppables:function(){var A={onDrop:PBwiki.ObjectBrowser.onObjectDrop,hoverclass:"hover"};Droppables.removeAll();$$("table.objecttable tr, #objectbrowser_folder_list li, #objectbrowser_folder_list div.row").each(function(B){if(!B.dataObject||B.dataObject.type!="folder"){return }Droppables.add(B,A)});[this.folderAdd,PBwiki.ObjectBrowser.majorViewLinks.ViewAllObjects()].each(function(B){if(!B){return }B.addClassName("drag_to_unfiled");Droppables.add(B,A)})},addObjectActions:function(B){var A=B.select("td.object").first();PBwiki.ObjectBrowser.Actions.each(function(E){if(E.hasPermission&&E.hasPermission(B,this.view)){var C=E.href?E.href(B,this.view):"";var D=new Element("a",{href:C,id:encodeURI(E.txt)+":"+this.view.getObjectInfo(B).value}).update(E.txt);if(!C){D.observe("click",function(F){F.stop();E.Execute(B,this.view)}.bindAsEventListener(this))}A.appendChild(D);A.appendChild(document.createTextNode(" - "))}}.bind(this));if(A.lastChild.nodeValue==" - "){A.removeChild(A.lastChild)}},addActionButton:function(B){var A=B.down("td.objectactions .button");if(!A){return }PBwiki.ObjectBrowser.Actions.each(function(C){C.hasPermission&&C.hasPermission(B,this.view)}.bind(this));(new PBwiki.ObjectTooltip({elm:A,object:this.view.getObjectInfo(B),view:this.view,tr:B,onShow:function(){B.addClassName("selected")},onHide:function(){B.removeClassName("selected")}}))},updateCommandBar:function(B,A){B.update("");B.appendChild(new Element("div",{className:"arrow"}).update("&nbsp;"));this.commandButtons={};A.each(function(C){if(C=="renamefolder"){B.appendChild(new Element("div",{className:"separator"}).update("&nbsp;"))}var E=PBwiki.ObjectBrowser.Commands[C];var D=Object.extend(E,{addTo:B,onClick:this.runCommand.bind(this,C),id:"command-bar-"+C});if(C=="foldersecurity"){var G;try{D.has_custom_perms=this.view.metadata.has_custom_perms}catch(F){}this.commandButtons[C]=new PBwiki.Components.FolderSecurityButton(D)}else{this.commandButtons[C]=new PBwiki.Components.Button(D)}if(E.hasPermission&&!E.hasPermission(this.view.permissions)){this.commandButtons[C].disable()}}.bind(this));(A.length==0)?B.hide():B.show()},redrawHeader:function(){this.header.update(this.view.displayTitle.toString().escapeHTML());this.updateCommandBar(this.menubar,this.view.menuCommands)},runCommand:function(A){if(PBwiki.ObjectBrowser.Commands[A]){PBwiki.ObjectBrowser.Commands[A].Execute(this.view)}},onSelectPage:function(A){this.defaultRefreshOptions.offset=A.memo.offset;this.view.refreshOptions.offset=A.memo.offset;this.loadMsgTimeout=setTimeout(this.showLoadingDataMessage.bind(this),300);this.view.refreshView()},defaultRefreshOptions:{}};PBwiki.ObjectBrowser.getCurrentView=function(){return false};PBwiki.ObjectBrowser.AbstractView=Class.create({initialize:function(){throw new Exception("PBwiki.ObjectBrowser.AbstractView has to be subclassed!")},refreshView:function(){},updateWindowTitle:function(){var A;if(PBinfo.CurrentWiki&&PBinfo.CurrentWiki.title&&PBinfo.CurrentWiki.title.length>0){A=PBinfo.CurrentWiki.title}else{if(PBinfo.CurrentWiki&&PBinfo.CurrentWiki.name&&PBinfo.CurrentWiki.name.length>0){A=PBinfo.CurrentWiki.name}else{A="PBworks"}}document.title=A+((this.displayTitle.length>0)?" / ":"")+this.displayTitle},_initialize:function(A){this.apiHandlers.onSuccess=this.onSuccess.bind(this)},initialize:function(A){this._initialize();this.updateWindowTitle();this.menuCommands.each(function(B){B.commandHandler=(B.commandHandler?B.commandHandler.bind(this):null)}.bind(this));if(this.refreshOptions){this.refreshOptions=Object.clone(this.refreshOptions)}this.options=A||{};if(!this.options.cache){delete this.apiHandlers.cacheability}this.rowTemplates=(new Hash(this.templateStrings)).inject({},function(C,B){C[B.key]=new Template(B.value);return C});this.setupPermissions()},setupPermissions:function(){var A=PBwiki.getCache("CheckPermissions").wikiperm;var B={a:false,g:false,d:false,w:false,r:false};switch(A){case"admin":B.a=B.g=true;case"mod":B.d=true;case"write":B.w=true;case"read":B.r=true}this.permissions=B},refreshPager:function(B,A){document.fire("objectbrowser:pagechanged",{offset:this.refreshOptions.offset,numobjects:A,numpaged:B,count:this.refreshOptions.count})},setupSendALink:function(){if(!$("sendalink")){return }$("sendalink").down("a").update("Share this folder")},refreshView:function(A){this.cancel();this.setupSendALink();Object.extend(this.refreshOptions,A);$("objectbrowser_item_count").update("Loading&hellip;");this.apiRequest=new PBwiki.APIRequest(this.apiMethod,this.refreshOptions,this.apiHandlers)},getRowsFromHTML:function(B,C){var A=new Element("table").update(B);if(A){var D=A.select("input[type=checkbox]");D.invoke("observe","objectbrowser:setCheckboxState",function(F){if(F.element().disabled){return }var E=F.element();E.checked=F.memo.checked;E[F.memo.checked?"addClassName":"removeClassName"]("checked")});D.invoke("observe","click",function(E){E.element().fire("objectbrowser:setCheckboxState",{checked:E.element().checked})});if(C){D.invoke("writeAttribute","disabled","disabled")}A.select("tr").invoke("observe","objectbrowser:setCheckboxState",function(E){if(E.element().disabled){return }E.findElement("tr")[E.memo.checked?"addClassName":"removeClassName"]("active")}.bindAsEventListener(this));A.select("tr").invoke("observe","click",function(G){var F=G.target.tagName.toUpperCase();var E=G.findElement("tr").down("input");if((F=="INPUT"||F=="A"||E.disabled)&&!!PBwiki.ObjectBrowser.dragging==false){return }if(G.target.down("input")){E.fire("objectbrowser:setCheckboxState",{checked:!E.checked});return }if(!G.ctrlKey){PBwiki.ObjectBrowser.tableContent.select("input[type=checkbox]").invoke("fire","objectbrowser:setCheckboxState",{checked:false})}E.fire("objectbrowser:setCheckboxState",{checked:!E.checked});document.fire("ui:click")}.bind(this));A.select("a.object_revision").invoke("observe","click",function(E){E.stop();var F=this.getObjectInfo(E.findElement("tr"));if(F.type=="Page"){window.location="/FindPage?RevisionsFor="+encodeURIComponent(F.value)}else{PBwiki.ObjectBrowser.selectView("View"+F.type+"Revision",F.value)}}.bind(this));A.select("a.ob_folder_link").invoke("observe","click",function(E){E.stop();document.fire("objectbrowser:selectfolder",E.element().innerHTML.unescapeHTML())});this.checkboxes=D}return(A?A.select("tr"):[])},apiRequest:null,onSuccess:function(){},getActiveLink:function(){},apiHandlers:{onSuccess:null,onFailure:function(A){alert(this.name+" failed! "+A)}.bind(this)},cancel:function(){if(this.apiRequest){this.apiRequest.abortRequest()}},readableSize:function(E){if(E&&typeof (E)=="number"){var A=1024,D=0,C=E;var B=[{unit:" bytes",precision:0},{unit:" KB",precision:0},{unit:" MB",precision:2}];while(D<B.length&&C>=A){C/=A;D++}return C.toFixed(B[D].precision)+B[D].unit}return E},name:"AbstractView",displayTitle:"AbstractView",permissions:null});PBwiki.ObjectBrowser.ObjectView=Class.create(PBwiki.ObjectBrowser.AbstractView,{getRowRecords:function(A){return A.objects},authorLinkFromObject:function(A){return Util.authorLinkFromObject(A,"by ")},setupDataRow:function(E){var D=(E.mtime||E.revision||E.time);E.revision=D;E.dateStr=D?Util.time_ago(PBwiki.getTimestamp()-D):"";E.fullDateStr=D?new Date(D*1000).strftime(PBconst.kPolicyFullDateTimeFormat):"";E.revisions=E.revcount;if(E.perms&&!E.perms.d&&!E.perms.w){E.disabled=" disabled"}if(E.locked){E.security="ob_security_locked";E.security_msg="This page is locked. Only administrators can edit it."}else{if(E.hidden){E.security="ob_security_hidden";E.security_msg="This page is hidden. Only administrators can see it."}else{if(E.has_custom_perms){E.security="ob_security_custom";E.security_msg="This page has custom permissions."}}}var C=this.authorLinkFromObject(E.author);if(C){E.author_link=C}var B=Util.getFileExtension(E.name);E.ext=B?B.toUpperCase():"File";var A=Util.iconMap[B];if(A){E.icon=' class="'+A+'"'}else{E.icon=' class="ob_item_file"'}if(!E.type){E.type=this.type}if(!Object.isUndefined(E.name)){E.escapedName=E.name.toString().escapeHTML().replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/ /g,"&nbsp;");delete E.revision;E.escapedURL=Util.getObjectLink(E)}if(E.folder){E.folderStr=E.folder.toString().escapeHTML()}if(this.options.parameter){E.viewParameter=this.options.parameter}E.size=this.readableSize(E.size);return E},onSuccess:function(C){var B=this.getRowRecords(C);var D="";if(B.length>0){D=B.collect(function(F){if(typeof F!="object"){document.fire("objectbrowser:onNotifyUser",{message:"Invalid object in view: "+F,mode:"error"});return }if(F.uid&&C.authors){F.author=C.authors[F.uid]}if(F.perm&&C.permcaps){F.perms=C.permcaps[F.perm]}F=this.setupDataRow(F);var E=F.type;if(E==="filerevision"){E="filerevision_view"}return"<tr>"+this.rowTemplates[E].evaluate(F)+"</tr>"}.bind(this))}var A=this.getRowsFromHTML(D);A.each(function(F,E){F.dataObject=B[E]});if(C.perms){this.dataPerms=C.perms}if(this.options.callback){this.options.callback(A)}this.refreshPager(B.length,C._total_count)},getSelectedObjects:function(){if(this.checkboxes){return this.checkboxes.findAll(function(A){return A.checked}.bind(this)).collect(function(A){return this.getObjectInfo(A.up("tr"))}.bind(this))}else{return[]}},getObjectInfo:function(A){return{type:A.dataObject.type.capitalize(),value:A.dataObject.name,name:A.dataObject.name,revision:(A.dataObject.mtime||A.dataObject.time),revisions:A.dataObject.revisions,folder:A.dataObject.folder,oid:A.dataObject.oid,parentRow:A,perms:A.dataObject.perms,author:A.dataObject.author}},templateStrings:{file:'<td class="first checkbox"><input type="checkbox" value="#{escapedName}"#{disabled} /></td><td class="object filetype"><div #{icon}><a class="object_link" title="#{escapedName}" href="#{escapedURL}">#{escapedName}</a><span class="ob_security #{security}"></span><span class="file_size">#{size}</span></div></td><td class="objectactions"><a class="button"><span>More</span></a></td><td class="objecttype"><div>#{ext}</div></td><td><div>#{dateStr}</div></td>',page:'<td class="first checkbox"><input type="checkbox" value="#{escapedName}"#{disabled} /></td><td class="object pagetype"><div><a class="object_link" href="#{escapedURL}" title="#{escapedName}">#{escapedName}</a><span class="ob_security #{security}"></span></div></td><td class="objectactions"><a class="button"><span>More</span></a></td><td class="objecttype"><div>#{type}</div></td><td><div>#{dateStr}</div></td>',folder:'<td class="first checkbox"><input type="checkbox" value="#{escapedName}"#{disabled} /></td><td class="object foldertype"><div><a class="object_link" href="#{escapedURL}" title="#{escapedName}">#{escapedName}</a><span class="ob_security #{security}"></span></div></td><td class="objectactions"><a class="button"><span>More</span></a></td><td class="objecttype"><div>#{type}</div></td><td><div>#{dateStr}</div></td>'},apiMethod:"GetObjectsNOM",menuCommands:["delete","move"],apiHandlers:{allowDefer:true,onSuccess:null,onFailure:function(A){PBwiki.ObjectBrowser.showEmptyViewMessage()},cacheability:["filetime","foldertime","pagetime","permtime"],method:"get"},columns:[{name:"__checkbox__",align:"center",width:30},{name:"Name",sortkey:"name",reverse:false},{name:" ",width:80},{name:"Type",sortkey:"ext",reverse:false,width:70},{name:"Changed",sortkey:"mtime",width:70}]});PBwiki.ObjectBrowser.ViewFolder=Class.create(PBwiki.ObjectBrowser.ObjectView,{initialize:function($super,B){var A=PBwiki.getCache("GetFolders");this.metadata=(A&&A.folders)?A.folders.find(function(C){return C.name==B.parameter}):false;if(!this.metadata&&this.name!="ViewUnfiled"){throw new Error("Folder '"+B.parameter.escapeHTML()+"' does not exist")}this.refreshOptions.folder=B.folder=B.parameter;if(this.name!="ViewUnfiled"){this.displayTitle=B.folder}this.menuCommands=["delete","move","renamefolder","deletefolder"];if(PBwiki.feature("folder_security")){this.menuCommands.push("foldersecurity")}$super(B)},getActiveLink:function(){return PBwiki.ObjectBrowser.folderList.select("li a").find(function(A){if(A.innerHTML==PBwiki.ObjectBrowser.view.options.parameter){return A}})},onSuccess:function($super,B){try{Object.extend(this.permissions,PBwiki.getCache("GetFolders").folders.find(function(C){return C.name==this.options.folder}.bind(this)).perms)}catch(A){}$super(B)},name:"ViewFolder",displayTitle:"FolderName",refreshOptions:{sortby:"mtime",reverse:false,offset:0,count:20,verbose:true}});PBwiki.ObjectBrowser.ViewAllObjects=Class.create(PBwiki.ObjectBrowser.ObjectView,{name:"ViewAllObjects",displayTitle:"Pages & Files",getActiveLink:function(){return false},menuCommands:["delete","move"],initialize:function($super,A){A.parameter="";$super(A);this.menuCommands=["delete","move"]},getActiveLink:function(){return false},menuCommands:["delete","move"],refreshOptions:{sortby:"mtime",reverse:false,offset:0,count:20,folder:"",verbose:true}});PBwiki.ObjectBrowser.ViewUnfiled=Class.create(PBwiki.ObjectBrowser.ViewFolder,{name:"ViewUnfiled",displayTitle:"Unfiled Items",getActiveLink:function(){return false},menuCommands:["delete","move"],initialize:function($super,A){A.parameter="";$super(A);this.menuCommands=["delete","move"]},refreshOptions:{object_types:"page,file",reverse:false,offset:0,count:20,verbose:true,folder:""},getActiveLink:function(){return false},menuCommands:["delete","move"]});PBwiki.ObjectBrowser.ViewAllPages=Class.create(PBwiki.ObjectBrowser.ObjectView,{getRowRecords:function(A){return A.pages},name:"ViewAllPages",displayTitle:"All Pages",apiMethod:"GetPages",type:"page",refreshOptions:{sortby:"name",reverse:false,offset:0,count:20},apiHandlers:{onFailure:function(A){document.fire("objectbrowser:onNotifyUser",{message:"Failed to get page list: "+A,mode:"error"})}.bind(this),cacheability:["pagetime","foldertime","permtime"],method:"get"},templateStrings:{page:'<td class="first checkbox"><input type="checkbox" value="#{escapedName}"#{disabled} /></td><td class="object pagetype"><div><a class="object_link" href="#{escapedURL}" title="#{escapedName}">#{escapedName}</a><span class="ob_security #{security}"></span></div></td><td class="objectactions"><a class="button"><span>More</span></a></td><td class="objecttype"><div>#{type}</div></td><td><div>#{dateStr}</div></td>'},columns:[{name:"__checkbox__",align:"center",width:30},{name:"Name",sortkey:"name",reverse:false},{name:" ",width:80},{name:"Type",sortkey:"ext",reverse:false,width:70},{name:"Changed",sortkey:"mtime",width:70}]});PBwiki.ObjectBrowser.ViewAllFiles=Class.create(PBwiki.ObjectBrowser.ObjectView,{getRowRecords:function(A){return A.files},name:"ViewAllFiles",displayTitle:"All Files",apiMethod:"GetFiles",type:"file",refreshOptions:{sortby:"name",reverse:false,offset:0,count:20},apiHandlers:{onFailure:function(A){document.fire("objectbrowser:onNotifyUser",{message:"Failed to get file list: "+A,mode:"error"})}.bind(this),cacheability:["filetime","foldertime","permtime"],method:"get"},templateStrings:{file:'<td class="first checkbox"><input type="checkbox" value="#{escapedName}"#{disabled} /></td><td class="object filetype"><div #{icon}><a class="object_link" title="#{escapedName}" href="#{escapedURL}">#{escapedName}</a><span class="ob_security #{security}"></span><span class="file_size">#{size}</span></div></td><td class="objectactions"><a class="button"><span>More</span></a></td><td class="objecttype"><div>#{ext}</div></td><td><div>#{dateStr}</div></td>'},columns:[{name:"__checkbox__",align:"center",width:30},{name:"Name",sortkey:"name",reverse:false},{name:" ",width:80},{name:"Type",sortkey:"ext",reverse:false,width:70},{name:"Changed",sortkey:"mtime",width:70}]});PBwiki.ObjectBrowser.ViewFileRevision=Class.create(PBwiki.ObjectBrowser.ObjectView,{getRowRecords:function(A){return A.revisions},setupSendALink:function(){if(!$("sendalink")){return }$("sendalink").down("a").update("Share this file")},refreshView:function($super,A){Object.extend(this.refreshOptions,{file:this.options.parameter});this.displayTitle="Revisions for "+this.options.parameter;$super(A)},authorLinkFromObject:function(A){return Util.authorLinkFromObject(A)},type:"filerevision",name:"ViewFileRevision",apiMethod:"GetFileRevisions",templateStrings:{filerevision:'<td class="first checkbox"><input type="checkbox" value="#{viewParameter}"#{disable} /></td><td class="object filerevisiontype"><div><a class="object_link" href="/f/#{revision}/#{viewParameter}">#{fullDateStr}</a></div></td><td class="objectactions"><a class="button"><span>More</span></a></td><td><div class="aux_link">#{author_link}</div></td><td>#{size}</td>',filerevision_view:'<td class="first checkbox"><input type="checkbox" value="#{viewParameter}"#{disable} /></td><td class="object filerevisiontype"><div><a class="object_link" href="/w/file/#{viewParameter}?rev=#{revision}">#{fullDateStr}</a></div></td><td class="objectactions"><a class="button"><span>More</span></a></td><td><div class="aux_link">#{author_link}</div></td><td>#{size}</td>'},menuCommands:["deleterevision"],refreshOptions:{sortby:"time",reverse:true,offset:0,count:20,verbose:true},apiHandlers:{onSuccess:null,onFailure:function(A){document.fire("objectbrowser:onNotifyUser",{message:A,mode:"error"});document.fire("objectbrowser:select_viewallfiles")}.bind(this),cacheability:["filetime"]},columns:[{name:"__checkbox__",align:"center",width:30},{name:"Date",sortkey:"time"},{name:" ",width:80},{name:"Changed by",sortkey:"author_name",width:100},{name:"Revision size",sortkey:"size",width:100}]});PBwiki.ObjectBrowser.UserNotification=Class.create({initialize:function(){document.observe("objectbrowser:onNotifyUser",this.handleUserNotificationEvent.bind(this));this.table=$("object_browser_notify").down("table").hide();this.textSpan=$("object_browser_notify").select("span").first()},handleUserNotificationEvent:function(A){if(this.timeout){window.clearTimeout(this.timeout);this.timeout=null}this.textSpan.innerHTML=A.memo.message;this.table.className="";this.table.addClassName(A.memo.mode).show();if(!A.memo.permanent){this.timeout=this.table.hide.bind(this.table).delay(10)}}});PBwiki.ObjectBrowser.FolderNav=Class.create({nav:false,tree:false,initialize:function(A){nav=A.nav;tree=A.tree;document.observe("objectbrowser:refreshfoldernav",this.renderNavBar.bind(this));nav.down("a").observe("click",function(B){nav.fire("objectbrowser:selectview","ViewMainFolderNewGui");B.stop()}.bind(this))},renderNavBar:function(){if(!tree.data){return }nav.down("a").siblings().invoke("remove");if(!PBwiki.ObjectBrowser.view.metadata){return }var E=PBwiki.ObjectBrowser.view.metadata.oid;var B=[tree.indexes[E]];var F=tree.data[tree.indexes[E]].parent_id;while(F!=0){B.unshift(tree.indexes[F]);F=tree.data[tree.indexes[F]].parent_id}for(var C=0;C<B.length;C++){var A=new Element("span",{className:"spacer"});nav.appendChild(A);var D=this.renderNavLink(tree.data[B[C]]);nav.appendChild(D)}},renderNavLink:function(B){var A=new Element("a",{href:"/w/browse/#view=ViewFolderNewGui&param="+encodeURIComponent(B.name),name:B.name,title:B.name,"class":"object_link"}).update(B.name.escapeHTML());if(B.perms.w){new Draggable(A,{delay:200,proxy:function(C,D){C.appendChild(new Element("strong").update("1"));C.addClassName("objectdragproxy-folder");C.addClassName("foldericon");return C}.bind(this.view),onStart:function(){PBwiki.ObjectBrowser.dragging=[{value:B.name,oid:B.oid}]},onEnd:function(){PBwiki.ObjectBrowser.dragging=false}})}A.observe("click",function(C){nav.fire("objectbrowser:selectfolder",B.name);C.stop()}.bind(this));return A}});PBwiki.ObjectBrowser.FoldersTree=Class.create(PBwiki.Components.APITreeView,{defaultWidth:234,prefKey:PBconst.kBrowseFolderTreeOpenNodes,initialize:function($super,B){$super(B);var C=PBwiki.getCache("CheckPermissions");var A=$("objectbrowser_folder_add");if(A){if(!C||!(C.wikiperm=="admin"||C.wikiperm=="mod")){A.setStyle({display:"none"})}A.observe("click",this.createNewFolder.bind(this))}document.observe("objectbrowser:createfolder",this.createNewFolder.bind(this));document.observe("objectbrowser:refreshfolderlist",function(D){this.afterLoadCb=typeof (D.memo)=="function"?D.memo:false;this.refresh()}.bind(this))},onAfterLoad:function($super){$super();if(this.afterLoadCb){this.afterLoadCb()}},getActiveLink:function(A){return this.options.elm.select("div.row").find(function(B){return(B.folder.name==A)})},apiOpts:{object_types:"folder",sortby:"name",verbose:true},computeLookups:function($super){$super();this.hasNestedFolders=(Object.keys(this.children).length>1)},onRenderRow:function(A){function H(L,M){if(L==0){return M}var K=new Element("div").addClassName("spacer");K.appendChild(H(L-1,M));return K}var D=new Element("div").addClassName("row");D.folder=D.dataObject=A;var J;var B;J=new Element("div");B=this.defaultWidth;B-=(A.levels.length*15);if(this.hasNestedFolders){B-=15}B-=22;B-=30;J.setStyle({width:(A.levels.length*15)+"px",height:"20px","float":"left"});D.appendChild(J);var E;E=new Element("a",{href:"/w/browse/#view=ViewFolder&param="+encodeURIComponent(A.name),name:A.name,title:A.name,"class":"ellipses"}).update(A.name.escapeHTML());if(A.has_custom_perms){E.addClassName("ob_security_custom")}E.setStyle({width:B+"px"});E.ondragstart=function(){return false};D.appendChild(E);var C=new Element("div").addClassName("control");if(this.hasNestedFolders){var I=new Element("div").addClassName("expander");if(A.hc){I.addClassName(this.isOpen(A.oid)?"expand":"collapse")}C.appendChild(I)}C.observe("click",function(K){this.toggle(A.oid);this.redraw();K.stop()}.bind(this));E.parentNode.insertBefore(C,E);var G=(A.pagecount||0)+(A.filecount||0)+(A.foldercount||0);var F=new Element("span",{"class":"foldernum"}).update(G);D.appendChild(F);D.observe("click",function(K){if(!K.target.hasClassName("folderactions")&&K.target.tagName!="INPUT"){this.options.elm.fire("objectbrowser:selectfolder",A.name)}K.stop()}.bind(this));if(A.perms.w){new Draggable(D,{delay:200,proxy:function(K,L){K.appendChild(new Element("strong").update("1"));K.addClassName("objectdragproxy-folder");K.addClassName("foldericon");return K}.bind(this.view),onStart:function(){PBwiki.ObjectBrowser.dragging=[{value:A.name,oid:A.oid}]},onEnd:function(){PBwiki.ObjectBrowser.dragging=false}})}return D},redraw:function($super){$super();document.fire("objectbrowser:updatedroppables");document.fire("objectbrowser:refreshsecurity");document.fire("objectbrowser:setactivelink")},createNewFolder:function(F){F.stop();var D=this.options.elm.down("div.active");if(D){if(D.folder.levels.length>=PBconst.ObjectModel.kMaxParents){document.fire("objectbrowser:onNotifyUser",{message:"Only "+PBconst.ObjectModel.kMaxParents+" levels of nested folders are supported. Try creating a higher level folder.",mode:"error"});return }var C=parseInt(D.folder.oid,10);if(!this.isOpen(C)){this.toggle(C);this.redraw();D=this.options.elm.down("div.active")}}var E=15;if(D){E+=D.folder.levels.length*15}if(this.hasNestedFolders){E+=15}E+=22;var B=new Element("div",{className:"newfolder"});var A=new Element("input",{type:"text",className:"text",value:"New folder name"});A.parentFolder=D?D.folder.name:"";A.setStyle({width:(this.defaultWidth-E-15)+"px",marginLeft:E+"px"});B.setStyle({backgroundPosition:(E-22)+"px 45%"});B.appendChild(A);this.options.elm.insertBefore(B,D?D.nextSibling:this.options.elm.firstChild);this.newFolderChanged=false;A.focus();A.select();A.observe("folder:createfolder",this.submitFolderName.bind(this));A.observe("keypress",this.onKeyPress.bind(this)).observe("blur",this.submitFolderName.bind(this))},submitFolderName:function(E){if(this.creatingFolder){return }if(!this.newFolderChanged){document.fire("objectbrowser:refreshfolderlist");return }this.creatingFolder=true;var A=E.element();var F=A.value.strip();var D=Util.is_valid_folder_name(F);if(D!==true){document.fire("objectbrowser:onNotifyUser",{message:D});A.select();this.creatingFolder=false;return }document.fire("objectbrowser:onNotifyUser",{message:"Creating '"+F.escapeHTML()+"'"});var C=new Array();var B={folder:F};if(A.parentFolder){B.parent_id=Util._foldernameToID(A.parentFolder)}C.push(["CreateFolder",B,{onFailure:function(G){document.fire("objectbrowser:onNotifyUser",{message:"Error. Folder '"+F+"' not created : "+G});document.fire("objectbrowser:refreshfolderlist");this.creatingFolder=false}.bind(this)}]);C.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);new PBwiki.MultiAPIRequest(C,{incUsess:true,onAllComplete:function(G){if(!G.lastError){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+F.escapeHTML()+"' was created."});document.fire("objectbrowser:refreshfolderlist",function(){this.creatingFolder=false;document.fire("objectbrowser:selectfolder",F)}.bind(this))}}.bind(this),waitCursor:true})},showFolder:function(B){var A=this.parents[B];while(A){if(!this.isOpen(A)){this.toggle(A)}A=this.parents[A]}this.redraw()},onKeyPress:function(A){if(A.keyCode==Event.KEY_RETURN){A.stop();A.element().fire("folder:createfolder")}else{if(A.keyCode==Event.KEY_ESC){A.element().up().remove()}}this.newFolderChanged=true}});PBwiki.ObjectBrowser.Paging=Class.create({initialize:function(A){this.pager=$(A);this.countTemplate=new Template(this.templateStrings.count);this.prevTemplate=new Template(this.templateStrings.prev);this.nextTemplate=new Template(this.templateStrings.next);document.observe("objectbrowser:pagechanged",this.update.bind(this))},update:function(E){this.opts=E.memo;if(this.opts.numpaged){var D={start:this.opts.offset+1,end:this.opts.offset+this.opts.numpaged};D=Object.extend(D,this.opts);this.opts.currentPage=this.opts.offset/this.opts.count+1;this.opts.maxPages=Math.ceil(this.opts.numobjects/this.opts.count);this.opts.start=D.start;this.opts.end=D.end;if(this.opts.maxPages==1){this.pager.update(this.countTemplate.evaluate(this.opts));$("objectbrowser_item_count").update("")}else{var A=this.countTemplate.evaluate(this.opts);var C=(this.opts.currentPage>1)?this.prevTemplate.evaluate(this.opts):"";var B=(this.opts.currentPage<this.opts.maxPages)?this.nextTemplate.evaluate(this.opts):"";this.pager.update(A+C+B);if(this.opts.currentPage>1){this.pager.down(".prev").observe("click",this.onchange.bind(this,false))}if(this.opts.currentPage<this.opts.maxPages){this.pager.down(".next").observe("click",this.onchange.bind(this,true))}$("objectbrowser_item_count").update("")}}else{$("objectbrowser_item_count").update("");this.pager.innerHTML=""}},onchange:function(A,B){B.stop();var C=this.opts.offset+((A)?this.opts.count:-this.opts.count);if(C>-1&&C<this.opts.numobjects){this.opts.offset=C;document.fire("objectbrowser:selectpage",this.opts)}else{}},templateStrings:{count:'<span class="nums"><strong>#{start}-#{end}</strong> of <strong>#{numobjects}</strong></span>',prev:'<a class="prev" href="">&lsaquo; prev</a>',next:'<a class="next" href="">next &rsaquo;</a>'}});PBwiki.ProgressBar=Class.create({initialize:function(A,B){this.progressBar=$(A);this.maxWidth=B},setValueToFraction:function(A){A=(A>1)?1:A;var B=(0-this.maxWidth)+Math.floor(A*this.maxWidth);this.progressBar.style.backgroundPosition=B+"px top"},setValueToPercentage:function(A){this.setValueToFraction(A/100)}});PBwiki.StorageIndicator={initialize:function(){if(!$("storage-indicator")){this.storageProgressBar=false;return }this.storageProgressBar=new PBwiki.ProgressBar("storage-indicator",128);document.observe("storageindicator:update",this.update.bind(this));this.updateWithValues(PBwiki.getCache("GetStorageInfo"));PBwiki.APIRequest.observePostOp("GetStorageInfo",this.updateWithValues.bind(this))},update:function(){new PBwiki.APIRequest("GetStorageInfo",{},{incUsess:true,cacheability:["filetime"],onFailure:function(A){document.fire("objectbrowser:onNotifyUser",{message:A,mode:"error"})}.bind(this)})},updateWithValues:function(A){if(A.unlimited_quota){$("storage-text").update("");$("storage-indicator").hide();$("storage-text").update("Used "+A.used_readable+" of unlimited")}else{$("storage-indicator").show();this.storageProgressBar.setValueToFraction(A.used/A.total);$("storage-text").update("Used "+A.used_readable+" of "+A.total_readable)}}};PBwiki.init("PBwiki.ObjectBrowser",PBwiki.ObjectBrowser.initialize.bind(PBwiki.ObjectBrowser));PBwiki.init("PBwiki.StorageIndicator",PBwiki.StorageIndicator.initialize.bind(PBwiki.StorageIndicator));PBwiki.ObjectBrowser.Commands={"delete":{name:"delete",txt:"Delete",Execute:function(A){var D=A.getSelectedObjects();var C=false;if(D.find(function(E){return E.value==PBinfo.CurrentWiki.front_page})){C='"'+PBinfo.CurrentWiki.front_page.escapeHTML()+'" cannot be deleted.'+(D.length>1?" Please unselect it to continue.":"")}else{if(D.find(function(E){return E.value=="SideBar"})){C='"SideBar" cannot be deleted.'+(D.length>1?" Please unselect it to continue.":"")}}if(C){document.fire("objectbrowser:onNotifyUser",{message:C,mode:"error"});return }if(D.length>0){var C="You are about to permanently delete ";C+=D.length+" item"+(D.length>1?"s.":".");C+="\n\nAre you sure?";if(!confirm(C)){return }var B=new Array();D.each(function(E){var F={};F[E.type.toLowerCase()]=E.value;B.push(["Delete"+E.type,F,{}])}.bind(this));B.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);B.push([A.apiMethod,A.refreshOptions,{counted:false}]);B.push(["GetStorageInfo",{},{cacheability:["filetime"],counted:false}]);document.fire("objectbrowser:onNotifyUser",{message:"Deleting&hellip;"});new PBwiki.MultiAPIRequest(B,{incUsess:true,onAllComplete:function(F){var E=PBwiki.ObjectBrowser.paging.opts;document.fire("objectbrowser:refreshfolderlist");if(E.offset>0&&E.numobjects-D.length<=E.offset){A.refreshView({offset:E.offset-E.count})}else{A.refreshView()}if(D.length==1){if(F.lastError){document.fire("objectbrowser:onNotifyUser",{message:"Failed to delete '"+D[0].value.escapeTruncate()+"'. "+F.lastError,mode:"error"})}else{document.fire("objectbrowser:onNotifyUser",{message:"Successfully deleted '"+D[0].value.escapeTruncate()+"'"})}}else{var G=(F.successful==F.total)?F.total:F.successful+" of "+F.total;document.fire("objectbrowser:onNotifyUser",{message:"Successfully deleted "+G+" items. "+F.lastError})}},onFailure:function(F,E){document.fire("objectbrowser:onNotifyUser",{message:"Failed to delete items. "+F,mode:"error"})}})}else{document.fire("objectbrowser:onNotifyUser",{message:"Please select at least one item to delete",mode:"error"})}},hasPermission:function(A){return A.d}},move:{name:"move",txt:"Move",Execute:function(A){var D=A.getSelectedObjects();if(D.length>0){var C=null;if(A.name=="ViewFolder"||A.name=="ViewFolderNewGui"){C=A.options.parameter}else{var B=new Hash();D.each(function(E){if(E.folder){B.set(E.folder,true)}});if(B.keys().length==1){C=B.keys()[0]}}this.folderSelector=new PBwiki.DialogCommands.FolderSelector({folder:C,onSelect:function(E){this.moveObjects(D,E)}.bind(this)})}else{document.fire("objectbrowser:onNotifyUser",{message:"Please select at least one item to move",mode:"error"})}},moveObjects:function(F,D){var E=Util._foldernameToID(D)||0;var B=F.pluck("oid").join(",");var C=[];var G;G=(D=="")?"out of this folder":"to folder '"+D.escapeTruncate()+"'";C.push(["PutObjectsIntoFolder",{parent_id:E,oids:B},{onFailure:function(H){if(F.length==1){document.fire("objectbrowser:onNotifyUser",{message:"Failed to move '"+F[0].value.escapeTruncate()+"' "+G+". "+H,mode:"error"})}else{document.fire("objectbrowser:onNotifyUser",{message:"Failed to move items. "+H,mode:"error"})}},onSuccess:function(H){if(F.length==1){document.fire("objectbrowser:onNotifyUser",{message:"Successfully moved '"+F[0].value.escapeTruncate()+"' "+G})}else{document.fire("objectbrowser:onNotifyUser",{message:"Successfully moved "+F.length+" items "+G+"."})}}}]);var A=PBwiki.ObjectBrowser.view;C.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);C.push([A.apiMethod,A.refreshOptions,{counted:false}]);new PBwiki.MultiAPIRequest(C,{incUsess:true,onAllComplete:function(H){document.fire("objectbrowser:refreshfolderlist");document.fire("objectbrowser:refreshcurrentview")}})},hasPermission:function(A){if(PBwiki.ObjectBrowser.view.name=="ViewFolder"){return A.d}else{return A.w}}},deletefolder:{name:"deletefolder",txt:"Delete folder",Execute:function(A){new PBwiki.APIRequest("GetObjectsNOM",{folder:A.displayTitle,recursive:true},{allowDefer:true,onSuccess:function(C){new PBwiki.DialogCommands.DeleteFolder({objects:C.objects,oid:Util._foldernameToID(A.displayTitle),onConfirmation:B.bind(this,C.objects.length)})}.bind(this),onFailure:function(){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+A.displayTitle.escapeHTML()+"' couldn't be deleted.",mode:"error"})},waitCursor:true});function B(C){document.fire("objectbrowser:onNotifyUser",{message:"Deleting folder '"+A.displayTitle.escapeHTML()+"'&hellip;"});var D={folder:A.displayTitle,recurse:true};new PBwiki.APIRequest("DeleteFolder",D,{onSuccess:function(){new PBwiki.APIRequest("GetTimes",{},{onSuccess:function(){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+A.displayTitle.escapeHTML()+"' was deleted."});document.fire("objectbrowser:refreshfolderlist");document.fire("objectbrowser:select_viewallpages");document.fire("storageindicator:update")}})},onFailure:function(E){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+A.displayTitle.escapeHTML()+"' couldn't be deleted.",mode:"error"})},async:(C>25)})}},hasPermission:function(A){return A.d}},renamefolder:{name:"renamefolder",txt:"Rename folder",Execute:function(A){document.fire("objectbrowser:renamefolder")},hasPermission:function(A){return A.d}},createfolder:{name:"createfolder",txt:"New Folder",className:"iconbutton folderadd",Execute:function(A){document.fire("objectbrowser:createfolder")},onCreate:function(A){new PBwiki.APIRequest("GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false});document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+A.escapeHTML()+"' was created."});document.fire("objectbrowser:refreshfolderlist",function(){document.fire("objectbrowser:selectfolder",A)}.bind(this))},hasPermission:function(A){return A.d}},createpage:{name:"createpage",txt:"New Page",className:"iconbutton pagelined",Execute:function(A){var B={onCreate:this.onCreate.bind(A)};if(A.name=="ViewFolder"||A.name=="ViewFolderNewGui"){B.folder=A.options.parameter}new PBwiki.DialogCommands.CreateNewPage(B)},onCreate:function(A){document.fire("objectbrowser:onNotifyUser",{message:"Page '"+A.escapeTruncate(100)+"' was created."});document.fire("objectbrowser:setrefreshoptions",{sortby:"mtime",reverse:true});if(this.name=="ViewFolder"||this.name=="ViewFolderNewGui"){document.fire("objectbrowser:refreshcurrentview")}else{document.fire("objectbrowser:select_viewallpages")}},hasPermission:function(A){return A.d}},foldersecurity:{name:"foldersecurity",txt:"Folder Security",Execute:function(A){var B={folder:A.displayTitle,onSecurityChange:function(C){A.metadata.has_custom_perms=C;document.fire("objectbrowser:refreshfolderlist");A.refreshView();document.fire("objectbrowser:onNotifyUser",{message:"Folder security settings applied"})}};new PBwiki.DialogCommands.FolderSecurity(B)},hasPermission:function(A){return A.a}},deleterevision:{name:"deleterevision",txt:"Delete",Execute:function(A){var D=A.getSelectedObjects();if(D.length>0){var C="You are about to permanently delete ";C+=D.length+" revision"+(D.length>1?"s.":".");C+="\n\nAre you sure?";if(!confirm(C)){return }var B=new Array();D.each(function(F){var G={};var E=F.type.replace("revision","");G[E.toLowerCase()]=A.options.parameter;G.revision=F.revision;B.push(["Delete"+E,G,{}])}.bind(this));B.push(["GetTimes",{},{}]);new PBwiki.MultiAPIRequest(B,{incUsess:true,onComplete:function(F,E){A.refreshView();var G="Successfully deleted ";G+=E+" revision"+(E>1?"s.":".");document.fire("objectbrowser:onNotifyUser",{message:G})}.bindAsEventListener(null,D.length)})}else{document.fire("objectbrowser:onNotifyUser",{message:"Please select at least one revision to delete it"})}},hasPermission:function(A){return A.d}}};PBwiki.ObjectBrowser.Actions=[{cmd:"edit",txt:"Edit",href:function(B,A){if($$("#objectbrowser.readonly").length>0){return"javascript:alert('PBworks is in read-only mode for system maintenance.');"}var C=A.getObjectInfo(B);C.type=C.type.toLowerCase();return Util.getObjectLink(C)+"#view=edit"},Execute:function(B,A){if($$("#objectbrowser.readonly").length>0){return alert("PBworks is in read-only mode for system maintenance.")}var C=A.getObjectInfo(B);C.type=C.type.toLowerCase();delete C.revision;window.location=Util.getObjectLink(C)+"#view=edit"},hasPermission:function(B,A){var C=A.getObjectInfo(B);delete C.revision;return(C.type=="Page"&&C.perms&&C.perms.w)}},{cmd:"download",txt:"Download",href:function(D,A){var C,B,E=A.getObjectInfo(D);if(E.type==="Filerevision"){C="/f/"+E.revision+"/";B=A.options.parameter}else{C="/w/file/fetch/"+E.oid+"/";B=E.value}return C+encodeURIComponent(B)+"?force_download=1"},hasPermission:function(B,A){var C=A.getObjectInfo(B);return((C.type=="File"||C.type=="Filerevision"))}},{cmd:"rename",txt:"Rename",Execute:function(B,A){document.fire("objectbrowser:renameobject",B)},hasPermission:function(B,A){var C=A.getObjectInfo(B);if((C.type!="Page"&&C.type!="File"&&C.type!="Folder")||!(C.perms&&C.perms.d)||(C.type=="Page"&&(C.value=="SideBar"))){return false}return true}},{cmd:"preview",txt:"Preview",Execute:function(B,A){},hasPermission:function(B,A){var C=A.getObjectInfo(B);if(C.type=="File"){Util.addObjectTooltip(B.down("a.object_link"),{name:C.value,mtime:C.revision})}return false}},{cmd:"revertfile",txt:"Revert",Execute:function(B,A){var C=A.getObjectInfo(B);document.fire("objectbrowser:onNotifyUser",{message:"Reverting '"+A.options.parameter.escapeTruncate(100)+"'..."});new PBwiki.APIRequest("RevertFile",{revision:C.revision,file:A.options.parameter},{onSuccess:function(){document.fire("objectbrowser:onNotifyUser",{message:"Successfully reverted '"+A.options.parameter.escapeTruncate(100)+"'"});A.refreshView({sortby:"time",reverse:true})},onFailure:function(D){document.fire("objectbrowser:onNotifyUser",{message:"Failed to revert. "+D,mode:"error"})},incUsess:true,method:"post",waitCursor:true})},hasPermission:function(B,A){var C=A.getObjectInfo(B);return(C.type=="Filerevision"&&A.dataPerms&&A.dataPerms.w)}},{cmd:"foldersecurity",txt:"Security",Execute:function(C,A){var D=A.getObjectInfo(C);var B={folder:D.name,onSecurityChange:function(E){document.fire("objectbrowser:refreshfolderlist");A.refreshView();document.fire("objectbrowser:onNotifyUser",{message:"Folder security settings applied"})}};new PBwiki.DialogCommands.FolderSecurity(B)},hasPermission:function(B,A){var C=A.getObjectInfo(B);return(C.type=="Folder"&&C.perms.a)}},{cmd:"delete",txt:"Delete",Execute:function(D,A){var E=A.getObjectInfo(D);var G=false;if(E.type.toLowerCase()=="folder"){new PBwiki.APIRequest("GetObjectsNOM",{folder:E.name,recursive:true},{allowDefer:true,onSuccess:function(H){new PBwiki.DialogCommands.DeleteFolder({objects:H.objects,oid:Util._foldernameToID(E.name),onConfirmation:C.bind(this,H.objects.length)})}.bind(this),onFailure:function(){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+E.name.escapeHTML()+"' couldn't be deleted.",mode:"error"})},waitCursor:true});function C(H){document.fire("objectbrowser:onNotifyUser",{message:"Deleting folder '"+E.name.escapeHTML()+"'&hellip;"});var I={folder:E.name,recurse:true};new PBwiki.APIRequest("DeleteFolder",I,{onSuccess:function(){new PBwiki.APIRequest("GetTimes",{},{onSuccess:function(){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+E.name.escapeHTML()+"' was deleted."});document.fire("objectbrowser:refreshfolderlist");document.fire("objectbrowser:select_viewallpages");document.fire("storageindicator:update")}})},onFailure:function(J){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+E.name.escapeHTML()+"' couldn't be deleted.",mode:"error"})},async:(H>25)})}}else{if(E.value==PBinfo.CurrentWiki.front_page){G='"'+PBinfo.CurrentWiki.front_page.escapeHTML()+'" cannot be deleted.'}else{if(E.value=="SideBar"){G='"SideBar" cannot be deleted.'}}if(G){document.fire("objectbrowser:onNotifyUser",{message:G,mode:"error"});return }var G="You are about to permanently delete ";G+='"'+E.name+'"';G+="\n\nAre you sure?";if(!confirm(G)){return }var B=new Array();var F={};F[E.type.toLowerCase()]=E.value;B.push(["Delete"+E.type,F,{}]);B.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);B.push([A.apiMethod,A.refreshOptions,{counted:false}]);B.push(["GetStorageInfo",{},{cacheability:["filetime"],counted:false}]);document.fire("objectbrowser:onNotifyUser",{message:"Deleting&hellip;"});new PBwiki.MultiAPIRequest(B,{incUsess:true,onAllComplete:function(I){var H=PBwiki.ObjectBrowser.paging.opts;document.fire("objectbrowser:refreshfolderlist");if(H.offset>0&&H.numobjects-1<=H.offset){A.refreshView({offset:H.offset-H.count})}else{A.refreshView()}if(I.lastError){document.fire("objectbrowser:onNotifyUser",{message:"Failed to delete '"+E.value.escapeTruncate()+"'. "+I.lastError,mode:"error"})}else{document.fire("objectbrowser:onNotifyUser",{message:"Successfully deleted '"+E.value.escapeTruncate()+"'"})}},onFailure:function(I,H){document.fire("objectbrowser:onNotifyUser",{message:"Failed to delete items. "+I,mode:"error"})}})}},hasPermission:function(B,A){var C=A.getObjectInfo(B);return C.perms&&C.perms.d}},{cmd:"move",txt:"Move",Execute:function(D,A){var E=A.getObjectInfo(D);var C=null;if(A.name=="ViewFolder"||A.name=="ViewFolderNewGui"){C=A.options.parameter}else{var B=new Hash();if(E.folder){B.set(E.folder,true)}if(B.keys().length==1){C=B.keys()[0]}}this.folderSelector=new PBwiki.DialogCommands.FolderSelector({folder:C,onSelect:function(F){this.moveObject(E,F)}.bind(this)})},moveObject:function(F,D){var E=Util._foldernameToID(D)||0;var C=F.oid;var B=[];var G=(D=="")?"out of this folder":"to folder '"+D.escapeTruncate()+"'";B.push(["PutObjectsIntoFolder",{parent_id:E,oids:C},{onFailure:function(H){document.fire("objectbrowser:onNotifyUser",{message:"Failed to move '"+F.value.escapeTruncate()+"' "+G+". "+H,mode:"error"})},onSuccess:function(H){document.fire("objectbrowser:onNotifyUser",{message:"Successfully moved '"+F.value.escapeTruncate()+"' "+G})}}]);var A=PBwiki.ObjectBrowser.view;B.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);B.push([A.apiMethod,A.refreshOptions,{counted:false}]);new PBwiki.MultiAPIRequest(B,{incUsess:true,onAllComplete:function(H){document.fire("objectbrowser:refreshfolderlist");document.fire("objectbrowser:refreshcurrentview")}})},hasPermission:function(B,A){var C=A.getObjectInfo(B);if(A.name=="ViewFolder"||A.name=="ViewFolderNewGui"){return C.perms&&C.perms.d}else{return C.perms&&C.perms.w}}}]
/*
// script.aculo.us effects.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008

// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
// Contributors:
//  Justin Palmer (http://encytemedia.com/)
//  Mark Pilgrim (http://diveintomark.org/)
//  Martin Bialasinki
// 
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/ 
*/
;String.prototype.parseColor=function(){var A="#";if(this.slice(0,4)=="rgb("){var C=this.slice(4,this.length-1).split(",");var B=0;do{A+=parseInt(C[B]).toColorPart()}while(++B<3)}else{if(this.slice(0,1)=="#"){if(this.length==4){for(var B=1;B<4;B++){A+=(this.charAt(B)+this.charAt(B)).toLowerCase()}}if(this.length==7){A=this.toLowerCase()}}}return(A.length==7?A:(arguments[0]||this))};Element.collectTextNodes=function(A){return $A($(A).childNodes).collect(function(B){return(B.nodeType==3?B.nodeValue:(B.hasChildNodes()?Element.collectTextNodes(B):""))}).flatten().join("")};Element.collectTextNodesIgnoreClass=function(A,B){return $A($(A).childNodes).collect(function(C){return(C.nodeType==3?C.nodeValue:((C.hasChildNodes()&&!Element.hasClassName(C,B))?Element.collectTextNodesIgnoreClass(C,B):""))}).flatten().join("")};Element.setContentZoom=function(A,B){A=$(A);A.setStyle({fontSize:(B/100)+"em"});if(Prototype.Browser.WebKit){window.scrollBy(0,0)}return A};Element.getInlineOpacity=function(A){return $(A).style.opacity||""};Element.forceRerendering=function(A){try{A=$(A);var C=document.createTextNode(" ");A.appendChild(C);A.removeChild(C)}catch(B){}};var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},Transitions:{linear:Prototype.K,sinoidal:function(A){return(-Math.cos(A*Math.PI)/2)+0.5},reverse:function(A){return 1-A},flicker:function(A){var A=((-Math.cos(A*Math.PI)/4)+0.75)+Math.random()/4;return A>1?1:A},wobble:function(A){return(-Math.cos(A*Math.PI*(9*A))/2)+0.5},pulse:function(B,A){A=A||5;return(((B%(1/A))*A).round()==0?((B*A*2)-(B*A*2).floor()):1-((B*A*2)-(B*A*2).floor()))},spring:function(A){return 1-(Math.cos(A*4.5*Math.PI)*Math.exp(-A*6))},none:function(A){return 0},full:function(A){return 1}},DefaultOptions:{duration:1,fps:100,sync:false,from:0,to:1,delay:0,queue:"parallel"},tagifyText:function(A){var B="position:relative";if(Prototype.Browser.IE){B+=";zoom:1"}A=$(A);$A(A.childNodes).each(function(C){if(C.nodeType==3){C.nodeValue.toArray().each(function(D){A.insertBefore(new Element("span",{style:B}).update(D==" "?String.fromCharCode(160):D),C)});Element.remove(C)}})},multiple:function(B,C){var E;if(((typeof B=="object")||Object.isFunction(B))&&(B.length)){E=B}else{E=$(B).childNodes}var A=Object.extend({speed:0.1,delay:0},arguments[2]||{});var D=A.delay;$A(E).each(function(G,F){new C(G,Object.extend(A,{delay:F*A.speed+D}))})},PAIRS:{slide:["SlideDown","SlideUp"],blind:["BlindDown","BlindUp"],appear:["Appear","Fade"]},toggle:function(B,C){B=$(B);C=(C||"appear").toLowerCase();var A=Object.extend({queue:{position:"end",scope:(B.id||"global"),limit:1}},arguments[2]||{});Effect[B.visible()?Effect.PAIRS[C][1]:Effect.PAIRS[C][0]](B,A)}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null},_each:function(A){this.effects._each(A)},add:function(B){var C=new Date().getTime();var A=Object.isString(B.options.queue)?B.options.queue:B.options.queue.position;switch(A){case"front":this.effects.findAll(function(D){return D.state=="idle"}).each(function(D){D.startOn+=B.finishOn;D.finishOn+=B.finishOn});break;case"with-last":C=this.effects.pluck("startOn").max()||C;break;case"end":C=this.effects.pluck("finishOn").max()||C;break}B.startOn+=C;B.finishOn+=C;if(!B.options.queue.limit||(this.effects.length<B.options.queue.limit)){this.effects.push(B)}if(!this.interval){this.interval=setInterval(this.loop.bind(this),15)}},remove:function(A){this.effects=this.effects.reject(function(B){return B==A});if(this.effects.length==0){clearInterval(this.interval);this.interval=null}},loop:function(){var C=new Date().getTime();for(var B=0,A=this.effects.length;B<A;B++){this.effects[B]&&this.effects[B].loop(C)}}});Effect.Queues={instances:$H(),get:function(A){if(!Object.isString(A)){return A}return this.instances.get(A)||this.instances.set(A,new Effect.ScopedQueue())}};Effect.Queue=Effect.Queues.get("global");Effect.Base=Class.create({position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+"Internal"]?"this.options."+eventName+"Internal(this);":"")+(options[eventName]?"this.options."+eventName+"(this);":""))}if(options&&options.transition===false){options.transition=Effect.Transitions.linear}this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state="idle";this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;eval('this.render = function(pos){ if (this.state=="idle"){this.state="running";'+codeForEvent(this.options,"beforeSetup")+(this.setup?"this.setup();":"")+codeForEvent(this.options,"afterSetup")+'};if (this.state=="running"){pos=this.options.transition(pos)*'+this.fromToDelta+"+"+this.options.from+";this.position=pos;"+codeForEvent(this.options,"beforeUpdate")+(this.update?"this.update(pos);":"")+codeForEvent(this.options,"afterUpdate")+"}}");this.event("beforeStart");if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).add(this)}},loop:function(C){if(C>=this.startOn){if(C>=this.finishOn){this.render(1);this.cancel();this.event("beforeFinish");if(this.finish){this.finish()}this.event("afterFinish");return }var B=(C-this.startOn)/this.totalTime,A=(B*this.totalFrames).round();if(A>this.currentFrame){this.render(B);this.currentFrame=A}}},cancel:function(){if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).remove(this)}this.state="finished"},event:function(A){if(this.options[A+"Internal"]){this.options[A+"Internal"](this)}if(this.options[A]){this.options[A](this)}},inspect:function(){var A=$H();for(property in this){if(!Object.isFunction(this[property])){A.set(property,this[property])}}return"#<Effect:"+A.inspect()+",options:"+$H(this.options).inspect()+">"}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(A){this.effects=A||[];this.start(arguments[1])},update:function(A){this.effects.invoke("render",A)},finish:function(A){this.effects.each(function(B){B.render(1);B.cancel();B.event("beforeFinish");if(B.finish){B.finish(A)}B.event("afterFinish")})}});Effect.Tween=Class.create(Effect.Base,{initialize:function(C,F,E){C=Object.isString(C)?$(C):C;var B=$A(arguments),D=B.last(),A=B.length==5?B[3]:null;this.method=Object.isFunction(D)?D.bind(C):Object.isFunction(C[D])?C[D].bind(C):function(G){C[D]=G};this.start(Object.extend({from:F,to:E},A||{}))},update:function(A){this.method(A)}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}))},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(B){this.element=$(B);if(!this.element){throw (Effect._elementDoesNotExistError)}if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1})}var A=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});this.start(A)},update:function(A){this.element.setOpacity(A)}});Effect.Move=Class.create(Effect.Base,{initialize:function(B){this.element=$(B);if(!this.element){throw (Effect._elementDoesNotExistError)}var A=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});this.start(A)},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle("left")||"0");this.originalTop=parseFloat(this.element.getStyle("top")||"0");if(this.options.mode=="absolute"){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop}},update:function(A){this.element.setStyle({left:(this.options.x*A+this.originalLeft).round()+"px",top:(this.options.y*A+this.originalTop).round()+"px"})}});Effect.MoveBy=function(B,A,C){return new Effect.Move(B,Object.extend({x:C,y:A},arguments[3]||{}))};Effect.Scale=Class.create(Effect.Base,{initialize:function(B,C){this.element=$(B);if(!this.element){throw (Effect._elementDoesNotExistError)}var A=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:C},arguments[2]||{});this.start(A)},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle("position");this.originalStyle={};["top","left","width","height","fontSize"].each(function(B){this.originalStyle[B]=this.element.style[B]}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var A=this.element.getStyle("font-size")||"100%";["em","px","%","pt"].each(function(B){if(A.indexOf(B)>0){this.fontSize=parseFloat(A);this.fontSizeType=B}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=="box"){this.dims=[this.element.offsetHeight,this.element.offsetWidth]}if(/^content/.test(this.options.scaleMode)){this.dims=[this.element.scrollHeight,this.element.scrollWidth]}if(!this.dims){this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth]}},update:function(A){var B=(this.options.scaleFrom/100)+(this.factor*A);if(this.options.scaleContent&&this.fontSize){this.element.setStyle({fontSize:this.fontSize*B+this.fontSizeType})}this.setDimensions(this.dims[0]*B,this.dims[1]*B)},finish:function(A){if(this.restoreAfterFinish){this.element.setStyle(this.originalStyle)}},setDimensions:function(A,D){var E={};if(this.options.scaleX){E.width=D.round()+"px"}if(this.options.scaleY){E.height=A.round()+"px"}if(this.options.scaleFromCenter){var C=(A-this.dims[0])/2;var B=(D-this.dims[1])/2;if(this.elementPositioning=="absolute"){if(this.options.scaleY){E.top=this.originalTop-C+"px"}if(this.options.scaleX){E.left=this.originalLeft-B+"px"}}else{if(this.options.scaleY){E.top=-C+"px"}if(this.options.scaleX){E.left=-B+"px"}}}this.element.setStyle(E)}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(B){this.element=$(B);if(!this.element){throw (Effect._elementDoesNotExistError)}var A=Object.extend({startcolor:"#ffff99"},arguments[1]||{});this.start(A)},setup:function(){if(this.element.getStyle("display")=="none"){this.cancel();return }this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle("background-image");this.element.setStyle({backgroundImage:"none"})}if(!this.options.endcolor){this.options.endcolor=this.element.getStyle("background-color").parseColor("#ffffff")}if(!this.options.restorecolor){this.options.restorecolor=this.element.getStyle("background-color")}this._base=$R(0,2).map(function(A){return parseInt(this.options.startcolor.slice(A*2+1,A*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(A){return parseInt(this.options.endcolor.slice(A*2+1,A*2+3),16)-this._base[A]}.bind(this))},update:function(A){this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(B,C,D){return B+((this._base[D]+(this._delta[D]*A)).round().toColorPart())}.bind(this))})},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}))}});Effect.ScrollTo=function(D){var C=arguments[1]||{},B=document.viewport.getScrollOffsets(),E=$(D).cumulativeOffset(),A=(window.height||document.body.scrollHeight)-document.viewport.getHeight();if(C.offset){E[1]+=C.offset}return new Effect.Tween(null,B.top,E[1]>A?A:E[1],C,function(F){scrollTo(B.left,F.round())})};Effect.Fade=function(C){C=$(C);try{var A=C.getInlineOpacity()}catch(D){}var B=Object.extend({from:C.getOpacity()||1,to:0,afterFinishInternal:function(E){if(E.options.to!=0){return }E.element.hide().setStyle({opacity:A})}},arguments[1]||{});return new Effect.Opacity(C,B)};Effect.Appear=function(B){B=$(B);var A=Object.extend({from:(B.getStyle("display")=="none"?0:B.getOpacity()||0),to:1,afterFinishInternal:function(C){C.element.forceRerendering()},beforeSetup:function(C){C.element.setOpacity(C.options.from).show()}},arguments[1]||{});return new Effect.Opacity(B,A)};Effect.Puff=function(B){B=$(B);var A={opacity:B.getInlineOpacity(),position:B.getStyle("position"),top:B.style.top,left:B.style.left,width:B.style.width,height:B.style.height};return new Effect.Parallel([new Effect.Scale(B,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(B,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(C){Position.absolutize(C.effects[0].element)},afterFinishInternal:function(C){C.effects[0].element.hide().setStyle(A)}},arguments[1]||{}))};Effect.BlindUp=function(A){A=$(A);A.makeClipping();return new Effect.Scale(A,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(B){B.element.hide().undoClipping()}},arguments[1]||{}))};Effect.BlindDown=function(B){B=$(B);var A=B.getDimensions();return new Effect.Scale(B,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:A.height,originalWidth:A.width},restoreAfterFinish:true,afterSetup:function(C){C.element.makeClipping().setStyle({height:"0px"}).show()},afterFinishInternal:function(C){C.element.undoClipping()}},arguments[1]||{}))};Effect.SwitchOff=function(B){B=$(B);var A=B.getInlineOpacity();return new Effect.Appear(B,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(C){new Effect.Scale(C.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(D){D.element.makePositioned().makeClipping()},afterFinishInternal:function(D){D.element.hide().undoClipping().undoPositioned().setStyle({opacity:A})}})}},arguments[1]||{}))};Effect.DropOut=function(B){B=$(B);var A={top:B.getStyle("top"),left:B.getStyle("left"),opacity:B.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(B,{x:0,y:100,sync:true}),new Effect.Opacity(B,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(C){C.effects[0].element.makePositioned()},afterFinishInternal:function(C){C.effects[0].element.hide().undoPositioned().setStyle(A)}},arguments[1]||{}))};Effect.Shake=function(D){D=$(D);var B=Object.extend({distance:20,duration:0.5},arguments[1]||{});var E=parseFloat(B.distance);var C=parseFloat(B.duration)/10;var A={top:D.getStyle("top"),left:D.getStyle("left")};return new Effect.Move(D,{x:E,y:0,duration:C,afterFinishInternal:function(F){new Effect.Move(F.element,{x:-E*2,y:0,duration:C*2,afterFinishInternal:function(G){new Effect.Move(G.element,{x:E*2,y:0,duration:C*2,afterFinishInternal:function(H){new Effect.Move(H.element,{x:-E*2,y:0,duration:C*2,afterFinishInternal:function(I){new Effect.Move(I.element,{x:E*2,y:0,duration:C*2,afterFinishInternal:function(J){new Effect.Move(J.element,{x:-E,y:0,duration:C,afterFinishInternal:function(K){K.element.undoPositioned().setStyle(A)}})}})}})}})}})}})};Effect.SlideDown=function(C){C=$(C).cleanWhitespace();var A=C.down().getStyle("bottom");var B=C.getDimensions();return new Effect.Scale(C,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:B.height,originalWidth:B.width},restoreAfterFinish:true,afterSetup:function(D){D.element.makePositioned();D.element.down().makePositioned();if(window.opera){D.element.setStyle({top:""})}D.element.makeClipping().setStyle({height:"0px"}).show()},afterUpdateInternal:function(D){D.element.down().setStyle({bottom:(D.dims[0]-D.element.clientHeight)+"px"})},afterFinishInternal:function(D){D.element.undoClipping().undoPositioned();D.element.down().undoPositioned().setStyle({bottom:A})}},arguments[1]||{}))};Effect.SlideUp=function(C){C=$(C).cleanWhitespace();var A=C.down().getStyle("bottom");var B=C.getDimensions();return new Effect.Scale(C,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,scaleMode:{originalHeight:B.height,originalWidth:B.width},restoreAfterFinish:true,afterSetup:function(D){D.element.makePositioned();D.element.down().makePositioned();if(window.opera){D.element.setStyle({top:""})}D.element.makeClipping().show()},afterUpdateInternal:function(D){D.element.down().setStyle({bottom:(D.dims[0]-D.element.clientHeight)+"px"})},afterFinishInternal:function(D){D.element.hide().undoClipping().undoPositioned();D.element.down().undoPositioned().setStyle({bottom:A})}},arguments[1]||{}))};Effect.Squish=function(A){return new Effect.Scale(A,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(B){B.element.makeClipping()},afterFinishInternal:function(B){B.element.hide().undoClipping()}})};Effect.Grow=function(C){C=$(C);var B=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var A={top:C.style.top,left:C.style.left,height:C.style.height,width:C.style.width,opacity:C.getInlineOpacity()};var G=C.getDimensions();var H,F;var E,D;switch(B.direction){case"top-left":H=F=E=D=0;break;case"top-right":H=G.width;F=D=0;E=-G.width;break;case"bottom-left":H=E=0;F=G.height;D=-G.height;break;case"bottom-right":H=G.width;F=G.height;E=-G.width;D=-G.height;break;case"center":H=G.width/2;F=G.height/2;E=-G.width/2;D=-G.height/2;break}return new Effect.Move(C,{x:H,y:F,duration:0.01,beforeSetup:function(I){I.element.hide().makeClipping().makePositioned()},afterFinishInternal:function(I){new Effect.Parallel([new Effect.Opacity(I.element,{sync:true,to:1,from:0,transition:B.opacityTransition}),new Effect.Move(I.element,{x:E,y:D,sync:true,transition:B.moveTransition}),new Effect.Scale(I.element,100,{scaleMode:{originalHeight:G.height,originalWidth:G.width},sync:true,scaleFrom:window.opera?1:0,transition:B.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(J){J.effects[0].element.setStyle({height:"0px"}).show()},afterFinishInternal:function(J){J.effects[0].element.undoClipping().undoPositioned().setStyle(A)}},B))}})};Effect.Shrink=function(C){C=$(C);var B=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var A={top:C.style.top,left:C.style.left,height:C.style.height,width:C.style.width,opacity:C.getInlineOpacity()};var F=C.getDimensions();var E,D;switch(B.direction){case"top-left":E=D=0;break;case"top-right":E=F.width;D=0;break;case"bottom-left":E=0;D=F.height;break;case"bottom-right":E=F.width;D=F.height;break;case"center":E=F.width/2;D=F.height/2;break}return new Effect.Parallel([new Effect.Opacity(C,{sync:true,to:0,from:1,transition:B.opacityTransition}),new Effect.Scale(C,window.opera?1:0,{sync:true,transition:B.scaleTransition,restoreAfterFinish:true}),new Effect.Move(C,{x:E,y:D,sync:true,transition:B.moveTransition})],Object.extend({beforeStartInternal:function(G){G.effects[0].element.makePositioned().makeClipping()},afterFinishInternal:function(G){G.effects[0].element.hide().undoClipping().undoPositioned().setStyle(A)}},B))};Effect.Pulsate=function(C){C=$(C);var B=arguments[1]||{};var A=C.getInlineOpacity();var E=B.transition||Effect.Transitions.sinoidal;var D=function(F){return E(1-Effect.Transitions.pulse(F,B.pulses))};D.bind(E);return new Effect.Opacity(C,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(F){F.element.setStyle({opacity:A})}},B),{transition:D}))};Effect.Fold=function(B){B=$(B);var A={top:B.style.top,left:B.style.left,width:B.style.width,height:B.style.height};B.makeClipping();return new Effect.Scale(B,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(C){new Effect.Scale(B,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(D){D.element.hide().undoClipping().setStyle(A)}})}},arguments[1]||{}))};Effect.Morph=Class.create(Effect.Base,{initialize:function(C){this.element=$(C);if(!this.element){throw (Effect._elementDoesNotExistError)}var A=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(A.style)){this.style=$H(A.style)}else{if(A.style.include(":")){this.style=A.style.parseStyle()}else{this.element.addClassName(A.style);this.style=$H(this.element.getStyles());this.element.removeClassName(A.style);var B=this.element.getStyles();this.style=this.style.reject(function(D){return D.value==B[D.key]});A.afterFinishInternal=function(D){D.element.addClassName(D.options.style);D.transforms.each(function(E){D.element.style[E.style]=""})}}}this.start(A)},setup:function(){function A(B){if(!B||["rgba(0, 0, 0, 0)","transparent"].include(B)){B="#ffffff"}B=B.parseColor();return $R(0,2).map(function(C){return parseInt(B.slice(C*2+1,C*2+3),16)})}this.transforms=this.style.map(function(G){var F=G[0],E=G[1],D=null;if(E.parseColor("#zzzzzz")!="#zzzzzz"){E=E.parseColor();D="color"}else{if(F=="opacity"){E=parseFloat(E);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1})}}else{if(Element.CSS_LENGTH.test(E)){var C=E.match(/^([\+\-]?[0-9\.]+)(.*)$/);E=parseFloat(C[1]);D=(C.length==3)?C[2]:null}}}var B=this.element.getStyle(F);return{style:F.camelize(),originalValue:D=="color"?A(B):parseFloat(B||0),targetValue:D=="color"?A(E):E,unit:D}}.bind(this)).reject(function(B){return((B.originalValue==B.targetValue)||(B.unit!="color"&&(isNaN(B.originalValue)||isNaN(B.targetValue))))})},update:function(A){var D={},B,C=this.transforms.length;while(C--){D[(B=this.transforms[C]).style]=B.unit=="color"?"#"+(Math.round(B.originalValue[0]+(B.targetValue[0]-B.originalValue[0])*A)).toColorPart()+(Math.round(B.originalValue[1]+(B.targetValue[1]-B.originalValue[1])*A)).toColorPart()+(Math.round(B.originalValue[2]+(B.targetValue[2]-B.originalValue[2])*A)).toColorPart():(B.originalValue+(B.targetValue-B.originalValue)*A).toFixed(3)+(B.unit===null?"":B.unit)}this.element.setStyle(D,true)}});Effect.Transform=Class.create({initialize:function(A){this.tracks=[];this.options=arguments[1]||{};this.addTracks(A)},addTracks:function(A){A.each(function(B){B=$H(B);var C=B.values().first();this.tracks.push($H({ids:B.keys().first(),effect:Effect.Morph,options:{style:C}}))}.bind(this));return this},play:function(){return new Effect.Parallel(this.tracks.map(function(A){var D=A.get("ids"),C=A.get("effect"),B=A.get("options");var E=[$(D)||$$(D)].flatten();return E.map(function(F){return new C(F,Object.extend({sync:true},B))})}).flatten(),this.options)}});Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex");Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement("div");String.prototype.parseStyle=function(){var B,A=$H();if(Prototype.Browser.WebKit){B=new Element("div",{style:this}).style}else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';B=String.__parseStyleElement.childNodes[0].style}Element.CSS_PROPERTIES.each(function(C){if(B[C]){A.set(C,B[C])}});if(Prototype.Browser.IE&&this.include("opacity")){A.set("opacity",this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1])}return A};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(B){var A=document.defaultView.getComputedStyle($(B),null);return Element.CSS_PROPERTIES.inject({},function(C,D){C[D]=A[D];return C})}}else{Element.getStyles=function(B){B=$(B);var A=B.currentStyle,C;C=Element.CSS_PROPERTIES.inject({},function(D,E){D[E]=A[E];return D});if(!C.opacity){C.opacity=B.getOpacity()}return C}}Effect.Methods={morph:function(A,B){A=$(A);new Effect.Morph(A,Object.extend({style:B},arguments[2]||{}));return A},visualEffect:function(C,E,B){C=$(C);var D=E.dasherize().camelize(),A=D.charAt(0).toUpperCase()+D.substring(1);new Effect[A](C,B);return C},highlight:function(B,A){B=$(B);new Effect.Highlight(B,A);return B}};$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function(A){Effect.Methods[A]=function(C,B){C=$(C);Effect[A.charAt(0).toUpperCase()+A.substring(1)](C,B);return C}});$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(A){Effect.Methods[A]=Element[A]});Element.addMethods(Effect.Methods);if(typeof Effect=="undefined"){throw ("controls.js requires including script.aculo.us' effects.js library")}var Autocompleter={};Autocompleter.Base=Class.create({baseInitialize:function(B,C,A){B=$(B);this.element=B;this.update=$(C);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;this.oldElementValue=this.element.value;if(this.setOptions){this.setOptions(A)}else{this.options=A||{}}this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(D,E){if(!E.style.position||E.style.position=="absolute"){E.style.position="absolute";Position.clone(D,E,{setHeight:false,offsetTop:D.offsetHeight})}Effect.Appear(E,{duration:0.15})};this.options.onHide=this.options.onHide||function(D,E){new Effect.Fade(E,{duration:0.15})};if(typeof (this.options.tokens)=="string"){this.options.tokens=new Array(this.options.tokens)}if(!this.options.tokens.include("\n")){this.options.tokens.push("\n")}this.observer=null;this.element.setAttribute("autocomplete","off");Element.hide(this.update);Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this));Event.observe(this.element,"keydown",this.onKeyPress.bindAsEventListener(this))},show:function(){if(Element.getStyle(this.update,"display")=="none"){this.options.onShow(this.element,this.update)}if(!this.iefix&&(Prototype.Browser.IE)&&(Element.getStyle(this.update,"position")=="absolute")){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+"_iefix")}if(this.iefix){setTimeout(this.fixIEOverlapping.bind(this),50)}},fixIEOverlapping:function(){Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix)},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,"display")!="none"){this.options.onHide(this.element,this.update)}if(this.iefix){Element.hide(this.iefix)}},startIndicator:function(){if(this.options.indicator){Element.show(this.options.indicator)}},stopIndicator:function(){if(this.options.indicator){Element.hide(this.options.indicator)}},onKeyPress:function(A){if(this.active){switch(A.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(A);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(A);return ;case Event.KEY_LEFT:case Event.KEY_RIGHT:return ;case Event.KEY_UP:this.markPrevious();this.render();Event.stop(A);return ;case Event.KEY_DOWN:this.markNext();this.render();Event.stop(A);return }}else{if(A.keyCode==Event.KEY_TAB||A.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&A.keyCode==0)){return }}this.changed=true;this.hasFocus=true;if(this.observer){clearTimeout(this.observer)}this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000)},activate:function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices()},onHover:function(B){var A=Event.findElement(B,"LI");if(this.index!=A.autocompleteIndex){this.index=A.autocompleteIndex;this.render()}Event.stop(B)},onClick:function(B){var A=Event.findElement(B,"LI");this.index=A.autocompleteIndex;this.selectEntry();this.hide()},onBlur:function(A){setTimeout(this.hide.bind(this),250);this.hasFocus=false;this.active=false},render:function(){if(this.entryCount>0){for(var A=0;A<this.entryCount;A++){this.index==A?Element.addClassName(this.getEntry(A),"selected"):Element.removeClassName(this.getEntry(A),"selected")}if(this.hasFocus){this.show();this.active=true}}else{this.active=false;this.hide()}},markPrevious:function(){if(this.index>0){this.index--}else{this.index=this.entryCount-1}this.getEntry(this.index).scrollIntoView(true)},markNext:function(){if(this.index<this.entryCount-1){this.index++}else{this.index=0}this.getEntry(this.index).scrollIntoView(false)},getEntry:function(A){return this.update.firstChild.childNodes[A]},getCurrentEntry:function(){return this.getEntry(this.index)},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry())},updateElement:function(F){if(this.options.updateElement){this.options.updateElement(F);return }var D="";if(this.options.select){var A=$(F).select("."+this.options.select)||[];if(A.length>0){D=Element.collectTextNodes(A[0],this.options.select)}}else{D=Element.collectTextNodesIgnoreClass(F,"informal")}var C=this.getTokenBounds();if(C[0]!=-1){var E=this.element.value.substr(0,C[0]);var B=this.element.value.substr(C[0]).match(/^\s+/);if(B){E+=B[0]}this.element.value=E+D+this.element.value.substr(C[1])}else{this.element.value=D}this.oldElementValue=this.element.value;this.element.focus();if(this.options.afterUpdateElement){this.options.afterUpdateElement(this.element,F)}},updateChoices:function(C){if(!this.changed&&this.hasFocus){this.update.innerHTML=C;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var A=0;A<this.entryCount;A++){var B=this.getEntry(A);B.autocompleteIndex=A;this.addObservers(B)}}else{this.entryCount=0}this.stopIndicator();this.index=0;if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide()}else{this.render()}}},addObservers:function(A){Event.observe(A,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(A,"click",this.onClick.bindAsEventListener(this))},onObserverEvent:function(){this.changed=false;this.tokenBounds=null;if(this.getToken().length>=this.options.minChars){this.getUpdatedChoices()}else{this.active=false;this.hide()}this.oldElementValue=this.element.value},getToken:function(){var A=this.getTokenBounds();return this.element.value.substring(A[0],A[1]).strip()},getTokenBounds:function(){if(null!=this.tokenBounds){return this.tokenBounds}var E=this.element.value;if(E.strip().empty()){return[-1,0]}var F=arguments.callee.getFirstDifferencePos(E,this.oldElementValue);var H=(F==this.oldElementValue.length?1:0);var D=-1,C=E.length;var G;for(var B=0,A=this.options.tokens.length;B<A;++B){G=E.lastIndexOf(this.options.tokens[B],F+H-1);if(G>D){D=G}G=E.indexOf(this.options.tokens[B],F+H);if(-1!=G&&G<C){C=G}}return(this.tokenBounds=[D+1,C])}});Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos=function(C,A){var D=Math.min(C.length,A.length);for(var B=0;B<D;++B){if(C[B]!=A[B]){return B}}return D};Ajax.Autocompleter=Class.create(Autocompleter.Base,{initialize:function(C,D,B,A){this.baseInitialize(C,D,A);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=B},getUpdatedChoices:function(){this.startIndicator();var A=encodeURIComponent(this.options.paramName)+"="+encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,A):A;if(this.options.defaultParams){this.options.parameters+="&"+this.options.defaultParams}new Ajax.Request(this.url,this.options)},onComplete:function(A){this.updateChoices(A.responseText)}});Autocompleter.Local=Class.create(Autocompleter.Base,{initialize:function(B,D,C,A){this.baseInitialize(B,D,A);this.options.array=C},getUpdatedChoices:function(){this.updateChoices(this.options.selector(this))},setOptions:function(A){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(B){var D=[];var C=[];var H=B.getToken();var G=0;for(var E=0;E<B.options.array.length&&D.length<B.options.choices;E++){var F=B.options.array[E];var I=B.options.ignoreCase?F.toLowerCase().indexOf(H.toLowerCase()):F.indexOf(H);while(I!=-1){if(I==0&&F.length!=H.length){D.push("<li><strong>"+F.substr(0,H.length)+"</strong>"+F.substr(H.length)+"</li>");break}else{if(H.length>=B.options.partialChars&&B.options.partialSearch&&I!=-1){if(B.options.fullSearch||/\s/.test(F.substr(I-1,1))){C.push("<li>"+F.substr(0,I)+"<strong>"+F.substr(I,H.length)+"</strong>"+F.substr(I+H.length)+"</li>");break}}}I=B.options.ignoreCase?F.toLowerCase().indexOf(H.toLowerCase(),I+1):F.indexOf(H,I+1)}}if(C.length){D=D.concat(C.slice(0,B.options.choices-D.length))}return"<ul>"+D.join("")+"</ul>"}},A||{})}});Field.scrollFreeActivate=function(A){setTimeout(function(){Field.activate(A)},1)};Ajax.InPlaceEditor=Class.create({initialize:function(C,B,A){this.url=B;this.element=C=$(C);this.prepareOptions();this._controls={};arguments.callee.dealWithDeprecatedOptions(A);Object.extend(this.options,A||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+"-inplaceeditor";if($(this.options.formId)){this.options.formId=""}}if(this.options.externalControl){this.options.externalControl=$(this.options.externalControl)}if(!this.options.externalControl){this.options.externalControlOnly=false}this._originalBackground=this.element.getStyle("background-color")||"transparent";this.element.title=this.options.clickToEditText;this._boundCancelHandler=this.handleFormCancellation.bind(this);this._boundComplete=(this.options.onComplete||Prototype.emptyFunction).bind(this);this._boundFailureHandler=this.handleAJAXFailure.bind(this);this._boundSubmitHandler=this.handleFormSubmission.bind(this);this._boundWrapperHandler=this.wrapUp.bind(this);this.registerListeners()},checkForEscapeOrReturn:function(A){if(!this._editing||A.ctrlKey||A.altKey||A.shiftKey){return }if(Event.KEY_ESC==A.keyCode){this.handleFormCancellation(A)}else{if(Event.KEY_RETURN==A.keyCode){this.handleFormSubmission(A)}}},createControl:function(G,C,B){var E=this.options[G+"Control"];var F=this.options[G+"Text"];if("button"==E){var A=document.createElement("input");A.type="submit";A.value=F;A.className="editor_"+G+"_button";if("cancel"==G){A.onclick=this._boundCancelHandler}this._form.appendChild(A);this._controls[G]=A}else{if("link"==E){var D=document.createElement("a");D.href="#";D.appendChild(document.createTextNode(F));D.onclick="cancel"==G?this._boundCancelHandler:this._boundSubmitHandler;D.className="editor_"+G+"_link";if(B){D.className+=" "+B}this._form.appendChild(D);this._controls[G]=D}}},createEditField:function(){var C=(this.options.loadTextURL?this.options.loadingText:this.getText());var B;if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){B=document.createElement("input");B.type="text";var A=this.options.size||this.options.cols||0;if(0<A){B.size=A}}else{B=document.createElement("textarea");B.rows=(1>=this.options.rows?this.options.autoRows:this.options.rows);B.cols=this.options.cols||40}B.name=this.options.paramName;B.value=C;B.className="editor_field";if(this.options.submitOnBlur){B.onblur=this._boundSubmitHandler}this._controls.editor=B;if(this.options.loadTextURL){this.loadExternalText()}this._form.appendChild(this._controls.editor)},createForm:function(){var B=this;function A(D,E){var C=B.options["text"+D+"Controls"];if(!C||E===false){return }B._form.appendChild(document.createTextNode(C))}this._form=$(document.createElement("form"));this._form.id=this.options.formId;this._form.addClassName(this.options.formClassName);this._form.onsubmit=this._boundSubmitHandler;this.createEditField();if("textarea"==this._controls.editor.tagName.toLowerCase()){this._form.appendChild(document.createElement("br"))}if(this.options.onFormCustomization){this.options.onFormCustomization(this,this._form)}A("Before",this.options.okControl||this.options.cancelControl);this.createControl("ok",this._boundSubmitHandler);A("Between",this.options.okControl&&this.options.cancelControl);this.createControl("cancel",this._boundCancelHandler,"editor_cancel");A("After",this.options.okControl||this.options.cancelControl)},destroy:function(){if(this._oldInnerHTML){this.element.innerHTML=this._oldInnerHTML}this.leaveEditMode();this.unregisterListeners()},enterEditMode:function(A){if(this._saving||this._editing){return }this._editing=true;this.triggerCallback("onEnterEditMode");if(this.options.externalControl){this.options.externalControl.hide()}this.element.hide();this.createForm();this.element.parentNode.insertBefore(this._form,this.element);if(!this.options.loadTextURL){this.postProcessEditField()}if(A){Event.stop(A)}},enterHover:function(A){if(this.options.hoverClassName){this.element.addClassName(this.options.hoverClassName)}if(this._saving){return }this.triggerCallback("onEnterHover")},getText:function(){return this.element.innerHTML},handleAJAXFailure:function(A){this.triggerCallback("onFailure",A);if(this._oldInnerHTML){this.element.innerHTML=this._oldInnerHTML;this._oldInnerHTML=null}},handleFormCancellation:function(A){this.wrapUp();if(A){Event.stop(A)}},handleFormSubmission:function(D){var B=this._form;var C=$F(this._controls.editor);this.prepareSubmission();var E=this.options.callback(B,C)||"";if(Object.isString(E)){E=E.toQueryParams()}E.editorId=this.element.id;if(this.options.htmlResponse){var A=Object.extend({evalScripts:true},this.options.ajaxOptions);Object.extend(A,{parameters:E,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Updater({success:this.element},this.url,A)}else{var A=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(A,{parameters:E,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Request(this.url,A)}if(D){Event.stop(D)}},leaveEditMode:function(){this.element.removeClassName(this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this._originalBackground;this.element.show();if(this.options.externalControl){this.options.externalControl.show()}this._saving=false;this._editing=false;this._oldInnerHTML=null;this.triggerCallback("onLeaveEditMode")},leaveHover:function(A){if(this.options.hoverClassName){this.element.removeClassName(this.options.hoverClassName)}if(this._saving){return }this.triggerCallback("onLeaveHover")},loadExternalText:function(){this._form.addClassName(this.options.loadingClassName);this._controls.editor.disabled=true;var A=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(A,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(C){this._form.removeClassName(this.options.loadingClassName);var B=C.responseText;if(this.options.stripLoadedTextTags){B=B.stripTags()}this._controls.editor.value=B;this._controls.editor.disabled=false;this.postProcessEditField()}.bind(this),onFailure:this._boundFailureHandler});new Ajax.Request(this.options.loadTextURL,A)},postProcessEditField:function(){var A=this.options.fieldPostCreation;if(A){$(this._controls.editor)["focus"==A?"focus":"activate"]()}},prepareOptions:function(){this.options=Object.clone(Ajax.InPlaceEditor.DefaultOptions);Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks);[this._extraDefaultOptions].flatten().compact().each(function(A){Object.extend(this.options,A)}.bind(this))},prepareSubmission:function(){this._saving=true;this.removeForm();this.leaveHover();this.showSaving()},registerListeners:function(){this._listeners={};var A;$H(Ajax.InPlaceEditor.Listeners).each(function(B){A=this[B.value].bind(this);this._listeners[B.key]=A;if(!this.options.externalControlOnly){this.element.observe(B.key,A)}if(this.options.externalControl){this.options.externalControl.observe(B.key,A)}}.bind(this))},removeForm:function(){if(!this._form){return }this._form.remove();this._form=null;this._controls={}},showSaving:function(){this._oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;this.element.addClassName(this.options.savingClassName);this.element.style.backgroundColor=this._originalBackground;this.element.show()},triggerCallback:function(B,A){if("function"==typeof this.options[B]){this.options[B](this,A)}},unregisterListeners:function(){$H(this._listeners).each(function(A){if(!this.options.externalControlOnly){this.element.stopObserving(A.key,A.value)}if(this.options.externalControl){this.options.externalControl.stopObserving(A.key,A.value)}}.bind(this))},wrapUp:function(A){this.leaveEditMode();this._boundComplete(A,this.element)}});Object.extend(Ajax.InPlaceEditor.prototype,{dispose:Ajax.InPlaceEditor.prototype.destroy});Ajax.InPlaceCollectionEditor=Class.create(Ajax.InPlaceEditor,{initialize:function($super,C,B,A){this._extraDefaultOptions=Ajax.InPlaceCollectionEditor.DefaultOptions;$super(C,B,A)},createEditField:function(){var A=document.createElement("select");A.name=this.options.paramName;A.size=1;this._controls.editor=A;this._collection=this.options.collection||[];if(this.options.loadCollectionURL){this.loadCollection()}else{this.checkForExternalText()}this._form.appendChild(this._controls.editor)},loadCollection:function(){this._form.addClassName(this.options.loadingClassName);this.showLoadingText(this.options.loadingCollectionText);var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){var js=transport.responseText.strip();if(!/^\[.*\]$/.test(js)){throw"Server returned an invalid collection representation."}this._collection=eval(js);this.checkForExternalText()}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadCollectionURL,options)},showLoadingText:function(B){this._controls.editor.disabled=true;var A=this._controls.editor.firstChild;if(!A){A=document.createElement("option");A.value="";this._controls.editor.appendChild(A);A.selected=true}A.update((B||"").stripScripts().stripTags())},checkForExternalText:function(){this._text=this.getText();if(this.options.loadTextURL){this.loadExternalText()}else{this.buildOptionList()}},loadExternalText:function(){this.showLoadingText(this.options.loadingText);var A=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(A,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(B){this._text=B.responseText.strip();this.buildOptionList()}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadTextURL,A)},buildOptionList:function(){this._form.removeClassName(this.options.loadingClassName);this._collection=this._collection.map(function(D){return 2===D.length?D:[D,D].flatten()});var B=("value" in this.options)?this.options.value:this._text;var A=this._collection.any(function(D){return D[0]==B}.bind(this));this._controls.editor.update("");var C;this._collection.each(function(E,D){C=document.createElement("option");C.value=E[0];C.selected=A?E[0]==B:0==D;C.appendChild(document.createTextNode(E[1]));this._controls.editor.appendChild(C)}.bind(this));this._controls.editor.disabled=false;Field.scrollFreeActivate(this._controls.editor)}});Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions=function(A){if(!A){return }function B(C,D){if(C in A||D===undefined){return }A[C]=D}B("cancelControl",(A.cancelLink?"link":(A.cancelButton?"button":A.cancelLink==A.cancelButton==false?false:undefined)));B("okControl",(A.okLink?"link":(A.okButton?"button":A.okLink==A.okButton==false?false:undefined)));B("highlightColor",A.highlightcolor);B("highlightEndColor",A.highlightendcolor)};Object.extend(Ajax.InPlaceEditor,{DefaultOptions:{ajaxOptions:{},autoRows:3,cancelControl:"link",cancelText:"cancel",clickToEditText:"Click to edit",externalControl:null,externalControlOnly:false,fieldPostCreation:"activate",formClassName:"inplaceeditor-form",formId:null,highlightColor:"#ffff99",highlightEndColor:"#ffffff",hoverClassName:"",htmlResponse:true,loadingClassName:"inplaceeditor-loading",loadingText:"Loading...",okControl:"button",okText:"ok",paramName:"value",rows:1,savingClassName:"inplaceeditor-saving",savingText:"Saving...",size:0,stripLoadedTextTags:false,submitOnBlur:false,textAfterControls:"",textBeforeControls:"",textBetweenControls:""},DefaultCallbacks:{callback:function(A){return Form.serialize(A)},onComplete:function(B,A){new Effect.Highlight(A,{startcolor:this.options.highlightColor,keepBackgroundImage:true})},onEnterEditMode:null,onEnterHover:function(A){A.element.style.backgroundColor=A.options.highlightColor;if(A._effect){A._effect.cancel()}},onFailure:function(B,A){alert("Error communication with the server: "+B.responseText.stripTags())},onFormCustomization:null,onLeaveEditMode:null,onLeaveHover:function(A){A._effect=new Effect.Highlight(A.element,{startcolor:A.options.highlightColor,endcolor:A.options.highlightEndColor,restorecolor:A._originalBackground,keepBackgroundImage:true})}},Listeners:{click:"enterEditMode",keydown:"checkForEscapeOrReturn",mouseover:"enterHover",mouseout:"leaveHover"}});Ajax.InPlaceCollectionEditor.DefaultOptions={loadingCollectionText:"Loading options..."};Form.Element.DelayedObserver=Class.create({initialize:function(B,A,C){this.delay=A||0.5;this.element=$(B);this.callback=C;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,"keyup",this.delayedListener.bindAsEventListener(this))},delayedListener:function(A){if(this.lastValue==$F(this.element)){return }if(this.timer){clearTimeout(this.timer)}this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);this.lastValue=$F(this.element)},onTimerEvent:function(){this.timer=null;this.callback(this.element,$F(this.element))}});if(!Control){var Control={}}Control.Slider=Class.create({initialize:function(D,A,B){var C=this;if(Object.isArray(D)){this.handles=D.collect(function(E){return $(E)})}else{this.handles=[$(D)]}this.track=$(A);this.options=B||{};this.axis=this.options.axis||"horizontal";this.increment=this.options.increment||1;this.step=parseInt(this.options.step||"1");this.range=this.options.range||$R(0,1);this.value=0;this.values=this.handles.map(function(){return 0});this.spans=this.options.spans?this.options.spans.map(function(E){return $(E)}):false;this.options.startSpan=$(this.options.startSpan||null);this.options.endSpan=$(this.options.endSpan||null);this.restricted=this.options.restricted||false;this.maximum=this.options.maximum||this.range.end;this.minimum=this.options.minimum||this.range.start;this.alignX=parseInt(this.options.alignX||"0");this.alignY=parseInt(this.options.alignY||"0");this.trackLength=this.maximumOffset()-this.minimumOffset();this.handleLength=this.isVertical()?(this.handles[0].offsetHeight!=0?this.handles[0].offsetHeight:this.handles[0].style.height.replace(/px$/,"")):(this.handles[0].offsetWidth!=0?this.handles[0].offsetWidth:this.handles[0].style.width.replace(/px$/,""));this.active=false;this.dragging=false;this.disabled=false;if(this.options.disabled){this.setDisabled()}this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):false;if(this.allowedValues){this.minimum=this.allowedValues.min();this.maximum=this.allowedValues.max()}this.eventMouseDown=this.startDrag.bindAsEventListener(this);this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.update.bindAsEventListener(this);this.handles.each(function(F,E){E=C.handles.length-1-E;C.setValue(parseFloat((Object.isArray(C.options.sliderValue)?C.options.sliderValue[E]:C.options.sliderValue)||C.range.start),E);F.makePositioned().observe("mousedown",C.eventMouseDown)});this.track.observe("mousedown",this.eventMouseDown);document.observe("mouseup",this.eventMouseUp);document.observe("mousemove",this.eventMouseMove);this.initialized=true},dispose:function(){var A=this;Event.stopObserving(this.track,"mousedown",this.eventMouseDown);Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);this.handles.each(function(B){Event.stopObserving(B,"mousedown",A.eventMouseDown)})},setDisabled:function(){this.disabled=true},setEnabled:function(){this.disabled=false},getNearestValue:function(A){if(this.allowedValues){if(A>=this.allowedValues.max()){return(this.allowedValues.max())}if(A<=this.allowedValues.min()){return(this.allowedValues.min())}var C=Math.abs(this.allowedValues[0]-A);var B=this.allowedValues[0];this.allowedValues.each(function(D){var E=Math.abs(D-A);if(E<=C){B=D;C=E}});return B}if(A>this.range.end){return this.range.end}if(A<this.range.start){return this.range.start}return A},setValue:function(B,A){if(!this.active){this.activeHandleIdx=A||0;this.activeHandle=this.handles[this.activeHandleIdx];this.updateStyles()}A=A||this.activeHandleIdx||0;if(this.initialized&&this.restricted){if((A>0)&&(B<this.values[A-1])){B=this.values[A-1]}if((A<(this.handles.length-1))&&(B>this.values[A+1])){B=this.values[A+1]}}B=this.getNearestValue(B);this.values[A]=B;this.value=this.values[0];this.handles[A].style[this.isVertical()?"top":"left"]=this.translateToPx(B);this.drawSpans();if(!this.dragging||!this.event){this.updateFinished()}},setValueBy:function(B,A){this.setValue(this.values[A||this.activeHandleIdx||0]+B,A||this.activeHandleIdx||0)},translateToPx:function(A){return Math.round(((this.trackLength-this.handleLength)/(this.range.end-this.range.start))*(A-this.range.start))+"px"},translateToValue:function(A){return((A/(this.trackLength-this.handleLength)*(this.range.end-this.range.start))+this.range.start)},getRange:function(B){var A=this.values.sortBy(Prototype.K);B=B||0;return $R(A[B],A[B+1])},minimumOffset:function(){return(this.isVertical()?this.alignY:this.alignX)},maximumOffset:function(){return(this.isVertical()?(this.track.offsetHeight!=0?this.track.offsetHeight:this.track.style.height.replace(/px$/,""))-this.alignY:(this.track.offsetWidth!=0?this.track.offsetWidth:this.track.style.width.replace(/px$/,""))-this.alignX)},isVertical:function(){return(this.axis=="vertical")},drawSpans:function(){var A=this;if(this.spans){$R(0,this.spans.length-1).each(function(B){A.setSpan(A.spans[B],A.getRange(B))})}if(this.options.startSpan){this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value))}if(this.options.endSpan){this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum))}},setSpan:function(B,A){if(this.isVertical()){B.style.top=this.translateToPx(A.start);B.style.height=this.translateToPx(A.end-A.start+this.range.start)}else{B.style.left=this.translateToPx(A.start);B.style.width=this.translateToPx(A.end-A.start+this.range.start)}},updateStyles:function(){this.handles.each(function(A){Element.removeClassName(A,"selected")});Element.addClassName(this.activeHandle,"selected")},startDrag:function(C){if(Event.isLeftClick(C)){if(!this.disabled){this.active=true;var D=Event.element(C);var E=[Event.pointerX(C),Event.pointerY(C)];var A=D;if(A==this.track){var B=Position.cumulativeOffset(this.track);this.event=C;this.setValue(this.translateToValue((this.isVertical()?E[1]-B[1]:E[0]-B[0])-(this.handleLength/2)));var B=Position.cumulativeOffset(this.activeHandle);this.offsetX=(E[0]-B[0]);this.offsetY=(E[1]-B[1])}else{while((this.handles.indexOf(D)==-1)&&D.parentNode){D=D.parentNode}if(this.handles.indexOf(D)!=-1){this.activeHandle=D;this.activeHandleIdx=this.handles.indexOf(this.activeHandle);this.updateStyles();var B=Position.cumulativeOffset(this.activeHandle);this.offsetX=(E[0]-B[0]);this.offsetY=(E[1]-B[1])}}}Event.stop(C)}},update:function(A){if(this.active){if(!this.dragging){this.dragging=true}this.draw(A);if(Prototype.Browser.WebKit){window.scrollBy(0,0)}Event.stop(A)}},draw:function(B){var C=[Event.pointerX(B),Event.pointerY(B)];var A=Position.cumulativeOffset(this.track);C[0]-=this.offsetX+A[0];C[1]-=this.offsetY+A[1];this.event=B;this.setValue(this.translateToValue(this.isVertical()?C[1]:C[0]));if(this.initialized&&this.options.onSlide){this.options.onSlide(this.values.length>1?this.values:this.value,this)}},endDrag:function(A){if(this.active&&this.dragging){this.finishDrag(A,true);Event.stop(A)}this.active=false;this.dragging=false},finishDrag:function(A,B){this.active=false;this.dragging=false;this.updateFinished()},updateFinished:function(){if(this.initialized&&this.options.onChange){this.options.onChange(this.values.length>1?this.values:this.value,this)}this.event=null}});PBAdmin={};PBAdmin.CustomizeTabs={classname:"PBAdmin.CustomizeTabs",initialize:function(){if(!$("customizetabs")){return }$$("#customizetabs input").each(function(A){A.observe("click",PBAdmin.CustomizeTabs.updatePreview);A.observe("keyup",PBAdmin.CustomizeTabs.updatePreview);A.observe("keypress",PBAdmin.CustomizeTabs.updatePreview)});$$("#customizetabs input.customizetabs_enabled").each(function(A){A.observe("click",function(C){var B=$("customizetabs-custom").checked;$$("#customizetabs #tabs input").each(function(D){D.disabled=(D.id=="settings_visible")||!B})})});PBAdmin.CustomizeTabs.updatePreview()},updatePreview:function(){$$("#customizetabs-preview li").each(function(B){var C=B.getAttribute("name");var D=$(C+"_visible").checked;var A=$(C+"_label").value.strip()?$(C+"_label").value:$(C+"_label").placeholder;B.down("a").update(A.escapeHTML());if(D){B.show();lastVisibleTab=C}else{B.hide()}})}};PBAdmin.WorkspaceIcons={classname:"PBAdmin.WorkspaceIcons",initialize:function(){if(!$("workspace-icon-picker")){return }$$("#workspace-icon-picker div").each(function(A){A.observe("click",function(D){var B=$("selected_icon").value;var C=B?"icon-"+B:"icon-none";if($(C)){$(C).removeClassName("selected")}$("selected_icon").value=D.element().getAttribute("ui:icon")||"";D.element().addClassName("selected")})})}};PBAdmin.Colors={classname:"PBAdmin.Colors",initialize:function(){if($("colortiles")){this.options=$$(".usetheme");this.colors=$$(".colorblock");this.setDefault();for(var B=0;B<this.colors.length;B++){if(this.colors[B].hasClassName("disabled")){new Tooltip(this.colors[B],{txt:"<strong>Premium Feature</strong> You must upgrade your workspace to set custom colors"})}else{var A=this.colors[B].down("input").value;this.colors[B].observe("click",this.setColor.bind(this,A))}}if(ColorMutables){this.setupCustom()}}},setColor:function(C){for(var B=0;B<this.options.length;B++){var A=(this.options[B].value==C);this.options[B].checked=A;if(A){this.options[B].up(".colorblock").addClassName("active")}else{this.options[B].up(".colorblock").removeClassName("active")}}$("customstyle").style.display=(C=="custom")?"block":"none"},setDefault:function(){for(var A=0;A<this.options.length;A++){if(this.options[A].getAttribute("checked")=="checked"||this.options[A].getAttribute("checked")===true){this.setColor(this.options[A].value)}}},setupCustom:function(){this.Mutables=ColorMutables;this.wells=new Array();for(itm in this.Mutables){var A=$("proxy_"+itm);if(A){var B=new Element("input");B.setAttribute("type","hidden");B.setAttribute("name","input_well_"+itm);B.setAttribute("id","input_well_"+itm);B.setAttribute("value",this.Mutables[itm].defaultVal);this.wells[itm]=B;$("colorForm").appendChild(B);A.observe("click",this.proxyClick.bindAsEventListener(this,A,itm))}}},proxyClick:function(C,B,D){Event.stop(C);new Effect.Shake(B,{distance:5});var A=new Control.ColorPicker("input_well_"+D,{IMAGE_BASE:"/layout/common/images/colorpicker/",getPopUpPosition:function(E){return new Array(Event.pointerX(E),Event.pointerY(E))},onUpdate:this.colorUpdate.bind(this,D)});A.open(C)},colorUpdate:function(F){var E=this.wells[F].value;var C=$("proxy_"+F);var D=this.Mutables[F]["styles"];for(var B=0;B<D.length;B++){var A=D[B].replace(/\-(.)/g,function(G,H){return H.toUpperCase()});C.style[A]="#"+E}}};PBAdmin.API={classname:"PBAdmin.API",initialize:function(){if($("api-writer-value")){var E=$$(".api-hidden");for(var D=0;D<E.length;D++){var F=E[D].id;var C=$(F);var B=$(F.replace("value","hidden"));var A=$(F.replace("value","control"));A.observe("click",PBAdmin.API.toggle.bind(this,C,B))}}},toggle:function(B,A){B.toggle();A.toggle()}};PBAdmin.Backup={classname:"PBAdmin.Backup",initialize:function(){if($("backupwithoptions")){$("backupwithoptions").observe("click",PBAdmin.Backup.dlopt.bind(this));new Ajax.Updater("statusregion","/backup.php?status=1")}},dlopt:function(){new Ajax.PeriodicalUpdater("statusregion","/backup.php?status=1",{asynchronous:true,method:"get",frequency:1,decay:1.1});window.location.href="/backup.php?revs="+(($("withrevs").checked)?"1":"0")+"&files="+(($("withfiles").checked?"1":"0"))}};PBwiki.DialogCommands.AbstractUserDialog=Class.create(PBwiki.DialogCommands.TemplateDialog,{classname:"PBwiki.DialogCommands.AbstractUserDialog",setupDialog:function($super){$super();$("learnMore").observe("click",function(){var A=$("wtd");var B=(A.style.display=="none");if(B){if(!this.wtdLoaded){new Ajax.Updater("wtd-inner","/layout/common/templates/dialog/permissions.html",{method:"get",onComplete:function(){new Effect.BlindDown(A,{afterFinish:function(){$("wtd").style.overflowY="auto"}})}});this.wtdLoaded=true}else{new Effect.BlindDown(A,{afterFinish:function(){$("wtd").style.overflowY="auto"}})}}else{new Effect.BlindUp(A)}$("learnMore").innerHTML=(B)?"Hide permission levels":"Learn more about permission levels"})},showErr:function(A){$("emailError").innerHTML=A;$("emailError").show()},add:function(B){if(B){Event.stop(B)}if(!this.validateForm()){return }var A=this.formToOptions();if(A.length>0){$("pbAddUser").disabled=true;$("pbAddUser").value="Saving...";new PBwiki.MultiAPIRequest(A,{incUsess:true,onAllComplete:this.allComplete.bind(this)})}},addSuccess:function(B){if(B.info=="added"||B.info=="created"||B.info=="accepted"){PBAdmin.Users.users.push(new PBAdmin.User(null,B.email,B.perm,B.uid))}else{if(B.info=="changed"){for(var A=0;A<PBAdmin.Users.users.length;A++){if(PBAdmin.Users.users[A].getEmail()==B.email){PBAdmin.Users.users[A].setPerm(B.perm);break}}}else{}}},allComplete:function(A){if(A.successful==A.total){document.fire("dialog:close")}else{$("pbAddUser").disabled=false;$("pbAddUser").value="Add users";this.showErr(A.lastError)}}});PBwiki.DialogCommands.AddGuests=Class.create(PBwiki.DialogCommands.AbstractUserDialog,{classname:"PBwiki.DialogCommands.AddGuests",templateName:"addguests",title:"Add Guests",initialize:function($super,A){Object.extend(A,{dimensions:{width:380}});$super(A)},setupDialog:function($super){$super();$("pbAddUser").disabled=false;$("pbAddUser").value="Add users";new InputText($("userEmailArea"));$("pbAddUser").observe("click",this.add.bind(this))},validateForm:function(){var A=$("userEmailArea").value;if(A.strip().empty()||A.strip()==$("userEmailArea").getAttribute("ui:placeholder")){this.showErr("Please enter at least one email address.");return false}else{return true}},formToOptions:function(){var C=$("permissionLevel");var B=C.options[C.selectedIndex].value;var A=$("userEmailArea").value;var E=Util.findEmails(A,this.showErr.bind(this));var D=new Array();E.each(function(F){D.push(["AddUser",{email:F,perm:B,invite:true},{incUsess:true,onSuccess:this.addSuccess.bind(this)}])},this);return D}});PBwiki.DialogCommands.AddNetworkUsers=Class.create(PBwiki.DialogCommands.AbstractUserDialog,{classname:"PBwiki.DialogCommands.AddNetworkUsers",templateName:"addnetworkusers",title:"Add Network Users",setupDialog:function($super){$super();var B=$("networkusers");if(B){new InputText(B);this.userAutoComplete=new PBwiki.Components.UserAutoComplete({userListContainer:$("networkusers_container"),userList:$("networkusers_list"),elm:B,apiMethod:"GetNetworkUsers",requestOptions:{verbose:true,exclude_workspace_users:true,exclude_guests:true}});this.userList=this.userAutoComplete.selectedUserList}var A=$("pbAddUser");if(A){A.observe("click",this.add.bind(this))}},validateForm:function(){if(this.userList.empty()){this.showErr("Please select at least one user to add.");return false}else{return true}},formToOptions:function(){var B=$("permissionLevel");var A=B.options[B.selectedIndex].value;var C=new Array();this.userList.each(function(D){C.push(["AddUser",{uid:D.uid,perm:A,invite:true},{incUsess:true,onSuccess:this.addSuccess.bind(this)}])},this);return C}});PBAdmin.Users={classname:"PBAdmin.Users",initialize:function(){if($("pbAddUser")||$("add_guests")||$("add_network_users")){PBAdmin.Users.init.bind(PBAdmin.Users)()}},init:function(){this.users=new Array();this.ulist=$$("tr.pbuser");for(var A=0;A<this.ulist.length;A++){this.users.push(new PBAdmin.User(this.ulist[A]))}$("userColumn").observe("click",function(){Util.tracking("users-sortby-user")});$("permissionColumn").observe("click",function(){Util.tracking("users-sortby-permision")});$("lastColumn").observe("click",function(){Util.tracking("users-sortby-lastvisit")});new Tooltip($("userColumn"),{txt:"<strong>Tip:</strong> Click here to sort the list of the users by name"});new Tooltip($("permissionColumn"),{txt:"<strong>Tip:</strong> Click here to sort the list of the users by permission"});if($("lastColumn")){new Tooltip($("lastColumn"),{txt:"<strong>Tip:</strong> Click here to sort the list of the users by last visit"})}if($("pbAddUser")){this.initInlineForm()}if($("add_guests")){$("add_guests").observe("click",this.showGuestDialog.bind(this))}if($("add_network_users")){$("add_network_users").observe("click",this.showNetworkUserDialog.bind(this))}},showGuestDialog:function(A){new PBwiki.DialogCommands.AddGuests({dimensions:{width:510,height:"auto"}});A.stop()},showNetworkUserDialog:function(A){new PBwiki.DialogCommands.AddNetworkUsers({dimensions:{width:510,height:"auto"}});A.stop()},initInlineForm:function(){$("pbAddUser").observe("click",this.add.bind(this));$(document.getElementsByTagName("form")[0]).observe("submit",this.add.bindAsEventListener(this));var A=$("pbgroupadd");A.style.cursor="pointer";A.observe("click",this.toggleArea.bind(this));$("userEmailArea").value="";this.emailQueue=new Array();$("learnMore").observe("click",function(){var B=$("wtd");var C=(B.style.display=="none");if(C){if(!this.wtdLoaded){new Ajax.Updater("wtd","/layout/common/templates/dialog/permissions.html",{method:"get",onComplete:function(){new Effect.BlindDown(B)}});this.wtdLoaded=true}else{new Effect.BlindDown(B)}}else{new Effect.BlindUp(B)}$("learnMore").innerHTML=(C)?"Hide permission levels":"Learn more about permission levels"});$("userEmail").focus()},setupList:function(A){this.users.push(new PBAdmin.User(this.ulist[A]));if(A+1<this.ulist.length){setTimeout(this.setupList.bind(this,A+1),50)}},add:function(F){if(F){Event.stop(F)}if(($("userEmailArea").style.display!="none")){var D=$("userEmailArea").value;var G=Util.findEmails(D,this.showErr.bind(this))}else{var A=$("userEmail").value;var G=Util.findEmails(A,this.showErr.bind(this))}if(G.length>0){var C=$("permissionLevel");var B=C.options[C.selectedIndex].value;var E=new Array();G.each(function(H){E.push(["AddUser",{email:H,perm:B,invite:true},{onSuccess:this.addSuccess.bind(this),incUsess:true,onFailure:this.showErr.bind(this)}])},this);new PBwiki.MultiAPIRequest(E,{incUsess:true})}},toggleArea:function(){var A=($("userEmailArea").style.display!="none");$("multipleToggle").innerHTML=(A)?"Add Multiple Emails":"Add Single Email";if(!A&&$("userEmail").value!=""){$("userEmailArea").value=$("userEmail").value}else{if(!A){if(!this.it){this.it=new InputText($("userEmailArea"))}}}$("userEmailArea").style.display=(A)?"none":"block";$("userEmail").style.display=(!A)?"none":"block"},showErr:function(A){var B=new Element("p");B.className="validation-error";B.innerHTML=A;B.style.clear="both";$("userMessages").appendChild(B);setTimeout(function(){new Effect.Fade(B)}.bind(this),5000)},showMsg:function(A){var B=new Element("div");B.className="iconbutton accepticon";B.innerHTML=A;B.style.clear="both";$("userMessages").appendChild(B);setTimeout(function(){new Effect.Fade(B)}.bind(this),3000)},addSuccess:function(B){if(B.info=="added"||B.info=="created"||B.info=="accepted"){this.users.push(new PBAdmin.User(null,B.email,B.perm,B.uid));this.showMsg("Added "+B.email)}else{if(B.info=="changed"){this.showMsg(B.email+" already exists, permission changed to "+B.perm);for(var A=0;A<this.users.length;A++){if(this.users[A].getEmail()==B.email){this.users[A].setPerm(B.perm);break}}}else{this.showErr(B.email+" already exists on this workspace")}}$("userEmail").value="";$("userEmail").focus();$("userEmailArea").value=""},removeUser:function(A){this.users=$A(this.users).without(A)}};PBAdmin.RequestAccess={classname:"PBAdmin.RequestAccess",initialize:function(){if($("requestaccess")){PBAdmin.RequestAccess.start.bind(PBAdmin.RequestAccess)()}},start:function(){this.requests=new Array();var A=$$(".userRequest");for(var B=0;B<A.length;B++){this.requests.push(new PBAdmin.Request(A[B]))}},updateDisplay:function(){var B=$("requestTitle");var A=$$(".userRequest").length;B.innerHTML=A+" user"+((A>1)?"s":"")+" has requested access";if(A==0){$("requestaccess").style.display="none"}},removeRequest:function(A){this.requests=$A(A).without(A)}};PBAdmin.Request=Class.create({classname:"PBAdmin.Request",initialize:function(A){this.elm=A;this.perm=A.down("select.pbperm");this.email=A.down("a.pbemail");this.approve=A.down("a.pbapprove");this.deny=A.down("a.pbdeny");this.approve.observe("click",this.addUser.bind(this));this.deny.observe("click",this.denyUser.bind(this))},addUser:function(){var A=this.perm.options[this.perm.selectedIndex].value;new PBwiki.APIRequest("AddUser",{uid:this.elm.getAttribute("uid"),perm:A,demote:false},{incUsess:true,onFailure:function(){window.location.reload()},onSuccess:function(){window.location.reload()}});this.removeRequest()},denyUser:function(){new PBwiki.APIRequest("AddUser",{uid:this.elm.getAttribute("uid"),perm:"delete",demote:false},{incUsess:true,onFailure:function(){window.location.reload()}});this.removeRequest()},removeRequest:function(){this.elm.parentNode.removeChild(this.elm);PBAdmin.RequestAccess.removeRequest(this);PBAdmin.RequestAccess.updateDisplay()}});PBAdmin.User=Class.create({classname:"PBAdmin.User",initialize:function(D,A,C,B){if(D){this.setupRow(D)}else{if(B){new Ajax.Request("/settings/users/?userrow="+B,{onSuccess:this.gotUserRow.bind(this,B)})}}},setupRow:function(C){this.perm=C.down("select.pbperm");this.pbremove=C.down("a.pbremove");this.email=C.down("a.pbemail");this.pbname=C.down("a.usericon");this.pbinfo=C.down("td.pbinfo");this.pblast=C.down("p.pblast");this.tb=C.down("div.pbtoolbar");this.userstatus=C.down("p.pbuserstatus");this.uid=C.getAttribute("uid");this.elm=C;var A=$(this.uid+"_tip").innerHTML;if(this.pbname){new Tooltip(this.pbname,{txt:A,mouseFollow:false})}for(var B=0;B<this.perm.options.length;B++){if(this.perm.options[B].getAttribute("selected")=="selected"){this.perm.options[B].selected=true;this.selectedPerm=B}}this.perm.observe("change",this.permissionChange.bind(this));this.pbremove.observe("click",this.removeUser.bind(this))},gotUserRow:function(B,C){var A=$("users_tmp");A.innerHTML="<table>"+C.responseText+"</table>";this.elm=A.down("tr");$("userListBody").insertBefore(this.elm,$("userListBody").firstChild);this.elm.style.display="none";new Effect.Appear(this.elm);this.setupRow(this.elm)},getEmail:function(){return this.email.innerHTML},setPerm:function(B){for(var A=0;A<this.perm.options.length;A++){if(this.perm.options[A].value==B){this.perm.options[A].selected=true;this.perm.selectedIndex=A}}},removeUser:function(B){if(!B){var C=confirm("Do you really want to drop this user from the workspace? There is no way to undo this operation")}var A=this.elm.getAttribute("uid");if(C||B){new PBwiki.APIRequest("AddUser",{uid:A,perm:"delete"},{onSuccess:this.removeSuccess.bind(this),onFailure:this.showErr.bind(this),incUsess:true})}},removeSuccess:function(A){if(A.info=="deleted"){new Effect.Fade(this.elm);PBAdmin.Users.removeUser(this)}else{this.showErr("Delete failed")}},permissionChange:function(A){A=this.perm.options[this.perm.selectedIndex].value;var B=this.elm.getAttribute("uid");this.setPermission(B,A)},setPermission:function(B,A){new PBwiki.APIRequest("AddUser",{uid:this.uid,perm:A},{onSuccess:this.permissionSuccess.bind(this,A),onFailure:this.showErr.bind(this),incUsess:true})},showErr:function(A){this.showMsg(A);if(this.selectedPerm){this.perm.selectedIndex=this.selectedPerm}},showMsg:function(A){this.userstatus.style.display="block";this.userstatus.innerHTML=A;setTimeout(function(){new Effect.Fade(this.userstatus)}.bind(this),3500)},permissionSuccess:function(A){this.tb.style.display=(A=="deny")?"block":"none";this.pblast.style.display=(A!="deny")?"block":"none";this.selectedPerm=this.perm.selectedIndex;new Effect.Highlight(this.elm,{startcolor:"#f6f6f6"});var B=this.perm.options[this.perm.selectedIndex].text;var E=this.pbname.innerHTML;var D;if(A=="deny"){D=E+" no longer has access"}else{if(A=="delete"){D=E+" has been removed"}else{var C=("AEIOU".indexOf(B.charAt(0).capitalize())===-1)?"a":"an";D=E+" is now "+C+" "+B}}this.showMsg(D)}});PBAdmin.License=function(){if(!$("license-info")||!$("license-upgrade-cancel")){return }$("license-upgrade-cancel").observe("click",function(A){A.stop();$("license-upgrade-expand").show();$("license-details").hide()});$("license-upgrade-expand").observe("click",function(A){$("license-upgrade-expand").hide();$("license-details").show();$("license-upgrade-key").focus()})};PBAdmin.BulkAccounts=Class.create({classname:"PBAdmin.BulkAccounts",initialize:function(){if(!$$(".account_details_editable")){return false}var A=$$(".classroom_name");for(var B=0;B<A.length;B++){A[B].observe("change",this.nameChanged.bind(this))}},makeUsername:function(A){return A.replace(/[^a-zA-Z0-9]/g,"").toLowerCase().substring(0,25)},nameChanged:function(C){var A=C.target.id.substring(5);var B=$("username_"+A);if(B.value!=B.getAttribute("data:default")&&B.value!=this.makeUsername(C.target.getAttribute("data:previous"))){return }B.value=this.makeUsername(C.target.value);C.target.setAttribute("data:previous",C.target.value)}});PBAdmin.DisableSaveButtonOnClick=function(){$$(".primarybutton").each(function(A){A.observe("click",function(){var B=new Element("input",{type:"button",value:"Saving...",readonly:true,disabled:true});if(A.getAttribute("gerund")){B.setAttribute("value",A.getAttribute("gerund"))}A.hide();A.up().insertBefore(B,A)})})};PBAdmin.Customization=Class.create({classname:"PBAdmin.Customization",loginPageMessageEditor:null,initialize:function(){if(!$("customization")||!$("comments_disabled")||!$("comments_newest_first")||!$("comments_oldest_first")||!$("comments_nested_button")){return }$("comments_disabled").observe("click",function(F){var E=$$('input[name="comments_newest_first"]');for(var D=0;D<E.length;D++){E[D].disabled=!(F.target.checked)}$("hidden_comments_nested").disabled=!(F.target.checked)});var C=function(D){var E=($("comments_nested_button").checked)?"1":"0";$("hidden_comments_nested").value=E;return true};var B=$$('input[name="comments_newest_first"]');for(var A=0;A<B.length;A++){B[A].observe("click",C)}if($("message_on_login_enabled")){$("message_on_login_enabled").observe("click",this.onLoginPageMessageToggled.bind(this));this.initializeLoginPageMessageEditor()}},onLoginPageMessageToggled:function(){if($("message_on_login_enabled").checked){$("login-customization").down(".mceEditor").style.display="block";$("login-page-message-container").addClassName("hasEditor")}else{$("login-customization").down(".mceEditor").style.display="none";$("login-page-message-container").removeClassName("hasEditor")}},initializeLoginPageMessageEditor:function(){PBwiki.ResourceLoader.loadManifest("editor.js",function(){this.loginPageMessageEditor=new PBwiki.Components.mceSimpleWorkspaceEditor($("message_on_login_html"),{height:200,onInit:function(){this.loginPageMessageEditor.setContent($("message_on_login_html").innerHTML.unescapeHTML());this.onLoginPageMessageToggled()}.bind(this)});top.PBwiki.currentEditor=this.loginPageMessageEditor}.bind(this))},oldinitializeLoginPageMessageEditor:function(){this.loginPageMessageEditor=new PBwiki.Components.InlineEditor({element:"message_on_login_html",height:200,onInit:function(){this.loginPageMessageEditor.editor.setContent($("message_on_login_html").innerHTML.unescapeHTML());this.onLoginPageMessageToggled()}.bind(this)});this.loginPageMessageEditor.enable()}});PBAdmin.Security=function(){if(!$("securitysettings_networkrow")){return }var A=function(B){if($("wiki_viewers_anyone").checked){$("network-role-container").show()}else{$("network-role-container").hide()}};$("wiki_viewers_anyone").observe("click",A);$("wiki_viewers_invitees").observe("click",A)};PBAdmin.Archive=function(){if(!$("archive_change_permission")||!$("archive_make_private")||!$("new-permission-container")){return }var B=function(D){var C=$("archive_change_permission").checked;if(C){$("new-permission-container").style.display="block";$("new-permission-container").show();$("archive_make_private").checked=false;$("archive_make_private").disabled=true}else{$("new-permission-container").hide();$("archive_make_private").disabled=false}};var A=function(C){var D=$("archive_make_private").checked;if(D){$("archive_change_permission").checked=false;$("archive_change_permission").disabled=true}else{$("archive_change_permission").disabled=false}};$("archive_change_permission").observe("click",B);$("archive_make_private").observe("click",A)};PBAdmin.Export=function(){var A=$$("#admin-settings table.export").first();if(!A||$$("img.export-in-progress").length==0){return }new PBwiki.APIRequest("GetExportStatus",{},{method:"post",onSuccess:function(F){var G=A.select("tbody tr");for(var E=0;E<F.exports.length;E++){var H=G[E];if(H.down("td.status img")){var B=F.exports[E];if(B.complete){H.down("td.status").update("Complete");var D=new Element("ul");B.segments.each(function(M){var I=new Element("li");var K="/api_v2/op/GetExport/name/"+M.name;var J=Util.URLRelativeToContext(K,{wiki:PBinfo.CurrentWiki.name});var L=new Element("a",{href:J}).update(M.name.escapeHTML());I.appendChild(L);I.appendChild(document.createTextNode(" ("+Util.size_readable(M.bytes)+")"));I.appendChild(new Element("br"));D.appendChild(I)});var C=new Element("input",{type:"submit",name:"go",value:"Delete this export"});C.observe("click",function(){$("action").value="delete";$("type").value=B.desc;this.form.submit()}.bind(C));H.down("td.detail").update("").appendChild(D);H.down("td.detail").appendChild(C)}}}window.setTimeout(PBAdmin.Export,3000)}})};PBwiki.init(PBAdmin.Backup);PBwiki.init(PBAdmin.BulkAccounts);PBwiki.init("PBAdmin.Colors",PBAdmin.Colors.initialize.bind(PBAdmin.Colors));PBwiki.init(PBAdmin.API);PBwiki.init(PBAdmin.Users);PBwiki.init(PBAdmin.RequestAccess);PBwiki.init("PBAdmin.DisableSaveButtonOnClick",PBAdmin.DisableSaveButtonOnClick);PBwiki.init("PBAdmin.License",PBAdmin.License);PBwiki.init(PBAdmin.Customization);PBwiki.init("PBAdmin.Security",PBAdmin.Security);PBwiki.init("PBAdmin.Archive",PBAdmin.Archive);PBwiki.init(PBAdmin.WorkspaceIcons);PBwiki.init(PBAdmin.CustomizeTabs);PBwiki.init("PBAdmin.Export",PBAdmin.Export);var YAHOO=function(){return{util:{}}}();YAHOO.util.Color=new function(){this.hsv2rgb=function(C,K,H){var B,D,G;if(K==0){B=H*255;D=H*255;G=H*255}else{var F=C*6;if(F==6){F=0}var E=Math.floor(F);var A=H*(1-K);var J=H*(1-K*(F-E));var I=H*(1-K*(1-(F-E)));if(E==0){var_r=H;var_g=I;var_b=A}else{if(E==1){var_r=J;var_g=H;var_b=A}else{if(E==2){var_r=A;var_g=H;var_b=I}else{if(E==3){var_r=A;var_g=J;var_b=H}else{if(E==4){var_r=I;var_g=A;var_b=H}else{var_r=H;var_g=A;var_b=J}}}}}B=var_r*255;D=var_g*255;G=var_b*255}return[Math.round(B),Math.round(D),Math.round(G)]};this.rgb2hsv=function(A,F,G){var A=(A/255);var F=(F/255);var G=(G/255);var D=Math.min(A,F,G);var H=Math.max(A,F,G);deltaMax=H-D;var I=H;var K,E;var J,B,C;if(deltaMax==0){E=0;K=0}else{K=deltaMax/H;J=(((H-A)/6)+(deltaMax/2))/deltaMax;B=(((H-F)/6)+(deltaMax/2))/deltaMax;C=(((H-G)/6)+(deltaMax/2))/deltaMax;if(A==H){E=C-B}else{if(F==H){E=(1/3)+J-C}else{if(G==H){E=(2/3)+B-J}}}if(E<0){E+=1}if(E>1){E-=1}}return[E,K,I]};this.rgb2hex=function(C,B,A){return this.toHex(C)+this.toHex(B)+this.toHex(A)};this.hexchars="0123456789ABCDEF";this.toHex=function(A){A=A||0;A=parseInt(A,10);if(isNaN(A)){A=0}A=Math.round(Math.min(Math.max(0,A),255));return this.hexchars.charAt((A-A%16)/16)+this.hexchars.charAt(A%16)};this.toDec=function(A){return this.hexchars.indexOf(A.toUpperCase())};this.hex2rgb=function(B){var A=[];A[0]=(this.toDec(B.substr(0,1))*16)+this.toDec(B.substr(1,1));A[1]=(this.toDec(B.substr(2,1))*16)+this.toDec(B.substr(3,1));A[2]=(this.toDec(B.substr(4,1))*16)+this.toDec(B.substr(5,1));return A};this.isValidRGB=function(A){if((!A[0]&&A[0]!=0)||isNaN(A[0])||A[0]<0||A[0]>255){return false}if((!A[1]&&A[1]!=0)||isNaN(A[1])||A[1]<0||A[1]>255){return false}if((!A[2]&&A[2]!=0)||isNaN(A[2])||A[2]<0||A[2]>255){return false}return true}};if(!Control){var Control={}}Control.colorPickers=[];Control.ColorPicker=Class.create();Control.ColorPicker.activeColorPicker;Control.ColorPicker.CONTROL;Control.ColorPicker.prototype={initialize:function(F,C){var A=this;Control.colorPickers.push(A);this.field=$(F);this.fieldName=this.field.name||this.field.id;this.options=Object.extend({IMAGE_BASE:"/shared/images/colorpicker/"},C||{});this.swatch=$(this.options.swatch)||this.field;this.rgb={};this.hsv={};this.isOpen=false;if(!Control.ColorPicker.CONTROL){Control.ColorPicker.CONTROL={};if(!$("colorpicker")){var E=new Element("div");E.setAttribute("id","colorpicker");E.innerHTML='<div id="colorpicker-div">'+((/MSIE ((6)|(5\.5))/gi.test(navigator.userAgent)&&/windows/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent))?'<img id="colorpicker-bg" src="'+this.options.IMAGE_BASE+'blank.gif" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+this.options.IMAGE_BASE+"pickerbg.png', sizingMethod='scale')\" alt=\"\">":'<img id="colorpicker-bg" src="'+this.options.IMAGE_BASE+'pickerbg.png" alt="">')+'<div id="colorpicker-bg-overlay" style="z-index: 1002;"></div><div id="colorpicker-selector"><img src="'+this.options.IMAGE_BASE+'select.gif" width="11" height="11" alt="" /></div></div><div id="colorpicker-hue-container"><img src="'+this.options.IMAGE_BASE+'hue.png" id="colorpicker-hue-bg-img"><div id="colorpicker-hue-slider"><div id="colorpicker-hue-thumb"><img src="'+this.options.IMAGE_BASE+'hline.png"></div></div></div><div id="colorpicker-footer"><span id="colorpicker-value">#<input type="text" onclick="this.select()" id="colorpicker-value-input" name="colorpicker-value" value=""></input></span><button id="colorpicker-okbutton">OK</button>'+($("colorwells")?'<div class="colorwells">'+$("colorwells").innerHTML+"</div>":"")+"</div>";if($("colorwells")){E.style.height="215px"}document.body.appendChild(E)}Control.ColorPicker.CONTROL={popUp:$("colorpicker"),pickerArea:$("colorpicker-div"),selector:$("colorpicker-selector"),okButton:$("colorpicker-okbutton"),value:$("colorpicker-value"),input:$("colorpicker-value-input"),picker:new Draggable($("colorpicker-selector"),{snap:function(G,H){return[Math.min(Math.max(G,0),Control.ColorPicker.activeColorPicker.control.pickerArea.offsetWidth),Math.min(Math.max(H,0),Control.ColorPicker.activeColorPicker.control.pickerArea.offsetHeight)]},zindex:10009,change:function(G){var H=G.currentDelta();Control.ColorPicker.activeColorPicker.update(H[0],H[1])}}),hueSlider:new Control.Slider("colorpicker-hue-thumb","colorpicker-hue-slider",{axis:"vertical",onChange:function(G){Control.ColorPicker.activeColorPicker.updateHue(G)}})};Element.hide($("colorpicker"))}this.control=Control.ColorPicker.CONTROL;this.toggleOnClickListener=this.toggle.bindAsEventListener(this);this.updateOnChangeListener=this.updateFromFieldValue.bindAsEventListener(this);this.closeOnClickOkListener=this.close.bindAsEventListener(this);this.updateOnClickPickerListener=this.updateSelector.bindAsEventListener(this);Event.observe(this.swatch,"click",this.toggleOnClickListener);Event.observe(this.field,"change",this.updateOnChangeListener);Event.observe(this.control.input,"change",this.updateOnChangeListener);var B=$("colorpicker").select(".colorwell");for(var D=0;D<B.length;D++){B[D].stopObserving("click");B[D].observe("click",this.wellClick.bindAsEventListener(this))}},wellClick:function(B){var A=Event.element(B);this.field.value=A.innerHTML.replace("#","");this.updateFromFieldValue()},toggle:function(A){this[(this.isOpen)?"close":"open"](A);Event.stop(A)},open:function(A){Control.colorPickers.each(function(C){C.close()});Control.ColorPicker.activeColorPicker=this;this.isOpen=true;Element.show(this.control.popUp);if(this.options.getPopUpPosition){var B=this.options.getPopUpPosition.bind(this)(A)}else{var B=Position.cumulativeOffset(this.swatch||this.field);B[0]=(B[0]+(this.swatch||this.field).offsetWidth+10)}this.control.popUp.style.left=(B[0])+"px";this.control.popUp.style.top=(B[1])+"px";this.updateFromFieldValue();Event.observe(this.control.okButton,"click",this.closeOnClickOkListener);Event.observe(this.control.pickerArea,"mousedown",this.updateOnClickPickerListener);if(this.options.onOpen){this.options.onOpen.bind(this)(A)}},close:function(A){if(Control.ColorPicker.activeColorPicker==this){Control.ColorPicker.activeColorPicker=null}this.isOpen=false;Element.hide(this.control.popUp);Event.stopObserving(this.control.okButton,"click",this.closeOnClickOkListener);Event.stopObserving(this.control.pickerArea,"mousedown",this.updateOnClickPickerListener);if(this.options.onClose){this.options.onClose.bind(this)()}},updateHue:function(A){var C=(this.control.pickerArea.offsetHeight-A*100)/this.control.pickerArea.offsetHeight;if(C==1){C=0}var B=YAHOO.util.Color.hsv2rgb(C,1,1);if(!YAHOO.util.Color.isValidRGB(B)){return }this.control.pickerArea.style.backgroundColor="rgb("+B[0]+", "+B[1]+", "+B[2]+")";this.update()},updateFromFieldValue:function(C){if(!this.isOpen){return }var D=(C&&Event.findElement(C,"input"))||this.field;var B=YAHOO.util.Color.hex2rgb(D.value.replace("#",""));if(!YAHOO.util.Color.isValidRGB(B)){return }var A=YAHOO.util.Color.rgb2hsv(B[0],B[1],B[2]);this.control.selector.style.left=Math.round(A[1]*this.control.pickerArea.offsetWidth)+"px";this.control.selector.style.top=Math.round((1-A[2])*this.control.pickerArea.offsetWidth)+"px";this.control.hueSlider.setValue((1-A[0]))},updateSelector:function(B){var C=Event.pointerX(B);var A=Event.pointerY(B);var D=Position.cumulativeOffset($("colorpicker-bg"));this.control.selector.style.left=(C-D[0]-6)+"px";this.control.selector.style.top=(A-D[1]-6)+"px";this.update((C-D[0]),(A-D[1]));this.control.picker.initDrag(B)},updateSwatch:function(){var B=YAHOO.util.Color.hex2rgb(this.field.value);if(!YAHOO.util.Color.isValidRGB(B)){return }this.swatch.style.backgroundColor="rgb("+B[0]+", "+B[1]+", "+B[2]+")";var A=YAHOO.util.Color.rgb2hsv(B[0],B[1],B[2]);this.swatch.style.color=(A[2]>0.65)?"#000000":"#FFFFFF"},update:function(A,D){if(!A){A=this.control.picker.currentDelta()[0]}if(!D){D=this.control.picker.currentDelta()[1]}var C=(this.control.pickerArea.offsetHeight-this.control.hueSlider.value*100)/this.control.pickerArea.offsetHeight;if(C==1){C=0}this.hsv={hue:1-this.control.hueSlider.value,saturation:A/this.control.pickerArea.offsetWidth,brightness:(this.control.pickerArea.offsetHeight-D)/this.control.pickerArea.offsetHeight};var B=YAHOO.util.Color.hsv2rgb(this.hsv.hue,this.hsv.saturation,this.hsv.brightness);this.rgb={red:B[0],green:B[1],blue:B[2]};this.field.value=YAHOO.util.Color.rgb2hex(B[0],B[1],B[2]);this.control.input.value=this.field.value;if(this.options.onUpdate){this.options.onUpdate.bind(this)(this.field.value)}}};var Locale=$H({format:(typeof Date.CultureInfo=="undefined"?"%m/%d/%Y":Date.CultureInfo.formatPatterns.shortDate),monthNames:(typeof Date.CultureInfo=="undefined"?$w("January February March April May June July August September October November December"):Date.CultureInfo.monthNames),dayNames:(typeof Date.CultureInfo=="undefined"?$w("Sunday Monday Tuesday Wednesday Thursday Friday Saturday"):Date.CultureInfo.dayNames),weekOffset:(typeof Date.CultureInfo=="undefined"?0:Date.CultureInfo.firstDayOfWeek)});var MicroDateSelects=[];var MicroDateSelect=Class.create({Version:"0.1",initialize:function(B,A){MicroDateSelects.push(this);this.calendarWrapper=$();this.updateElement=$(B);this.calendar=$();this.options=$H().merge(A||{});this.calChange=false;this.weekdayNames=Locale.get("dayNames");this.monthNames=Locale.get("monthNames");this.format=this.options.get("format")||Locale.get("format");this.weekOffset=this.options.get("weekOffset")||Locale.get("weekOffset");this.date=new Date();this.setup()},setup:function(){this.addObserver()},addObserver:function(){document.observe("click",this.eventClick.bind(this));if(this.updateElement.getAttribute("ui:icon")){var A=$(this.updateElement.getAttribute("ui:icon"));A.observe("click",this.handleEventFocus.bind(this))}else{this.updateElement.observe("focus",this.handleEventFocus.bind(this));this.updateElement.observe("blur",this.handleEventBlur.bind(this))}document.observe("unload",this.unregister.bind(this))},createCalendar:function(){this.calendarWrapper=new Element("div",{"class":"calendars_container"});this.updateElement.insert({after:this.calendarWrapper});this.calendar=new Element("table",{border:0,cellspacing:0,cellpadding:3});var B=new Element("thead");B.insert({top:new Element("tr",{"class":"caption"})});B.down("tr.caption").insert(new Element("th").update(new Element("a",{"class":"previous month_switch",href:"javascript:void(0);"}).update("&laquo;")));B.down("tr.caption").insert(new Element("th",{colspan:5}).update(new Element("span",{"class":"month_name"})));B.down("tr.caption").insert(new Element("th").update(new Element("a",{"class":"next month_switch",href:"javascript:void(0);"}).update("&raquo;")));var C=new Element("tr");this.weekdayNames.length.times(function(E){var F=this.weekdayNames[(E+this.weekOffset)%7];var D=new Element("th",{scope:"col",abbr:F}).update(F.substring(0,1));C.insert(D)}.bind(this));B.insert({bottom:C});this.calendar.insert(B);var A=new Element("tbody");(6).times(function(D){var E=new Element("tr");this.weekdayNames.length.times(function(G){var F=new Element("td");E.insert(F)});A.insert(E)}.bind(this));this.calendar.insert(A);this.calendarWrapper.insert(this.calendar);this.reposition();this.populate();this.calendar.select("td").invoke("observe","mouseover",this.eventMouseOver.bind(this)).invoke("observe","mouseout",this.eventMouseOut.bind(this)).invoke("observe","mousedown",this.eventMouseDown.bind(this)).invoke("observe","mouseup",this.eventMouseUp.bind(this));this.calendar.select("a").invoke("observe","mousedown",this.eventMouseDown.bind(this)).invoke("observe","mouseup",this.eventMouseUp.bind(this));return this},reposition:function(){var B=this.updateElement.getWidth();var A=this.updateElement.getHeight();this.calendarWrapper.setStyle({position:"absolute",display:"inline",marginLeft:"-"+B+"px",marginTop:A+"px"})},populate:function(){var E=this.date.neutral();E.setDate(1);var A=this.calendar.select(".caption").first().down(".month_name");A.update(this.monthNames[E.getMonth()]+" "+E.getFullYear());var D=new Date(E);var F=(D.getDay()-this.weekOffset)%7;var C=F>0?"pre beyond active":false;D.setDate(D.getDate()-F);if(D.getDate()>1&&!C){D.setDate(D.getDate()-7);if(D.getDate()>1){C="pre beyond"}}var B=Date.parseToObject(this.updateElement.value)||new Date().neutral();this.calendar.select("td").each(function(G){G.date=new Date(D);G.update(G.date.getDate()).writeAttribute("class",C||"active");if(D.toString()===B.toString()){G.addClassName("today")}G.baseClass=G.readAttribute("class");D.setDate(D.getDate()+1);if(D.getDate()==1){C=C?false:"post beyond active"}}.bind(this));E.setMonth(E.getMonth()+1);return this},handleButtonClick:function(C,B){var A=this.months>1?this.months-1:1;if(B.hasClassName("next")){this.date.setMonth(this.date.getMonth()+A)}else{if(B.hasClassName("previous")){this.date.setMonth(this.date.getMonth()-A)}}this.populate()},handleDateClick:function(A){this.calChange=false;this.updateElement.value=typeof Date.CultureInfo=="undefined"?A.date.strftime(this.format):A.date.toString(this.format);this.populate();this.hide()},handleEventFocus:function(){if($(this.updateElement.getAttribute("ui:icon"))){this.updateElement.focus()}this.calChange=false;if(!this.calendar){this.createCalendar()}this.reposition();this.calendar.show()},hide:function(){if(!this.calendar){return }if(!this.calChange){Element.hide.delay(0.1,this.calendar)}},handleEventBlur:function(){this.hide()},eventClick:function(D){if(!D.element().ancestors){return }var C=$(this.updateElement.getAttribute("ui:icon"));var B=(D.element().up("div.calendars_container")||(D.element().identify()==this.updateElement.identify()||C&&D.element().identify()==C.identify()))?true:false;if(B){var A;if(A=D.findElement("a.month_switch")){this.handleButtonClick(D,A)}}else{this.calChange=false;this.hide()}},eventMouseDown:function(B){if(!B.element().ancestors){return }var A;if(A=B.findElement("td.active")){this.calChange=false;this.handleDateClick(A,true)}else{if(B.findElement("a.month_switch")){this.calChange=true}else{return }}},eventMouseOver:function(B){var A=Event.element(B);A.addClassName("hover")},eventMouseOut:function(B){var A=Event.element(B);A.removeClassName("hover")},eventMouseUp:function(){},unregister:function(){}});Object.extend(Date,{parseToObject:function(B){var A=Date.parse(B);if(!A){return null}A=new Date(A);return(A=="Invalid Date"||A=="NaN")?null:A.neutral()}});Object.extend(Date.prototype,{neutral:function(){return new Date(this.getFullYear(),this.getMonth(),this.getDate(),12)}});PBwiki.UsersPanelView={AllUsers:"all_users",Blocked:"blocked",Pending:"pending"};PBwiki.UsersPanel={classname:"PBwiki.UsersPanel",users:null,currentView:PBwiki.UsersPanelView.AllUsers,pageSize:10,currentPage:null,filter:"",mayShowPendingUsersBubble:true,getUsersMemo:null,letterToUIDMap:{},uidToIndexMap:{},uidToLetterMap:{},didTrackFilter:false,showAddUsersDialog:function(){if(PBinfo.CurrentNetwork){var A={title:"Invite More People",workspace:PBinfo.CurrentWiki.name,workspace_title:(PBinfo.CurrentWiki.title||PBinfo.CurrentWiki.name),guest_only:(PBinfo.CheckPermissions.network_perm!=="admin"),default_network_role:PBinfo.CurrentWiki.default_network_role};if(document.location.href.indexOf("/w/users")!==-1){A.onSuccess=function(){document.location.reload()}}(new PBwiki.DialogCommands.AddUsersWizard(A))}else{(new PBwiki.DialogCommands.AddUsersDialog({}))}},blockedUserListDidLoad:function(A){PBwiki.UsersPanel.users=A.users;this.updateBlockedUserCount(A.users.length);$("user-count").update(A.users.length+(A.users.length==1?" user":" users"));document.fire("users::user-list-changed")},createRowForUser:function(D,B){var A=$("user-row-template");var I=A.cloneNode(true);$("userlist").down("tbody").appendChild(I);I.removeAttribute("id");if(!D){I.setStyle({visibility:"hidden"});return I}I.setAttribute("ui:uid",D.uid);I.setAttribute("id","user-row-"+D.uid);var G=(B%2==0);I.addClassName(G?"even":"odd");if(this.uidToLetterMap[D.uid]){I.down("div.letter").update(new Element("a",{name:this.uidToLetterMap[D.uid]})).update(this.uidToLetterMap[D.uid])}else{I.down("div.letter").remove()}I.down("img.user-pic").src=D.image;if(D.name){I.down("h3.user-info-name").update(D.name.toString().escapeHTML())}else{if(D.username){I.down("h3.user-info-name").update(D.username.toString().escapeHTML())}else{if(D.email){I.down("h3.user-info-name").update(D.email.toString().escapeHTML())}}}if(PBwiki.feature("workspace_user_groups")&&this.currentView===PBwiki.UsersPanelView.AllUsers){var E=this.getUserGroupLinkForUser(D.uid);I.down("span.user-info-detail").update(E)}else{if(D.title){I.down("span.user-info-detail").update(D.title.escapeHTML())}else{if(D.email){I.down("span.user-info-detail").update(new Element("a",{href:"mailto:"+encodeURIComponent(D.email)})).update(D.email.escapeHTML())}else{if(D.username){I.down("span.user-info-detail").update(D.username.escapeHTML())}else{I.down("span.user-info-detail").update("")}}}}if(D.uid==PBinfo.CheckPermissions.uid){var H=new Element("span",{"class":"you"});H.appendChild(document.createTextNode("\u00A0"));I.down("h3.user-info-name").appendChild(H)}if(D.network_perm&&D.network_perm=="guest"){I.down("h3.user-info-name").addClassName("guest").appendChild(new Element("img",{src:"/shared/network/images/label-client.gif"}))}if(!D.username&&!D.is_verified){I.down("h3.user-info-name").addClassName("unverified").appendChild(new Element("img",{src:"/shared/images/label-unverified.gif"}))}if(!PBwiki.feature("gui")){switch(this.currentView){case PBwiki.UsersPanelView.AllUsers:var F=new Element("label");F.appendChild(document.createTextNode("last visited"));var C=new Element("span");C.appendChild(document.createTextNode(D.lastviewtext?D.lastviewtext+" ago":"never"));I.down("td.user-time").update("");I.down("td.user-time").appendChild(F);I.down("td.user-time").appendChild(C);break;case PBwiki.UsersPanelView.Pending:var J=new Element("span",{"class":"request-time"});J.update(D.request_time_ago+" ago");I.down("td.user-time").update("");I.down("td.user-time").appendChild(J);break}}I.getElementsBySelector("td.user-info a").each(function(K){K.setAttribute("ui:uid",D.uid);K.addClassName("user-link");if(!K.hasClassName("user-group-link")){K.addClassName("usercard_trigger")}else{K.setAttribute("href","/user/"+D.uid)}});this.updateUserRowControls(I);return I},onResetClassroomPasswordClicked:function(E,C){if(E){E.stop()}var B=this.uidToIndex(C);var D=this.users[B];var A=D.name;Util.confirm("Are you sure you want to reset "+A+"'s password?",{title:"Reset password?",okButtonLabel:"Reset password",onConfirm:this.resetClassroomPassword.bindAsEventListener(this,C)})},resetClassroomPassword:function(B,A){(new PBwiki.APIRequest("ResetClassroomAccountPassword",{user_id:A},{method:"post",onFailure:function(C){Util.alert(C)},onSuccess:function(E){var C=this.uidToIndex(A);var F=this.users[C];var D=F.name.escapeHTML()+" can login to PBworks using this new password:<br><br>";D+="<b>PBworks address:</b> http://"+window.location.hostname+"<br>";D+="<b>Username:</b> "+F.username.escapeHTML()+"<br>";D+="<b>Password:</b> "+E.password.escapeHTML();Util.alert(D,{title:F.name.escapeHTML()+"'s password has been reset"})}.bindAsEventListener(this)}))},getUserGroupLinkForUser:function(B){var A=this.uidToIndex(B);var D=this.users[A];if(PBinfo.CheckPermissions&&(PBinfo.CheckPermissions.wikiperm=="admin"||PBinfo.CheckPermissions.network_perm=="admin")){var C=new Element("a",{className:"user-group-link",href:"javascript: void(0);"});if(D.groups&&D.groups[0]&&D.groups[0].name){C.update(D.groups[0].name.escapeHTML());C.style.color="#333333"}else{C.update("Select a group...")}C.observe("click",this.onUserGroupLinkClicked.bindAsEventListener(this,D));return C}else{var E;if(D.groups&&D.groups[0]&&D.groups[0].name){E=D.groups[0].name}else{E="No group selected"}return E.escapeHTML()}return""},getUserGroupDropDownForUser:function(B,C){var A=new Element("select",{id:"user-group-"+B,className:"user-group-select"});var D=0;A.appendChild(new Element("option",{value:""}).update("No group"));$$("#group-filter li a").each(function(F){var E=F.getAttribute("group_id");var G=F.textContent||F.innerText;A.appendChild(new Element("option",{value:E}).update(G.escapeHTML()));if(C===E){D=A.options.length-1}});A.appendChild(new Element("option",{value:"new"}).update("Create new group..."));if(C==="new"){D=A.options.length-1}A.options[D].selected=true;A.observe("change",this.onUserGroupChange.bindAsEventListener(this,B));return A},onUserGroupLinkClicked:function(F,E){if(F){F.stop()}var A=(E.groups&&E.groups[0])?E.groups[0].group_id:null;var D=new Element("a",{href:"javascript:void(0)",className:"user-group-cancel"});D.update("cancel");D.observe("click",this.resetUserGroupLink.bind(this,E.uid));var C=$("user-row-"+E.uid);var B=C.down(".user-info-detail");B.update("");B.appendChild(this.getUserGroupDropDownForUser(E.uid,A));B.appendChild(new Element("span").update(" or "));B.appendChild(D)},onUserGroupChange:function(F,E){var D=$("user-row-"+E);var I=D.down(".user-info-detail");var C=I.down("select").options[I.down("select").selectedIndex];var B={user_id:E};if(C.value=="new"){var A=window.prompt("Enter the name for the new group:");if(A===null||A.empty()){this.resetUserGroupLink(E);return }if(A.length>PBconst.kMaxGroupNameLength){A=A.substring(0,PBconst.kMaxGroupNameLength);window.alert('This group name is too long. It has been shortened to "'+A+'".')}var H=I.down("select");H.options[H.options.length]=new Option(A);H.selectedIndex=H.options.length-1;var G=this.findGroupByName(A.strip());if(G!==null){B.group_id=G}else{B.name=A}}else{if(C.value){B.group_id=C.value}}I.down("span").remove();I.down("a").remove();I.down("select").disabled=true;I.addClassName("busy");new PBwiki.APIRequest("ReplaceWorkspaceGroupMembership",B,{async:true,onSuccess:this.onUserGroupChangeDone.bind(this,E),onFailure:function(J){alert(J);this.resetUserGroupLink(E)}.bind(this)})},findGroupByName:function(B){var A=$$("div#group-filter li a").find(function(D){var C=D.textContent||D.innerText;return(C&&C.strip()==B)}.bind(this));return(A)?A.getAttribute("group_id"):null},resetUserGroupLink:function(A){var B=$("user-row-"+A);var C=B.down(".user-info-detail");C.update(this.getUserGroupLinkForUser(A));C.removeClassName("busy");C.removeClassName("done")},onUserGroupChangeDone:function(B,D){var A=this.uidToIndex(B);this.users[A].groups=D.groups;if(D.groups.length>0){this.ensureUserGroupInList(D.groups[0].group_id,D.groups[0].name);$$("select.user-group-select").each(function(H){if(H.id==="user-group-"+B){return }var F=(H.selectedIndex===-1)?"":H.options[H.selectedIndex].value;var G=this.getUserGroupDropDownForUser(B,F);H.replace(G)}.bind(this))}var C=$("user-row-"+B);var E=C.down(".user-info-detail");E.removeClassName("busy");E.addClassName("done");window.setTimeout(this.resetUserGroupLink.bind(this,B),PBwiki.DoneIconTimeouts.Default)},ensureUserGroupInList:function(F,G){if(!$("group-filter")){return }if($("group-"+F)){return }var D=$("group-filter").down("ul");var B=D.select("li");var C=B.length;for(var A=B.length-1;A>=0;A--){var I=B[A];var J=I.textContent||I.innerText;if(G.toUpperCase()<J.toUpperCase()){C=A}}var H=new Element("li");var E=new Element("a",{id:"group-"+F,group_id:F,href:"#view="+this.currentView+"&group_id="+F});E.update(G.escapeHTML());H.appendChild(E);if(C==B.length){D.appendChild(H)}else{D.insertBefore(H,B[C])}$("group-filter").down("ul").show();$("group-filter-no-groups").hide()},doesUserMatchFilter:function(C,B){var A=C.name;if(C.email){A+=" "+C.email}else{if(C.username){A+=" "+C.username}}A+=" "+C.perm+" "+PBwiki.UserPermissions[C.perm];if(C.network_perm&&C.network_perm=="guest"){A+=" "+C.network_perm+" guest"}A=A.toLowerCase();return $(B.toLowerCase().split(/\s+/)).any(function(D){return(A.indexOf(D)>=0)})},getPermissionDropDownBoxForUser:function(D){is_pending_approval=(typeof (is_pending_approval)=="undefined")?false:is_pending_approval;var C=new Element("select",{"class":"user-permission"});var B;for(B in PBwiki.UserPermissions){if(D.username&&B=="admin"){continue}var A=new Element("option",{value:B}).update(PBwiki.UserPermissions[B]);A.selected=(B==D.perm);C.appendChild(A)}return C},getUsers:function(){if(this.getUsersMemo){return this.getUsersMemo}var E={};var B={};var A={};var D=0;if(!this.users){return new Array()}var C=this.users.findAll(function(H){if(this.currentView==PBwiki.UsersPanelView.AllUsers&&H.perm=="deny"){return false}if(this.filter&&!this.doesUserMatchFilter(H,this.filter)){return false}if(this.currentGroupID){if(!H.groups||!H.groups.find(function(I){return I.group_id===this.currentGroupID}.bind(this))){return false}}var F=H.uid;B[F]=D++;var G=H.last_name?H.last_name.charAt(0).toString().toUpperCase():false;if(/[A-Z]/.match(G)&&typeof (E[G])=="undefined"){E[G]=F;A[F]=G}if(B[F]==0&&A[F]=="undefined"){this.uidToLetterMap[H.uid]=" "}return true}.bind(this));this.letterToUIDMap=E;this.uidToIndexMap=B;this.uidToLetterMap=A;this.getUsersMemo=C;return C},initialize:function(){if(!$("userlist-loading")||!$("userlist")){return }this.padUserList();if(PBinfo.CheckPermissions.wikiperm=="admin"){if(!PBwiki.feature("gui")){this.users_add_button=$("users-add");this.users_add_button.style.display="block";this.initializeButton(this.users_add_button)}else{this.users_add_button=$("main-heading-sidebar-button")}}if(PBwiki.feature("network_user_groups")){this.initializeGroups()}if(this.users_add_button){this.users_add_button.observe("click",this.onAddUsersClicked.bind(this))}$("user-list-next").observe("click",this.onNextClicked.bind(this));$("user-list-prev").observe("click",this.onPrevClicked.bind(this));$("user-search").observe("keyup",this.onSearchChanged.bind(this));$("user-search").observe("click",this.onSearchChanged.bind(this));if(!PBwiki.feature("gui")){$("user-list-sortby").observe("change",this.onSortFieldChanged.bind(this))}document.observe("users::refresh-data",this.refreshData.bind(this));document.observe("users::user-list-changed",this.userListChanged.bind(this));document.observe("users::group-changed",this.onUserGroupChanged.bind(this));document.observe("users::filter-changed",this.onUserFilterChanged.bind(this));if($("user-filter-info")){$("user-filter-info").hide();$("user-filter-close").observe("click",this.onRemoveUserFilterClicked.bind(this))}if($("user-group-info")){$("user-group-info").hide();$("user-group-close").observe("click",this.onRemoveGroupFilterClicked.bind(this))}if($("user-both-info")){$("user-both-info").hide();$("user-both-close-filter").observe("click",this.onRemoveUserFilterClicked.bind(this));$("user-both-close-group").observe("click",this.onRemoveGroupFilterClicked.bind(this))}if($("user-chicklet-nav")){$("user-chicklet-nav").show()}var A=PBwiki.History.getKey("view").getValue()||PBwiki.UsersPanelView.AllUsers;var B=PBwiki.History.getKey("group_id").getValue();this.switchToView(A);this.switchToGroup(B);PBwiki.History.getKey("view").observe("onChange",this.switchToView.bind(this));PBwiki.History.getKey("group_id").observe("onChange",this.switchToGroup.bind(this));PBwiki.History.start()},initializeGroups:function(){if(!PBwiki.feature("network_user_groups")){return }if(PBinfo.CheckPermissions.wikiperm=="admin"&&PBinfo.CheckPermissions.network_perm!=="guest"){$("groups-add").style.display="block";this.initializeButton($("groups-add"));$("groups-add").observe("click",this.onAddGroupsClicked.bind(this))}if(!PBwiki.feature("gui")){this.loadGroupsList()}else{this.loadGroupMenus()}},loadGroupMenus:function(){if(!$("sidebar-module-groups")){return }$("sidebar-module-groups").select("div.actions").each(function(B){var A=B.up("li").down("a");var C=A.textContent||A.innerText;new PBMenu({toggle:B,rightAligned:true,onOpen:function(){B.up("li").addClassName("hover")},onClose:function(){B.up("li").removeClassName("hover")},items:[{name:"role",txt:"Change&nbsp;Role",onClick:function(){this.currentGroupID=A.getAttribute("group_id");this.currentGroupName=C;this.onUserGroupRoleClicked()}.bind(this)},{name:"remove",txt:"Remove&nbsp;Group",onClick:function(){this.currentGroupID=A.getAttribute("group_id");this.currentGroupName=C;this.onUserGroupRemoveClicked()}.bind(this)},]})},this)},initializeButton:function(A){if(A.offsetLeft<0){A.style.marginLeft=(-1*A.offsetLeft)+"px"}},refreshData:function(){$("userlist").hide();if(!PBwiki.feature("gui")){$("userlist-sidebar").hide()}$("userlist-header").hide();$("user-list-footer").hide();$("userlist-loading").show();this.loadUserList();this.loadGroupsList()},loadGroupsList:function(){if(!PBwiki.feature("network_user_groups")){return }var A=new PBwiki.APIRequest("ListWorkspaceUserGroups",{},{method:"get",onSuccess:this.workspaceGroupsListDidLoad.bind(this),onFailure:function(B){alert(B)}.bind(this)})},onAddGroupsClicked:function(A){if(A){A.stop()}new PBwiki.DialogCommands.AddNetworkGroup({})},workspaceGroupsListDidLoad:function(B){if(!$("group-filter")){return }var A=$("group-filter").down("ul");A.update("");B.groups.each(function(G){var D=new Element("li");var F=new Element("a",{id:"group-"+G.group_id,group_id:G.group_id,role:G.role,href:"#view=all_users&group_id="+G.group_id});F.update(G.name.escapeHTML());if(G.group_id==this.currentGroupID){D.addClassName("selected")}D.appendChild(F);A.appendChild(D);if(G.group_id==this.currentGroupID){if(PBinfo.CheckPermissions.network_perm!="guest"){var H=this.buildUserGroupActionLink("profile","View group profile",this.onUserGroupProfileClicked.bindAsEventListener(this));A.appendChild(H)}if(PBinfo.CheckPermissions.wikiperm=="admin"){var E=this.buildUserGroupActionLink("role","Change role",this.onUserGroupRoleClicked.bindAsEventListener(this));var C=this.buildUserGroupActionLink("remove","Remove group",this.onUserGroupRemoveClicked.bindAsEventListener(this));A.appendChild(E);A.appendChild(C)}}}.bind(this));if(B.groups.length>0){$("group-filter-no-groups").hide();$("group-filter").show();A.show()}else{A.hide();$("group-filter").show();$("group-filter-no-groups").show()}},loadBlockedUserList:function(){var A=new PBwiki.APIRequest("GetBlockedUsers",{},{method:"get",onSuccess:PBwiki.UsersPanel.blockedUserListDidLoad.bind(this),onFailure:function(B){alert(B)}.bind(this)})},loadPendingUserList:function(){var A=new PBwiki.APIRequest("GetPendingUsers",{},{method:"get",onSuccess:PBwiki.UsersPanel.pendingUserListDidLoad.bind(this),onFailure:function(B){alert(B)}.bind(this)})},loadUserList:function(){$$("div#group-filter li.selected").invoke("removeClassName","selected");var C=PBwiki.feature("gui")?"last_name":$("user-list-sortby").value;var A=(C=="lastview");var B=new PBwiki.APIRequest("GetUsersInfos",{sortby:C,reverse:A,verbose:true},{allowDefer:true,method:"get",onSuccess:PBwiki.UsersPanel.userListDidLoad.bind(this),onFailure:function(D){alert(D)}.bind(this)})},onUserGroupProfileClicked:function(B){if(B){B.stop()}var A=this.currentGroupID;document.location.href=Util.URLRelativeToContext("/n/users/group-profile?group_id="+this.currentGroupID,{network:PBinfo.CurrentNetwork.name})},onUserGroupRoleClicked:function(B){if(B){B.stop()}if(!this.currentGroupID){return }var A=$("group-"+this.currentGroupID).getAttribute("role");new PBwiki.DialogCommands.NetworkGroupRole({group_id:this.currentGroupID,name:this.currentGroupName,role:A})},onUserGroupRemoveClicked:function(A){if(A){A.stop()}if(!this.currentGroupID){return }new PBwiki.DialogCommands.NetworkGroupDel({group_id:this.currentGroupID,name:this.currentGroupName})},onUserGroupDeleteClicked:function(B){if(B){B.stop()}if(!this.currentGroupID){return }var C='Are you sure you want to delete the group "'+this.currentGroupName+'"? The members of this group may no longer be able to access some parts of this workspace.';var D=window.confirm(C);if(!D){return }var A=this.currentGroupID;document.location.href="#view=all_users";new PBwiki.APIRequest("DeleteWorkspaceUserGroup",{group_id:A},{method:"post",onSuccess:this.userGroupWasDeleted.bind(this,A),onFailure:function(E){alert(E)}.bind(this)})},userGroupWasDeleted:function(E,D){var C=false;for(var B=0;B<this.users.length;B++){if(!this.users[B].groups){continue}for(var A=0;A<this.users[B].groups.length;A++){if(this.users[B].groups[A].group_id===E){this.users[B].groups[A]=null;this.users[B].groups=this.users[B].groups.compact();C=true}}}if(C){this.userListChanged()}$("group-"+E).up("li").remove();if($$("#group-filter ul li").length===0){$("group-filter").down("ul").hide();$("group-filter-no-groups").show()}},onAddUsersClicked:function(A){Util.tracking("f-users_panel-addusers_show");PBwiki.UsersPanel.showAddUsersDialog()},onBlockUserClicked:function(E){var D=E.element().up("tr").getAttribute("ui:uid");var C=this.uidToIndex(D);var A=this.users[C].name||this.users[C].email||this.users[C].username||this.users[C].uid;if(!confirm("Are you sure you want to block "+A+" from rejoining this workspace?")){return }var B=new PBwiki.APIRequest("AddUser",{perm:"deny",demote:true,uid:D},{onSuccess:PBwiki.UsersPanel.userWasBlocked.bind(this),onFailure:function(F){alert(F)}.bind(this)});E.element().stopObserving("click")},onPendingUserPermissionSet:function(E){PBwiki.UsersPanel.setNavigationChickletsEnabled(false);var D=E.element().value;var C=E.element().up("td");E.element().stopObserving("change");E.element().observe("change",this.onChangeUserPermission.bind(this));Util.tracking("f-users_panel-approve_pending-"+D);C.removeClassName("done").addClassName("busy");var B=E.element().up("tr").getAttribute("ui:uid");var A=new PBwiki.APIRequest("AddUser",{perm:D,demote:true,uid:B},{onSuccess:PBwiki.UsersPanel.pendingUserPermissionWasChanged.bind(this),onFailure:function(F){C.removeClassName("busy");alert(F);PBwiki.UsersPanel.setNavigationChickletsEnabled(true)}.bind(this)})},onChangeUserPermission:function(D){Util.tracking("f-users_panel-change_perm");var C=D.element().up("tr").getAttribute("ui:uid");if(!this.canSetPermission(C,D.element().value)){D.stop();return }var A=D.element().up("td");A.removeClassName("done").addClassName("busy");D.element().disabled=true;var B=new PBwiki.APIRequest("AddUser",{perm:D.element().value,demote:true,uid:C},{onSuccess:PBwiki.UsersPanel.userPermissionWasChanged.bind(this),onFailure:function(G){D.element().disabled=false;A.removeClassName("busy");var F=this.uidToIndex(C);var E=this.users[F].perm;this.setSelectBoxValue(D.element(),E);alert(G)}.bind(this)})},onLetterClicked:function(E){var C=E.element().innerHTML;var A=this.userForLetter(C);if(A){var B=this.uidToIndexMap[A];var D=Math.floor(B/this.pageSize);this.showPage(D)}Util.tracking("f-users_panel-alphablock")},onNextClicked:function(A){if(A.element().disabled){return }this.showPage(this.currentPage+1)},onApproveButtonClicked:function(H){PBwiki.UsersPanel.setNavigationChickletsEnabled(false);var G=H.element().up("tr");var F=this.userRecordForRow(G);var A="write";var D=G.down("td.user-controls");D.update("").removeClassName("done").addClassName("busy");var E=this.getPermissionDropDownBoxForUser(F);E.observe("change",this.onPendingUserPermissionSet.bind(this));for(var C=0;C<E.options.length;C++){if(E.options[C].value==A){E.options.selectedIndex=C;break}}D.appendChild(E);Util.tracking("f-users_panel-approve_pending-"+A);var B=new PBwiki.APIRequest("AddUser",{perm:A,demote:true,uid:F.uid},{onSuccess:PBwiki.UsersPanel.pendingUserPermissionWasChanged.bind(this),onFailure:function(I){D.removeClassName("busy");alert(I);PBwiki.UsersPanel.setNavigationChickletsEnabled(true)}.bind(this)})},onDenyPendingUserClicked:function(D){var C=D.element().up("tr");var B=this.userRecordForRow(C);var A=new PBwiki.APIRequest("AddUser",{perm:"delete",demote:true,uid:B.uid},{onSuccess:PBwiki.UsersPanel.userWasDenied.bind(this),onFailure:function(E){alert(E)}.bind(this)});C.down("td.user-controls").update("").addClassName("busy")},userWasDenied:function(C){var B=$("user-row-"+C.uid);if(!B){return }var A=this.uidToIndex(C.uid);this.users[A].denied=true;this.updateUserRowControls_Pending(B)},onPrevClicked:function(A){if(A.element().disabled){return }this.showPage(this.currentPage-1)},canRemoveUser:function(C){if(!PBwiki.feature("network_user_groups")){return true}var B=this.uidToIndex(C);if(!this.users[B].groups||this.users[B].groups.length===0){return true}var A=this.users[B].name||this.users[B].email||this.users[B].username||C;var D;if(this.users[B].groups.length==1){D="You cannot remove "+A+' because they are a member of the group "'+this.users[B].groups[0].name+'". In order to remove this user from this workspace, you will need to remove the entire group.'}else{D="You cannot remove "+A+" because they are a member of "+this.users[B].groups.length+" groups:\n\n";this.users[B].groups.each(function(E){D+="   "+E.name+"\n"});D=D+"\nIn order to remove this user from this workspace, you will need to remove all of these groups."}alert(D);return false},canSetPermission:function(F,H){if(!PBwiki.feature("network_user_groups")){return true}var E=this.uidToIndex(F);if(!this.users[E].groups||this.users[E].groups.length===0){return true}var D=this.users[E].groups.collect(function(N){var M=N.group_id;return $("group-"+M).getAttribute("role")});var B=Object.keys(PBwiki.UserPermissions).reverse();var L=B.indexOf(H);var A=D.collect(function(M){return B.indexOf(M)});var J=A.max();if(L<J){var E=this.uidToIndex(F);var K=this.users[E].perm;var I=$("user-row-"+F).down("select.user-permission");for(var E=0;E<I.options.length;E++){if(I.options[E].value==K){I.selectedIndex=E;break}}var G=PBwiki.UserPermissions[H];var C="You cannot set this user's role to "+G+" because they are in a group with a higher role on this workspace.";alert(C);return false}return true},onRemoveUserClick:function(F){var D=F.element().up("tr").getAttribute("ui:uid");var C=this.uidToIndex(D);var A=this.users[C].name||this.users[C].email||this.users[C].username||D;if(!this.canRemoveUser(D)){return }var E="Are you sure you want to remove "+A+"?";if(PBinfo.CurrentNetwork){if(this.users[C].network_perm=="admin"){E+="\n\nAs a network administrator, "+A+" is able to re-join this workspace in the future."}else{if(PBinfo.CurrentWiki.isNetworkPublic&&this.users[C].network_perm=="user"){E+="\n\nThis workspace is open to the network, so "+A+" can re-join this workspace again in the future."}}}if(!confirm(E)){return }Util.tracking("f-users_panel-remove_user");F.element().up("tr").setAttribute("ui:original_perm",this.users[C].perm);var B=new PBwiki.APIRequest("AddUser",{perm:"delete",demote:true,uid:D},{onSuccess:PBwiki.UsersPanel.userWasRemoved.bind(this),onFailure:function(G){alert(G)}.bind(this)});F.element().up("tr").select("a.usercard_trigger").invoke("removeClassName","usercard_trigger");F.element().stopObserving("click")},onRemoveUserFilterClicked:function(A){A.stop();$("user-search").value="";document.fire("users::filter-changed","");$("user-search").focus()},onRemoveGroupFilterClicked:function(A){this.switchToGroup(null)},onSearchChanged:function(B){if(this.users){if(B.keyCode==27){B.element().value=""}if(Util.isInternetExplorer6()&&B.keyCode!==13){return }var A=B.element().value.strip();if(A!=this.filter){document.fire("users::filter-changed",A)}}},onSortFieldChanged:function(B){var A=new PBwiki.APIRequest("SetUserPref",{key:PBconst.kUserPref_UsersPanel_SortBy,value:$("user-list-sortby").value},{onFailure:function(C){alert("Oops, an error occurred while saving your preferences. Please try again later.\n\n"+C)}.bind(this)});this.loadUserList()},onUnblockUserClicked:function(D){D.element().stopObserving("click");var C=D.element().up("td.user-controls");C.addClassName("busy");var B=D.element().up("tr").getAttribute("ui:uid");var A=new PBwiki.APIRequest("AddUser",{perm:"delete",demote:true,uid:B},{onSuccess:PBwiki.UsersPanel.userWasUnblocked.bind(this),onFailure:function(E){alert(E)}.bind(this)})},onUndoUserDeleteClick:function(F){F.stop();var D=F.element().up("tr").getAttribute("ui:uid");var C=this.uidToIndex(D);var A=F.element().up("tr");var E=A.getAttribute("ui:original_perm");this.users[C].deleted=false;this.updateUserRowControls_AllUsers(A);A.down("td.user-controls").addClassName("busy");A.select("a.user-link").invoke("addClassName","usercard_trigger");var B=new PBwiki.APIRequest("AddUser",{perm:E,demote:false,uid:D,invite:false},{onSuccess:PBwiki.UsersPanel.userDeleteWasUndone.bind(this),onFailure:function(G){alert(G)}.bind(this)});Util.tracking("f-users_panel-undo_remove_user")},drawFilterInfo:function(){$("user-both-info-filter").update(this.filter?this.filter.escapeHTML():"...");$("user-both-info-group").update(this.currentGroupName?this.currentGroupName.escapeHTML():"...");$("user-group-info-group").update(this.currentGroupName?this.currentGroupName.escapeHTML():"...");$("user-filter-info-filter").update(this.filter?this.filter.escapeHTML():"...");$("user-both-info").style.display=(this.currentGroupName&&this.filter)?"block":"none";$("user-group-info").style.display=(this.currentGroupName&&!this.filter)?"block":"none";$("user-filter-info").style.display=(!this.currentGroupName&&this.filter)?"block":"none"},onUserGroupChanged:function(E){if(PBwiki.feature("gui")){this.drawFilterInfo();document.fire("users::user-list-changed");return }$$("#group-filter li.action").invoke("remove");$$("#group-filter li.selected").invoke("removeClassName","selected");this.drawFilterInfo();if(this.currentGroupID){var B=$("group-"+this.currentGroupID).up("li");B.addClassName("selected");if(PBwiki.feature("network_user_groups")&&PBinfo.CheckPermissions.wikiperm=="admin"){var G=this.buildUserGroupActionLink("profile","View group profile",this.onUserGroupProfileClicked.bindAsEventListener(this));var C=this.buildUserGroupActionLink("role","Change role",this.onUserGroupRoleClicked.bindAsEventListener(this));var A=this.buildUserGroupActionLink("remove","Remove group",this.onUserGroupRemoveClicked.bindAsEventListener(this));if(PBinfo.CheckPermissions.network_perm=="guest"){B.insert({after:C});C.insert({after:A})}else{B.insert({after:G});G.insert({after:C});C.insert({after:A})}}else{if(PBwiki.feature("network_user_groups")&&PBinfo.CheckPermissions.network_perm!=="guest"){var G=this.buildUserGroupActionLink("profile","View group profile",this.onUserGroupProfileClicked.bindAsEventListener(this));B.insert({after:G})}else{if(PBinfo.CheckPermissions.wikiperm=="admin"){var D=this.buildUserGroupActionLink("delete","Delete group",this.onUserGroupDeleteClicked.bindAsEventListener(this));B.insert({after:D})}}}}if($("users-chicklet-all_users")){var F=(this.currentGroupID)?("&group_id="+this.currentGroupID):"";$("users-chicklet-all_users").href="#view=all_users"+F}document.fire("users::user-list-changed")},buildUserGroupActionLink:function(A,E,D){var C=new Element("li",{className:"action "+A});var B=new Element("a",{href:"javascript: void(0);",id:"group-filter-"+A});B.update(E.escapeHTML());B.observe("click",D);C.appendChild(B);return C},onUserFilterChanged:function(B){var A=B.memo.strip?B.memo.strip():"";this.filter=A;if($("user-search").value.strip()!=A.strip()){$("user-search").value=A.strip()}if(!this.didTrackFilter){this.didTrackFilter=true;Util.tracking("f-users_panel-filtered")}if($("user-filter-current-filter")){if(A){if(PBinfo.CurrentNetwork){$("user-filter-search-network").down("a").href=PBinfo.CurrentNetwork.url+"n/users?search="+encodeURIComponent(A)}else{$("user-filter-search-network").hide()}}}this.drawFilterInfo();document.fire("users::user-list-changed")},padUserList:function(){var C=$$("#userlist tr");var A=$("userlist");if(C.length<PBwiki.UsersPanel.pageSize){var B;for(B=0;B<PBwiki.UsersPanel.pageSize-C.length;B++){this.createRowForUser(false,C.length+B)}}},pendingUserListDidLoad:function(A){PBwiki.UsersPanel.users=A.users;this.updatePendingUserCount(A.users.length);$("user-count").update(A.users.length+(A.users.length==1?" user":" users"));document.fire("users::user-list-changed")},refreshLetterMap:function(){var E;var F=$("user-alpha");F.update("");for(E="A".charCodeAt(0);E<="Z".charCodeAt(0);E++){var D=String.fromCharCode(E);var C=this.userForLetter(D);var B=new Element("span");F.appendChild(B);if(C){var A=new Element("a",{href:"javascript:void(0)"});A.observe("click",this.onLetterClicked.bind(this));A.update(D);B.appendChild(A)}else{B.appendChild(document.createTextNode(D))}if(!PBwiki.feature("gui")){F.appendChild(document.createTextNode(" "))}}},refreshUserRow:function(D){var B;var A;if(D.i){B=D.uid;A=D.i}else{B=D;A=this.uidToIndex(D)}var C=$("user-row-"+B);if(C){this.updateUserRowControls(C)}},showPage:function(D){PBwiki.UsersPanel.currentPage=D;var H=this.getUsers();$$("#userlist tr").each(function(I){if(I.id!=="user-row-template"){I.remove()}});var B=D*PBwiki.UsersPanel.pageSize;var C=Math.min(B+PBwiki.UsersPanel.pageSize,H.length);var A=H.slice(B,C);var G=0;$(A).each(function(I){PBwiki.UsersPanel.createRowForUser(I,G++)});this.padUserList();var F;switch(this.currentView){case PBwiki.UsersPanelView.AllUsers:var E=(PBwiki.feature("workspace_user_groups")||PBwiki.feature("network_user_groups"));F=(E&&!this.filter)?$("user-group-no-users"):$("user-search-no-users");break;case PBwiki.UsersPanelView.Pending:F=$("user-no-pending-users");break;case PBwiki.UsersPanelView.Blocked:F=$("user-no-blocked-users");break}$$(".no-users-message").invoke("hide");if(A.length==0){F.show();$("user-list-pager").setStyle({visibility:"hidden"})}else{F.hide();$("user-list-pager").setStyle({visibility:"visible"})}$("user-list-page-current").update((B+1)+"-"+(C));if(H.length>PBwiki.UsersPanel.pageSize){$("user-list-page-count").down("strong").update(H.length);$("user-count").update(H.length+(H.length==1?" user":" users"));$("user-list-prev").disabled=(B==0);if($("user-list-prev").disabled){$("user-list-prev").addClassName("disabled")}else{$("user-list-prev").removeClassName("disabled")}$("user-list-next").disabled=(B+PBwiki.UsersPanel.pageSize)>=H.length;if($("user-list-next").disabled){$("user-list-next").addClassName("disabled")}else{$("user-list-next").removeClassName("disabled")}$("user-list-page-count").show();$("user-list-prev").show();$("user-list-next").show()}else{$("user-list-page-count").hide();$("user-list-prev").hide();$("user-list-next").hide()}Util.tracking("f-users_panel-show_page_"+D)},switchToGroup:function(B){if(!PBwiki.feature("workspace_user_groups")&&!PBwiki.feature("network_user_groups")){return }var A;if(this.currentView===PBwiki.UsersPanelView.AllUsers&&B&&$("group-"+B)){A=$("group-"+B)}else{A=null}if(A){this.currentGroupID=B;this.currentGroupName=A.textContent||A.innerText}else{B=null;delete this.currentGroupID;delete this.currentGroupName}document.fire("users::group-changed",B)},switchToView:function(B){if(B!=PBwiki.UsersPanelView.AllUsers&&!$("users-chicklet-"+B)){this.switchToView(PBwiki.UsersPanelView.AllUsers);return }this.currentView=B;$$(".no-users-message").invoke("hide");if($("user-list-sortby")){$("user-list-sortby").hide()}switch(B){case PBwiki.UsersPanelView.AllUsers:if($("group-filter")){if($$("#group-filter ul li").length>0){$("group-filter").down("ul").show();$("group-filter-no-groups").hide()}else{$("group-filter").down("ul").hide();$("group-filter-no-groups").show()}$("group-filter").show()}if($("user-list-sortby")){$("user-list-sortby").show()}this.loadUserList();break;case PBwiki.UsersPanelView.Blocked:if($("group-filter")){$("group-filter").hide()}this.loadBlockedUserList();break;case PBwiki.UsersPanelView.Pending:if($("group-filter")){$("group-filter").hide()}this.mayShowPendingUsersBubble=false;this.loadPendingUserList();break;default:this.switchToView(PBwiki.UsersPanelView.AllUsers);return }if($("user-chicklet-nav")){if($("user-chicklet-nav").down("a.active")){$("user-chicklet-nav").down("a.active").removeClassName("active")}if($("users-chicklet-"+B)){$("users-chicklet-"+B).addClassName("active")}}if($("group-filter")){$$("div#group-filter li a").each(function(C){C.href="#view="+this.currentView+"&group_id="+C.getAttribute("group_id")}.bind(this))}Util.tracking("f-users_panel-switch_view_"+B);if(PBwiki.History.getValue("view")!==B){var A={view:B};if(this.currentGroupID){A.group_id=this.currentGroupID}PBwiki.History.setItems(A)}},uidToIndex:function(B){var A;if(!this.users){return null}for(A=0;A<this.users.length;A++){if(this.users[A].uid==B){return A}}return null},updateBlockedUserCount:function(A){var B="Blocked Users";if(A>0){B+=" ("+A+")"}$("users-chicklet-blocked").down("span").update(B)},updatePendingUserCount:function(A){$("users-chicklet-pending").down("span").update("Request Access ("+A+")")},updateUserRowControls:function(A){switch(this.currentView){case PBwiki.UsersPanelView.AllUsers:this.updateUserRowControls_AllUsers(A);break;case PBwiki.UsersPanelView.Blocked:this.updateUserRowControls_Blocked(A);break;case PBwiki.UsersPanelView.Pending:this.updateUserRowControls_Pending(A);break}},updateUserRowControls_AllUsers:function(A){var M=A.down("td.user-controls");M.update("").removeClassName("permission");var H="permission";var F=this.userRecordForRow(A);if(F.was_just_blocked||F.was_just_unblocked){this.updateUserRowControls_Blocked(A);return }var L=F.uid==PBinfo.CheckPermissions.uid;var B=F.network_perm&&"admin"==F.network_perm;var G="admin"==PBinfo.CheckPermissions.wikiperm;if(F.deleted){H="deleted";var I=new Element("a",{href:"javascript:void(0)"});I.appendChild(document.createTextNode("Undo"));I.observe("click",this.onUndoUserDeleteClick.bind(this));M.appendChild(document.createTextNode("This user has been removed. "));if($("users-chicklet-blocked")){M.appendChild(new Element("br"));M.appendChild(I);M.appendChild(document.createTextNode(" or "));var E=new Element("a",{href:"javascript:void(0)"});E.appendChild(document.createTextNode("block this user from rejoining"));E.observe("click",this.onBlockUserClicked.bind(this));M.appendChild(E);M.appendChild(document.createTextNode("."))}else{M.appendChild(I);M.appendChild(document.createTextNode("."))}}else{if(L){var J=B?"Network Administrator ":PBwiki.UserPermissions[F.perm]+" ";M.update("<div class='you'>"+J+"<br />(this&nbsp;is&nbsp;you)</div>")}else{if(G){if(B){M.appendChild(document.createTextNode("Network Administrator"))}else{var D=this.getPermissionDropDownBoxForUser(F);D.observe("change",this.onChangeUserPermission.bind(this));M.appendChild(D)}var C=new Element("a",{href:"javascript:void(0)","class":"user-remove deleteicon",title:"Remove this user"}).update("&nbsp;");C.observe("click",this.onRemoveUserClick.bind(this));M.appendChild(C);if(PBwiki.feature("classroom_accounts")&&F.username){var K=new Element("a",{href:"#",className:"user-reset-password",title:"Reset classroom account password"}).update("&nbsp;");K.observe("click",this.onResetClassroomPasswordClicked.bindAsEventListener(this,F.uid));M.appendChild(K)}}else{var J=B?"Network Administrator":PBwiki.UserPermissions[F.perm];M.update(J)}}}if(H){M.addClassName(H)}},updateUserRowControls_Blocked:function(E){var C=E.down("td.user-controls");C.update("").removeClassName("busy").removeClassName("done").addClassName("permission");var B=new Element("a",{href:"javascript:void(0)"});B.appendChild(document.createTextNode("Unblock"));B.observe("click",this.onUnblockUserClicked.bind(this));var D=this.userRecordForRow(E);if(D.was_just_blocked){addClassName="blocked";if(this.currentView==PBwiki.UsersPanelView.AllUsers){C.appendChild(document.createTextNode("This user has been blocked. "));C.appendChild(B);C.appendChild(document.createTextNode("."))}else{C.appendChild(B)}}else{if(D.was_just_unblocked){var A=new Element("a",{href:"javascript:void(0)"});A.appendChild(document.createTextNode("Undo"));A.observe("click",this.onBlockUserClicked.bind(this));C.appendChild(document.createTextNode("This user has been unblocked. "));C.appendChild(A)}else{C.appendChild(B)}}},updateUserRowControls_Pending:function(A){var I=A.down("td.user-controls");I.update("").removeClassName("busy").removeClassName("done").addClassName("permission");var E=this.userRecordForRow(A);if(E.perm&&E.perm!=="deny"){var D=this.getPermissionDropDownBoxForUser(E);D.observe("change",this.onChangeUserPermission.bind(this));I.appendChild(D);A.down("td.user-time").update("")}else{if(E.denied){I.update("This user has been denied.");A.down("td.user-time").update("")}else{var H=new Element("div",{"class":"secondarypagetoolbar"});var F=new Element("a",{"class":"button pbapprove",href:"javascript:void(0)"});var G=new Element("span",{"class":"iconbutton accepticon",style:"padding-left:24px"});G.appendChild(document.createTextNode("Approve"));F.appendChild(G);H.appendChild(F);F.observe("click",this.onApproveButtonClicked.bind(this));var C=new Element("span",{style:"line-height:28px"});var B=new Element("a",{"class":"pending_deny",href:"javascript:void(0)"});B.appendChild(document.createTextNode("deny"));B.observe("click",this.onDenyPendingUserClicked.bind(this));C.appendChild(document.createTextNode("or "));C.appendChild(B);H.appendChild(C);I.appendChild(H)}}},userDeleteWasUndone:function(C){var B=this.uidToIndex(C.uid);var A=$("user-row-"+C.uid);this.users[B].perm=A.getAttribute("ui:original_perm");A.removeAttribute("ui:original_perm");this.userPermissionWasChanged(C)},userForLetter:function(B){var A;for(A in this.uidToLetterMap){if(this.uidToLetterMap[A]==B){return A}}return false},userListChanged:function(A){$("userlist-loading").hide();if(!PBwiki.feature("gui")){$("userlist-sidebar").show()}$("userlist-header").show();$("userlist").show();$("user-list-footer").show();this.getUsersMemo=null;this.getUsers();this.refreshLetterMap();this.showPage(0)},userListDidLoad:function(E){if($("user-list-sortby")){var B=$("user-list-sortby");B.style.visibility="visible";var C=0;for(C=0;C<B.options.length;C++){var D="sorted-by-"+B.options[C].value;if(B.value==B.options[C].value){$("user-roster").addClassName(D)}else{$("user-roster").removeClassName(D)}}}PBwiki.UsersPanel.users=E.uids;if($("users-chicklet-blocked")){this.updateBlockedUserCount(E.blocked_count)}else{if($("users-chicklet-pending")){if(this.mayShowPendingUsersBubble&&E.pending_count>0){var A=new PBwiki.Components.PendingUsersBubble({pending_count:E.pending_count})}this.updatePendingUserCount(E.pending_count)}}document.fire("users::user-list-changed")},pendingUserPermissionWasChanged:function(C){var A=$("user-row-"+C.uid);var B=this.uidToIndex(C.uid);this.users[B].perm=C.perm;delete this.users[B].request_time;delete this.users[B].request_time_ago;this.getUsersMemo=null;A.down("td.user-time").update("Approved");this.userPermissionWasChanged(C,PBwiki.DoneIconTimeouts.PendingUserApproved);PBwiki.UsersPanel.setNavigationChickletsEnabled(true)},userPermissionWasChanged:function(E,D){var A;for(A=0;A<this.users.length;A++){if(this.users[A].uid==E.uid){this.users[A].perm=E.perm;break}}var C=$("user-row-"+E.uid);if(!C){return }if(!this.users[A].network_perm||this.users[A].network_perm!="admin"){var B=C.down("select.user-permission");this.setSelectBoxValue(B,E.perm)}C.down("select.user-permission").disabled=false;this.userWasModifiedSuccessfully(E.uid)},setNavigationChickletsEnabled:function(A){$$("#user-chicklet-nav a").each(function(B){if(A&&B.getAttribute("ui:href")){B.setAttribute("href",B.getAttribute("ui:href"));B.removeAttribute("ui:href")}else{if(!A&&B.getAttribute("href")){B.setAttribute("ui:href",B.href);B.setAttribute("href","javascript:void(0)")}}})},setSelectBoxValue:function(C,B){for(var A=0;A<C.options.length;A++){if(C.options[A].value==B){C.selectedIndex=A;return true}}return false},userWasModifiedSuccessfully:function(B){var C=$("user-row-"+B);if(!C){return }var A=C.down("td.user-controls");A.removeClassName("busy").addClassName("done");doneIconTimeout=(typeof (doneIconTimeout)!="undefined")?doneIconTimeout:PBwiki.DoneIconTimeouts.Default;window.setTimeout(function(){A.removeClassName("done")},doneIconTimeout)},userRecordForRow:function(B){var A=B.getAttribute("ui:uid");return this.users[this.uidToIndex(A)]},userWasBlocked:function(B){var A=this.uidToIndex(B.uid);this.users[A].deleted=false;this.users[A].perm="deny";this.users[A].was_just_blocked=true;this.refreshUserRow(B.uid)},userWasRemoved:function(B){var A=this.uidToIndex(B.uid);if(A===null){return }this.users[A].deleted=true;this.refreshUserRow(B.uid)},userWasUnblocked:function(B){var A=this.uidToIndex(B.uid);this.users[A].was_just_blocked=false;this.users[A].was_just_unblocked=true;this.refreshUserRow(B.uid);this.userWasModifiedSuccessfully(B.uid);Util.tracking("f-users_panel-unblock_user")}};PBwiki.init("PBwiki.UsersPanel",PBwiki.UsersPanel.initialize.bind(PBwiki.UsersPanel));PBwiki.DragUploader=Class.create({classname:"PBwiki.DragUploader",initialize:function(A){if(!this.isSupportedBrowser()){return }this.options=A;this.elm=A.elm;this.files=[];PBwiki.dragUploader=this;this.onDragEnter=function(B){if(!this.eventHasFiles(B)){return }this.showMessage();B.dataTransfer.dropEffect="none";B.preventDefault()}.bind(this);this.onDragOver=function(B){if(!this.eventHasFiles(B)){return }B.dataTransfer.dropEffect="none";this.showOverlay();clearTimeout(this.overlayTimeout);if(!this.isRunning){this.overlayTimeout=setTimeout(this.hideOverlay.bind(this),250)}B.preventDefault()}.bind(this);this.onDrop=function(B){if(!this.eventHasFiles(B)){return }B.preventDefault()}.bind(this);Event.observe(window,"dragenter",this.onDragEnter);Event.observe(window,"dragover",this.onDragOver);Event.observe(window,"drop",this.onDrop);if(this.options.targetWin){Event.observe(this.options.targetWin,"dragover",this.onDragOver)}},eventHasFiles:function(A){if(A.dataTransfer.types&&$A(A.dataTransfer.types).indexOf("Files")!=-1){return true}if(A.dataTransfer.files&&A.dataTransfer.files.length>0){return true}return false},isSupportedBrowser:function(){return !Prototype.Browser.IE},enqueue:function(B){if(B.length==0){this.hideOverlay();return }for(var A=0;A<B.length;A++){if(B[A].size>100000000){alert("Files larger than 100MB cannot be uploaded via drag and drop, click the upload files button in Pages & Files and select your files");this.hideOverlay();return }if(A!=0&&B[A].fileName&&B[A].fileName===B[0].fileName){alert("Only 1 file can be uploaded via drag and drop, drop a single file or click the upload files button in Pages & Files to select multiple files");this.hideOverlay();return }}(new PBwiki.APIRequest("GetObjectsNOM",{object_types:"file"},{onSuccess:function(C){this.existingNames=C.objects.pluck("name");this.files=B;this.uploadedFiles=[];this.lastUploadError=null;this.conflictChoice=null;this.uploadCount=1;this.uploadSuccess=0;if(this.xhr){this.xhr.abort()}this.isRunning=true;this.runQueue()}.bind(this),onFailure:function(C){alert(C)}.bind(this)}))},uniqueFileName:function(A){var B=0;var E=A.lastIndexOf("."),D="",C=A;if(E!=-1){D=A.substr(E);C=A=A.substr(0,E)}while(this.existingNames.indexOf(A+D)!=-1){A=C+"("+(++B)+")"}return A+D},runQueue:function(){if(this.uploadCount<=this.files.length){var B=this.files[this.uploadCount-1];var F=B.fileName||B.name;if(this.existingNames.indexOf(F)!=-1){var D=this.uniqueFileName(F);var C=function(G){if(G.choice=="skip"){this.uploadCount++;this.runQueue()}else{if(G.choice=="rename"){this.uploadFile(B,D)}else{this.uploadFile(B,F)}}}.bind(this);if(this.conflictChoice){C(this.conflictChoice)}else{var E=0;for(var A=this.uploadCount;A<this.files.length;A++){if(this.existingNames.indexOf(this.files[A].fileName)){E++}}(new PBwiki.DialogCommands.UploadConfirmation({name:F,altName:D,count:E,onChoice:function(G){if(G.all){this.conflictChoice=G}setTimeout(C.bind(this,G),100)}.bind(this)}))}}else{this.uploadFile(B,F)}}else{this.hideOverlay();this.isRunning=false;if(this.uploadSuccess>0){(new PBwiki.APIRequest("GetTimes",{}));this.notify("onUploaded",{count:this.uploadSuccess,success:this.uploadedFiles})}}},getUploadUrl:function(){var A={op:"PutFile",verbose:"true",raw:"true"};Object.extend(A,PBwiki.getSessCookie());if(this.options.onGetFolder){var B=this.options.onGetFolder();if(B){A.folder=this.options.onGetFolder()}}return"/api_v2/?"+Object.toQueryString(A)},showMessage:function(A){this.showOverlay(A)},showStatus:function(A){this.showOverlay()},showOverlay:function(B){if(this.overlay){return }var I=Element.getDimensions(this.elm);var D=this.elm.cumulativeOffset();var E=D.top-2;var A=E+I.height+4;if(document.viewport.getScrollOffsets().top>E){E=document.viewport.getScrollOffsets().top}if(document.viewport.getScrollOffsets().top+document.viewport.getHeight()<A){A=document.viewport.getScrollOffsets().top+document.viewport.getHeight()}var G=A-E;this.overlay=new Element("div").setStyle({top:E+"px",left:(D.left-2)+"px",width:(I.width+4)+"px",height:G+"px"}).addClassName("dragupload_overlay");document.body.appendChild(this.overlay);if(!E&&!D.left){this.overlay.hide()}if(!B){B="To upload to this workspace"}var C=new Element("div");C.innerHTML="<strong>Drag files here</strong><br />"+B;this.overlay.appendChild(C);C.style.marginTop=(G/2)-(C.offsetHeight/2)+"px";var H=function(J){J.dataTransfer.effectAllowed="copy";J.dataTransfer.dropEffect="copy";if(typeof window.FileReader==="function"){J.preventDefault()}J.stopPropagation()};Event.observe(this.overlay,"dragenter",function(J){if(this.isRunning){return }H(J)}.bind(this));Event.observe(this.overlay,"dragover",function(J){if(this.isRunning){return }H(J);clearTimeout(this.overlayTimeout);this.overlayTimeout=setTimeout(this.hideOverlay.bind(this),250)}.bind(this));Event.observe(this.overlay,"dragleave",H);if(typeof window.FileReader==="function"){Event.observe(this.overlay,"drop",function(J){if(this.isRunning){return }clearTimeout(this.overlayTimeout);this.enqueue(J.dataTransfer.files);J.preventDefault();J.stopPropagation()}.bind(this))}else{var F=new Element("input",{type:"file",multiple:"true"}).setStyle({width:"100%",height:"100%",position:"absolute",opacity:0,top:"0px",left:"0px"});this.overlay.appendChild(F);Event.observe(F,"change",function(J){if(this.isRunning){return }clearTimeout(this.overlayTimeout);this.enqueue(F.files)}.bind(this))}},hideOverlay:function(){if(!this.overlay){return }this.overlay.parentNode.removeChild(this.overlay);delete this.overlay},showProgress:function(A,B){if(!this.overlay){this.showOverlay()}this.overlay.style.opacity=1;this.overlay.innerHTML="";var E=A/B;var D=Element.getDimensions(this.elm);var G=this.elm.cumulativeOffset();var C=new Element("div").setStyle({top:(D.height/2)-15+"px",left:(D.width/2)-100+"px"}).addClassName("dragupload_progress");var F=new Element("div").setStyle({width:Math.max(100,Math.round(E*100)*2)+"px",height:"30px",backgroundColor:"#899FA5"});C.appendChild(F);this.overlay.appendChild(C)},uploadFile:function(G,D){var H=new XMLHttpRequest();this.xhr=H;var C=H.upload;var B=0,A=0;for(var F=1;F<=this.files.length;F++){var E=this.files[F-1].size||this.files[F-1].fileSize;B+=E;if(F<this.uploadCount){A+=E}}Event.observe(C,"progress",function(I){if(I.lengthComputable){this.showProgress(A+I.position,B)}}.bind(this));H.onreadystatechange=function(){if(H.readyState==4){var I=H.responseText;try{var K=JSON.parse(I.split("\n")[1])}catch(J){}if(K&&K.metadata&&K.metadata.acceptedFiles&&K.metadata.acceptedFiles.length==1){this.uploadedFiles.push({name:K.metadata.acceptedFiles[0].name})}else{alert(K?K.error_string:"Sorry, we encountered an error while processing your request.");this.hideOverlay();this.isRunning=false;return }this.uploadSuccess++;this.uploadCount++;this.runQueue()}}.bind(this);H.open("POST",this.getUploadUrl());H.setRequestHeader("X-File-Name",encodeURIComponent(D));H.setRequestHeader("X-File-Size",G.fileSize);H.send(G)},remove:function(){if(!this.isSupportedBrowser()){return }try{this.xhr.abort()}catch(A){}this.hideOverlay();Event.stopObserving(window,"dragenter",this.onDragEnter);Event.stopObserving(window,"dragover",this.onDragOver);Event.stopObserving(window,"drop",this.onDrop);if(this.options.targetWin){Event.stopObserving(this.options.targetWin,"dragover",this.onDragOver)}}});Object.Event.extend(PBwiki.DragUploader);
