/**
 * Create an user interface to manage your files.
 * 
 * The `.mediagalleryUiFilemanager()` method creates an user interface which manages the organisation of your files.
 * In addition to that you can choose images from the image database or add, rename and delete files or directories.
 * 
 * The widget uses  the `.de_epages.mediagallery.filemanager` method as base.
 * 
 * ### Examples
 * Apply .mediagalleryUiFilemanager() widget to an element and open the header images tab by default.
 * 
 * JavaScript:
 * 
 *     de_epages("#filemanager").mediagalleryUiFilemanager({																	
 *     selectable:    "image/",
 *     currentFolder: "HeaderImages"
 *     });
 * 
 * HTML:
 * 
 *     <div id="filemanager"></div>
 * 
 * 
 * @class jQuery.ui.mediagalleryUiFilemanager
 * @extends jQuery.widget
 * 
 * @uses jQuery.ui.widget
 * @uses de_epages
 * @uses de_epages.mediagallery.filemanager
 * @since 6.15.0
 */

/**
 * @cfg {String} [accept] A string of MIME types and/or MIME type groups which will be accepted by the uploader.
 */

/**
 * @cfg {String} [currentFolder] A string containing the navigation element which will be opened by default. Possibilities: MediaGallery, HeaderImages, BackgroundImages, ImageDB
 */

/**
 * @cfg {jQuery} [element] A jQuery Object containing the DOM node which will contain the file manager.
 */

/**
 * @cfg {String} [selectable] A string of MIME types and/or MIME type groups which can be selected.
 */

/**
 * See `jQuery.ui.mediagalleryUiFilemanager` for details.
 * 
 * @param {Object} [options] A map of additional options pass to the method.
 * @param {String} [accept] A string of MIME types and/or MIME type groups which will be accepted by the uploader.
 * @param {String} [currentFolder] A string containing the navigation element which will be opened by default. Possibilities: MediaGallery, HeaderImages, BackgroundImages, ImageDB
 * @param {jQuery} [element] A jQuery Object containing the DOM node which will contain the file manager.
 * @param {String} [selectable] A string of MIME types and/or MIME type groups which can be selected.
 * 
 * @method mediagalleryUiFilemanager
 * @member jQuery
 * 
 * @since 6.15.0
 */

/*
 * @copyright		© Copyright 2006-2010, epages GmbH, All Rights Reserved.
 *
 * @module			de_epages.mediagallery.ui.filemanager
 *
 * @revision		$Revision: 1.8 $
 */

define("de_epages/mediagallery/ui/filemanager",[
	"jquery/ui/widget",
	"de_epages",
	"de_epages/mediagallery/filemanager"
], function ($, de_epages, filemanager) {


	$.widget("ui.mediagalleryUiFilemanager", {

		options: {
			accept:        "*/*",          // a string of MIME types and/or MIME type groups which will be accepted by the uploader
			selectable:    "image/",       // a string of MIME types and/or MIME type groups which can be selected
			currentFolder: "MediaGallery"  // root node of the opened folder
		},

		_create: function(){
			var self = this,
				o = self.options;

			self.filemanagerContainer = $('<div>').appendTo(self.element);
			$.extend(o, {element: self.filemanagerContainer});

			self.filemanager = filemanager.init(o);
		},

		/**
		 * This method returns the value of the current gallery usage.
		 * 
		 * @method getCurrentUsage
		 * @member jQuery.ui.mediagalleryUiFilemanager
		 * 
		 * @since 6.15.0
		 */
		getCurrentUsage: function(){
			return this.filemanager.getCurrentUsage();
		},

		/**
		 * This method returns an array containing all selected files which are selectable.
		 * 
		 * @method getSelectedElements
		 * @member jQuery.ui.mediagalleryUiFilemanager
		 * 
		 * @since 6.15.0
		 */
		getSelectedElements: function(){
			return this.filemanager.getSelectedElements();
		},

		/**
		 * This method destroys the file manager.
		 * 
		 * @method destroy
		 * @member jQuery.ui.mediagalleryUiFilemanager
		 * 
		 * @since 6.15.0
		 */
		destroy: function(){
			if (this.filemanagerContainer) {
				this.filemanagerContainer.remove();
			}
			this._superApply(arguments);
		}
	});

	return de_epages;
});