/**
 * @class de_epages.mediagallery.filemanager
 * 
 */

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

/*global define*/

define("de_epages/mediagallery/filemanager", [
    "jquery",
    "de_epages/mediagallery/filemanager/main-view"
], function ($, MainView) {
    "use strict";

    // defaults
    var defaults = {
            //syncLogo
            element: $("#fileManager"),     // element which contains the file manager
            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
            maxRender: 10,                  // number of list elements that will be initially rendered and added by scrolling downwards
            multiSelect: false,             // allow to select one or several files
            showMediaGallery: 1,            // show or hide the MediaGallery directory
            showHeaderImages: 1,            // show or hide the HeaderImages directory
            showBackgroundImages: 1,        // show or hide the BackgroundImages directory
            showImageDB: 1                  // show or hide the ImageDB directory
        },

        module = {
            /**
             * Create an user interface to manage your files.
             * 
             * The `.de_epages.mediagallery.filemanager.init()` 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 file manager is a backbone app.
             * For embbeding it into a page please use the `.mediagalleryUiFilemanager()` method because it offers you the advantages of a widget.
             * 
             * ### Examples
             * Apply .de_epages.mediagallery.filemanager() method to an element and open the header images tab by default.
             * 
             * JavaScript:
             * 
             *     de_epages.mediagallery.filemanager.init({
             *     element:       $("#filemanager"),
             *     selectable:    "image/",
             *     currentFolder: "HeaderImages"
             *     });
             * 
             * HTML:
             * 
             *     <div id="filemanager"></div>
             * 
             * 
             * ### Dependencies
             * 
             *  + `backbone`
             *  + `jQuery.ui.widget`
             *  + `jQuery.tmpl`
             *  + `jQuery.lazyload`
             *  + `jQuery.ui.selectable`
             *  + `jQuery.jstree`
             *  + `jQuery.jstree.themes`
             *  + `jQuery.jstree.json_data`
             *  + `ep.dict`
             *  + `ep.ui.tooltip`
             *  + `de_epages`
             *  + `de_epages.mediagallery.ui.memoryusage de_epages.presentation.ui.uploader`
             * 
             * @param {Object} [options] A map of additional options pass to the method.
             * @param {String} [options.accept] A string of MIME types and/or MIME type groups which will be accepted by the uploader.
             * @param {String} [options.currentFolder] A string containing the navigation element which will be opened by default. Possibilities: MediaGallery, HeaderImages, BackgroundImages, ImageDB
             * @param {jQuery} [options.element] A jQuery Object containing the DOM node which will contain the file manager.
             * @param {String} [options.selectable] A string of MIME types and/or MIME type groups which can be selected.
             * @param {Number} [options.maxRender] A number of list elements that will be initially rendered and added by scrolling downwards.
             * @param {Number} [options.showMediaGallery] Show or hide the MediaGallery directory.
             * @param {Number} [options.showHeaderImages] Show or hide the HeaderImages directory.
             * @param {Number} [options.showBackgroundImages] Show or hide the BackgroundImages directory.
             * @param {Number} [options.showImageDB] Show or hide the ImageDB directory.
             * @param {Boolean} [options.multiSelect] Allow to select one or several files.
             * 
             * @method init
             * @static 
             * @member de_epages.mediagallery.filemanager
             * 
             * @since 6.15.0
             */
            init: function (options) {
                var myOptions = $.extend(true, {}, defaults, options),
                    filemanager = new MainView(myOptions);

                return filemanager;
            }
        };

    return module;
});