define(['loading', 'apphost', 'globalize', 'syncJobList', 'events', 'scripts/taskbutton', 'localsync', 'emby-button', 'paper-icon-button-light'], function (loading, appHost, globalize, syncJobList, events, taskButton) {
    'use strict';

    function getTabs() {
        return [
        {
            href: 'syncactivity.html',
            name: Globalize.translate('TabSyncJobs')
        },
         {
             href: 'devicesupload.html',
             name: Globalize.translate('TabCameraUpload')
         },
        {
            href: 'appservices.html?context=sync',
            name: Globalize.translate('TabServices')
        },
         {
             href: 'syncsettings.html',
             name: Globalize.translate('TabSettings')
         }];
    }

    return function (view, params) {

        var mySyncJobList = new syncJobList({
            isLocalSync: params.mode === 'offline',
            serverId: ApiClient.serverId(),
            userId: params.mode === 'offline' ? null : ApiClient.getCurrentUserId(),
            element: view.querySelector('.syncActivity'),
            mode: params.mode
        });

        view.addEventListener('viewshow', function () {

            LibraryMenu.setTabs('syncadmin', 0, getTabs);

            taskButton({
                mode: 'on',
                progressElem: view.querySelector('.syncProgress'),
                taskKey: 'SyncPrepare',
                button: view.querySelector('.btnSync')
            });
        });

        view.addEventListener('viewbeforehide', function () {

            taskButton({
                mode: 'off',
                taskKey: 'SyncPrepare',
                button: view.querySelector('.btnSync')
            });
        });

        view.addEventListener('viewdestroy', function () {

            mySyncJobList.destroy();
        });
    };

});