define(['events'], function (events) {
    'use strict';

    function transferPlayback(oldPlayer) {

        oldPlayer.getPlayerState().then(function (state) {

            var item = state.NowPlayingItem;

            if (!item) {
                return;
            }

            var playState = state.PlayState || {};

            oldPlayer.stop();

            var itemId = item.Id;
            var resumePositionTicks = playState.PositionTicks || 0;

            MediaController.play({
                ids: [itemId],
                startPositionTicks: resumePositionTicks
            });

        });
    }

    events.on(MediaController, 'playerchange', function (e, newPlayer, newTarget, oldPlayer) {

        if (!oldPlayer) {
            console.log('Skipping remote control autoplay because oldPlayer is null');
            return;
        }

        if (!oldPlayer.isLocalPlayer) {
            console.log('Skipping remote control autoplay because oldPlayer is not a local player');
            return;
        }

        if (newPlayer.isLocalPlayer) {
            console.log('Skipping remote control autoplay because newPlayer is a local player');
            return;
        }

        // If playback is playing locally and a new player is activated, transfer the media to that player
        if (oldPlayer.isPlaying()) {
            transferPlayback(oldPlayer);
        }
    });

});