var pbBuildTime=1265673423;var c={kMaxTaskCommentLength:2500,kPolicyDateTaskEditFormat:"%m/%d/%Y",kPolicyDateTaskViewFormat:"%b %e",kPolicySimpleDateTimeFormat:"%m/%d/%Y %l:%M %p",kFiFViewOptionsPrefsKey:"fifprefs",kProjectExpandPrefsKey:"project_expanded"};var PBconst=PBconst||c;if(Object.extend){Object.extend(PBconst,c)}PBwiki.ObjectBrowser={initialize:function(){this.table=$("object_table_view");if(!this.table){return }this.tableContent=this.table.down("tbody");this.tableColumnHeaderRow=this.table.down("thead").down();this.folderList=$("objectbrowser_folder_list");this.menubar=$("objectbrowser_menubar");this.newbar=$("objectbrowser_newbar");this.header=$("objectbrowser_header");this.filter=$("objectbrowser_filter").down("input");this.linksList=function(){return $$("#objectbrowser_major_views li a, #objectbrowser_folder_list li a")};this.listItems=function(){return $$("#objectbrowser_major_views li, #objectbrowser_folder_list li")};this.createNewButton();this.majorViewLinks={ViewAllPages:function(){return $("objectbrowser_major_views").down(".allpages")},ViewAllFiles:function(){return $("objectbrowser_major_views").down(".allfiles")},ViewFolder:function(A){return this.folderListObj.getActiveLink(A)}.bind(this),ViewUnfiled:function(){return $("objectbrowser_major_views").down(".unfileditems")}};$H(this.majorViewLinks).each(function(B){if(B.key=="ViewFolder"){return }var A=B.value();A.observe("click",this.selectView.curry(B.key,null).bind(this)).down().href="/browse/#view="+B.key}.bind(this));this.folderListObj=new PBwiki.ObjectBrowser.FoldersList(this.folderList,PBwiki.getCache("GetFolders"));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(B){var A=(B)?B.memo:null;this.selectView("ViewFolder",A,B)}.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: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(A){if(A&&A.memo){this.upload_memo=A.memo}}.bind(this));document.observe("objectbrowser:upload_complete",function(){this.defaultRefreshOptions={sortby:"mtime",reverse:true};var A;if(this.upload_memo){A=this.upload_memo;delete this.upload_memo}new PBwiki.APIRequest("GetTimes",{},{onSuccess:function(){var B;if(this.view.name!=="ViewAllPages"&&this.view.name!=="ViewAllFiles"&&this.view.name!=="ViewFileRevision"){B=this.view.name}else{if(A&&A.filecount===0&&A.pagecount>0){B="ViewAllPages"}else{B="ViewAllFiles"}}if(B==this.view.name){this.refreshCurrentView()}else{this.selectView(B)}document.fire("storageindicator:update")}.bind(this),method:"get"})}.bind(this));$("upload_file_button").remove();this.uploadButton=new PBwiki.Components.FileUploadButton({txt:"Upload files",id:"upload_file_button",addTo:$("objectbrowser").down("div.secondarypagetoolbar"),onUploaded:function(A,B){if(B){document.fire("objectbrowser:onNotifyUser",{message:"Error uploading files: "+B,mode:"error"})}else{if(A==0){document.fire("objectbrowser:onNotifyUser",{message:"Did not upload any files",mode:"error"})}else{document.fire("objectbrowser:onNotifyUser",{message:"Uploaded "+A+" file"+((A!=1)?"s":"")+" successfully"});document.fire("objectbrowser:upload_complete")}}}});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(A){if(A.memo){this.defaultRefreshOptions=A.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("ViewAllPages")}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)},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.header.innerHTML.unescapeHTML()});this.header.title=this.header.innerHTML.unescapeHTML();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()+"'"});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};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 }}}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()+"'"});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){F.remove();H.show();J.stop();document.stopObserving("ui:click",A)}}}.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){document.fire("objectbrowser:onNotifyUser",{message:C+" failed to load: "+E.message,mode:"error"});if(C!="ViewAllPages"){this.selectView("ViewAllPages")}return }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 A=this.tableColumnHeaderRow.childElements().length;var B=this.tableContent.insertRow(-1);B.appendChild(new Element("td",{colspan:A,className:"empty"}).update("There are no files or pages to display."))},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:true,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+"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;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"});$("objectbrowser_view_footer").insert({before:this.table});var A=new Element("thead");this.tableColumnHeaderRow=new Element("tr");A.appendChild(this.tableColumnHeaderRow);this.table.appendChild(A);this.tableContent=new Element("tbody");this.table.appendChild(this.tableContent)},setTableRows:function(D){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.w){this.objectNewMenu.getItem("newpage").disable()}else{this.objectNewMenu.getItem("newpage").enable()}if(PBinfo.CheckPermissions.wikiperm!="mod"&&PBinfo.CheckPermissions.wikiperm!="admin"){this.objectNewMenu.getItem("newfolder").disable()}else{this.objectNewMenu.getItem("newfolder").enable()}if(!this.view.permissions.w){this.uploadButton.disable()}else{this.uploadButton.enable()}if(this.view instanceof PBwiki.ObjectBrowser.ViewFolder){this.uploadButton.setUploadFolder(this.view.options.folder)}else{this.uploadButton.setUploadFolder("")}$("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(D.length))}else{if(D.length===0){this.showEmptyViewMessage()}}D.each(function(H,G){this.tableContent.appendChild(H);if(G%2===1){H.addClassName("alternate")}this.addObjectActions(H);if(H.dataObject.perms&&H.dataObject.perms.w){new Draggable(H,{proxy:function(K,J){var I=this.getSelectedObjects().length;if(I==0){J.down("input").fire("objectbrowser:setCheckboxState",{checked:true});I=1}K.appendChild(new Element("strong").update(I));return K}.bind(this.view),onStart:function(){PBwiki.ObjectBrowser.dragging=true}})}if(((this.commandButtons["delete"]&&!this.commandButtons["delete"].isEnabled)||(this.commandButtons.move&&!this.commandButtons.move.isEnabled))&&H.dataObject.perms.d){this.commandButtons["delete"].enable();this.commandButtons.move.enable()}}.bind(this));if(D.length<10){var B=(D.length>0?D.last().down("td").getHeight():42);var A='<td colspan="'+this.view.columns.length+'">&nbsp;</td>';for(var C=D.length;C<10;C++){var E=new Element("tr").setStyle({height:B+"px"});this.tableContent.appendChild(E);E.update(A);if(C%2===1){E.addClassName("alternate")}E.down().setStyle({height:B+"px"})}}if(Prototype.Browser.Gecko){var F=this.tableContent.down();F.setStyle({height:F.getHeight()+"px"})}return this.tableContent},addObjectActions:function(A){var B=A.select("td.object").first();PBwiki.ObjectBrowser.Actions.each(function(E){if(E.hasPermission&&E.hasPermission(A,this.view)){var C=E.href?E.href(A,this.view):"";var D=new Element("a",{href:C}).update(E.txt).observe("click",function(F){F.stop();E.Execute(A,this.view)}.bindAsEventListener(this));B.appendChild(D);B.appendChild(document.createTextNode(" - "))}}.bind(this));if(B.lastChild.nodeValue==" - "){B.removeChild(B.lastChild)}},updateCommandBar:function(B,A){B.update("");B.appendChild(new Element("div",{className:"arrow"}).update("&nbsp;"));this.commandButtons={};A.each(function(G){if(G=="renamefolder"){B.appendChild(new Element("div",{className:"separator"}).update("&nbsp;"))}var D=PBwiki.ObjectBrowser.Commands[G];var C=Object.extend(D,{addTo:B,onClick:this.runCommand.bind(this,G),id:"command-bar-"+G});if(G=="foldersecurity"){var F;try{C.has_custom_perms=this.view.metadata.has_custom_perms}catch(E){}this.commandButtons[G]=new PBwiki.Components.FolderSecurityButton(C)}else{this.commandButtons[G]=new PBwiki.Components.Button(C)}if(D.hasPermission&&!D.hasPermission(this.view.permissions)){this.commandButtons[G].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})},refreshView:function(A){this.cancel();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});D.invoke("observe","change",function(E){E.element().fire("objectbrowser:setCheckboxState",{checked:E.element().checked});E.stop()});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");E.stop()}.bindAsEventListener(this));if(this.name!="ViewFileRevision"){A.select("tr").each(function(E){E.observe("mouseup",function(H){var G=H.target.tagName.toUpperCase();var F=H.findElement("tr").down("input");if(PBwiki.ObjectBrowser.dragging||G=="INPUT"||G=="A"||F.disabled){PBwiki.ObjectBrowser.dragging=false;return }if(!H.ctrlKey){PBwiki.ObjectBrowser.tableContent.select("input[type=checkbox]").invoke("fire","objectbrowser:setCheckboxState",{checked:false})}F.fire("objectbrowser:setCheckboxState",{checked:true});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?new Date(D*1000).strftime(PBconst.kPolicySimpleDateTimeFormat).toLowerCase():"";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);var A=Util.iconMap[B];if(A){E.icon=' class="'+A+'"'}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;");if(E.type!="file"){E.escapedURL=Util.dashified_link(E.name.toString())}else{E.escapedURL=encodeURIComponent(E.name.toString())}}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(E){if(typeof E!="object"){document.fire("objectbrowser:onNotifyUser",{message:"Invalid object in view: "+E,mode:"error"});return }E=this.setupDataRow(E);return"<tr>"+this.rowTemplates[E.type].evaluate(E)+"</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,revision:A.dataObject.revision,folder:A.dataObject.folder,parentRow:A,perms:A.dataObject.perms}},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="/f/#{escapedURL}">#{escapedName}</a><span class="file_size">#{size}</span></div></td><td><div>#{dateStr}</div><div class="aux_link">#{author_link}</div></td><td class="ob_security #{security}"><div title="#{security_msg}">&nbsp;</div></td><td class="center_align"><a href="" class="aux_link object_revision">#{revisions}</a></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></div></td><td><div>#{dateStr}</div><div class="aux_link">#{author_link}</div></td><td class="ob_security #{security}"><div title="#{security_msg}">&nbsp;</a></td><td class="center_align"><a href="" class="aux_link object_revision">#{revisions}</a></td>'},apiMethod:"GetObjects",menuCommands:["delete","move"],apiHandlers:{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:"Last changed",sortkey:"mtime",width:150},{name:" ",width:20},{name:"Revs",sortkey:"revcount",width:50,align:"center"}]});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}});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);Object.extend(this.refreshOptions,{folder:""});this.menuCommands=["delete","move"]},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></div></td><td><a href="" class="ob_folder_link">#{folderStr}</a></td><td><div>#{dateStr}</div><div class="aux_link">#{author_link}</div></td><td class="ob_security #{security}"><div title="#{security_msg}">&nbsp;</a><td class="center_align"><a href="" class="object_revision aux_link">#{revisions}</a></td>'},columns:[{name:"__checkbox__",align:"center",width:30},{name:"Name",sortkey:"name",reverse:false},{name:"Folder",width:95,sortkey:"folder"},{name:"Last changed",sortkey:"mtime",width:150},{name:" ",width:20},{name:"Revs",sortkey:"revcount",width:50,align:"center"}]});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" href="/f/#{escapedURL}" title="#{escapedName}">#{escapedName}</a><span class="file_size">#{size}</span></div></td><td><a href="" class="ob_folder_link">#{folderStr}</a></td><td><div>#{dateStr}</div><div class="aux_link">#{author_link}</div></td><td class="center_align"><a href="" class="object_revision aux_link">#{revisions}</a></td>'},columns:[{name:"__checkbox__",align:"center",width:30},{name:"Name",sortkey:"name",reverse:false},{name:"Folder",width:95,sortkey:"folder"},{name:"Last changed",sortkey:"mtime",width:150},{name:"Revs",sortkey:"revcount",width:50,align:"center"}]});PBwiki.ObjectBrowser.ViewFileRevision=Class.create(PBwiki.ObjectBrowser.ObjectView,{getRowRecords:function(A){return A.revisions},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}">#{dateStr}</a></div></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",width:420},{name:"Changed by",sortkey:"author_name",width:150},{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(5)}}});PBwiki.ObjectBrowser.FoldersList=Class.create({initialize:function(B,C){this.list=$(B);this.list.observe("click",function(E){if(E.element().tagName.toLowerCase()=="li"){var F=E.element()}else{var F=E.element().up("li")}if(F){F=F.down("a")}if(F&&!F.hasClassName("newfolder")&&F.tagName.toUpperCase()!="INPUT"){this.list.fire("objectbrowser:selectfolder",F.name)}E.stop()}.bind(this));var D=this.list.up().select("h3 a").first();var A=PBwiki.getCache("CheckPermissions");if(!A||!(A.wikiperm=="admin"||A.wikiperm=="mod")){D.setStyle({display:"none"})}else{D.observe("click",this.createNewFolder.bind(this))}document.observe("objectbrowser:createfolder",this.createNewFolder.bind(this));document.observe("objectbrowser:refreshfolderlist",function(){this.refresh()}.bind(this));PBwiki.APIRequest.observePostOp("GetTimes",function(F){var E=PBwiki.getCache("GetFolders")["_perm_cache_times"]["foldertime"];if(F.foldertime!=E&&!this.refreshingFolder){this.refresh()}}.bind(this));PBwiki.APIRequest.observePostOp("GetFolders",this.updateFolderDisplay.bind(this));this.refresh(C)},getActiveLink:function(A){return this.list.select("a").find(function(B){return(B.folderName==A)})},refresh:function(B){if(B){return this.updateFolderDisplay(B)}if(this.refreshingFolder){return }this.refreshingFolder=true;var A=new PBwiki.APIRequest("GetFolders",{verbose:true},{cacheability:["foldertime","permtime"]})},updateFolderDisplay:function(A){this.refreshingFolder=false;this.list.update("");Droppables.removeAll();A.folders.each(function(E){var D=(E.name.length>20?E.name.substring(0,18).escapeHTML()+"&hellip;":E.name.escapeHTML());var B=new Element("li",{"class":((E.perms["d"])?"candelete":"")});var F=new Element("a",{href:"/browse/#view=ViewFolder&param="+encodeURIComponent(E.name),name:E.name,title:E.name}).update(D);F.folderName=E.name;var C=new Element("span",{"class":"foldernum"}).update(E.count);if(E.has_custom_perms){B.addClassName("custom")}if(E.perms.w){Droppables.add(B,{onDrop:this.onObjectDrop.bind(this),hoverclass:"hover"})}B.onselectstart=function(){return false};B.appendChild(F);B.appendChild(C);this.list.appendChild(B)}.bind(this));Droppables.add(PBwiki.ObjectBrowser.majorViewLinks.ViewUnfiled(),{onDrop:function(B,D,C){if(D.hasClassName("active")){return }var E=PBwiki.ObjectBrowser.view.getSelectedObjects();PBwiki.ObjectBrowser.Commands.move.moveObjects(E,"")},hoverclass:"hover"});document.fire("objectbrowser:refreshsecurity");document.fire("objectbrowser:setactivelink");delete this.setActiveFolder},onObjectDrop:function(A,D,C){if(D.down("a").hasClassName("active")){return }var E=PBwiki.ObjectBrowser.view.getSelectedObjects();var B=D.down("a").name;PBwiki.ObjectBrowser.Commands.move.moveObjects(E,B)},activeFolderWasRenamedTo:function(A){this.list.select("li a.active").first().update(A.escapeHTML()).writeAttribute("name",A);this.setActiveFolder=A;this.refresh()},createNewFolder:function(B){B.stop();var A=new Element("input",{type:"text",className:"text",width:25,value:"New folder name"});this.list.insert({top:A.wrap("li",{className:"newfolder"})});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))},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()}}},submitFolderName:function(D){if(this.creatingFolder){return }this.creatingFolder=true;var A=D.element();var E=A.value.strip();var C=Util.is_valid_folder_name(E);if(C!==true){document.fire("objectbrowser:onNotifyUser",{message:C});A.select();this.creatingFolder=false;return }document.fire("objectbrowser:onNotifyUser",{message:"Creating '"+E.escapeHTML()+"'"});var B=new Array();B.push(["CreateFolder",{folder:E},{onFailure:function(F){document.fire("objectbrowser:onNotifyUser",{message:"Error. Folder '"+E+"' not created : "+F});document.fire("objectbrowser:refreshfolderlist")}}]);B.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);new PBwiki.MultiAPIRequest(B,{incUsess:true,onComplete:function(){this.creatingFolder=false}.bind(this),onAllComplete:function(F){if(!F.lastError){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+E.escapeHTML()+"' was created."});document.fire("objectbrowser:selectfolder",E)}},waitCursor: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.initialize.bind(PBwiki.ObjectBrowser));PBwiki.init(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+'" 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;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"){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(D,C){var B=new Array();D.each(function(E){var F={};F[E.type.toLowerCase()]=E.value;F.folder=C;if(C==""){F.remove=true;delete F.folder}B.push(["Set"+E.type+"Folder",F,{}])});var A=PBwiki.ObjectBrowser.view;B.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);B.push([A.apiMethod,A.refreshOptions,{counted:false}]);document.fire("objectbrowser:onNotifyUser",{message:"Moving&hellip;"});new PBwiki.MultiAPIRequest(B,{incUsess:true,onAllComplete:function(E){document.fire("objectbrowser:refreshcurrentview");var G=(C=="")?"out of this folder":"to folder '"+C.escapeTruncate()+"'";if(D.length==1){if(E.lastError){document.fire("objectbrowser:onNotifyUser",{message:"Failed to move '"+D[0].value.escapeTruncate()+"' "+G+". "+E.lastError,mode:"error"})}else{document.fire("objectbrowser:onNotifyUser",{message:"Successfully moved '"+D[0].value.escapeTruncate()+"' "+G})}}else{var F=(E.successful==E.total)?E.total:E.successful+" of "+E.total;document.fire("objectbrowser:onNotifyUser",{message:"Successfully moved "+F+" items "+G+". "+E.lastError})}},onFailure:function(F,E){document.fire("objectbrowser:onNotifyUser",{message:"Failed to move items. "+F,mode:"error"})}})},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("GetObjects",{verbose:true,detail:"partial",folder:A.displayTitle},{onSuccess:function(C){new PBwiki.DialogCommands.DeleteFolder({objects:C.objects,onConfirmation:B})}.bind(this),onFailure:function(){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+A.displayTitle+"' couldn't be deleted.",mode:"error"})},waitCursor:true});function B(){document.fire("objectbrowser:onNotifyUser",{message:"Deleting folder '"+A.displayTitle+"'&hellip;"});var C=new Array();C.push(["DeleteFolder",{folder:A.displayTitle,recurse:true},{onFailure:function(){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+A.displayTitle+"' couldn't be deleted.",mode:"error"})}.bind(this)}]);C.push(["GetFolders",{verbose:true},{cacheability:["foldertime","permtime"],counted:false}]);C.push(["GetStorageInfo",{},{cacheability:["filetime"]}]);new PBwiki.MultiAPIRequest(C,{incUsess:true,onAllComplete:function(D){document.fire("objectbrowser:onNotifyUser",{message:"Folder '"+A.displayTitle+"' was deleted."});document.fire("objectbrowser:select_viewallpages")}})}},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")},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"){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"){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;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}},uploadfile:{name:"uploadfile",txt:"Upload",Execute:function(A){new PBwiki.DialogCommands.UploadFiles({onUploaded:function(B,C){if(C){document.fire("objectbrowser:onNotifyUser",{message:"Error uploading files: "+C,mode:"error"})}else{if(B==0){document.fire("objectbrowser:onNotifyUser",{message:"Did not upload any files",mode:"error"})}else{document.fire("objectbrowser:onNotifyUser",{message:"Uploaded "+B+" file"+((B!=1)?"s":"")+" successfully"})}}document.fire("objectbrowser:upload_complete")},folder:(A.name=="ViewFolder")?A.options.parameter:""})},hasPermission:function(A){return A.w}}};PBwiki.ObjectBrowser.Actions=[{cmd:"edit",txt:"Edit",href:function(B,A){var C=A.getObjectInfo(B);return PBwiki.getEditURI(C.value)},Execute:function(B,A){var C=A.getObjectInfo(B);window.location=PBwiki.getEditURI(C.value)},hasPermission:function(B,A){var C=A.getObjectInfo(B);return(C.type=="Page"&&C.perms&&C.perms.w)}},{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.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+"'..."});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)}}]
/*
// 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.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={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={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,{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,{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,{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={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={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({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({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({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(){A.readonly=true;A.value="Saving..."})})};PBAdmin.Customization=function(){if(!$("customization")||!$("comments_disabled")||!$("comments_newest_first")||!$("comments_oldest_first")||!$("comments_nested_button")){return }$("comments_disabled").observe("change",function(F){F.stop();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("change",C);B[A].observe("click",C)}};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("change",A);$("wiki_viewers_invitees").observe("change",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)};PBwiki.init(PBAdmin.Backup);PBwiki.init(PBAdmin.BulkAccounts);PBwiki.init(PBAdmin.Colors.initialize.bind(PBAdmin.Colors));PBwiki.init(PBAdmin.API);PBwiki.init(PBAdmin.Users);PBwiki.init(PBAdmin.RequestAccess);PBwiki.init(PBAdmin.DisableSaveButtonOnClick);PBwiki.init(PBAdmin.License);PBwiki.init(PBAdmin.Customization);PBwiki.init(PBAdmin.Security);PBwiki.init(PBAdmin.Archive);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/%e/%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.createCalendar();this.calendar.hide();this.addObserver();this.populate()},addObserver:function(){document.observe("click",this.eventClick.bind(this));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));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"});document.body.insert({top: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(F){var G=this.weekdayNames[(F+this.weekOffset)%7];var E=new Element("th",{scope:"col",abbr:G}).update(G.substring(0,1));C.insert(E)}.bind(this));B.insert({bottom:C});this.calendar.insert(B);var A=new Element("tbody");(6).times(function(E){var F=new Element("tr");this.weekdayNames.length.times(function(H){var G=new Element("td");F.insert(G)});A.insert(F)}.bind(this));this.calendar.insert(A);this.calendarWrapper.insert(this.calendar);var D=this.updateElement.cumulativeOffset();this.calendarWrapper.setStyle({position:"absolute",left:D[0]+"px",top:D[1]+this.updateElement.getHeight()+"px"});return this},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;this.calendar.show()},hide:function(){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.Project=PBwiki.Project||{};PBwiki.Project.ActionCheckbox=Class.create({initialize:function(A){this.options=A;this.elm=A.elm;this.elm.observe("click",this.onClick.bind(this))},onClick:function(A){try{this.elm.blur();A.stop()}catch(A){}this.toggle();this.onChanged(this.isChecked())},setChecked:function(A){if(A){this.elm.addClassName("actcomplete")}else{this.elm.removeClassName("actcomplete")}this.onChanged(A)},toggle:function(){this.elm.toggleClassName("actcomplete")},onChanged:function(A){if(this.options.onChanged){this.options.onChanged(A)}},isChecked:function(){return this.elm.hasClassName("actcomplete")}});PBwiki.Project.APICheckbox=Class.create(PBwiki.Project.ActionCheckbox,{onChanged:function($super,C){$super(C);var B=C?"complete":"incomplete";var A={state:B};A[this.id]=this.options[this.id];new PBwiki.APIRequest("Update"+this.type,A,{onSuccess:function(D){if(this.options.onSuccess){this.options.onSuccess(this.isChecked(),D)}}.bind(this),onFailure:function(D){document.fire("project:onNotifyUser",{message:"Failed to set "+this.type+" state. "+D,mode:"error"});this.toggle();if(this.options.onFailure){this.options.onFailure(this.isChecked())}$super(this.isChecked())}.bind(this)})}});PBwiki.Project.TaskCheckbox=Class.create(PBwiki.Project.APICheckbox,{type:"Task",id:"task_id"});PBwiki.Project.MilestoneCheckbox=Class.create(PBwiki.Project.APICheckbox,{type:"Milestone",id:"milestone_id",onClick:function($super,A){A.stop();if(!this.isChecked()){new PBwiki.APIRequest("GetTasks",{milestone_id:this.options.milestone_id,state:"incomplete"},{onSuccess:function(C){if(C.tasks.length==0){$super(A);return }var D=C.tasks.pluck("title").join("\n");var B=C.tasks.pluck("task_id");if(!confirm("The following tasks will also be marked complete:\n"+D)){return }B.each(function(F){var E=$$("tr[task_id="+F+"] a.note");if(E.length>0){E[0].innerHTML=parseInt(E[0].innerHTML,10)+1}});$super(A)},onFailure:function(B){document.fire("project:onNotifyUser",{message:"Failed to complete milestone "+B,mode:"error"})},method:"get",cacheability:["milestonetime"]})}else{$super(A)}}});PBwiki.Project=PBwiki.Project||{};PBwiki.Project.ProjectView=Class.create({initialize:function(){if(!$("project-content")&&!$("project-milestones")){return }document.observe("event:task_add",this.addTask.bindAsEventListener(this));if(this.updateTask){document.observe("event:task_complete",this.updateTask.bindAsEventListener(this));document.observe("event:task_reopen",this.updateTask.bindAsEventListener(this));document.observe("event:task_comment",this.updateTask.bindAsEventListener(this));document.observe("event:task_edit",this.updateTask.bindAsEventListener(this))}document.observe("event:task_delete",this.deleteTask.bindAsEventListener(this));this.checkboxes=[];this.updateWindowTitle();PBwiki.Project.currentView=this},showUpdateLink:function(){var B=$("project-content");if(B.down(".reload")){return }var A='<a href="#" class="reload">Tasks have changed, new information is available</a>';B.insert({top:A});B.down(".reload").observe("click",function(C){window.location.reload();C.stop();return false}.bindAsEventListener(this))},addTask:function(A){var B=A.memo;if($$("tr[task_id="+B.id+"]").length==0){this.showUpdateLink()}},deleteTask:function(A){var C=A.memo;var B=$$("tr[task_id="+C.id+"]");if(B.length>0){B[0].addClassName("deleted");this.showUpdateLink()}},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"}}var B=this.getPageTitle();document.title=A+((B.length>0)?" / ":"")+B},getPageTitle:function(){return""}});PBwiki.Project.MilestoneView=Class.create(PBwiki.Project.ProjectView,{initialize:function($super){if(!$("project-content")||!$("project-milestones")){return }$super();this.milestones=$$("div.milestone");this.milestones.each(function(F){var G=F.getAttribute("milestone_id");var E=F.down("span.milestone-title").innerHTML.unescapeHTML();F.down("div.header").observe("click",function(H){F.toggleClassName("expanded").toggleClassName("collapsed");F.down("div.content").toggle();this.saveExpandState()}.bind(this));var C=F.down("a.project-milestone-action");if(C){C.observe("click",function(H){H.stop();new PBwiki.DialogCommands.NewAction({milestone_id:G})})}var D=F.down("a.milestone_edit");if(D){D.observe("click",function(I){I.stop();var H={milestone_id:G,title:E,due_date:F.getAttribute("due_date"),owner_id:F.getAttribute("owner_id")};new PBwiki.DialogCommands.EditMilestone(H)})}var B=F.down("a.milestone_delete");if(B){B.observe("click",function(H){H.stop();if(!confirm("You are about to permanently delete this milestone.\nWARNING! This will also delete all tasks within the milestone.")){return }new PBwiki.APIRequest("DeleteMilestone",{milestone_id:G},{onSuccess:function(I){new Effect.Fade(F);if($$("div.milestone").length==1){window.location.reload()}}.bind(this),onFailure:function(I){document.fire("project:onNotifyUser",{message:"Failed to delete milestone "+I,mode:"error"})},waitCursor:true})}.bind(this))}var A=F.down("a.milestone-complete");if(A){new PBwiki.Project.MilestoneCheckbox({elm:A,title:E,milestone_id:G,onSuccess:function(I,H){if(I){F.select("tr.task").invoke("addClassName","completed");F.select("a.action-checkbox").invoke("addClassName","actcomplete")}PBwiki.Project.updateCount(F);document.fire("project:onNotifyUser",{message:"'"+E.escapeHTML()+"' is now "+(I?"complete":"incomplete")})}})}},this);if(/MSIE 6/i.test(navigator.userAgent)){$$("div.milestone").each(function(A){var B=A.down("div.milestone_edit_delete");A.observe("mouseover",function(C){B.setStyle({visibility:"visible"})});A.observe("mouseout",function(C){if(!A.hasClassName("expanded")){B.setStyle({visibility:"hidden"})}})})}this.actions=$$("table.milestone-actions tr.task");this.actions.each(function(A){var D=A.getAttribute("task_id");var B=A.down("span.task_title");var C=A.down("a.action-checkbox");if(C){this.checkboxes[D]=new PBwiki.Project.TaskCheckbox({elm:A.down("a.action-checkbox"),task_id:D,title:B.innerHTML.escapeHTML(),onChanged:function(E){E?A.addClassName("completed"):A.removeClassName("completed");PBwiki.Project.updateCount(A.up("div.milestone"))},onSuccess:function(H,G){var E=A.down("a.note");var F=G.event_count-1;E.update(F);(F==0)?E.addClassName("note_disabled"):E.removeClassName("note_disabled")}.bind(this)})}},this)},updateTask:function(A){var C=A.memo;var B=$$("tr[task_id="+C.id+"]");if(B.length>0){new PBwiki.APIRequest("GetTask",{task_id:C.id},{onSuccess:function(E){this.checkboxes[C.id].setChecked(E.state=="complete");var H=B[0].down(".task_title");H.update(E.title);B[0].down(".notes a").update(E.event_count);var F=new Date(parseInt(E.due_date,10)*1000);B[0].down(".duedate").update(F.strftime(PBconst.kPolicyDateTaskViewFormat));if(E.owner){var D=B[0].down(".owner");D.show();D.down(".owner-name").update(Util.getAuthorNameFromObject(ouptut.owner).escapeHTML())}else{B[0].down(".owner").hide()}var G=B[0].up(".milestone");if(G.getAttribute("milestone_id")!=E.milestone_id){if(!B[0].down(".moved")){H.insert({after:' <span class="moved">(task has been moved)</span>'});this.showUpdateLink()}}}.bind(this)})}},saveExpandState:function(){PBwiki.UserPrefs.set(PBconst.kProjectExpandPrefsKey,$$("div.expanded").collect(function(A){return A.getAttribute("milestone_id")}))},getPageTitle:function(){return"Project Milestones"}});PBwiki.init(PBwiki.Project.MilestoneView);PBwiki.Project.updateCount=function(A){var B=A.select("tr.completed").length;var C=A.select("tr.task").length;A.down("span.action-count").update(B+"/"+C)};PBwiki.Project.ActionView=Class.create(PBwiki.Project.ProjectView,{initialize:function($super){if(!$("project-content")||!$("project-action")){return }var G=$("project-action");var B=G.getAttribute("task_id");var K=G.down("span.task_title")?G.down("span.task_title").innerHTML.escapeHTML():"";this.taskTitle=K.unescapeHTML();$super();var D=G.down("a.view-action-checkbox");if(D){new PBwiki.Project.TaskCheckbox({elm:D,task_id:B,title:K,onSuccess:function(){window.location.reload()}})}this.historyManager=PBwiki.History;this.historyToggle(this.historyManager.getKey("view").getValue());this.historyManager.start();this.historyManager.getKey("view").observe("onChange",this.historyToggle.bind(this));var F=$("project-action");if(F){F.observe("dblclick",this.historyManager.setItems.bind(this,{view:"edit"}))}new PBwiki.Project.ActionCheckbox({elm:G.down("a.edit-action-checkbox"),onChanged:function(M){$("action-checkbox-state").value=M?"complete":"incomplete"}});this.deleteLink=G.down("a.delete");if(this.deleteLink){this.deleteLink.observe("click",function(M){M.stop();if(!confirm("You are about to permanently delete this task and all comments.")){return }window.location="/project/action/delete/id/"+B})}var E=$("action-addlink");var J="Insert a link to a page or file";var L=$("action-link-title");var A=$("action-link-value");var I=$("action-link-type");var C=$("action-addlink-remove");E.observe("click",function(N){N.stop();var M=(E.innerHTML==J)?"":E.innerHTML.escapeHTML();new PBwiki.DialogCommands.InsertLink({sections:["page","file","url"],hideNewWin:true,txt:M,onSelect:function(O){L.value=O.txt;A.value=O.href;I.value=O.type;E.update(O.txt.escapeHTML());E.addClassName("iconbutton").addClassName("pagelined");C.show()}})});C.observe("click",function(M){M.stop();L.value=A.value="";E.update(J);E.removeClassName("iconbutton").removeClassName("pagelined");C.hide()});var H=$("action-comment");$("action-comment-form").observe("submit",function(M){if(!H.value&&!A.value){$("comment-error").show().down("strong").update("Your comment cannot be empty.");H.focus();M.stop();return }if(H.value.length>PBconst.kMaxTaskCommentLength){$("comment-error").show().down("strong").update("Comments cannot be more than "+PBconst.kMaxTaskCommentLength+" characters.");H.focus();M.stop()}});$("action-editor-form").observe("submit",function(N){var M=$("actionform_duedate");if(M.value==M.getAttribute("ui:placeholder")){M.value=""}});$$("div.right a.deleteicon").invoke("observe","click",function(N){N.stop();if(!confirm("You are about the permanently delete this comment, are you sure you want to continue?")){return }try{this.blur()}catch(N){}var M=this.up("div.action-update");var O=M.getAttribute("task_event_id");new PBwiki.APIRequest("DeleteTaskComment",{task_event_id:O},{onSuccess:function(P){new Effect.Fade(M)},onFailure:function(P){$("comment-error").show().down("strong").update(P)},waitCursor:true})})},historyToggle:function(A){if(A=="edit"){$("action-editor").show();$("action-reader").hide();if(!this.dateSelect){this.dateSelect=new MicroDateSelect("actionform_duedate")}}else{$("action-editor").hide();$("action-reader").show()}},getPageTitle:function(){return this.taskTitle}});PBwiki.init(PBwiki.Project.ActionView);PBwiki.Project.MonthView=Class.create(PBwiki.Project.ProjectView,{initialize:function($super){if(!$("project-content")||!$("project-months")){return }$super();this.actions=$$("table.month-actions tr.task");this.actions.each(function(A){var D=A.getAttribute("task_id");var B=A.down("span.task_title");this.taskTitle=B;var C=A.down("a.action-checkbox");if(C){this.checkboxes[D]=new PBwiki.Project.TaskCheckbox({elm:C,task_id:D,title:B.innerHTML.escapeHTML(),onChanged:function(E){E?A.addClassName("completed"):A.removeClassName("completed");PBwiki.Project.updateCount(A.up("table.month-actions"))},onSuccess:function(F,E){A.down("a.note").update(E.event_count)}})}},this);this.milestones=$$("table.month-actions tr.milestone");this.milestones.each(function(D){var E=D.getAttribute("milestone_id");var B=D.down("span.task_title");var C=D.down("a.action-checkbox");if(C){new PBwiki.Project.MilestoneCheckbox({elm:C,title:B,milestone_id:E,onSuccess:function(G,F){window.location.reload()}})}var A=D.down("a.action_edit");if(A){A.observe("click",function(G){G.stop();var F={milestone_id:E,title:B.innerHTML,due_date:D.getAttribute("due_date"),owner_id:D.getAttribute("owner_id")};new PBwiki.DialogCommands.EditMilestone(F)})}},this)},updateTask:function(A){var C=A.memo;var B=$$("tr[task_id="+C.id+"]");if(B.length>0){new PBwiki.APIRequest("GetTask",{task_id:C.id},{onSuccess:function(E){this.checkboxes[C.id].setChecked(E.state=="complete");var H=B[0].down(".task_title");H.update(E.title);B[0].down(".notes a").update(E.event_count);var F=new Date(parseInt(E.due_date,10)*1000);F=F.strftime(PBconst.kPolicyDateTaskViewFormat);if(F!=B[0].down(".duedate").innerHTML){if(!B[0].down(".moved")){H.insert({after:' <span class="moved">(due date has been changed)</span>'});this.showUpdateLink()}}B[0].down(".duedate").update(F);if(E.owner){var D=B[0].down(".owner");D.show();D.down(".owner-name").update(Util.getAuthorNameFromObject(ouptut.owner).escapeHTML())}else{B[0].down(".owner").hide()}var G=B[0].down(".month-milestone a");if(G){G.setAttribute("href","#milestone"+E.milestone_id);G.update(E.milestone_title)}}.bind(this)})}},getPageTitle:function(){return this.taskTitle}});PBwiki.init(PBwiki.Project.MonthView);PBwiki.init(function(){var A=$("project_userfilter");if(!A){return }A.observe("change",function(){window.location.href=A.options[A.selectedIndex].value})});PBwiki.Project.NetworkView=Class.create({initialize:function(){if(!$("network-actions")){return }this.actions=$$("table.upcoming-milestones tr.task");this.actions.each(function(B){var E=B.getAttribute("task_id");var C=B.down("span.task_title");var D=B.down("a.action-checkbox");if(D){new PBwiki.Project.TaskCheckbox({elm:D,task_id:E,title:C.innerHTML.escapeHTML(),onChanged:function(F){F?B.addClassName("completed"):B.removeClassName("completed")}})}},this);var A=$("upcoming_due_within");if(A){A.observe("change",function(B){window.location.href="/n/home/pref/weeks/"+A.options[A.selectedIndex].value})}}});PBwiki.init(PBwiki.Project.NetworkView);PBwiki.Project.UserNotification=Class.create({initialize:function(){if(!$("project_notify")){return }document.observe("project:onNotifyUser",this.handleUserNotificationEvent.bind(this));this.table=$("project_notify").down("table").hide();this.textSpan=$("project_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(5)}}});PBwiki.init(PBwiki.Project.UserNotification);PBwiki.DialogCommands.NewAction=Class.create(PBwiki.DialogCommands.APIDialog,{templateName:"newaction",title:"Create a new task",apiMethod:"CreateTask",initialize:function($super,A){Object.extend(A,{dimensions:{width:525}});$super(A)},setupDialog:function($super){if(this.options.title){this.inputs.title=this.options.title;$("new-action-dialog-title").writeAttribute("ui:placeholder","");$("new-action-dialog-title").value=this.inputs.title}$super();var A=$("actiondialog_duedate");new MicroDateSelect(A);this.loadUsersList(this.inputs.owner_id,{perm:"write"},null,true);this.loadMilestoneList(this.inputs.milestone_id,this.options.milestone_id);this.inputs.milestone_id.observe("change",this.updateActionAdvice.bind(this));$("finish-creating-actions").observe("click",function(B){if(this.options.quicktask){document.fire("dialog:close")}else{window.location.reload()}}.bind(this));this.addAnother=$("save-add-another");this.addAnother.observe("click",function(D){D.stop();var B=this.getInputs();var C=this.validate(B);if(C!==true){this.setError(C);return }this.addAnother.writeAttribute({disabled:true});new PBwiki.APIRequest(this.apiMethod,B,{onSuccess:function(E){this.setError("");this.addAnother.writeAttribute({disabled:false});new Effect.Highlight(this.active,{duration:0.5,startcolor:"#cccccc",endcolor:"#ffffff"});$("action-created").show();$("new-action-dialog-title").value="";$("new-action-dialog-title").focus();if(!this.onDialogClose){this.onDialogClose=document.observe("dialog:closed",function(){if(!this.options.quicktask){window.location.reload()}})}}.bind(this),onFailure:function(E){this.addAnother.writeAttribute({disabled:false});this.onFailure(E)}.bind(this),waitCursor:true})}.bind(this));$("new-action-dialog-title").focus()},updateActionAdvice:function(){var A=this.inputs.milestone_id.options[this.inputs.milestone_id.selectedIndex].getAttribute("due_date");if(A){var B=new Date();B.setTime((parseInt(A)+(B.getTimezoneOffset()*60))*1000);$("action-milestone-date").update(B.strftime(PBconst.kPolicyDateTaskEditFormat));$("action-advice").show()}else{$("action-advice").hide()}},loadMilestoneList:function(B,A){new PBwiki.APIRequest("GetMilestones",{},{onSuccess:function(F){var E=F.milestones;var C="Miscellaneous";if(E.length==0){if(this.options.quicktask){new PBwiki.APIRequest("CreateMilestone",{title:C},{onSuccess:function(H){var I=new Element("option",{value:H.id,due_date:""}).update(C);B.appendChild(I);I.selected=true}.bind(this),onFailure:function(H){document.fire("dialog:close")},waitCursor:true})}else{document.fire("dialog:close");document.fire("project:onNotifyUser",{message:"First add a milestone to begin adding tasks",mode:"error"})}return }for(var D=0;D<E.length;D++){var G=new Element("option",{value:E[D].milestone_id,due_date:E[D].due_date||""}).update(E[D].title.escapeHTML().substr(0,40));B.appendChild(G);if(E[D].milestone_id==A||(G.text==C&&this.options.quicktask)){G.selected=true}}this.updateActionAdvice()}.bind(this),onFailure:this.setError.bind(this),method:"get",cacheability:["milestonetime"]})},onSuccess:function(B){if(this.options.quicktask){document.fire("dialog:close");if(PBwiki.currentEditor){var A='<img class="pluginslug" src="/plugin_helper.php?plugin=task&amp;taskid='+B.id+'" alt="" />';PBwiki.currentEditor.editor.execCommand("mceInsertContent",false,A)}else{document.fire("ui:onNotifyUser",{message:"Task #"+B.id+" created",mode:"success"})}}else{window.location.href="/project/action/index/id/"+B.id}return true},validate:function(A){var B=Util.is_valid_action_name(A.title);if(B!==true){this.inputs.title.focus();return B}if(!A.milestone_id){this.inputs.milestone_id.focus();return"Choose a milestone for this task"}return true}});PBwiki.DialogCommands.NewMilestone=Class.create(PBwiki.DialogCommands.APIDialog,{templateName:"newmilestone",title:"Create a new milestone",apiMethod:"CreateMilestone",setupDialog:function($super){$super();this.loadUsersList($("milestone-user-list"),{perm:"write"},null,true);var A=$("milestonedialog_duedate");new MicroDateSelect(A)},getInputs:function($super){var A=$super();return A},validate:function(A){var B=Util.is_valid_milestone_name(A.title);if(B!==true){return B}return true},onSuccess:function(A){window.location.reload();return true}});PBwiki.DialogCommands.EditMilestone=Class.create(PBwiki.DialogCommands.APIDialog,{templateName:"newmilestone",title:"Edit milestone",apiMethod:"UpdateMilestone",addInputTexts:function(){},setupDialog:function($super){$super();this.loadUsersList($("milestone-user-list"),{perm:"write"},this.options.owner_id);var A=$("milestonedialog_duedate");new MicroDateSelect(A);if(parseInt(this.options.due_date)){var B=new Date();B.setTime((parseInt(this.options.due_date)+(B.getTimezoneOffset()*60))*1000);this.inputs.due_date.value=B.strftime(PBconst.kPolicyDateTaskEditFormat)}this.inputs.title.value=this.options.title},validate:function(A){var B=Util.is_valid_milestone_name(A.title);if(B!==true){return B}return true},getInputs:function($super){var A=$super();A.milestone_id=this.options.milestone_id;if(!A.due_date){A.due_date=""}if(!A.owner_id){A.owner_id=""}return A},onSuccess:function(A){window.location.reload();return true}});