// (C) Copyright 2020 Hewlett-Packard Enterprise Company, L.P.

define(['fs/view/settings/restore/UploadThenRestoreView',
        'fs/view/settings/restore/ViewCustomizer',
        'fs/view/settings/restore/FsRestoreUploadViewCustomizations'],
function(realView, viewCustomizer, customizations ) {"use strict";

    var RestoreUploadView = ( function() {

        
        /**
         * Constructor
         */
        function RestoreUploadView() {
            
            /**
             * @public
             * Inject a Partner Customization into the HTML Markup for this View. --- DEPRECATED
             * @param {src} The text of an HTML page that contains the markup to be injected into this view.
             * @param {selector} The jQuery selector used to extract the new markup from src and to find the
             *      injection site within the current page.
             */
            this.customizeMarkup = function (src, selector) {
                viewCustomizer.customizeMarkup(realView, src, selector);
            };

            /**
             * @public
             * Inject a Partner Customization into the Behavior of this View. --- DEPRECATED AND NON-FUNCTIONAL (No known uses)
             * @param {name} The name of a customizable set of behaviors.
             * @param {behaviors} A hash of name:function pairs that define the behaviors to be injected.
             */
            this.customizeBehavior = function (name, behaviors) {
                viewCustomizer.customizeBehavior(realView, name, behaviors);
            };
            
            /**
             * @public
             * Register Partner Customizations --- DEPRECATED
             * @param {parnerCustomizations} An array of customizations to the HTML markup or to JavaScript
             *      behaviors. Each customization injects itself via the customizeMarkup() or the 
             *      customizeBehavior() method. Markup customizations are limited to any element of the page
             *      that can be found via a jQuery selector. Behavior modifications are restricted to specifically
             *      defined calling points implemented in the code.
             */
            this.registerPartnerCustomizations = function (parnerCustomizations) {
                viewCustomizer.registerPartnerCustomizations(realView, parnerCustomizations);
            };
            
            /**
             * Initialization.
             */
            this.init = function() {
                this.registerPartnerCustomizations(customizations);
            };
            this.pause = function() {
            };
            this.resume = function() {
            };
        }
        return new RestoreUploadView();
    }());

    return RestoreUploadView;
});
