From 190f005b687b588fd1a98a51010d69e9152146d1 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Mon, 30 Jul 2012 21:44:00 +0200
Subject: [PATCH] New: ECM module is full Ajax

---
 htdocs/ecm/index.php                          |   2 +-
 .../connectors/jqueryFileTree.asp             |  44 ++++++++
 .../connectors/jqueryFileTree.aspx            |  31 ++++++
 .../connectors/jqueryFileTree.cf              |  19 ++++
 .../connectors/jqueryFileTree.jsp             |  49 +++++++++
 .../connectors/jqueryFileTree.php             |  43 ++++++++
 .../connectors/jqueryFileTree.pl              | 102 ++++++++++++++++++
 .../connectors/jqueryFileTree.py              |  25 +++++
 .../connectors/jqueryFileTree.rb              |  61 +++++++++++
 .../connectors/jqueryFileTree_huck.lasso      |  36 +++++++
 .../connectors/jqueryFileTree_sabourdin.lasso |  48 +++++++++
 .../jqueryFileTree/images/application.png     | Bin 0 -> 464 bytes
 .../plugins/jqueryFileTree/images/code.png    | Bin 0 -> 603 bytes
 .../plugins/jqueryFileTree/images/css.png     | Bin 0 -> 618 bytes
 .../plugins/jqueryFileTree/images/db.png      | Bin 0 -> 579 bytes
 .../jqueryFileTree/images/directory.png       | Bin 0 -> 537 bytes
 .../plugins/jqueryFileTree/images/doc.png     | Bin 0 -> 651 bytes
 .../plugins/jqueryFileTree/images/file.png    | Bin 0 -> 294 bytes
 .../plugins/jqueryFileTree/images/film.png    | Bin 0 -> 653 bytes
 .../plugins/jqueryFileTree/images/flash.png   | Bin 0 -> 582 bytes
 .../jqueryFileTree/images/folder_open.png     | Bin 0 -> 583 bytes
 .../plugins/jqueryFileTree/images/html.png    | Bin 0 -> 734 bytes
 .../plugins/jqueryFileTree/images/java.png    | Bin 0 -> 633 bytes
 .../plugins/jqueryFileTree/images/linux.png   | Bin 0 -> 668 bytes
 .../plugins/jqueryFileTree/images/music.png   | Bin 0 -> 385 bytes
 .../plugins/jqueryFileTree/images/pdf.png     | Bin 0 -> 591 bytes
 .../plugins/jqueryFileTree/images/php.png     | Bin 0 -> 538 bytes
 .../plugins/jqueryFileTree/images/picture.png | Bin 0 -> 606 bytes
 .../plugins/jqueryFileTree/images/ppt.png     | Bin 0 -> 588 bytes
 .../plugins/jqueryFileTree/images/psd.png     | Bin 0 -> 856 bytes
 .../plugins/jqueryFileTree/images/ruby.png    | Bin 0 -> 626 bytes
 .../plugins/jqueryFileTree/images/script.png  | Bin 0 -> 859 bytes
 .../plugins/jqueryFileTree/images/spinner.gif | Bin 0 -> 2530 bytes
 .../plugins/jqueryFileTree/images/txt.png     | Bin 0 -> 342 bytes
 .../plugins/jqueryFileTree/images/xls.png     | Bin 0 -> 663 bytes
 .../plugins/jqueryFileTree/images/zip.png     | Bin 0 -> 386 bytes
 .../plugins/jqueryFileTree/jqueryFileTree.css |  90 ++++++++++++++++
 .../plugins/jqueryFileTree/jqueryFileTree.js  |  97 +++++++++++++++++
 38 files changed, 646 insertions(+), 1 deletion(-)
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.asp
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.aspx
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.cf
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.jsp
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.php
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.py
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.rb
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_huck.lasso
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_sabourdin.lasso
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/application.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/code.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/css.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/db.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/directory.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/doc.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/file.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/film.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/flash.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/folder_open.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/html.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/java.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/linux.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/music.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/pdf.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/php.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/picture.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/ppt.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/psd.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/ruby.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/script.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/spinner.gif
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/txt.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/xls.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/images/zip.png
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css
 create mode 100755 htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js

diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php
index 1b2fb5a5d2e..c8d638c779e 100644
--- a/htdocs/ecm/index.php
+++ b/htdocs/ecm/index.php
@@ -315,7 +315,7 @@ if ($action == 'refreshmanual')
 //print "xx".$_SESSION["dol_screenheight"];
 $maxheightwin=(isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenheight"] > 500)?($_SESSION["dol_screenheight"]-166):660;
 $morejs=array();
-if (empty($conf->global->MAIN_ECM_DISABLE_JS)) $morejs=array("/filemanager/includes/jqueryFileTree/jqueryFileTree.js");    // TODO Move lib into includes
+if (empty($conf->global->MAIN_ECM_DISABLE_JS)) $morejs=array("/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js");
 $moreheadcss="
 <!-- dol_screenheight=".$_SESSION["dol_screenheight"]." -->
 <style type=\"text/css\">
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.asp b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.asp
new file mode 100755
index 00000000000..41eb5b4d5b7
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.asp
@@ -0,0 +1,44 @@
+<%
+'
+' jQuery File Tree ASP (VBS) Connector
+' Copyright 2008 Chazzuka
+' programmer@chazzuka.com
+' http://www.chazzuka.com/
+'
+' retrive base directory
+dim BaseFileDir:BaseFileDir=Request.Form("dir")
+' if blank give default value
+if len(BaseFileDir)=0 then BaseFileDir="/userfiles/"
+
+dim ObjFSO,BaseFile,Html
+' resolve the absolute path
+BaseFile = Server.MapPath(BaseFileDir)&"\"
+' create FSO
+Set ObjFSO = Server.CreateObject("Scripting.FileSystemObject")
+' if given folder is exists
+if ObjFSO.FolderExists(BaseFile) then
+       dim ObjFolder,ObjSubFolder,ObjFile,i__Name,i__Ext
+       Html = Html +  "<ul class=""jqueryFileTree"" style=""display: none;"">"&VBCRLF
+       Set ObjFolder = ObjFSO.GetFolder(BaseFile)
+       ' LOOP THROUGH SUBFOLDER
+       For Each ObjSubFolder In ObjFolder.SubFolders
+               i__Name=ObjSubFolder.name
+               Html = Html + "<li class=""directory collapsed"">"&_
+                                         "<a href=""#"" rel="""+(BaseFileDir+i__Name+"/")+""">"&_
+                                         (i__Name)+"</a></li>"&VBCRLF
+       Next
+       'LOOP THROUGH FILES
+       For Each ObjFile In ObjFolder.Files
+               ' name
+               i__Name=ObjFile.name
+               ' extension
+               i__Ext = LCase(Mid(i__Name, InStrRev(i__Name, ".", -1, 1) + 1))
+               Html = Html + "<li class=""file ext_"&i__Ext&""">"&_
+                                         "<a href=""#"" rel="""+(BaseFileDir+i__Name)+""">"&_
+                                         (i__name)+"</a></li>"&VBCRLF
+       Next
+       Html = Html +  "</ul>"&VBCRLF
+end if
+
+Response.Write Html
+%>
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.aspx b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.aspx
new file mode 100755
index 00000000000..f8443ae7123
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.aspx
@@ -0,0 +1,31 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<%
+	//
+	// jQuery File Tree ASP Connector
+	//
+	// Version 1.0
+	//
+	// Copyright (c)2008 Andrew Sweeny
+	// asweeny@fit.edu
+	// 24 March 2008
+	//
+	string dir;
+	if(Request.Form["dir"] == null || Request.Form["dir"].Length <= 0)
+		dir = "/";
+	else
+		dir = Server.UrlDecode(Request.Form["dir"]);
+	System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(dir);
+	Response.Write("<ul class=\"jqueryFileTree\" style=\"display: none;\">\n");
+	foreach (System.IO.DirectoryInfo di_child in di.GetDirectories())
+		Response.Write("\t<li class=\"directory collapsed\"><a href=\"#\" rel=\"" + dir + di_child.Name + "/\">" + di_child.Name + "</a></li>\n");
+	foreach (System.IO.FileInfo fi in di.GetFiles())
+	{
+		string ext = ""; 
+		if(fi.Extension.Length > 1)
+			ext = fi.Extension.Substring(1).ToLower();
+			
+		Response.Write("\t<li class=\"file ext_" + ext + "\"><a href=\"#\" rel=\"" + dir + fi.Name + "\">" + fi.Name + "</a></li>\n");		
+	}
+	Response.Write("</ul>");
+ %>
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.cf b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.cf
new file mode 100755
index 00000000000..815f83b6ed6
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.cf
@@ -0,0 +1,19 @@
+<!---
+
+jQuery File Tree
+ColdFusion connector script
+By Tjarko Rikkerink (http://carlosgallupa.com/)
+
+--->
+<cfparam name="form.dir" default="/somedir" />
+<cfdirectory action="LIST" directory="#expandpath('#URLDecode(form.dir)#')#" name="qDir" sort="type, name" type="all" listinfo="all" recurse="no">
+
+<ul class="jqueryFileTree" style="display: none;">
+       <cfoutput query="qDir">
+               <cfif type eq "dir">
+                   <li class="directory collapsed"><a href="##" rel="#URLDecode(form.dir)##name#/">#name#</a></li>
+               <cfelseif type eq "file">
+               <li class="file ext_#listLast(name,'.')#"><a href="##" rel="#URLDecode(form.dir)##name#">#name# (#round(size/1024)#KB)</a></li>
+               </cfif>
+       </cfoutput>
+</ul>
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.jsp b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.jsp
new file mode 100755
index 00000000000..27b34202174
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.jsp
@@ -0,0 +1,49 @@
+<%@ page
+	import="java.io.File,java.io.FilenameFilter,java.util.Arrays"%>
+<%
+/**
+  * jQuery File Tree JSP Connector
+  * Version 1.0
+  * Copyright 2008 Joshua Gould
+  * 21 April 2008
+*/	
+    String dir = request.getParameter("dir");
+    if (dir == null) {
+    	return;
+    }
+	
+	if (dir.charAt(dir.length()-1) == '\\') {
+    	dir = dir.substring(0, dir.length()-1) + "/";
+	} else if (dir.charAt(dir.length()-1) != '/') {
+	    dir += "/";
+	}
+	
+	dir = java.net.URLDecoder.decode(dir, "UTF-8");	
+	
+    if (new File(dir).exists()) {
+		String[] files = new File(dir).list(new FilenameFilter() {
+		    public boolean accept(File dir, String name) {
+				return name.charAt(0) != '.';
+		    }
+		});
+		Arrays.sort(files, String.CASE_INSENSITIVE_ORDER);
+		out.print("<ul class=\"jqueryFileTree\" style=\"display: none;\">");
+		// All dirs
+		for (String file : files) {
+		    if (new File(dir, file).isDirectory()) {
+				out.print("<li class=\"directory collapsed\"><a href=\"#\" rel=\"" + dir + file + "/\">"
+					+ file + "</a></li>");
+		    }
+		}
+		// All files
+		for (String file : files) {
+		    if (!new File(dir, file).isDirectory()) {
+				int dotIndex = file.lastIndexOf('.');
+				String ext = dotIndex > 0 ? file.substring(dotIndex + 1) : "";
+				out.print("<li class=\"file ext_" + ext + "\"><a href=\"#\" rel=\"" + dir + file + "\">"
+					+ file + "</a></li>");
+		    	}
+		}
+		out.print("</ul>");
+    }
+%>
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.php b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.php
new file mode 100755
index 00000000000..d983e2f1a44
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.php
@@ -0,0 +1,43 @@
+<?php
+//
+// jQuery File Tree PHP Connector
+//
+// Version 1.01
+//
+// Cory S.N. LaViska
+// A Beautiful Site (http://abeautifulsite.net/)
+// 24 March 2008
+//
+// History:
+//
+// 1.01 - updated to work with foreign characters in directory/file names (12 April 2008)
+// 1.00 - released (24 March 2008)
+//
+// Output a list of files for jQuery File Tree
+//
+
+$_POST['dir'] = urldecode($_POST['dir']);
+
+if( file_exists($root . $_POST['dir']) ) {
+	$files = scandir($root . $_POST['dir']);
+	natcasesort($files);
+	if( count($files) > 2 ) { /* The 2 accounts for . and .. */
+		echo "<ul class=\"jqueryFileTree\" style=\"display: none;\">";
+		// All dirs
+		foreach( $files as $file ) {
+			if( file_exists($root . $_POST['dir'] . $file) && $file != '.' && $file != '..' && is_dir($root . $_POST['dir'] . $file) ) {
+				echo "<li class=\"directory collapsed\"><a href=\"#\" rel=\"" . htmlentities($_POST['dir'] . $file) . "/\">" . htmlentities($file) . "</a></li>";
+			}
+		}
+		// All files
+		foreach( $files as $file ) {
+			if( file_exists($root . $_POST['dir'] . $file) && $file != '.' && $file != '..' && !is_dir($root . $_POST['dir'] . $file) ) {
+				$ext = preg_replace('/^.*\./', '', $file);
+				echo "<li class=\"file ext_$ext\"><a href=\"#\" rel=\"" . htmlentities($_POST['dir'] . $file) . "\">" . htmlentities($file) . "</a></li>";
+			}
+		}
+		echo "</ul>";	
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl
new file mode 100755
index 00000000000..200701695b7
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+use strict;
+use HTML::Entities ();
+
+#-----------------------------------------------------------
+#  jQuery File Tree Perl Connector
+#
+#  Version 1.0
+#
+#  Oleg Burlaca
+#  http://www.burlaca.com/2009/02/jquery-file-tree-connector/
+#  12 February 2009
+#-----------------------------------------------------------
+
+# for security reasons,  specify a root folder 
+# to prevent the whole filesystem to be shown
+# for ex: the root folder of your webbrowser
+ 
+my $root = "/var/www/html/";
+
+#----------------------------------------------------------
+
+my $params = &getCGIParams();
+print "Content-type: text/html\n\n";
+
+my $dir = $params->{dir};
+my $fullDir = $root . $dir;
+
+exit if ! -e $fullDir;
+
+opendir(BIN, $fullDir) or die "Can't open $dir: $!";
+my (@folders, @files);
+my $total = 0;
+while( defined (my $file = readdir BIN) ) {
+    next if $file eq '.' or $file eq '..';
+    $total++;
+    if (-d "$fullDir/$file") {
+	push (@folders, $file);
+    } else {
+	push (@files, $file);
+    }
+}
+closedir(BIN);
+
+return if $total == 0;
+print "<ul class=\"jqueryFileTree\" style=\"display: none;\">";
+
+# print Folders
+foreach my $file (sort @folders) {
+    next if ! -e  $fullDir . $file;
+    
+    print '<li class="directory collapsed"><a href="#" rel="' . 
+          &HTML::Entities::encode($dir . $file) . '/">' . 
+          &HTML::Entities::encode($file) . '</a></li>';
+}
+
+# print Files
+foreach my $file (sort @files) {
+    next if ! -e  $fullDir . $file;
+
+    $file =~ /\.(.+)$/;
+    my $ext = $1;
+    print '<li class="file ext_' . $ext . '"><a href="#" rel="' . 
+    &HTML::Entities::encode($dir . $file) . '/">' .
+    &HTML::Entities::encode($file) . '</a></li>';
+}
+
+print "</ul>\n";
+
+
+
+
+#--------------------------------------------------------------------------------------------------
+sub getCGIParams {
+    my $line;
+    
+    if ($ENV{'REQUEST_METHOD'} eq "POST") {
+        read(STDIN, $line, $ENV{'CONTENT_LENGTH'});
+    } else {
+        $line = $ENV{'QUERY_STRING'};
+    }
+
+    my (@pairs) = split(/&/, $line);
+    my ($name, $value, %F);
+        
+    foreach (@pairs) {
+        ($name, $value) = split(/=/);
+        $value =~ tr/+/ /;
+        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
+        
+        if (! exists $F{$name}) {
+            $F{$name} = $value;
+        } elsif (exists $F{$name} and ref($F{$name}) ne 'ARRAY') {
+            my $prev_value = $F{$name};
+            delete $F{$name};
+            $F{$name} = [ $prev_value, $value ];
+	} else { push @{ $F{$name} }, $value }
+    }
+    return \%F;
+}
+#--------------------------------------------------------------------------------------------------                                                                                        
+                                                                    
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.py b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.py
new file mode 100755
index 00000000000..6b63c06419f
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.py
@@ -0,0 +1,25 @@
+#
+# jQuery File Tree
+# Python/Django connector script
+# By Martin Skou
+#
+import os
+import urllib
+
+def dirlist(request):
+   r=['<ul class="jqueryFileTree" style="display: none;">']
+   try:
+       r=['<ul class="jqueryFileTree" style="display: none;">']
+       d=urllib.unquote(request.POST.get('dir','c:\\temp'))
+       for f in os.listdir(d):
+           ff=os.path.join(d,f)
+           if os.path.isdir(ff):
+               r.append('<li class="directory collapsed"><a href="#" rel="%s/">%s</a></li>' % (ff,f))
+           else:
+               e=os.path.splitext(f)[1][1:] # get .ext and remove dot
+               r.append('<li class="file ext_%s"><a href="#" rel="%s">%s</a></li>' % (e,ff,f))
+       r.append('</ul>')
+   except Exception,e:
+       r.append('Could not load directory: %s' % str(e))
+   r.append('</ul>')
+   return HttpResponse(''.join(r))
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.rb b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.rb
new file mode 100755
index 00000000000..b30b8a976a2
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.rb
@@ -0,0 +1,61 @@
+#
+# jQuery File Tree Ruby Connector
+#
+# Version 1.01
+#
+# Erik Lax
+# http://datahack.se
+# 13 July 2008
+#
+# History
+#
+# 1.01 Initial Release
+#
+# Output a list of files for jQuery File Tree
+#
+
+#<settings>
+#root = "/absolute/path/"
+# or
+root = File.expand_path(".")
+#</settings>
+
+#<code>
+require "cgi"
+cgi = CGI.new
+cgi.header("type" => "text/html")
+dir = cgi.params["dir"].to_s
+
+puts "<ul class=\"jqueryFileTree\" style=\"display: none;\">"
+begin
+	path = root + "/" + dir 
+
+	# chdir() to user requested dir (root + "/" + dir) 
+	Dir.chdir(File.expand_path(path).untaint);
+	
+	# check that our base path still begins with root path
+	if Dir.pwd[0,root.length] == root then
+
+		#loop through all directories
+		Dir.glob("*") {
+			|x|
+			if not File.directory?(x.untaint) then next end 
+			puts "<li class=\"directory collapsed\"><a href=\"#\" rel=\"#{dir}#{x}/\">#{x}</a></li>";
+		}
+
+		#loop through all files
+		Dir.glob("*") {
+			|x|
+			if not File.file?(x.untaint) then next end 
+			ext = File.extname(x)[1..-1]
+			puts "<li class=\"file ext_#{ext}\"><a href=\"#\" rel=\"#{dir}#{x}\">#{x}</a></li>"
+		}
+	else
+		#only happens when someone tries to go outside your root directory...
+		puts "You are way out of your league"
+	end 
+rescue 
+	puts "Internal Error"
+end
+puts "</ul>"
+#</code>
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_huck.lasso b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_huck.lasso
new file mode 100755
index 00000000000..3359e29314f
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_huck.lasso
@@ -0,0 +1,36 @@
+[
+	//
+	// jQuery File Tree Lasso Connector
+	//
+	// Version 1.00
+	//
+	// Jason Huck
+	// http://devblog.jasonhuck.com/
+	// 1 May 2008
+	//
+	// History:
+	//
+	// 1.00 - released (1 May 2008)
+	//
+	// Output a list of files for jQuery File Tree
+	//
+
+	!action_param('dir') ? abort;
+	var('dir') = action_param('dir');
+	var('files') = file_listdirectory($dir);
+
+	'<ul class="jqueryFileTree" style="display: none;">';
+
+	iterate($files, local('file'));
+		#file->beginswith('.') ? loop_continue;
+	
+		if(#file->endswith('/'));
+			'<li class="directory collapsed"><a href="#" rel="' + $dir + #file + '">' + #file + '</a></li>';
+		else;
+			local('ext') = #file->split('.')->last;			
+			'<li class="file ext_' + #ext + '"><a href="#" rel="' + $dir + #file + '">' + #file + '</a></li>';
+		/if;
+	/iterate;
+	
+	'</ul>';
+]
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_sabourdin.lasso b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_sabourdin.lasso
new file mode 100755
index 00000000000..077258e2583
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_sabourdin.lasso
@@ -0,0 +1,48 @@
+<?LassoScript
+//
+// jQuery File Tree LASSO Connector
+//
+// Version 1.00
+//
+// Marc Sabourdin
+// CysNET (http://www.marcsabourdin.com/)
+// 23 May 2008
+//
+// History:
+//
+// 1.00 - released (23 May 2008)
+//
+// Output a list of files for jQuery File Tree
+//
+Encode_set:-EncodeNone;
+
+Variable:'root' = 'path_to_desired_and_Lasso_allowed_root';
+Variable:'_POST.dir' = (action_param:'dir');
+Variable:'files';
+
+
+if:( file_exists: ($root + $_POST.dir) )&&( File_IsDirectory:($root + $_POST.dir) );
+	$files = (File_ListDirectory:($root + $_POST.dir));
+	$files->(Sort);
+	if:( $files->(Size) > 0 );
+		output:'<ul class="jqueryFileTree" style="display: none;">';
+		// All dirs
+		Iterate:($files),(Local:'file');
+			if:( file_exists:($root + $_POST.dir + #file) )&&( #file != '.' )&&( #file != '..' )&&( File_IsDirectory:($root + $_POST.dir + #file) );
+				output:'<li class="directory collapsed"><a href="#" rel="' + (String_replace:($_POST.dir + #file),-Find=' ',-Replace='__') + '">' + (Encode_HTML:(#file)) + '</a></li>';
+			/if;
+		/Iterate;
+		// All files
+		Local:'ext';
+		Iterate:($files),(Local:'file');
+			if:( file_exists:($root + $_POST.dir + #file) )&&( #file != '.' )&&( #file != '..' )&&( (File_IsDirectory:($root + $_POST.dir + #file))==false );
+				#ext = (#file)->(Split:'.')->Last;
+				output:'<li class="file ext_' + (#ext) + '"><a href="' + ($_POST.dir + #file) + '">' + (Encode_HTML:(#file)) + '</a></li>';
+			/if;
+		/Iterate;
+		output:'</ul>';	
+	/if;
+/if;
+
+/Encode_set;
+?>
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/application.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/application.png
new file mode 100755
index 0000000000000000000000000000000000000000..1dee9e366094e87db68c606d0522d72d4b939818
GIT binary patch
literal 464
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGficO`#W6%ea_K?EyeWYa
ztq;H7saEur+K}KG;UvqktzqTCBo3~lTpkB5Eb$a~WWBvoMRaRuiN~-1_bt!NHDEJ;
z`B{ULf8qA|bu~4ApFO$#R_!=vg7EAjLH6TIxYU<)ZL0iLv2*vXT|fVP{{8Z(MP+Hx
zzZWld*jhglI9@*6ie2wmn&<61|DFZZPczx(rd3n<eUkIu|5ayAgpBX5cWtnka*)M(
zitpNm*8&W`i^kd1JMEmo#yNRbfYYpwCY>nZAZM*B&gIE#5<f-xERONv?O<t=+i-x-
z_QDm(rl1vRYSU-B$&{&hWH_h@cue3Db8!&9JNKmCvPALfNjE$*98_$MY$#m7C}zEF
z=CNHmZ#+0Wnp6&jIVG<)wF=<$O^lj8HFL?CD~%ge9S^B=+A_x~nFZ%8OPp=XnB@Ja
zer|nLdeI@1yt>%<I*Vw(*w)h_qT5!c9yIgo=ng6H$;nyfy=_WMdxp)0_%|~?{A00x
S_l|*qfx*+&&t;ucLK6VO`@eVq

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/code.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/code.png
new file mode 100755
index 0000000000000000000000000000000000000000..0c76bd1297751b66230f74719504b2adb02b1615
GIT binary patch
literal 603
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$^=Ui(`nz>E6k<{<i}}
z+BBV~_ZbK+jb1)Ykz-}{k$8tC3M~#?D`#+ta;S;bIYg^Eb7_S-PS_^2AZ&`)T<a94
zCEPj=B00z7x6Zw>@iSw7ZQh1LkARI|PF%A6Ze#cS$2~oU*p}a4cDlr{{Xd*MJ<ncW
zp~IqY@%7hVPrEH{^xILWGWq0oN6!EQkCV$X4{g$sKWwldQ_3YUMaWTLg4fcT&gp*|
zShgJ8mK(A<^qbnLr$!~Q?JAx=0V_is<UN;P_Vo-{5N$f`jU$tn##FBfsXN!InhE=V
z(2(goS2x{YYjn!NBaKZvnI*dtf3MZ(I;8cma$o3&lAr$PFYJDN=MKN*$Me1i&+O}I
zjpvGc>p5Wy*W>_I6aLW9e3tWJe#y!4uGMAnPBptZ{7NGxTwgWgo}lCF$1|0_ZPLna
zPjga=H`t^r;cYK^#BArWi!*OtO4iFy%;`S<$6Ro+yk0^S-(-P(4^F<GeB*;v`uQ5o
zq@=e@bMCBZ(3<({NaHp4Yg{+}uKjg*>E{bZ%^zI0J^%SAQE%VDM4OrE2T%6P#HF#Q
zgmF(OW#1ar>v%Gk=@&PD_3y<WL*x$UpNsr(^f!~xOQwHP<|iF*vD|aq)mv?4T{Qi{
zt98{E8olESbR`SeQvx5@oqTuCX!l-5#}1Y6JI=|Ke0BcMz<&1Bj6I9&pD{2nFnGH9
KxvX<aXaWEfI0<P0

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/css.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/css.png
new file mode 100755
index 0000000000000000000000000000000000000000..f907e44b3330e3ed1763e42746a2943234adb94d
GIT binary patch
literal 618
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$@*0i(`nz>E6kwvxNgi
z+K=n)D!lGGyGit;{Duq1SCu|IHn&6D{AzEvp3aTd3$D=`5gDOU!9rIY0ygTeb@}a~
zQJdK9>eaTYb>)p&Zqg?#PHs7=GIP)C^VNFi1XMcrelTSI{%_yR;<P>mjzf}e!i&G!
z&q)qp6zE!bb;`+<q@Okab_8fF5Xq4*+kH38%W3u0Lnl*&cCDM8F{>@Zgv&K>hs(57
z3mHDWk3Cne{8o$FvwE?Zw)lm{606=Ev(xKclqNdph&fxxJZlQkVy!yyc{#IQ=F@lE
z#AFV4z1@??rIF*n#C7Cxp^K8><|$Lej`&~f+G5px{_@+3>*3kPtZR5aE8Gpf>!!JC
zl~Req!T*IEH&?K4y3siEpVjjc|JbdXKc**jYSkb8_sqb^y*Oasog=I7ZGO~kJxywJ
z=hI#OLcVuh6Fw{QueRR);onEsn0*Dmq)yLWrC||L?|3Wf!1klkZ?@jOu<w4FZ?=oY
z2hRHc-JhBo>e)}v)2z5}cW}~ct+Kt-A4umn$Ip5CTa<NDz5KQ5c{=qs95i;Y7Ctsj
zlZ$QK^6H80N{t)V9EV=U9a)hs{avkghux00cM~f$7RsM^S~RDt>D}-17ffy1&Mh>5
z@nWvS^=8#I-PL<$vOQ(lf4a6)NG5n$h1jf{_m^Kj=6UE%P7~XPhzkyrgnKqK_SQ8k
b{$SRRIh-Va=zkgm0|SGntDnm{r-UW|7bzQw

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/db.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/db.png
new file mode 100755
index 0000000000000000000000000000000000000000..bddba1f98ca56f8cffa39d768f80a06361d8d218
GIT binary patch
literal 579
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$^%Ri(`nz>E6kwvy>b~
z+I;1b!Z@GE8a?@Hr2il(K#)~bC98i{PO0K736YD8Zy7}k)!ja}eLt4%cdmYt-tCwf
zB7eHqt@?cR|NK{*1Sj%7Dm=C;CHAko_?qC*bjFx<VXIG;?Y{fI%=(wl9zVb3pSO!9
zvBoT{*cfr4XlKYQzvU)!{VT7(=3H|7?WEIBg9K*Z&HG>Y|HBWF?xWvUhICCjsgi0W
zd8u@6+hN7C&x>dIs9kygoi#y%?V&*b@y}d4_wN23z4~g^;)@;EUYl;@*32-Gn&P3d
zB*AR<#RP*N0-jZij&9}3muk#n3Sh~crMB~|MgfcZT)*cGJ38;Zs5vB|zU_8y*4C&H
z4Ur`ZB3zsoS`KjjV%*Mk;AZxo#A`WbsT+e<b{I4rT##d;SkO9;p`>HM-^_ya-mI-!
z4M8ha4t@CjSL=P+=7}9?Hmn_P$yN+$*Nb<`JpEkBSg|*bwSk*KVaG;>MOODW2Cl!Z
zTE8)3NzqOnhW5jXtpYL*8g@({{0rxvP2(*QzusO`z%=3fb8D?_UW|txe#lf1`0=!C
z_y41h3%gvDjucPvTh5wcRiV#X@w?am!@<et<M%fEZwYTOKjEKuL5Tal=Ci%Um3zew
lSSsAFIJfM>m-F!q-qU{DJpT0PJp%&+gQu&X%Q~loCIBM!0~r7S

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/directory.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/directory.png
new file mode 100755
index 0000000000000000000000000000000000000000..784e8fa48234f4f64b6922a6758f254ee0ca08ec
GIT binary patch
literal 537
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfpN8`i(`nz>7$c(cZoQP
zwC#WORx)~HJF9C+Ad7IidAZ{aA7|nD2abdbFgqGt5x;Qez?lF8VZ#rMVrNCn3k2_e
zHL|__cHKIw{f^s>laq`Z)mJ_$`1k(KsyQlQ8(TzkQysWIJbXI!?wajepWZR@4|(kW
z+fXFD@s<8m=7g%B$9_*>vQYiYZS8M;&N4vxn5EOt$CnPiYp&fI*RVCuzw7J6C$C>y
zANVZNut4bZ@m2Z#oprpE<jy@!k-mQ8M%@ipCZ3drf|DmV%g4XD6VH$}{e;cM@`;?*
zzkF<M6N-Mc`IYg7G*>QRVEOd#uHL5Z&yo+OL|Pm=?@;GuD>w0b{=~Vra-{zSH_qa^
zRNCRWi{T3A%a6uu^6$-K=Q{jH-036NQAI9i5jPFL6X)(Xd+9K$92J_qH@oSvL@U#3
zb`3s7k+t<Lk3>Qo_il01QsIvHyZ59>yN1Zy+6!rNXBmTL=x<}JI4KzT<0@CT>&?QB
zLluhKHf0*?Fh0o@NVE69GC8mBY3CKj(~ipn*D&-?dRF48GHvOTwNVVGUR}I5dG_s&
t*A}1Z_r)^4TYLP=n#c$L|Ml)?+}9yr|M2!KKL!Q{22WQ%mvv4FO#nTH?>PVf

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/doc.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/doc.png
new file mode 100755
index 0000000000000000000000000000000000000000..ae8ecbf47672a874c0958d0d113a56162c2bd364
GIT binary patch
literal 651
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfl1cW#WBR<bnoQd*;4`q
zj@EzwSbK8O!Lw}U9C}BV2yP5c-Xb8lWwYSHAnoADj<pHeN*$BFnEi}zYMtaZvEf0p
z&g|Zsu_w~@AKz;%7HJ;X{NzAm^qD!;Z8MWYL>ZFLWF|-z{E?r1z&uoxA!O>p6RkR@
zccn%i6KIk<rgOR^GxMdX0dqv?U+08<I;VGR-n{s4UHy@`^~>k_xks;^)+Vs!X3ncm
zpFVjUxl_IQ+u{>W<|54>XI7Q^EplS%RB+^2D&+j+=wY_4QN4>a1O&sv!tUwl>Fs-T
z?lk{=w#o}eCl==XJ@e(?=I^)iw*Qypobi2QhhpKh<@xrPPb)otC3?-A%}1s0RpIel
z(_@oXF3I%Te%sZBLos0eb;b=sqO6-@Jg;7uvF^f4ZuQmkbow(Gmxb*4z9iFYl1fi+
zZ*N%A)*ID5%#*ZNXUCp$x{>j;=5O4Ff`1Zb8s{wce6M)#IVmMxL9F_<PVv&6(l>AE
zt&}?a%k7BN(`#2VRkW@}%_&x1II-ag7uVm$gyN^qo=R;Mp67M6=<Oqw;Hx5?U50E7
z&t<ONYUUGptsr)2=E|1a*ZmhBXkp9Kxl(vd;c&F!u|NA}3hwC)*|x2Cp1mD6SF_HC
zCkOAWSg?1laM#~u&HI@vG+TD}->c=RG_$)sV~!}JsH13zh+wnnZ{<I{##_=FycJtQ
z4-}YmeE-)a%jU({X~@T5=~diQDBkhRVUF}+i`&Xp9S5H2=WVTA+&6F4IR*v>22WQ%
Jmvv4FO#rlOCP4rI

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/file.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/file.png
new file mode 100755
index 0000000000000000000000000000000000000000..8b8b1ca0000bc8fa8d0379926736029f8fabe364
GIT binary patch
literal 294
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4i*LmhONKMUokK+u%tWsIx;Y<KVi<=^^$>s
zL9)a(q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1H%qa7sn8d^Q9A``3@-v
zxGrCJSnXY7TkWhD?b26%bZzz5xboT|{@S!T58Evh^(2`tPGdP~U$%wOGKO>NtZPY5
z4>!n*gkRdi>UCaPKPGbLgB#i|f}Y({v;2EyH1l*qGzyYZMYb$|=GOMxqHD9u-h@A`
z4`1e;X^yu%-`ePR(&A)s?29Q~n^P1IE_!GpDlF2&zvddt<4g%ru~`!j=&RMWp0{!J
w_uh2db&>aNz1vpm7dZ`8yGyNEjxNwQS{nUfUF9}^1_lNOPgg&ebxsLQ0GOn5J^%m!

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/film.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/film.png
new file mode 100755
index 0000000000000000000000000000000000000000..b0ce7bb198a3b268bd634d2b26e9b710f3797d37
GIT binary patch
literal 653
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfl1!e#WBR<^wP=x8N!Yd
zNAKtDo_$7Yc5^59r6BJnRWIQW{4Z8k1v&<pus17kT=n*s64+DuC54|+Q1pL8T-S0f
zmsf%OT_Gk)LEgE3O;H@4$t>yL`tuhEmRz6AZC^Iy{a*9?AKpqON<6Bcckth$sI~j}
zn-ZqftiGDH)1q)^%)bRwPF2p^9<=^CcRkC68Q*LF+gV1h3`x4ZDAL%O&)sT)p`)Kc
zZ0ho~JxgXbd~rI#U@?7f+eDFqUw^tCXQ`k3w(tBK{frv-b(5EdU-P{vESqR0DcIGM
zu}I_6qwWbodXuY{2)=AMrfB53XUkWy^VQrpYzst}+4udtR%midc*3Wi<Cpy>mBchC
z`HHFEVcC!#%#~}|``*4Qqm(ac<?O59`8%%dn8=WK>T82+`yH8_!;S5RUoNdaFpZsq
zr}cJFl5IkI%mD$*XS?z;|2=v>LvqHRraQ|_qol<*xILS7cA0ryW#04$B2)N1_)4^j
znGb6+|Ngc=E@gWEN^SRL2TEr5Ol+KPzdqq?yyJt{2@itHjobE^{}Kq!{;^G2c0<C(
z1>MK?FI#X$IXL@9tLV#yR=%04)8-utth4k>le%||JA!xqgUIb`O~uY`ULt(mv9l>S
z<#pqkj0|ZeFP_EIABo)A&9UG@Kvv7My?>It3mLzxir$uczq0COb_$aNQ{Us9jIB}p
zk_Au7J^!DZm9%k3goa3p-Te3$@BjK5&HR%Q8J02YSyBCa@s%I@A75x%Bg(+Qz~JfX
K=d#Wzp$PyAWh6KN

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/flash.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/flash.png
new file mode 100755
index 0000000000000000000000000000000000000000..5769120b1b6d38019b505c9167498ea199212cc1
GIT binary patch
literal 582
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$@f?i(`nz>E6kwy`=+1
zj%}@X73Yc-HD9-=iQi-*TkeJ(Q=-JTJ~-5>5O`a`v4-WMt7dD;M0+=lpp1njmlv&F
zpywj|Im@WudcF0@>(%ShW^@Y5{xB<k|K0j|&GgHR3z}8-=`Eaa;Q(`$+Lt4re=;bZ
z-jp@x^RCysGSmzEO053g<p0Rbc4EzID~aTJBCd{Gqg)pTOqft(*YBhD*m2e~Kc)+;
zmrW9Ho1MwOpZM-=bMEqh)mH;_#8eL$@B~cEF{@_IWSwx+&Z6OGnOvS0=eHuRRjU?-
zXx)|cOuNKYaPC~<xjk(0(QSst+}nN~lwKO6ciOLL=N(&ybBVcc8`SR~_E^*0y=u<C
z&JP?;a|7h2dM&kW_;1^2`JJumjp!Tw_6Pr0eM%B``kXyW%`unp+HwB}ouWIWIaeqr
zZa6!|eEnk!Bl)HY?-<PHe?JqLI<JGfnB~-i2nL7P6Ai5^W-~01m|HVTTK50bBhweO
zE#6T7r=|E0`?;r6O(v~i7MjV-P^<JUwA;mh>O_w1V)q)~zF}MS>ug;mgYF-v@b<&J
z)tQ1`IZ}Ui2~@mRTM{bgAS=~;$-bxi-i7?<FLo5(m)jC}_w)m^6Lx|Ei<^(nI2!Al
px1Rrk?*#WX#lc&C-Tlv4wrt;@Yj5?ZFfcGMc)I$ztaD0e0swM^0e=7h

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/folder_open.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/folder_open.png
new file mode 100755
index 0000000000000000000000000000000000000000..4e3548352fc4a82e91ebc7e79907565e40aae457
GIT binary patch
literal 583
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$^rNi(^Q|ts}wvvqc<5
z{-wRo+pKsmu};BIDp1geNmE$JLc2NCK_EEl*dNv~rvq*mPPyq^o;5|>DTrmGs1B2-
zD6jg?AFua3HhXsN&bc?|KA(N_YUhHhqI`Sin(uyJd;j;nJ)$lxdDEKp!ml$#e!g*k
z#;uQB!op5}I^8+^__P9Fod2Zgk;?fyCwBgQUfl+T^qeg_CJ8&uu$j&C?Qq%KSJ&sd
zi+bIgHMNl2W#TF``~6i1j+=5fOt^JnllqTOOcT#+*ueDs`NQ5jM^1bZ7T<PpR^k>`
z@pCgDmM?u&#O}b^zU4_u-&K~{s*bFmrW=0$iN6%9e%<`TZuT_?FF(|L!hdYK?v>Ng
zI|6Fh@(XMP|Ey-}(mpZo=<lo2bJd(IPkfuVIj^=}_WHZL;u&e7@`AtKxF26|;YRtl
z*&p=meC{)e^ao#YdwbS9X5VI>r};%2_}5CA%?wPMaDrh=KwRvR2Tv}=u`4`yRFV;^
zyI-}Z?u?YF(6bw>M6VzF>VJ3lRY?`kFNvv))1Qf3?%)gBTCx3_$AO-?4SY&z`{TVl
z6;?{0c(^BPmyXSQfu}pB*wjlTg&8{wJz?Rz8-2LWn)d?VJguLZzcSu_lrgvczrFhO
smv7Z+?{^yod+|Q4|1Vw7Wx#OD{@2<~DZAG(FfcH9y85}Sb4q9e023Sv=>Px#

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/html.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/html.png
new file mode 100755
index 0000000000000000000000000000000000000000..6ed2490ed1432d5d667a76235360824a1088e928
GIT binary patch
literal 734
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfvLdL#WBR<bnoQ5{y~W{
z$Jg#x-u{pMw6^}PkDIRETEwt=tC92~?NZ^>&!o+QCk9?P<iWHowS7Zqn3CxvpG_S<
znNE5aZ)Fos+`}n+bf4{c&A#?iS8v)`i=Y2ld+u|!He-O3;(0kI$%TL9->ANM_Nbz1
z)7P(Gk34(!EX;2H@%swT16E(v+Sj75vHW0mcJ_%BBbk#aLLVz+w6(R@sL1d+FTPkX
z$?3y7X7%sk#(vCJXLwg!?moF&aPj3T9i811JyZlbT_POKX0!h73|swIb751|+z%}-
z+B~!Ftw{LnpJ20t<8QUL)%+8Mr9N#dk9w|Ix9;CWp=jZk6ILwxmv{Bgm2mDmn&NS_
z(Jh(+4R;>8?@#7CcGIyWdY0k;o2?lpr|zkUaEWqG*)DrGVbbIcZub)}Y;N%`)6dE|
zUwE;adDT<9Ewh*I@W14_G$_Y5Y2%G;4NrEb{958xf1_c#Ais*g{eqj8yoC?AwEiwv
zD4Ww(w~AfXM|pO=)!a1KnuF!F4xM82+2-b_E6Nl;Y&y%g@^;T+VJjI)yY9f{LYEW`
zi+0LrFU(oKKwMYynaGPzHism;g^$l*;FA^$s65-}tYv*}=B|RvRg!a;Xool~{Cr^j
z!G=ezJZmrePUx{e@G+5}WpRALhiSY_&iYky+ZXwTv!)$u=<Ve-`%&)b`d0Sgodt_|
znKvh|*j{s_ax=f_VYe@SR~EjV$MUJ&=!Zx7iUkbn8fP50x(Vc@&bnZ3$8>bFXUz6h
z9`}?k9TGe9Bd*yeQ_z(uPw1rS?U`)b5=w+5mka)zAa4EUn3(zx)tl~IQx>vY>k8Y?
ssF|I%eY(2F(n<d#o->tv^{!`-v{@byDtu--0|Nttr>mdKI;Vst0PspeQ~&?~

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/java.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/java.png
new file mode 100755
index 0000000000000000000000000000000000000000..b7bfcd15fb2f7ce658185bd7ef4729815e2f18b9
GIT binary patch
literal 633
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfr;DG#WBR<^x9zSZs9}`
z*=~_Vp}+oe-|oDX)1|O2Nw=%sK}Tf!*5cedstdxRd^T`sM~ZKppfb7KY0=D<J<j*^
zH&teLImi|7`Tj^`QO@JKf*IFspU-=LCtrl&)PIMa0gXjF_jm_*FP#*nA#$b0u71+#
zr+%Amu9<Z*<w}Xw+GRm2@9t;OntDo3F#2ni?BkCTlTW%B%=LR}CDqH4o}R7{s51Fv
zn9{@>!i-9{J9EyY8TVA>*8G0c^zEI%{5YG#$DjAJENB0H;hy}%-_w&<y-cu>QIhMI
z-WYM_+_qA+_1CjCYf7Kr+G$a{v;Sz4qS8bUm+%wk{MTRSK5Vc-apL-X{s%Rm7}meP
zSy=MD?ZMf<(LX+XSy;3B73Z1f#W#aAM1C!_n0xMBg292Jok!9(Pkf!VRcOQJ`o?X&
zQES^03?hPM_}aPmi$^d1a<D0_fM?t3_fc!bG;9<vFM06&H^1oYvt_qM9ym!!uez!=
z>#UkoFI$Dtor#y13o6O*ExwyqT%IwjEOcYkTJy8-eA0rJU!JJ+?!<YW6S6OLPW-Oh
z&p-dX`9#AgooTPHINs0Oo;00vZyf*Kyzm1oms#(B4(mFqr19gplEZ7G?j3jEF^Rw2
zrRT~M+%dNx+%95{;KZ%=eoAY-TeKS;9?VF~E^wEdTFGT8Ev9~(ZDQ>6e?Av8O4^%l
rUFdOal9|$QLc0I>=HiF-kM+N0X-coQwb{kMz`)??>gTe~DWM4f&s-qj

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/linux.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/linux.png
new file mode 100755
index 0000000000000000000000000000000000000000..52699bfee0ce434356c6a9576f32fb6633b01866
GIT binary patch
literal 668
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfl1HP#WBR<bnj&Uj-Wu1
zW6Q&Ocl0(1aYZfdE^1ru8u2criEYseg(8kD!CbF9A{<}clr%G3W-eLDDA={YRdM3l
zBCg|W6laO`FXZHO3ci2&`F!<%|95@AR&67>n6Ku}(VfrB&;Pt<oy>4-g~uC}SqhK-
zEsS-Uz12!KVbRsBlXvsB-+%qpz)Ph+K*MBt`wPaH<(FR`e_XgDM(@Ypx)3eVkkz4O
zVqC0jC!c@jXg@6FqI=JUaZ<>!eSghv@LQbBbXA+|xHqm{=d^}cH_wF}vx^xf0-Y{(
z&R-Y;MFjVi3wA!wn`3F%T4HsUD{HHi*V0RE6KAMbIYj>Hywk3%QCIZflBV{w>GwD9
z6m?Bpe1SbfeP>LbiNeg7Lw^$(4m}suv8iF1f1dqOH`~Iw0ro1Mw>TbHyvs3>a$V0a
zb~8sTZL_4!`D_6zzOOA!Z47e#>37mLujOiDFnz(g{yKN_!2<~*m-4ntwq$V><ox;(
zxV^efl#h*>can!nf{D~bucZ$E_}LaLy350OZvJe$mjyCz?J<iuP4n2_C7j;D`1<wz
z2=-SR&JBllpWa=+XI9nAE%}FMFWnOMr}nF++FG$0WjX4{I;9+@vPE>uR!ytkBz|yp
z^@oH+L9fXc_a;o7Q~v1J%e57Sr+Yq4pPj?9*W|$Q<Hq9G#B_g7t@M6-OVpgH{JDYk
zY2~uV3isI7{*c=2TyeJlR`0%N2j}}+dh!HiJjy@4L|?7^bxw6DgK+Dg<5sH|t<L|&
ZDs^#*aFR^va|Q+m22WQ%mvv4FO#q2DA{hVx

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/music.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/music.png
new file mode 100755
index 0000000000000000000000000000000000000000..a8b3ede3df956f8d505543b190bc8d1b5b4dce75
GIT binary patch
literal 385
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4i*LmhONKMUokK+u%tWsIx;Y<KVi<=^^$>s
zL9)a(q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1Ea8~i(`m{WbHviZ>K<s
zhKJwp^@+5wG^!-}>N+-iXCJ=%oBb+32g~=iqSA?N$J%y(VV9DM)#hmtSaZ@*W|7LN
zfb-vF{aFj&3H-2`m~Q7>@KUyG5l5GT#(Rk-!)gneKFO}b4=s)hSWJ<&>M7Ky+;-E|
zkVWjcakyYTUyY=<j{?U$pB{xHEMl%FeFUe>IH1HK*{yVhr77uT#WIez1BR|YN~dI4
zY36=tla;EQqdLjY+coZ^v&EWqCf76{>~LMDd_J>uXJCTp)4q0-`u(LFPbwK#nN)h7
zIr%Yau?OEm_xAHw-bu8m?kf4Y>dWl39R`Umed@b<wBD+nEqcB&PdPX6HNV2AH|p|V
mJyq65uC;wI|Ag^<bJ4&?1F3{Ndl?uQ7(8A5T-G@yGywp&g_Q6B

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/pdf.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/pdf.png
new file mode 100755
index 0000000000000000000000000000000000000000..8f8095e46fa4965700afe1f9d065d8a37b101676
GIT binary patch
literal 591
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$^cIi(`nz>E6kwy`=+1
z+OMXHhjn|gvi@&eCsO$I($s{7JGSfyTooa1mn5pn(e&EMiF2BkNQvURT^FW0?amAp
zsZj`&o|2+AIc3rrZR5!<^?RSc;>nbIae)2%xxLRH&ndPHWmv`WZL7g8$+`X)j;$zs
z%*FC{TI$l`op)mG=DS<ou&lAW|J=!Q;eyFcrLK*ezHr`p$H#NH;n260AzYJG3OhBr
zKK%Z>?g-~PHO5#2Q_-$+p<^EzeJ-~w%k)@&x#MV3%!HFE3tn3>H6CbQ5|MD*Y|=cz
z6|e8_XkZEnb+wVx*X;bhB;vp+hfCJ1x!H5qugqIM#YO3$u^`LBO${Bj5)Oxq+1y`v
zXb8V**Ev0v_1b-Hj`#N!t*kgc|M_CiIn~)#G0?Tq;;-PR>-q-k^#vspC#_c4Kj&;(
zWxa>f6ww=#Is)qT*LX<Ge876>@nMd#y^b$(`SaS@1ZK`{*t7HCW=(Al{WA)iEZVPp
z<3F;0z0=Q~?0?^|9Qve`cdSid-gk$nXid>SS#_cE87scVefxgU@6<cvz_%<*{bvM;
zn7w9P8+-8K>tA`tKE(y!ow)1&?k8(yJq_1A@K1irm3;jBr`G9z_pCQzPu)@MUGc`5
z{q-hC_Vb)+<)(IfS)0Np*(A@A&G-`ipHanf^8?27C$=##Ffe$!`njxgN@xNAIA;ZP

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/php.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/php.png
new file mode 100755
index 0000000000000000000000000000000000000000..7868a25945cd5e5cb7daaca9591927511ca65c0f
GIT binary patch
literal 538
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfpLwei(`nz>E6lS-b{fa
z4Qs{zHZ*Yv-TK1K6Mc1AEq`}M$F^KArQ6rkmTq0zEm)Pa$)xFk>$c3<u4~uKRmn@c
zGNp3$<JTqU*Gj%?nZzt#{_IZizMcN;3>E^PdIV!wzT5W*|5|J1_F&c3tf0jgGfZdu
zzF>LT9-twTqPpfl@6lPy8rQuR+oaR1(G{Q}vcg4xg`@rOv?Dt2oEg<ZR)-q!G;ixz
zwMxNLNTl0UYek4wgZ)E`ckWG0->*D7aN)y|oIlTax9u&w@%8SZM?o!{p7tJ0HDTQ;
z!=KW!P4l9uqGvO=T;6#dhfD8mHr!XcxLW<ePn*W=oMjt~zs_0O+UYXuO!&roH!YqW
zeXJj#H$9h0(%NpbYQ+5=3t0CkTrTg~`0;Nu%bK<Gn-^)AInI_fQ%f^)&DP41xqfW3
z%tG#yT;~iNFZ0Z*k*(g^)~zdjJmSNTiSyXQ47_%{-d2!fQ!u5aCT<INf%Nld{%*_C
zYwGGB$c2UZ=Q91VQ~CJhFni5Zkrmfpi_C7Y^{79%_q~g`<L=wGFC0z_{qa&eDR^z;
u;^|3~R$sb(nq!W}%ZFC8A6zZ3V}7)Do+f|Oq{j>l3=E#GelF{r5}E*lMC}&<

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/picture.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/picture.png
new file mode 100755
index 0000000000000000000000000000000000000000..4a158fef7e0da8fd19525f574f2c4966443866cf
GIT binary patch
literal 606
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$@W<i(`nz>7|oxvqKz3
z+U6U7zqj|h8u#uAy@|?!lNu5PkA%4WZ)k1p4GoI$_|?#Bf9Sr#vdtGxIqCTPb9C6i
z(IV=2R{ZCU9J8A{t&5K-rJc-c;*eZ6d*<^w-{*e!;AnikMk3+o<6GIGGwn4^HoxnN
zW;UH9v8lyef8II0qYP3h4^J-cyr^^9Mdere(Y~hgSi72=6?}6T{njkYoOSZkD@NIG
z87HkKCtE-96c(TIck!HjY0<Vru}N+fKXZiEE7@|kGAAqbI3#YHvF7cBX>}L2=*}rW
zl6mTi%iQ<9iK~`MtzwpA&`9V>IIOqyNyFjGYS+p&<{WM{%bay-o2BwjMS-egUzlAu
z{5J0MJ|5|}dzzDM9OFx&E5gzbADy2$@8UzA35H&)ZG99Dt~zej@6lPd+GnSUpNJ$!
zQKS<`y3nbMzIC~|!6(fmrOcK*vbZOoRK417uaRrclOn!Dt`0@bAOG0dUk_U`tzP-w
z<Px`?rh6SMS3eH@opkZ~!C&{3;zZY<lHGm!&XHV^jGVmBFMo(uEm@)Up>jd9fWU)~
zZ-U+{%(8s4WUu?SpHpugc73*ZiT=#zcE=csT;povjy?~~$^F%3!#87w>Lr)mQ>&Bt
z9iHfG&3W(LKUcd$nbX!mb6WZPaH--}e&hefa|&5HAL=&5l+XFkz?Oe&@_NxD`xzJ*
O7(8A5T-G@yGywqZWDULm

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/ppt.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/ppt.png
new file mode 100755
index 0000000000000000000000000000000000000000..c4eff0387d5888c638ba09473ba6d2369f7b56f0
GIT binary patch
literal 588
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$^TFi(`nz>E6lvyMrAC
zj@$2k|CF^SNzX&%-Its#8%6kaa*xLCIpxF?6(y6A_?kc9qX*YU(|@|x<B}IIxY45G
zBy`gHezo=P<d2hHOk5x-QI<IKd`)`Uu@zbj$7bk0&=L5UFU@d2)RbYtsxu1Vn{}kE
zpYQ2-p>=+f&+WJ0q8}(FgnpGsIBxlT`Q??%GIxDAnX+i{MUUTq_jPrAtFnDtV#VDt
zb6=ijLmNX};QPRtJGK4iDEQyIm|>#P)g-`lH?MsE)vUdVzh3S8cfQVM$I`<O3s$Nm
zsE27*3trNEd0f2VX#MY|yZa8Eyv@IH`Rj~#9+O%=R`_r*3NE~v!<2B9li_81`kWn=
z{kPu9DcT;AmHY7d?`NTT){iXIJcYETa$U_T{iym;W`Uf~U!HAY&c^Ls$7`*0?iaa>
zxJo1&96K{Rj>##I>Cg4^J>SbXl>#^%S$NYJH(X2ViIn16y;EC%_H@q5#%Fy27AD0<
zo|~N(;)-N(4{X_5CRy<6o$?~?=>eQ8SRSp-HIv(~BWmFoI{nFX)ia`3q;qWU##`?G
zY{z(f({$f6vdz}!r*z((7f_V@n)q<_D|Q3pOtu|rO6(1Zw%mm>@!L1I1}Rj$uV+l0
toACax;DfXAuWRbIoh$QYm6Q0x_Eo3mudw`dKL!Q{22WQ%mvv4FO#o#z|2Y5v

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/psd.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/psd.png
new file mode 100755
index 0000000000000000000000000000000000000000..73c5b3f243d98d089dd9e025edc81b939c1a9320
GIT binary patch
literal 856
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$5c}i(`nz>E7Vm-j@Sq
z?g#&O2on(z32EVq(_mT}WORz1S=H-#>SdSW8L2a;oA_R7y|^dm+}YE6&c2NCo1R_l
zebFd*`mPw?UYFuo*Z<~Zacz9Ke6yqN5;y+&(+~fQIrqF~zX`*Zxdu@}FMoGR2U-M)
zWL*$vdCfjQR`}H?=D+{;ZSS=>)^C;c#PF%`qm(mQU5VE`6W>ifu;kH!fI4nl%YX5^
zHtVy#(J(mH?_=~yVz%)srZxSUiKcDLZs`&3H5=0clD;11o?#Nh^J(z{Py6Zr-4phF
zc_t^cGi#SBzy0kO4L4Y?smbTmmazMLbUDJx-KBHpwDE`7>nyM4vaFi2dD}Mj<#%P6
zRE(;3O?_K%H|qn-uE(-U)7D8uwC~+;%hkQth$HjuJ&mBaV_x;jZmOCYo+YalQrea;
zv^cXZ@cdCVTNe8pjT_7=lHXQJJc~B&%(i-#va({$J_bj7VgAk&HJ_Ewtl(1gE-<^~
zaa#2LmX<kF8hY>KMAX!5xD&{7I)GcJ`Rs-lDG@oR56@o4Q81-0z<Yi2wr_f3ahw+p
zSUFy7vou#*$*8&FSWLj01Rb#r9Fcs@FU+<`J~xaJ>lXd=Y)6ruAJ-EOfsTY#9S4Kj
z1xhy_H_LoKpDoww&KIs3yIW`EpHy)@`9}Bfy?&#gJS(=Beh~0*4F4)LG0o?rlc$&B
zs>S@x*S<f|3fJ#AmY!+lqi?yO>S)Bv>>~n}%DTx7#~Hrvl6rJ0Bt~<sQ=uoD*i@Mw
z?@Ixal?8V`a;F&7SR2<Cd!&?B&$|9AqSk1|yeRgGuf!6==Co+)$xe1XI3wHVc+;%z
zZ)>_WlHYLOH0xB^wEEG$_Om`6%T8Ii-&y%6p++|`!SnF(EpvMNWa>GT=WvzFq*~8<
zzvGmfN9XCesWVo39+|Xl$^`EPj}1Ft*UeVAqnUa=c7wB2{VCr=R(YFu`+67~9!P!g
z)3&@irB$J3{cHQ_FU?;i^{GvocHK3w{mauc%&jV$p8I_-6a5kYhiSgg*~Co_4`Ub@
P7#KWV{an^LB{Ts5-JgNT

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/ruby.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/ruby.png
new file mode 100755
index 0000000000000000000000000000000000000000..f59b7c4365fa1720af1aa04eb47167ddaa6eeed4
GIT binary patch
literal 626
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfr-V_#WBR<bnj$;e_=<7
z_KltQorLx?v+ZY+@#qQbQd3h=IU>Y!_XbDjA{LJ+$E2p_o-8t!lj3=(B==>3x{#jC
zRBlhfGuOnn-L=1a_uaX7f96QOE#qXp`Q)TbTHX0Gd*1u;H^}k*UT5%2;_v^5TFQb?
zlbZI0tzIhZbVz~Y0<Rf=<h1)oR0|#L`ORnh-q<FaD8VMx%eLz3stF-lq9R<a9+&vy
zA2IDaP#Rk?Pu;CAHS$8K?A9n>4w>VO_gw;~>=)AGSSEiiYv#$h8#J2t)bjqn>ixr8
z|3XwmgY|EbZ;K^o1Pk3MfA1gTd8OrC%KX5k9J_uBemR|fAwS;HKKD?VNXAc_H8Ff&
ze^$yEbXwK0AJ<+T5c;)cfy?xH%-PuvJ9)}H6Ox(J)SB;4V(IS9vg&<bT&$rUyrTbZ
z`?5?~#~D+F4qjoltobBy;~pCa<F)IFygUo6EI4XYSgLjQ)GKrTy(h8eaJ+%<X5|d=
zkH_Dpbf#=R@J?^TR@U?kjx?>-$46cN?6KrYE|Hm+*P&G8$El|-bbYUrV4a(gx}vaf
zK}5vfsZE9DB6iuT@A=yQ^Dk!!lzyso=cCDsPe!laoKw3!v%U7d_=gWWnJ&JLk@GFf
z5nNY(sPLR9hv!S?6Bh+nYrZ@c$y9aC`h}AO=RePN8<}p_JW@*Bc1>u#x!Q}Tlelf3
goBetD{U2j9(|YN$tgEjW7#J8lUHx3vIVCg!0J=K`3jhEB

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/script.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/script.png
new file mode 100755
index 0000000000000000000000000000000000000000..63fe6ceff5bfcedb9670279d4bb8d25807f6ecee
GIT binary patch
literal 859
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$6QMi(`m{r0+rRjF?b{
zhKK*>Rll<_?)MQ2%Iev&NQo^vI%lqHfKKQ_?(Je5kA;ewvxal6bGf7O!YSajAG1=~
z-6Vl6VH=ipX{07~E-QOuGP%;;_`A)!LZ;0xzE_^J{I(`WL!Q~rW`@5=yH(N(<r0yN
z*^BrtFu!VGjdEcA!So}{NKmr)&xL&}A4&V4E8O1LRpc!CG)j5*0+TOJr_WZ+@2=<f
zV|uP4Jkjv;%^An%72Ou9kh{bj?_?vObBuML0E?Z?wh1Zqda)M&y`M54Y`JQsT{wfI
z>eS-J3uT?sS>_6wlqD|DzxnyuE8Q;kOFC!SiYIZ3&iZ*e^>qL3&^YU;2b*8VGQEwk
zoRg}h_~GLR+YW~FWj}w;7u$dLRR~LR`~BNmJudHVI=MY+HQ<q*Sd<bZ_k4ZXjh9hu
ziANmVA1t`V`!geVbN19I!S;K1s}f%}etFye&hzOk-@`MNBY6s5CCqxeOm%YG`Sn|W
zKCGHQ@neU~jRQ$jtO_1}J%0Vj;qU79v1fjCTIZg<nJoFpP~P7`QPpzijAgeB-}qO@
ztmWBw?4isIgCnah7^&6mzh=9;Qe8%rX}-VS_LbXsncS-v?2LFdVS3Z-(4!Y`vTQuy
z9PM3iVB)q?FFEP)U-tdKzMq#qZthi@RM>y@{p$x0UVk;aIb}g`@SdPK3wKOWm2_Av
zpX3y}_sh59KEsm{r`E5`6m&9gF6FanG@bUY@99$EVwGe&3lC4nwOhMG6I(fV*5s9n
zRV@E;V(*-~s>b(TU1{e(efnh6c|g!(g58mt6U!1d+Z@pdO?8S|>c_CWPB-`Bt*Kv}
z+qd-vRBH$)=D0kOX^rU%pMUdsS#n3{s$(r%qU0<8t#qH9zxM}A`DVT?r5el@KYj$Y
zhA`~?C$PG-nKN_iy<6+be-y2Csnhbbo2@XvZ?gCClS`70Bsc94nG-ipU2oyFH;G&S
z^>a!}em*<(Yj3OeYw7Qd#s_!|czu|6y6A8SbvEQ!dD_i>)W83fdBgk}Kje!<3no-6
Tg{@^^U|{fc^>bP0l+XkKzrTqU

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/spinner.gif b/htdocs/includes/jquery/plugins/jqueryFileTree/images/spinner.gif
new file mode 100755
index 0000000000000000000000000000000000000000..85b99d46b9911ba53a792d716d9f688f3bb3c784
GIT binary patch
literal 2530
zcmZ?wbhEHb6krfwU|?WS{Lk&@8WQa67~pE8XTZ$(|38D`PZn-A27U$|kUU6Pv%bE5
zSy|bXDN~j%UAlJd+O1o+?%lih*s){h&Yin<?b^M2_ntq0{{H>@@87@w2LqPQ4=10e
zaF)K>?o`F}z@&9kp#uXGzmd)@Ch-QrT_-N<^a-=Hxj8gw@NifsKVHbOM9SOiv4O?`
zwRLAyK2DTiOSqhtWe~ucv9T>sLx5*8tCMzMjA}4r(Pvu&4L6QpPF@}^M^1O|G8tx0
zSMEN39?mEgRz7wX{*ZcUZWe=C$}F)`%0e7$qP$UpSbSq^Yg=4g+}+(xtZ%wMoP7R-
zqx9AGrYgn<CJh^HeFPc~C^NKgGdR!K&bh&?`!NTTi?V@(1RKM#MFtrKdQEMgFD4jp
zbNe2eFjGZHIGM3JONOV-xY6NW1UJj%mW408L~eRA8!GsyyR)0{`8ct2hH|m-a@P7)
z_;YeZFemVE#_}ffv9p*mn@DrBM9x)aNsv|+auel^#pWMNOUwHDdJ<v><R2Bm(pTG$
zR5?B{XxwP~<O9b+E}2`0Y&<4x;Jjeg^;o3Y#W^8BfrG(KuhWQ!tGDgQMGgjrRvz|+
zQ(0JqTMib?$hCUh+~}ZDW7gx;m@vtpO8RK@B?lgkASu685eE)lcBgVSUe5ZUDj7$P
zJVy=ADBdDa1hF%x8M4UF4PoI_4-rbj5kFQ|R<*UYGiJ;nHhy|PoP54Svh>yQQ&r9n
zOc*!W@&-0Aa?H4V$mY}pfhH!76^|@h8y6*7=m@njJZ4}pv6$|pY|LfCJM%cx#Hk!?
z!YvCeZtE~HF&=aXs5RTAmT>4p?zLHLNe&fRdhEsy%pAPzoV=xMyqq=uT=Lvz9CBtd
zoRPe&;1tKsoGQi5B0o==g;QNwC`mL}7+VZEIy&a(=aZP?RE$br9p|cMe`w;o$(A><
z;czfZ*S4Bd3uF!piL7{J!5V$IAwffciA_l$qkyN`N!eJ4fvMw6^2ECW6=KZ~Kit$|
z@o8-Q5IaYN@jz+P6)!G!UuHuE3w6FCW_hTecsLo;i~P9qxK%k=r)YCBM}a)0sFP~M
zlBcN5q9(1Jh{HcNHa7M3^(4el&xe!G5&mff`{zhAPdCUvEoT}QbUzl^*2Z`+LW85H
zMd88&3AR?ZG#3sIAtRTxA`2hAw!`U%Bcga&oD{c3vfOLrblx~sWY6Sd-52IqFflNy
z*;|2Ph?|9ho0);Zm&>r1lY@zsft8<=HCkn^B7c955sRTBANNdkWibhvXlxPW;NXy*
zolQan5$~a1)(r;@dANGdyf9Fhp~mf!R&*nh2jn3Io_TCc3k8(<S(*;EEWF{hYt}LD
zm4zG(OosMWydhkitc+faj6Ph3+@U?}3`OSADy)2r4E%FA)wx*=85sDu8MLL9g?dB-
zv8FgvQ`7YH^v1?UQt}XSF@*5YhaO+Cjx#C~XT<QdpI=sJ(7?;$bZ}MTl2Bncr|g%0
zQtKItA4zbq$=myLF&daN@vt*7`EVJsF|aZ*axm&fMDZ{%fxI+XO`4rSZ5|&FBfGk?
z&}1AwQdLz=NlBS7VFIx}0+({|JcKXJ;q}p>1-oC0gxqTkTeQJTf{~$NWnr6U6%#jO
z6E`Ol4=1w+zp4TQ3lk$JBfAV|R0Sj7B>stI(G1#?_;{GCrIm%4nQ-{W&dx4BKc58u
zbP=70Q2fK!1d1URhK2)qmn|fCZZ!NVcqI~Yy9w+cCWGL|HZ?NwOx#Q?JUpCiyqwG)
z3OSq%`Anv<?NPj0e9TPze)7`XN&K_<cvxbkm4*Cpc*ow}zPPxU1n;!t@J`u`^+HC>
zO?rL849sp14n$~h^tvWqsL)|yU|8&#DZ|!!<B7rvAEC}p1qZ(THEf3;irdbyV!i6p
zcvEA`q+<*M3;cMPT}131wRm_+K;F@_;&Nt-WKQJajN@gBWz!9pm-bJbqs)>fr7Tv;
z8;7kl(9_e)&(H7e?Ikv;fhr(S=2^~A#s1Kwb(1X*Lj$OIn>K^p;m(;4rrnQOwz(-x
zh|u8Jb7;Xw4+dslwWWm;B1w~*6^uPq)R-G@Y*{G9b4&5#5e*TJwv$W;r)q4N)aIx&
zSAvb5M}(P?m4_YF<^e~KUOYE5Cr9{H4bB)9Rz5`q<|b)w7DGj4mUwApF$sR&7(oVW
E0Pke+0ssI2

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/txt.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/txt.png
new file mode 100755
index 0000000000000000000000000000000000000000..813f712f726c935f9adf8d2f2dd0d7683791ef11
GIT binary patch
literal 342
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4i*LmhONKMUokK+u%tWsIx;Y<KVi<=^^$>s
zL9)a(q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1H%hX7sn6@N!EjgdBKhn
zYzJ;0pVw&OxTC4BNn@es<lq85?|=fOmP>(`9J@HoB~<&G@BjO4czMxW>(5LK8$N3b
zw{$=M8>I{e=YMY5y3vIrJlpo!1ZTdVv+aM*o%p-v-mQqHXIW2X)LTBA(f(%h=@Y?n
zpHs7ieTyykO<nKj7q<GUyTktn+nBqvT{I8hGugu;n~}G+ZSuk?FWD|I>M;f`6LMhx
zktgA$X&B3Fb-<dzP|$(>$3mXVAv5kVTOE*QVPq(2n7=G@7SlZ@tB!9{3=N)}RMKR9
r85lOt6Vbh;oi4_}FeUcgKW64FQ_siwlnFC1Ffe$!`njxgN@xNAH*$g;

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/xls.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/xls.png
new file mode 100755
index 0000000000000000000000000000000000000000..b977d7e52e2446ea01201c5c7209ac3a05f12c9f
GIT binary patch
literal 663
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfl1TT#WBR<bnj$;kB~r-
zWA)$nS}%6#vpV5(S^lKhRkf}|jf+}c1YI6(;@GaK%Vh4jZR!d!!A_yT+k#Ont<twe
zMOe2A^a!jJOX@J5nS9nF|K9HJ^UNOK2w5UubNcgR>p7n_1sNSQw+eeO+x-uhn;|U7
z-p~=yEW_EfK*DvR>9G_0Wmp<}`ugrMmod-lFk#pfC~`AsrOMNyo$sbj6^)FGn|Ac5
ztKqQ|hYmIM^!8p=%qrLver=PbdPk{+x`lSc<AQ66y^p`WESz*wB~jwh9Odb!dwF<x
z?xYrM3O5V7e^^dagsXlnOUl<vF`cKs>u=DVtio~H#8r0BjJXTes&)$XFO|Q4V#(zr
zj|;nwDxI_JF<cU)$?)Y`pIYD6`3rO}dQF+>{OPU9(d0i<-k*8?d}rlH#_Pv^UyNEj
z<xo`j`}Ojtx>vRBn^$L7Gjoy2<wJYUT$t1GIqj8c_<7#V^~V_xbshX(yX9KO+Rmd%
zuNw?DoT-`n?B^HbdHYUZjI=$I<vsJw!N)drKRXmw39t&zd;aiuooonu$SKC>@8_so
zo#nR0z{v2-w*}ok;p!^0c79FiFxa56l;K0I{Q1wX7;;xl(@t;m$jLk!b$H$vyL;#N
zJ-Yn7zh&ORZkfQV3Q8JF3(lGTdwNs)Chz$hwVCT%5^p^CC3*Nj!K+`2YcgwO(w9Em
zcrENl@G3E1#=FO6Y;Q;^E{b}+IBsnKlSOteYr$;EZP(T@h5ZeC9=p}5dbUqO;~)Kb
Y;;Y@YF2~z3FfcH9y85}Sb4q9e0F7lca{vGU

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/zip.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/zip.png
new file mode 100755
index 0000000000000000000000000000000000000000..fd4bbccdf1643f4ff5022fbc59b82546e259317e
GIT binary patch
literal 386
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4i*LmhONKMUokK+u%tWsIx;Y<KVi<=^^$>s
zL9)a(q9iy!t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU37V1EYwii(`n!`PhrTUWXY3
z+8$oi-m&$8tP-QXik#E+rX7KAoCHExG=Hq$vWP<|OrT`(BVLz_TGzfDU*`Gim+IPu
zocG^6J9$RM@XWEZhUU{brH?*3^0efY<ChbCLTWEJZ2IE=sHl0xNjd#DpAMV9SIQS*
zKaz9g&V+cm9U@r)&z%?eP7a+Y^5f0xmCU9#S<SAB&z31X=+y4pvUjQJ{8^u7u`Zlt
z>c^7&=;fsKHWkafW*R8w-hK4cF|yfz^4ZwfD`7<s0#>Rh2z)SAXFfM`>4`;gW*1u4
z-Ll+pPO3O3$m`bM6o*dMyL)xSmPoSg<x0;fJmdCj;uH<WRi67x@9us)O?q4Vt-8Z=
s>@<3O&&Hp*bA0AHzQ0Asxo*h&Y=}OV*R|#l0|Nttr>mdKI;Vst0GUFlIRF3v

literal 0
HcmV?d00001

diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css b/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css
new file mode 100755
index 00000000000..1eb53bba263
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css
@@ -0,0 +1,90 @@
+UL.jqueryFileTree {
+	font-family: Verdana, sans-serif;
+	font-size: 11px;
+	line-height: 18px;
+	padding: 0px;
+	margin: 0px;
+}
+
+UL.jqueryFileTree LI {
+	list-style: none;
+	padding: 0px;
+	padding-left: 20px;
+	margin: 0px;
+	white-space: nowrap;
+}
+
+UL.jqueryFileTree A {
+	color: #333;
+	text-decoration: none;
+	padding: 0px 2px;
+}
+
+UL.jqueryFileTree A:hover {
+	background: #BDF;
+}
+
+/* Core Styles */
+.jqueryFileTree LI.directory { background: url(images/directory.png) left top no-repeat; }
+.jqueryFileTree LI.expanded { background: url(images/folder_open.png) left top no-repeat; }
+.jqueryFileTree LI.file { background: url(images/file.png) left top no-repeat; }
+.jqueryFileTree LI.wait { background: url(images/spinner.gif) left top no-repeat; }
+/* File Extensions*/
+.jqueryFileTree LI.ext_3gp { background: url(images/film.png) left top no-repeat; }
+.jqueryFileTree LI.ext_afp { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_afpa { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_asp { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_aspx { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_avi { background: url(images/film.png) left top no-repeat; }
+.jqueryFileTree LI.ext_bat { background: url(images/application.png) left top no-repeat; }
+.jqueryFileTree LI.ext_bmp { background: url(images/picture.png) left top no-repeat; }
+.jqueryFileTree LI.ext_c { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_cfm { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_cgi { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_com { background: url(images/application.png) left top no-repeat; }
+.jqueryFileTree LI.ext_cpp { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_css { background: url(images/css.png) left top no-repeat; }
+.jqueryFileTree LI.ext_doc { background: url(images/doc.png) left top no-repeat; }
+.jqueryFileTree LI.ext_exe { background: url(images/application.png) left top no-repeat; }
+.jqueryFileTree LI.ext_gif { background: url(images/picture.png) left top no-repeat; }
+.jqueryFileTree LI.ext_fla { background: url(images/flash.png) left top no-repeat; }
+.jqueryFileTree LI.ext_h { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_htm { background: url(images/html.png) left top no-repeat; }
+.jqueryFileTree LI.ext_html { background: url(images/html.png) left top no-repeat; }
+.jqueryFileTree LI.ext_jar { background: url(images/java.png) left top no-repeat; }
+.jqueryFileTree LI.ext_jpg { background: url(images/picture.png) left top no-repeat; }
+.jqueryFileTree LI.ext_jpeg { background: url(images/picture.png) left top no-repeat; }
+.jqueryFileTree LI.ext_js { background: url(images/script.png) left top no-repeat; }
+.jqueryFileTree LI.ext_lasso { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_log { background: url(images/txt.png) left top no-repeat; }
+.jqueryFileTree LI.ext_m4p { background: url(images/music.png) left top no-repeat; }
+.jqueryFileTree LI.ext_mov { background: url(images/film.png) left top no-repeat; }
+.jqueryFileTree LI.ext_mp3 { background: url(images/music.png) left top no-repeat; }
+.jqueryFileTree LI.ext_mp4 { background: url(images/film.png) left top no-repeat; }
+.jqueryFileTree LI.ext_mpg { background: url(images/film.png) left top no-repeat; }
+.jqueryFileTree LI.ext_mpeg { background: url(images/film.png) left top no-repeat; }
+.jqueryFileTree LI.ext_ogg { background: url(images/music.png) left top no-repeat; }
+.jqueryFileTree LI.ext_pcx { background: url(images/picture.png) left top no-repeat; }
+.jqueryFileTree LI.ext_pdf { background: url(images/pdf.png) left top no-repeat; }
+.jqueryFileTree LI.ext_php { background: url(images/php.png) left top no-repeat; }
+.jqueryFileTree LI.ext_png { background: url(images/picture.png) left top no-repeat; }
+.jqueryFileTree LI.ext_ppt { background: url(images/ppt.png) left top no-repeat; }
+.jqueryFileTree LI.ext_psd { background: url(images/psd.png) left top no-repeat; }
+.jqueryFileTree LI.ext_pl { background: url(images/script.png) left top no-repeat; }
+.jqueryFileTree LI.ext_py { background: url(images/script.png) left top no-repeat; }
+.jqueryFileTree LI.ext_rb { background: url(images/ruby.png) left top no-repeat; }
+.jqueryFileTree LI.ext_rbx { background: url(images/ruby.png) left top no-repeat; }
+.jqueryFileTree LI.ext_rhtml { background: url(images/ruby.png) left top no-repeat; }
+.jqueryFileTree LI.ext_rpm { background: url(images/linux.png) left top no-repeat; }
+.jqueryFileTree LI.ext_ruby { background: url(images/ruby.png) left top no-repeat; }
+.jqueryFileTree LI.ext_sql { background: url(images/db.png) left top no-repeat; }
+.jqueryFileTree LI.ext_swf { background: url(images/flash.png) left top no-repeat; }
+.jqueryFileTree LI.ext_tif { background: url(images/picture.png) left top no-repeat; }
+.jqueryFileTree LI.ext_tiff { background: url(images/picture.png) left top no-repeat; }
+.jqueryFileTree LI.ext_txt { background: url(images/txt.png) left top no-repeat; }
+.jqueryFileTree LI.ext_vb { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_wav { background: url(images/music.png) left top no-repeat; }
+.jqueryFileTree LI.ext_wmv { background: url(images/film.png) left top no-repeat; }
+.jqueryFileTree LI.ext_xls { background: url(images/xls.png) left top no-repeat; }
+.jqueryFileTree LI.ext_xml { background: url(images/code.png) left top no-repeat; }
+.jqueryFileTree LI.ext_zip { background: url(images/zip.png) left top no-repeat; }
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js b/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js
new file mode 100755
index 00000000000..c9b0e3853df
--- /dev/null
+++ b/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js
@@ -0,0 +1,97 @@
+// jQuery File Tree Plugin
+//
+// Version 1.01
+//
+// Cory S.N. LaViska
+// A Beautiful Site (http://abeautifulsite.net/)
+// 24 March 2008
+//
+// Visit http://abeautifulsite.net/notebook.php?article=58 for more information
+//
+// Usage: $('.fileTreeDemo').fileTree( options, callback )
+//
+// Options:  root           - root folder to display; default = /
+//           script         - location of the serverside AJAX file to use; default = jqueryFileTree.php
+//           folderEvent    - event to trigger expand/collapse; default = click
+//           expandSpeed    - default = 500 (ms); use -1 for no animation
+//           collapseSpeed  - default = 500 (ms); use -1 for no animation
+//           expandEasing   - easing function to use on expand (optional)
+//           collapseEasing - easing function to use on collapse (optional)
+//           multiFolder    - whether or not to limit the browser to one subfolder at a time
+//           loadMessage    - Message to display while initial tree loads (can be HTML)
+//
+// History:
+//
+// 1.01 - updated to work with foreign characters in directory/file names (12 April 2008)
+// 1.00 - released (24 March 2008)
+//
+// 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) {
+			// Defaults
+			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) {
+					/* DOL_CHANGE Replace LI A by LI A.jqft */
+					$(t).find('LI A.jqft').bind(o.folderEvent, function() {
+						if( $(this).parent().hasClass('directory') ) {
+							if( $(this).parent().hasClass('collapsed') ) {
+								// Expand
+								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(); // cleanup
+								showTree( $(this).parent(), escape($(this).attr('rel').match( /.*\// )) );
+								$(this).parent().removeClass('collapsed').addClass('expanded');
+							} else {
+								// Collapse
+								$(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
+								$(this).parent().removeClass('expanded').addClass('collapsed');
+							}
+						} else {
+							h($(this).attr('rel'));
+						}
+						return false;
+					});
+					// Prevent A from triggering the # on non-click events
+					/* DOL_CHANGE Replace LI A by LI A.jqft */
+					if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A.jqft').bind('click', function() { return false; });
+				}
+				// Loading message
+				$(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
+				// Get the initial file list
+				showTree( $(this), escape(o.root) );
+			});
+		}
+	});
+	
+})(jQuery);
\ No newline at end of file
-- 
GitLab