var _comments={};
var _commentsFeature={};
var _featureId="";
var _commentId="";
var _page="";
function closeComments(C,D,B){doComment();
var A=function(E){ug.reload()
};
ug.rpc("CommentRpc.setClosed",{feature:C,item:D,closed:B},A)
}function commentsFeatureInit(B,A){_commentsFeature[B]={name:A}
}function commentsInit(A){_featureId=A.featureId;
_commentId=A.commentId;
_page=A.item;
Ext.apply(_comments,A,{open:{}});
tinyMCE_GZ.init({page_name:"tinymce.js",themes:"advanced",plugins:"underground",languages:"en,zh"},function(){tinyMCE.init({strict_loading_mode:true,theme:"advanced",plugins:"underground,spellchecker",lobj_settings:Ext.apply({ug:ug},A),spellchecker_languages:("US"=="UK"||"US"=="AU")?("+English (UK)=en_UK, English (US)=en_US"):("+English (US)=en_US, English (UK)=en_UK"),spellchecker_rpc_url:"/control/spell",language:"en",browsers:"msie,gecko,safari",dialog_type:"modal",relative_urls:false,width:"100%",height:"150",body_class:"cp_editContent cp_userContent",content_css:ug.staticUrl+"/styles/underground.css"+(ug.themeUrl?","+ug.themeUrl+"/theme.css":""),add_unload_trigger:false,add_form_submit_trigger:false,theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_buttons0:"",theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,spellchecker,separator,undo,redo,separator,bullist,numlist,separator,link",theme_advanced_buttons2:"",setupcontent_callback:ug.tinymceTabIndexSetter(1),init_instance_callback:function(B){ug.tinymceUriCleanupInit(B);
if(ug.getValue("addComment-subject")!=""){B.focus()
}}})
})
}function deleteComment(B,C,D){var A=function(){var E=function(F){if(F.commentClosed=="true"){ug.alert(null,{title:"Comments Closed",message:"Commenting has been closed on this item.",okay:"OK"})
}if(F.childCount==0){delete _comments.open["Comment-"+C+"-"+F.parent]
}loadComments(F)
};
ug.rpc("CommentRpc.removeComment",{feature:C,comment:D},E)
};
ug.confirm(B,{title:"Delete Comment",message:"Are you sure you want to delete this comment?",okay:{text:"Delete",handler:A},cancel:"Cancel"})
}function loadReplies(A,B){loadComments({feature:A,item:B,reply:true})
}function loadComments(E){var D=E.feature,H=E.item||E.parent;
var F=Ext.get("commentsDiv_Home-"+D+"-"+H);
if(!F){return 
}if(E.childCount==null||E.childCount>0){_comments.open["Comment-"+D+"-"+H]=H
}var B=function(I){var K=Ext.getDom("commentsDiv_Home-"+D+"-"+H);
var J=Ext.getDom("addComment-form");
do{J=J.parentNode
}while(J&&(J!=K));
if(J){doComment()
}ug.update(K,I);
for(var M=K.firstChild;
M;
M=M.nextSibling){var L=M.id&&_comments.open[M.id];
if(L){loadComments({feature:D,item:L,handler:E.handler,reply:true})
}}if(E.handler){E.handler(H)
}ug.layout()
};
ug.rpc("CommentRpc.loadComments",{feature:D,item:H},B);
F.setStyle("display","block");
ug.scrollIntoView(F);
var C=Ext.get("commentsDiv_Show-"+D+"-"+H);
if(E.reply){C.setStyle("display","none");
Ext.get("commentsDiv_Close-"+D+"-"+H).setStyle("display",(E.childCount!=0)?"inline":"none")
}if((E.childCount!=null)&&(E.childCount>=0)){var A=C.child("a");
var G=E.reply?"Show Replies ({0})":(_commentsFeature[D].name+" ({0})");
A.set({title:String.format(G,E.childCount)});
A.update(String.format(G,E.childCount))
}}function hideComments(A,B){delete _comments.open["Comment-"+A+"-"+B];
Ext.get("commentsDiv_Home-"+A+"-"+B).setStyle("display","none");
Ext.get("commentsDiv_Show-"+A+"-"+B).setStyle("display","inline");
Ext.get("commentsDiv_Close-"+A+"-"+B).setStyle("display","none");
ug.layout()
}var activeFeature,activeComment,activeMode;
function doComment(O,A,F){if((activeFeature!=O)||(activeComment!=A)||(activeMode!=F)){var C=Ext.getDom("addComment-body");
var B=Ext.getDom("addComment-subject");
if(activeComment){tinyMCE.execCommand("mceRemoveControl",true,"addComment-body");
Ext.fly("addComment-"+activeFeature+"-"+activeComment).show();
C.value="";
B.value="";
if(activeMode=="edit"){Ext.getDom("commentBody-"+activeFeature+"-"+activeComment).style.display="block"
}ug.showMsg("addComment:subject:validation")
}activeFeature=O;
activeComment=A;
activeMode=F;
var D=Ext.getDom("addComment-form");
if(A){var E="-"+O+"-"+A;
var G="",I=null,L;
var L;
var M=Ext.getDom("commentSubject"+E);
var J=M&&(M.innerText||M.textContent);
if(F=="edit"){L=Ext.getDom("commentEdit"+E);
I=J;
var N=Ext.getDom("commentBody"+E);
G=N.innerHTML;
N.style.display="none"
}else{L=Ext.getDom("commentAnswer"+E);
if(F=="reply"){I=String.format("Re: {0}",J)
}}L.appendChild(D);
tinyMCE.execCommand("mceAddControl",true,"addComment-body");
if(I||G){C.value=G;
B.value=I
}else{B.focus()
}Ext.fly("addComment"+E).enableDisplayMode().hide();
ug.scrollIntoView(D)
}else{var H=Ext.getDom("commentAnswer-home");
H.appendChild(D)
}var K=function(){tinymce.execCommand("mceFocus",false,"addComment-body")
};
Ext.get("addComment-subject").addKeyListener(13,K);
ug.layout()
}}function submitComment(){var G=activeComment;
var D=activeFeature;
tinyMCE.triggerSave();
var B=Ext.getDom("addComment-body").value;
var C=Ext.getDom("addComment-subject").value;
var A=function E(H){if(H.commentClosed=="true"){ug.alert(null,{title:"Comments Closed",message:"Commenting has been closed on this item.",okay:"OK"})
}ug.showMsg("addComment:subject:validation",H.errors&&H.errors.subject);
ug.showMsg("addcomment:body:validation",H.errors&&H.errors.body);
if(H.status!="invalid"){doComment();
loadComments(H||G)
}};
var F=(activeMode=="edit")?"CommentRpc.updateComment":"CommentRpc.createComment";
ug.rpc({rpc:F,params:{feature:D,item:G,subject:C,body:B},callback:A,disable:"comment-submit,comment-cancel"})
}function showPermacomment(){if(_commentId!=null&&_featureId!=null){var A=function(D){if(D.path){for(var E=0;
E<D.path.length-1;
++E){_comments.open["Comment-"+_featureId+"-"+D.path[E]]=D.path[E]
}var C=Ext.get("commentsDiv_Show-"+_featureId+"-"+_page);
var B=C.child("a");
showFeatureTab(B,_featureId,_page,"comments")
}};
ug.rpc("CommentRpc.getPath",{item:_featureId,feature:_featureId,comment:_commentId},A)
}}ug.onReady(showPermacomment);
var _tags=[];
function tagsInit(B,A){_tags[B]={};
Ext.apply(_tags[B],A)
}function showEditTagsDialog(J,I,G,L){var A=_tags[G];
var D,C,M;
var K=function(){var O="";
if(M){for(var P=0;
P<M.length;
P++){if(M[P].checked){O+=M[P].inputValue+","
}}}else{O=C.getValue()
}var N=function(Q){ug.ppr({render:["tagsDiv-"+I+"-"+G,"sidelet-feature-"+G],params:{item:I}});
D.hide()
};
ug.rpc({rpc:"TagsRpc.setTags",disable:D,params:{tags:O,context:A.site,item:I,feature:G},callback:N});
return false
};
var E=new Ext.form.Label({text:A.instructions||"???tag_editTags_instructions_html???"});
C=new Ext.form.TextField({maxLength:"255",allowBlank:true,hideLabel:true,msgTarget:"side",width:260,value:(L=="")?"":(L+", ")});
var H=[];
if(A.taxonomy&&(A.taxonomy!="")){M=[];
for(var F=0;
F<A.taxonomy.length;
F++){M.push(new Ext.form.Checkbox({inputValue:A.taxonomy[F],boxLabel:A.taxonomy[F],hideLabel:true,checked:(L.indexOf(A.taxonomy[F])!=-1)}));
H=[M]
}}else{H=[E,C]
}var B=new Ext.form.FormPanel({items:H,bodyStyle:"padding:10px",onSubmit:function(N){N.stopEvent();
K()
}});
D=new ug.Dialog({id:"addTagsDialog-"+I+"-"+G,title:A.title||"???tag_tags_editTags_title_default???",autoScroll:true,width:300,destroyOnHide:true,items:B,defaultButton:C,okay:{text:"Submit",handler:K},cancel:"Cancel"});
D.show(J)
};
ug.onButton=function(B,A){return function(C){if(C==B){A()
}}
};
ug.statusCallbacks=function(A){return function(C){var B=A[C.status];
B&&B(C)
}
};
ug.acquireLock=function(D,B,A){var C={ok:A,locked:function(E){if(E.breakable){ug.confirmStealLock(D,E,A)
}else{ug.alert(null,{title:D,message:String.format("This item is currently locked for edit by {0} (edit started {1}).",E.lockUser,E.lockTime),okay:"OK"})
}}};
ug.rpc("Lock.acquireLock",{item:B},ug.statusCallbacks(C))
};
ug.confirmStealLock=function(D,A,B){var C=function(){ug.rpc("Lock.stealLock",{item:A.item,lock:A.lock},B)
};
ug.confirm(null,{title:D,message:String.format("This item is currently locked for edit by {0} (edit started {1}). Please click Cancel to abandon this operation, or Break Lock to break their lock on the item.",A.lockUser,A.lockTime),defaultButton:"cancel",okay:{text:"Break Lock",handler:C},cancel:"Cancel"})
};
ug.confirmOverwrite=function(D,A,B){var C=function(){_editLock.firstSave=true;
_editLock.version=A.version;
B()
};
ug.confirm(null,{title:D,message:String.format("This item has been modified since you started editing (last edited by {0} {1}). Please click Cancel to abandon this operation, or Overwrite to overwrite these changes.",A.editUser,A.editTime),defaultButton:"cancel",okay:{text:"Overwrite",handler:C},cancel:"Cancel"})
};
var _editLock={};
function editLock_init(A){Ext.apply(_editLock,A,{firstSave:true,lastSave:false});
ug.onCancel=function(B,C){if(!_editLock.lastSave){_editLock.lastSave=true;
ug.rpc(_editLock.unlock,{item:_editLock.item,purge:(C!==false)&&_editLock.isNew},B)
}};
Ext.EventManager.on(window,"beforeunload",function(){if(!ug.dirty){ug.onCancel(Ext.emptyFn,false)
}});
touchLock()
}function editLock_fail(B){var A=function(){document.location.href=B.path
};
ug.onReady(function(){ug.alert(null,{title:"Missing Edit Lock",message:"You do not have a valid edit lock on this item. You will automatically be returned to view mode.",okay:{text:"OK",handler:A}})
})
}function touchLock(){var A={ok:function(B){_editLock.touchTimeout=setTimeout(touchLock,180000)
},locked:function(B){if(!_editLock.lastSave){_editLock.broken=true;
ug.alert(null,{title:"Edit Lock Broken",message:String.format("Your edit lock on this item has been broken by {0} (edit started {1}).",B.lockUser,B.lockTime),okay:"OK"})
}}};
_editLock.touchTimeout=null;
if(!_editLock.lastSave){ug.rpc("Lock.touchLock",{item:_editLock.item,lastModified:ug.lastModified},ug.statusCallbacks(A))
}}function performFinalEdit(A){_editLock.lastSave=true;
performEdit(A)
}function performEdit(C){for(var F=0;
F<_editLock.elements.length;
++F){var H=_editLock.elements[F];
ug.showMsg(_editLock.form+":"+H+":validity")
}var B={invalid:function(K){for(var L in K.errors){ug.showMsg(_editLock.form+":"+L+":validity",K.errors[L])
}},locked:function(K){ug.confirmStealLock(_editLock.title,K,performEdit)
},changed:function(K){ug.confirmOverwrite(_editLock.title,K,performEdit)
},ok:function(K){ug.setClean();
_editLock.isNew=false;
if(_editLock.lastSave){if(C){C(K)
}else{window.location=K.path
}}else{_editLock.firstSave=false;
_editLock.version=K.version;
ug.showMsg(_editLock.statusEl,K.statusMsg);
if(_editLock.broken){_editLock.broken=false;
touchLock()
}if(C){C.call(K)
}}}};
var D=Ext.apply({first:_editLock.firstSave,last:_editLock.lastSave,version:_editLock.version},_editLock.baseData);
var I=_editLock.form;
var A=document.forms[I];
for(var F=0;
F<_editLock.elements.length;
++F){var J=_editLock.elements[F];
var E=A.elements[I+":"+J];
var G;
if(E.type=="checkbox"){G=E.checked
}else{G=E.value
}D[J]=G
}ug.rpc({rpc:_editLock.proc,params:D,callback:ug.statusCallbacks(B),disable:"button-okay,button-save,button-cancel"})
};
ug.deleteItem=function(I,F,H,C,B){var D=function(M,L){var K={ok:function(N){B(N)
},locked:function(N){ug.confirmStealLock("Delete Item",N,function(){D(null,L)
})
}};
C.purge=L;
ug.rpc({rpc:H,params:C,dialog:M&&M.findParentByType(ug.Dialog),callback:ug.statusCallbacks(K)})
};
var E=function(K){D(K,false)
};
var A=function(){ug.confirm(I,{title:"Purge Item",message:"This operation cannot be undone. Are you sure you want to purge this item?",cancel:{text:"Purge",handler:function(K){D(K,true)
},autoHide:false},okay:"Cancel"})
};
var G={text:"Delete",autoHide:false,handler:E};
var J={text:"Purge",autoHide:true,handler:A};
ug.confirm(I,{title:"Delete Item",message:F?"Click Delete to mark this item as deleted, or Purge to permanently delete it from the system.":"Click Delete to delete this item.",okay:F?[G,J]:G,cancel:"Cancel"})
};
function createNavigationTree(D){var F=Ext.extend(Ext.tree.TreeLoader,{createNode:function(H){var G={id:H.id,text:ug.escape(H.title),leaf:!D.enableDD&&!H.children&&!H.childCount,children:(H.childCount==0)?[]:H.children,expanded:D.enableDD||(H.children!=null),cls:"wiki-page-node"};
if(H.id==D.cf.home){G.cls+=" wiki-home"
}if(H.deleted){G.cls+=" deleted"
}if(this.hyperLink){if(H.id==D.cf.page){G.cls+=" current-page"
}else{G.href=H.url
}}return F.superclass.createNode.call(this,G)
}});
var B=new F({dataUrl:"/control/dynamic/Hierarchy.getChildren",baseParams:{context:D.cf.wiki,formCookie:ug.formCookie},hyperLink:D.hyperLink});
var A=new Ext.tree.TreePanel({renderTo:D.renderTo,baseCls:D.baseCls||"x-panel",enableDD:D.enableDD,useArrows:true,autoScroll:D.autoScroll,animate:true,containerScroll:true,height:D.height,loader:B,root:new Ext.tree.TreeNode({id:D.showRoot?"root":D.cf.wiki}),rootVisible:false});
A.root.beginUpdate();
if(D.showRoot){A.root.appendChild(new Ext.tree.TreeNode({text:"Wiki",id:D.cf.wiki,cls:"wiki-node"}))
}if(D.cf.hierarchy){for(var E=0;
E<D.cf.hierarchy.length;
++E){A.root.appendChild(B.createNode(D.cf.hierarchy[E]))
}}if(D.showHidden){var C=new Ext.tree.TreeNode({text:"Non-navigable",id:"none",cls:"wiki-hidden-node",expanded:true});
A.root.appendChild(C);
if(D.cf.nonNavigable){for(var E=0;
E<D.cf.nonNavigable.length;
++E){C.appendChild(B.createNode(D.cf.nonNavigable[E]))
}}}A.root.endUpdate();
return A
};
var _viewWiki={showConfig:{}};
function viewWikiInit(A){Ext.apply(_viewWiki,A);
commentsInit({item:A.page,featureId:A.featureId,commentId:A.commentId})
}function showContent(A,B){if(A){_viewWiki.showConfig=A
}else{Ext.apply(_viewWiki.showConfig,B)
}ug.ppr("siteContent",_viewWiki.showConfig)
}function newPage(A){if(!_viewWiki.newPageDialog){var B=function(){var C=function(E){ug.showMsg("newPage:title:validation",E.errors&&E.errors.title);
if(E.status!="invalid"){_viewWiki.newPageDialog.disable();
document.location.href=E.path+"!edit?mode=new"
}else{_viewWiki.newPageDialog.resetButtons()
}};
_viewWiki.newPageDialog.disableButtons();
var D=_viewWiki.parentTree.getSelectionModel().getSelectedNode().id;
ug.rpc("WikiRpc.newPage",{wiki:_viewWiki.wiki,title:document.forms.newPageForm.title.value,parent:(D=="none")?null:D},C)
};
ug.initForm("newPage-form",B);
_viewWiki.parentTree=createNavigationTree({renderTo:"newPage-tree",height:128,hyperLink:false,cf:_viewWiki,showRoot:true,autoScroll:true});
_viewWiki.parentTree.root.firstChild.select();
_viewWiki.newPageDialog=new ug.Dialog({id:"newPageDialog",title:"Add New Page",width:280,defaultButton:ug.asCmp("newPage-title"),contentEl:"newPage",okay:{text:"Continue",handler:B},cancel:"Cancel"})
}_viewWiki.newPageDialog.show(A)
}function lockPage(A){ug.rpc("WikiRpc.lockPage",{wiki:_viewWiki.wiki,page:_viewWiki.page,locked:A},ug.reload)
}function editPage(A){var B=function(C){document.location.href=C.path+"!edit"
};
ug.acquireLock("Edit Page",_viewWiki.page,B)
}function deletePage(B,C){var A=function(D){document.location.href=D.path
};
ug.deleteItem(B,C,"WikiRpc.deletePage",{wiki:_viewWiki.wiki,page:_viewWiki.page},A)
}function showAllContributors(A){ug.ppr({render:"contributors",params:{showAllContributors:A}})
}ug.onReady(function(){if(Ext.getDom("navigation-tree")!=null){var A=createNavigationTree({renderTo:"navigation-tree",baseCls:"navigation-tree",hyperLink:true,cf:_viewWiki})
}});

