/**
 * Initialize the download tree
 */
var dontSlide = true;

function initDownload() {

	jQuery('.ce-download .tree_container').html('');

	getSubfolders(base, '.ce-download .tree_container');	

}

/*
 * Function creates async ajax request for subfolders
 */
function getSubfolders(id, appendTo) {

	jQuery.ajax({

		type: 'GET',

		url: url + id,

		dataType: 'xml',

		success: function(xml) {

			var html = jQuery('<ul></ul>'); 
			var cFolder = 0;
			var cFiles = 0;

			// Process subfolders
			jQuery('folder subfolders folder', xml).each(function() {
		
				var item = jQuery('<li></li>').html('<a class="folder" href="javascript:" rel="' + jQuery("uid", this).text() + '">' + jQuery("title", this).text() + '</a>');

				item.appendTo(html);

				cFolder++;

			});

			// Process files
			jQuery('folder files file', xml).each(function() {

				var title = jQuery('title', this).text();
				var file = jQuery('file', this).text();
				var ext = jQuery('ext', this).text();
				var size = jQuery('size', this).text();
				var description = jQuery('description', this).text();
				var preview = jQuery('preview', this).text();

				if(!title || !file || !ext)
					return;

			   var li = jQuery('<li></li>');

				// Build text item
				var item = jQuery('<a></a>').text(title);
				item.attr('href', file);
				item.attr('title', description + '(' + size + ')');
				item.attr('target', '_blank');
				item.addClass('file_' + ext + ' file');
				item.appendTo(li);

				// Build infobox item
				
				if(preview) {

					jQuery.preLoadImages(preview);

					var info = jQuery('<img />');
					info.attr('src', 'fileadmin/templates/images/info.gif');
					info.addClass('fileinfo');

					info = jQuery('<a href="#"></a>').append(info);
					info.click(function(event) {
	
						event.preventDefault();

						jQuery.fancybox(
							'<div class="preview"><img src="' + preview + '" alt="" /></div>' +
							'<p style="text-align:center"><a href="' + file + '" target="_blank">Download</a></p>' , 
							{
								'autoDimensions':	true,
								'title':  size 
							}
						);

					});

  					info.appendTo(li);
				}
				li.appendTo(html);

				cFiles++;

			});

			if(cFiles + cFolder > 0) {
				

				jObj = jQuery(html);

				// Register onclick function
				jObj.find('a[rel]').click(handleClick);
				jObj.hide();

				jObj.appendTo(appendTo);

				if(!dontSlide) { 
					jObj.slideDown();
				}
				else {
					jObj.show();
					dontSlide = false;
				}
			}

			var ajaxload = jQuery(appendTo).find('.ajaxload');
			if(ajaxload) ajaxload.remove();
		}
	});

}

/*
 * Function handles the click on a folder
 */
function handleClick() {

		cObj = jQuery(this);

		cObj.blur();

		if(cObj.hasClass('folder_open')) {
			// Close...
			cObj.parent().find('> ul').slideUp();
			cObj.removeClass('folder_open');
			cObj.addClass('folder_closed');
		}
		else if(cObj.hasClass('folder_closed')) {
			// Reopen...
			cObj.parent().find('> ul').slideDown();
			cObj.removeClass('folder_closed');
			cObj.addClass('folder_open');
		}
		else {
			// Ajax load...
			cObj.append('<img class="ajaxload" src="fileadmin/templates/images/ajaxload.gif" alt="" />');
			
			var subfolderParent = cObj.attr('rel');
			cObj.addClass('folder_open');

			// Get subfolders via ajax request
			getSubfolders(subfolderParent, cObj.parent());
		}

}

(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)


