title: Alterting cute file browser to be comaptible with any jquery version
body: <p>I have been experimenting with cute file browser (perfect for my project). </p>
  
  <p><a href="http://tutorialzine.com/2014/09/cute-file-browser-jquery-ajax-php/" rel="nofollow">Cute File Browser</a></p>
  
  <p>But came accross a incomaptibiliy issue. Im not getting any errors in console, but im also not getting any elements being rendered. I have switched libraries about and I think this plugin only works with jquery version 1.11.0, the version my project is using is 1.11.3.</p>
  
  <p><strong>How should I attempt to fix/update this small script?</strong></p>
  
  <p><strong>CUTE SCRIPT:</strong></p>
  
  <pre><code>$(function(){
  
   var filemanager = $('.filemanager'),
      breadcrumbs = $('.breadcrumbs'),
      fileList = filemanager.find('.data');
  
  // Start by fetching the file data from scan.php with an AJAX request
  
  $.get('scan.php', function(data) {
  
      var response = [data],
          currentPath = '',
          breadcrumbsUrls = [];
  
      var folders = [],
          files = [];
  
      // This event listener monitors changes on the URL. We use it to
      // capture back/forward navigation in the browser.
  
      $(window).on('hashchange', function(){
  
          goto(window.location.hash);
  
          // We are triggering the event. This will execute 
          // this function on page load, so that we show the correct folder:
  
      }).trigger('hashchange');
  
  
      // Hiding and showing the search box
  
      filemanager.find('.search').click(function(){
  
          var search = $(this);
  
          search.find('span').hide();
          search.find('input[type=search]').show().focus();
  
      });
  
  
      // Listening for keyboard input on the search field.
      // We are using the "input" event which detects cut and paste
      // in addition to keyboard input.
  
      filemanager.find('input').on('input', function(e){
  
          folders = [];
          files = [];
  
          var value = this.value.trim();
  
          if(value.length) {
  
              filemanager.addClass('searching');
  
              // Update the hash on every key stroke
              window.location.hash = 'search=' + value.trim();
  
          }
  
          else {
  
              filemanager.removeClass('searching');
              window.location.hash = encodeURIComponent(currentPath);
  
          }
  
      }).on('keyup', function(e){
  
          // Clicking 'ESC' button triggers focusout and cancels the search
  
          var search = $(this);
  
          if(e.keyCode == 27) {
  
              search.trigger('focusout');
  
          }
  
      }).focusout(function(e){
  
          // Cancel the search
  
          var search = $(this);
  
          if(!search.val().trim().length) {
  
              window.location.hash = encodeURIComponent(currentPath);
              search.hide();
              search.parent().find('span').show();
  
          }
  
      });
  
  
      // Clicking on folders
  
      fileList.on('click', 'li.folders', function(e){
          e.preventDefault();
  
          var nextDir = $(this).find('a.folders').attr('href');
  
          if(filemanager.hasClass('searching')) {
  
              // Building the breadcrumbs
  
              breadcrumbsUrls = generateBreadcrumbs(nextDir);
  
              filemanager.removeClass('searching');
              filemanager.find('input[type=search]').val('').hide();
              filemanager.find('span').show();
          }
          else {
              breadcrumbsUrls.push(nextDir);
          }
  
          window.location.hash = encodeURIComponent(nextDir);
          currentPath = nextDir;
      });
  
  
      // Clicking on breadcrumbs
  
      breadcrumbs.on('click', 'a', function(e){
          e.preventDefault();
  
          var index = breadcrumbs.find('a').index($(this)),
              nextDir = breadcrumbsUrls[index];
  
          breadcrumbsUrls.length = Number(index);
  
          window.location.hash = encodeURIComponent(nextDir);
  
      });
  
  
      // Navigates to the given hash (path)
  
      function goto(hash) {
  
          hash = decodeURIComponent(hash).slice(1).split('=');
  
          if (hash.length) {
              var rendered = '';
  
              // if hash has search in it
  
              if (hash[0] === 'search') {
  
                  filemanager.addClass('searching');
                  rendered = searchData(response, hash[1].toLowerCase());
  
                  if (rendered.length) {
                      currentPath = hash[0];
                      render(rendered);
                  }
                  else {
                      render(rendered);
                  }
  
              }
  
              // if hash is some path
  
              else if (hash[0].trim().length) {
  
                  rendered = searchByPath(hash[0]);
  
                  if (rendered.length) {
  
                      currentPath = hash[0];
                      breadcrumbsUrls = generateBreadcrumbs(hash[0]);
                      render(rendered);
  
                  }
                  else {
                      currentPath = hash[0];
                      breadcrumbsUrls = generateBreadcrumbs(hash[0]);
                      render(rendered);
                  }
  
              }
  
              // if there is no hash
  
              else {
                  currentPath = data.path;
                  breadcrumbsUrls.push(data.path);
                  render(searchByPath(data.path));
              }
          }
      }
  
      // Splits a file path and turns it into clickable breadcrumbs
  
      function generateBreadcrumbs(nextDir){
          var path = nextDir.split('/').slice(0);
          for(var i=1;i&lt;path.length;i++){
              path[i] = path[i-1]+ '/' +path[i];
          }
          return path;
      }
  
  
      // Locates a file by path
  
      function searchByPath(dir) {
          var path = dir.split('/'),
              demo = response,
              flag = 0;
  
          for(var i=0;i&lt;path.length;i++){
              for(var j=0;j&lt;demo.length;j++){
                  if(demo[j].name === path[i]){
                      flag = 1;
                      demo = demo[j].items;
                      break;
                  }
              }
          }
  
          demo = flag ? demo : [];
          return demo;
      }
  
  
      // Recursively search through the file tree
  
      function searchData(data, searchTerms) {
  
          data.forEach(function(d){
              if(d.type === 'folder') {
  
                  searchData(d.items,searchTerms);
  
                  if(d.name.toLowerCase().match(searchTerms)) {
                      folders.push(d);
                  }
              }
              else if(d.type === 'file') {
                  if(d.name.toLowerCase().match(searchTerms)) {
                      files.push(d);
                  }
              }
          });
          return {folders: folders, files: files};
      }
  
  
      // Render the HTML for the file manager
  
      function render(data) {
  
          var scannedFolders = [],
              scannedFiles = [];
  
          if(Array.isArray(data)) {
  
              data.forEach(function (d) {
  
                  if (d.type === 'folder') {
                      scannedFolders.push(d);
                  }
                  else if (d.type === 'file') {
                      scannedFiles.push(d);
                  }
  
              });
  
          }
          else if(typeof data === 'object') {
  
              scannedFolders = data.folders;
              scannedFiles = data.files;
  
          }
  
  
          // Empty the old result and make the new one
  
          fileList.empty().hide();
  
          if(!scannedFolders.length &amp;&amp; !scannedFiles.length) {
              filemanager.find('.nothingfound').show();
          }
          else {
              filemanager.find('.nothingfound').hide();
          }
  
          if(scannedFolders.length) {
  
              scannedFolders.forEach(function(f) {
  
                  var itemsLength = f.items.length,
                      name = escapeHTML(f.name),
                      icon = '&lt;span class="icon folder"&gt;&lt;/span&gt;';
  
                  if(itemsLength) {
                      icon = '&lt;span class="icon folder full"&gt;&lt;/span&gt;';
                  }
  
                  if(itemsLength == 1) {
                      itemsLength += ' item';
                  }
                  else if(itemsLength &gt; 1) {
                      itemsLength += ' items';
                  }
                  else {
                      itemsLength = 'Empty';
                  }
  
                  var folder = $('&lt;li class="folders"&gt;&lt;a href="'+ f.path +'" title="'+ f.path +'" class="folders"&gt;'+icon+'&lt;span class="name"&gt;' + name + '&lt;/span&gt; &lt;span class="details"&gt;' + itemsLength + '&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;');
                  folder.appendTo(fileList);
              });
  
          }
  
          if(scannedFiles.length) {
  
              scannedFiles.forEach(function(f) {
  
                  var fileSize = bytesToSize(f.size),
                      name = escapeHTML(f.name),
                      fileType = name.split('.'),
                      icon = '&lt;span class="icon file"&gt;&lt;/span&gt;';
  
                  fileType = fileType[fileType.length-1];
  
                  icon = '&lt;span class="icon file f-'+fileType+'"&gt;.'+fileType+'&lt;/span&gt;';
  
                  var file = $('&lt;li class="files"&gt;&lt;a href="'+ f.path+'" title="'+ f.path +'" class="files"&gt;'+icon+'&lt;span class="name"&gt;'+ name +'&lt;/span&gt; &lt;span class="details"&gt;'+fileSize+'&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;');
                  file.appendTo(fileList);
              });
  
          }
  
  
          // Generate the breadcrumbs
  
          var url = '';
  
          if(filemanager.hasClass('searching')){
  
              url = '&lt;span&gt;Search results: &lt;/span&gt;';
              fileList.removeClass('animated');
  
          }
          else {
  
              fileList.addClass('animated');
  
              breadcrumbsUrls.forEach(function (u, i) {
  
                  var name = u.split('/');
  
                  if (i !== breadcrumbsUrls.length - 1) {
                      url += '&lt;a href="'+u+'"&gt;&lt;span class="folderName"&gt;' + name[name.length-1] + '&lt;/span&gt;&lt;/a&gt; &lt;span class="arrow"&gt;→&lt;/span&gt; ';
                  }
                  else {
                      url += '&lt;span class="folderName"&gt;' + name[name.length-1] + '&lt;/span&gt;';
                  }
  
              });
  
          }
  
          breadcrumbs.text('').append(url);
  
  
          // Show the generated elements
  
          fileList.animate({'display':'inline-block'});
  
      }
  
  
      // This function escapes special html characters in names
  
      function escapeHTML(text) {
          return text.replace(/\&amp;/g,'&amp;amp;').replace(/\&lt;/g,'&amp;lt;').replace(/\&gt;/g,'&amp;gt;');
      }
  
  
      // Convert file sizes from bytes to human readable units
  
      function bytesToSize(bytes) {
          var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
          if (bytes == 0) return '0 Bytes';
          var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
          return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
        }
  
     });
  });
  </code></pre>