function FolderTree(cH,opts){var selectedFolder=false,aZ=false,tree=$(cH),observers={},O={};O={tpl:new Template('<a class="link"><span class="overlay"></span><img src="/Assets/Default/Images/x.gif" width="16px" height="16px" class="toggle" /><img src="/Assets/Default/Images/x.gif" width="16px" height="16px" class="icon small #{icon}" /><span class="label">#{name}</span></a>')};Object.extend(O,opts||{});var name,eventName;for(eventName in O){if(!(eventName.startsWith('on')||eventName.include('/on')))continue;name=eventName.substring(2).toLowerCase();observers[eventName]=O[eventName].bind(this);if(/^(?:click|mouseover|hover|contextmenu)$/.test(name)){tree.observe(name,observers[eventName]);}else{tree.observe('tree:'+name,observers[eventName]);}}tree.observe('click',function(event){if(event.findElement('.toggle')){showHideNode(Event.findElement(event,'li'));}else if(event.findElement('a.link')){if(event.which&&event.which>1)return;var node=Event.findElement(event,'li');cp(node);tree.fire('tree:nodeselected',{data:node.nsData,event:event});if(event.stopped){node.addClassName('tree_open').removeClassName('tree_closed');}else{showHideNode(node);}}return event.stop();});this.initTree=function(gX,fD){aZ=gX;tree.addClassName('tree_root');cp();tree.update();tree.fire('tree:populatenode');if(fD&&fD.selectNode&&this.selectNode(fD.selectNode))return;if(fD&&fD.noPopulate)return;this.eh();};this.eh=function(){if(tree.firstChild)return;cT(aZ,tree);};this.aY=function(id){var node=w(id);if(!node)return;return node.hasClassName('tree_closed');};this.isOpen=function(id){var node=w(id);if(!node)return;return node.hasClassName('tree_open');};this.showHideNode=function(id){var node=w(id);if(!node)return;showHideNode(node);};this.cp=cp;this.selectedFolderId=function(){return selectedFolder?selectedFolder.nsData.id:false;};this.aZ=function(){return aZ;};this.updateNode=function(update){var node=w(update.id);if(!node)return;P(node,update);};this.P=function(eH,node){if(O.containerOnly&& !node.container)return;var B=w(eH);if(B&&B.tagName=='LI'){var parent=B;B=parent.down('ul');}if(!B)return;P(B,node);};this.removeNode=function(id){var node=w(id);if(!node)return;if(selectedFolder&&node==selectedFolder)cp();node.remove();tree.fire('tree:removenode',{id:id});};this.refreshNode=function(id){var node=w(id);if(!node)return;var list=node.getElementsByTagName('UL')[0];if(!list)return;var fD={};if(selectedFolder&&selectedFolder.ancestors().any(function(Q){return list==Q})){fD.selectNode=selectedFolder.nsData.id;cp();}list.remove();cT(node.nsData.id,node,fD);};this.populateNode=function(dir,fD){var node=w(dir.id);if(!node)return;if(!(fD&&fD.force)&&dir.pages>1&& !(dir.container==1&&dir.page==1&& !dir.orderBy&& !dir.orderDirection&& !dir.node.last().container)){if(node.hasClassName('tree_open')){return cT(dir.id,node);}else{return;}}populateNode(node,dir);};this.selectNode=function(dir){if(this.selectedFolderId()==dir.id)return;var node=w(dir.id);if(node)return selectNode(node);cp();if(dir.path&&dir.path.reverse().any(function(elem){node=w(elem.id);if(!node)return false;cT(dir.id,node,{selectNode:dir.id,pathTo:elem.id});return true;}))return true;return false;};function w(id){if(aZ==id)return tree;return $(gn(id));};function gn(id){return cH+'-'+id;};function P(B,node){var li,ha=gn(node.id);if(B.id==ha){li=B;li.childElements().reject(function(e){return e.tagName=='UL'}).invoke('remove');$w(li.className).each(function(name){if(name=='tree_open'||name=='tree_closed')return;li.removeClassName(name);});}else{li=new Element('li',{id:ha,className:'tree_closed'});B.insert(li);}if(node.floor)li.addClassName('floor');li.nsData=node;li.showHideNode=showHideNode;li.insert({top:O.tpl.evaluate(node)});tree.fire('tree:addnode',{li:li,node:node});if(node.open&&li.hasClassName('tree_closed'))showHideNode(li);return li;};function showHideNode(node){if(!node)node=this;if(node.nsData.floor){cp(node);}else if(node.hasClassName('tree_closed')){node.addClassName('tree_open').removeClassName('tree_closed');var ul=node.getElementsByTagName('UL')[0];if(!ul)cT(node.nsData.id,node);}else{node.addClassName('tree_closed').removeClassName('tree_open');}};function cp(node){if(selectedFolder)selectedFolder.down('a').removeClassName('selected');selectedFolder=node&&node!=tree?node:false;if(!selectedFolder)return;node.down('a').addClassName('selected');};function cT(da,B,fD){var pathTo=fD&&fD.pathTo?fD.pathTo:null;var containerOnly=fD&&fD.containerOnly?fD.containerOnly:(O.containerOnly||null);new Ajax.Request('/Pages/ListDir'+(da.startsWith('/')?'':'/')+da,{onlyLatestOfClass:'folderTree-'+cH,parameters:{noPage:1,noStats:1,textContent:0,containerOnly:containerOnly,pathTo:pathTo,columns:(O.columns||null)},onSuccess:function(transport){var dir=transport.responseText.evalJSON(true);makeUrisAbsolute(dir);if(!dir.node||dir.error)return;dir.path.each(function(elem,i){if(!elem.node|| !B)return;makeUrisAbsolute(elem);var ul=populateNode(B,elem);var hm=dir.path[i+1].id;B=ul.childElements().find(function(bQ){return bQ.nsData.id==hm});});if(B)populateNode(B,dir);if(fD&&fD.selectNode&& !selectedFolder){var node=w(fD.selectNode);if(node)selectNode(node);};}});};function makeUrisAbsolute(dir){for(var i=0,len=dir.node.length;i<len;i++){var nodeUri=dir.node[i].uri;if(nodeUri&& !nodeUri.startsWith('/'))dir.node[i].uri=dir.uri?dir.uri+nodeUri:null;}};function populateNode(B,data){if(B.id==cH&&B.firstChild)return B;if(B.tagName=='LI'){var hp=B.getElementsByTagName('UL');if(hp.length>0)return hp[0];var li=B;B=new Element('ul');li.insert(B);}tree.fire('tree:data',{'data':data,'B':B});data.node.each(function(node){if(O&&O.containerOnly&& !node.container)return;P(B,node);});return B;};function selectNode(node){cp(node);var parent=node.up('.FolderTree ul');while(parent&&parent.id!=cH){var li=parent.parentNode;li.removeClassName('tree_closed').addClassName('tree_open');li.down('a').select('img').invoke('removeClassName','tree_closed').invoke('addClassName','tree_open');parent=li.up('.FolderTree ul');}var viewport=$(cH).parentNode;dw(viewport,node,{paddingLeft:80,paddingTop:40});return true;}}