// jQuery File Tree Plugin
// Version 1.01 - Modificated by ARDORA http://www.webardora.net
// Cory S.N. LaViska
// A Beautiful Site (http://abeautifulsite.net/)
// 24 March 2008
// Visit http://abeautifulsite.net/notebook.php?article=58 for more information
// TERMS OF USE
// This plugin is dual-licensed under the GNU General Public License and the MIT License and
// is copyright 2008 A Beautiful Site, LLC.
if(jQuery) (function($){
   $.extend($.fn, {
      fileTree: function(o, h, dire) {
	if( !o ) var o = {};
	if( o.root == undefined ) o.root = "/";
       if( o.script == undefined ) o.script = "jqueryFileTree.php";
       if( o.folderEvent == undefined ) o.folderEvent = "click";
       if( o.expandSpeed == undefined ) o.expandSpeed= 500;
       if( o.collapseSpeed == undefined ) o.collapseSpeed= 500;
       if( o.expandEasing == undefined ) o.expandEasing = null;
       if( o.collapseEasing == undefined ) o.collapseEasing = null;
       if( o.multiFolder == undefined ) o.multiFolder = true;
       if( o.loadMessage == undefined ) o.loadMessage = "Loading...";
       $(this).each( function() {
          function showTree(c, t) {
             $(c).addClass("wait");
             $(".jqueryFileTree.start").remove();
             $.post(o.script, { dir: t }, function(data) {
                $(c).find(".start").html("");
                $(c).removeClass("wait").append(data);
                if( o.root == t ) $(c).find("UL:hidden").show(); else $(c).find("UL:hidden").slideDown({ duration: o.expandSpeed, easing: o.expandEasing });
   		    bindTree(c);
                });
           }
function bindTree(t) {
   var ruta;
   $(t).find("LI A").bind(o.folderEvent, function() {
      if( $(this).parent().hasClass("directory") ) { 
         if( $(this).parent().hasClass("collapsed") ) {
            ruta=$(this).attr("rel");
            ruta=ruta.replace(o.root,"/");
            dire(ruta);
            if( !o.multiFolder ) {
               $(this).parent().parent().find("UL").slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
               $(this).parent().parent().find("LI.directory").removeClass("expanded").addClass("collapsed");
            }
            $(this).parent().find("UL").remove();
            showTree( $(this).parent(), escape($(this).attr("rel").match( /.*\// )) );
            $(this).parent().removeClass("collapsed").addClass("expanded");
            } else {
               $(this).parent().find("UL").slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
               $(this).parent().removeClass("expanded").addClass("collapsed");
               ruta=$(this).attr("rel").substring(0,$(this).attr("rel").length-1);
               ruta=ruta.substring(0,ruta.lastIndexOf("/")+1);
               ruta=ruta.replace(o.root,"/");
               dire(ruta);
	     }
         } else {
            h($(this).attr("rel"));
         }
         return false;
      });
      if( o.folderEvent.toLowerCase != "click" ) $(t).find("LI A").bind("click", function() { return false; });
   }
   $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + "<li></ul>");
   showTree( $(this), escape(o.root) );
  });
  }
});
})(jQuery);
