function FolderTree(cH,O){var I='/Assets/Default/Images/FileTypes/Small/';var aL='Folder.gif';var selectedFolder=false;var aZ=false;var tree=$(cH);this.initTree=function(gX,fD){aZ=gX;tree.addClassName('tree_root');cp();tree.update();if(fD&&fD.populateNode)this.populateNode(fD.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();if(O&&O.eX)O.eX(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;var 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');if(node.overlays)node.overlays.each(function(overlay){li.addClassName(overlay);});li.nsData=node;li.showHideNode=showHideNode;var a=new Element('a',{className:'link'});var fV=new Element('img',{src:'/Assets/Default/Images/x.gif',className:'cross tree_closed'}).observe('click',ge);var icon=new Element('img',{src:'/Assets/Default/Images/x.gif',className:'icon small tree_closed '+node.icon}).observe('click',aa);Event.observe(a,'contextmenu',am);Event.observe(a,'click',aa);var label=new Element('span',{className:'label'}).update(node.name);a.insert(label).insert({top:icon}).insert({top:fV});li.insert({top:a});if(O&&O.gg)O.gg(li);if(node.open&&li.hasClassName('tree_closed'))showHideNode(li);return li;};function ge(event){Event.stop(event);showHideNode(Event.findElement(event,'li'));};function am(event){cp(Event.findElement(event,'li'));};function aa(event){if(event.which&&event.which>1)return;var node=Event.findElement(event,'li');cp(node);node.addClassName('tree_open').removeClassName('tree_closed');node.down('img.cross').addClassName('tree_open').removeClassName('tree_closed');if(O&&O.onSelectNode&&O.onSelectNode(node.nsData.uri)){node.addClassName('tree_open').removeClassName('tree_closed');Event.stop(event);}};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');node.down('img.cross').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');node.down('img.cross').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);}if(O&&O.onData)O.onData(data,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;}}