/*globals define*/
/*jslint nomen: true*/

define('de_epages/shop/ui/linkpicker', [
    'jquery/ui/widget',
    'de_epages',
    'de_epages/shop/linkpicker'
/**
 * linkpicker ui widget
 * @param  {Function} $     jQuery
 * @param  {Function}       de_epages
 * @param  {Backbone view}  linkpicker instance
 * @return {Function}       de_epages
 */
], function ($, de_epages, linkpicker) {
    'use strict';

    $.widget('ui.shopUiLinkpicker', {

        options: {
            linkText: '',
            linkUrl: '',
            is_linkTargetBlank: false,
            linkType: '',
            callback: $.noop,

            use_absolute: false,
            use_ssl: false,

            dialog: {
                width: 920,
                height: 563,
                draggable: false,
                modal: true,
                autoOpen: false
            }
        },

        /**
         * Calls 'open' method of the linkpicker instance
         *         @property { Boolean}     use_absolute         [Initialize linkpicker to return absolute urls]
         *         @property { Boolean}     use_ssl              [Initialize linkpicker to return https urls]
         *         @property { Function}    callback             [Callback, returns 'linkText', 'linkUrl', 'linkTarget' and 'linkType']
         *         @property { Object}      dialog               [dialog options, see uiDialog]
         *         @property { String}      linkText             [Text that is displayed as the link's text]
         *         @property { String}      linkUrl              [Url the link refers to]
         *         @property { Boolean}     is_linkTargetBlank   [Whether link should be opened in new window or not]
         *         @property { String}      linkType             [Type of the link. Can either be 'tree', 'additional', 'filemanager' or 'external']
         */
        open: function () {

            linkpicker.open({
                use_absolute: this.options.use_absolute,
                use_ssl: this.options.use_ssl,
                callback: this.options.callback,

                dialog: this.options.dialog,

                linkText: this.options.linkText,
                linkUrl: this.options.linkUrl,
                is_linkTargetBlank: this.options.is_linkTargetBlank,
                linkType: this.options.linkType
            });
        },

        /**
         * Calls 'close' method of the linkpicker instance
         */
        close: function () {
            linkpicker.close();
        }
    });

    return de_epages;
});