/*******************************************************************************
 * Playlist Editor
 * -----------------------------------------------------------------------------
 * Copyright (C) 2007,2008 FOR INTERNET a.s.
 * $Id$
 *
 *
 */


/**
 *   Controller to manage data transfers to server
 */
function DataController()
{
}


DataController.prototype.DataControllerInitializer = function DataControllerInitializer(URI, load, save)
{
        this.baseURI = URI;
        this.loadURI = URI + load;
        this.saveURI = URI + save;
        this.emptyURI = URI + 'emptylist';
        return this;
}


DataController.prototype.filter = function filter(uri, onload)
{
        function DataLoadedHandler()
        {
                if(this.status == 200) onload(this.responseXML);
        }

        new CleanAjax({DataLoadedHandler: DataLoadedHandler}).get(uri);
}


DataController.prototype.loadData = function loadData(uri, onload)
{
        function DataLoadedHandler()
        {
                if(this.status == 200) onload(this.responseXML);
        }

        new CleanAjax({DataLoadedHandler: DataLoadedHandler}).get(uri);
}


DataController.prototype.save = function save()
{
        document.getElementById('saving').style.display = 'block';

        function DataLoadedHandler()
        {
                document.getElementById('saving').style.display = 'none';
        }

        new CleanAjax({DataLoadedHandler: DataLoadedHandler}).postXML(this.saveURI, playlist.model);
}


DataController.prototype.play = function play()
{
        CleanAjax.prototype.async = false;
        new CleanAjax({}).postXML(this.baseURI + 'setsessionlist/', playlist.model);
        CleanAjax.prototype.async = true;
        player('/hudebni-kanal/on-line-radio/sessionlist/');
}


DataController.prototype.loadUserData = function loadUserData(uri)
{
        this.loadData(uri, function(data) {
                playlist = new PlaylistUserController().PlaylistUserControllerInitializer(data, document.getElementById('users-playlist'));
        });
}

DataController.prototype.load = function load()
{
        this.loadUserData(this.loadURI);
        return;
}

DataController.prototype.empty = function emtpy()
{
        this.loadUserData(this.emptyURI);
        return;
}


DataController.prototype.loadInputData = function loadInputData(uri)
{
        this.loadData(uri, function(data) {
                inputPlaylist = new PlaylistInputController().PlaylistInputControllerInitializer(data, document.getElementById('input-playlist'));
        });
        return;
}

DataController.prototype.filter = function filter(using)
{
        return this.loadInputData(this.baseURI + using + '/');
}


var dataController = new DataController().DataControllerInitializer('/hudebni-kanal/on-line-radio/', 'userslist/', 'savelist/');
var playlist       = null;
var inputPlaylist  = null;


window.onload = function()
{
        dataController.filter('listcurrent');
        dataController.load();
}

