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

    function getTabs() {
        return [{
            href: "syncactivity.html",
            name: Globalize.translate("TabSyncJobs")
        }, {
            href: "appservices.html?context=sync",
            name: Globalize.translate("TabServices")
        }, {
            href: "syncsettings.html",
            name: Globalize.translate("TabSettings")
        }]
    }
    return function(view, params) {
        var mySyncJobList = new syncJobList({
            mode: params.mode,
            serverId: ApiClient.serverId(),
            userId: "offline" === params.mode ? 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()
        })
    }
});