if('undefined' == typeof(Mediacenter))
{
	Mediacenter = function(){};
}

Mediacenter.Audioplayer = function (id)
{
    this.id = id;
    this.htmlElem = document.getElementById(id);
    this.initUrl = '';
    this.name     = this.id + "_name";
    // Default flashplayer domain.
    // Can be set via FlashplayerControlObject.setDomain()
    this.fpDomain = "http://flashplayer.mediabiz.de/";

    this.fpFolder = "";

    // Default flashplayer swf file.
    // Can be set via FlashplayerControlObject.setSWF()
    this.swf = "audioplayer.swf";
    this.width = 384;
    this.height = 26;
    this.flashVersion= "10.0.0";
    this.autoPlay = true;
    this.currentOffset = 0;
    this.playlistId=0;
    
    this.getId = function()
    {
        return this.id;
    }
    this.hide = function()
    {
        var elem = this.getElementById(id);
        elem.style.visibility = 'hidden';
        elem.style.display    = 'none';
    }
    this.show = function()
    {
        var elem = this.getElementById(id);
        elem.style.visibility = 'visible';
        elem.style.display    = 'block';
    }
    this.setPlaylistId = function(id)
    {
        this.playlistId = id;
    }
    
    this.setWidth = function(wid)
    {
        this.width = wid;	
    }
    
    this.getPlaylist = function()
    {
        return Emv.Registry.getObject(this.playlistId);
    }
    
    /**
     * draws the player to the html elemt with given id
     * all content within this element will be lost
     */
    this.draw = function()
    {
        // Configure the flash variables.
        var flashvars = {};
        flashvars.audioSrc        = this.initUrl;
        flashvars.playerId        = this.id;
        flashvars.autoPlaySound   = this.autoPlay;

        // Configure the flash parameters.
        var params = {};
        params.menu              = "false";
        params.allowfullscreen   = "true";
        params.allowscriptaccess = "always";

        // Configure the flash attributes.
        var attributes = {};
        attributes.id    = this.id;
        attributes.name  = this.name;
        attributes.align = "middle";

        // Create the flash object/embed element
        // Use swfobject class.

        swfobject.embedSWF(
            this.fpDomain + this.fpFolder + this.swf,
            this.id,
            this.width,
            this.height,
            this.flashVersion,
            this.fpDomain + "install/expressInstall.swf",
            flashvars, params, attributes);
    }
    
    this.loadPrevious = function()
    {
        this.currentOffset = this.getPlaylist().getPreviousOffset(this.currentOffset);
        this.loadTrack(this.currentOffset);
    }
    this.loadNext = function()
    {
        this.currentOffset = this.getPlaylist().getNextOffset(this.currentOffset);
        this.loadTrack(this.currentOffset);
    }
    
    /**
     * setting url, which is played initialy
     * @param String url mp3.kino.de ... 
     */
    this.setInitUrl = function(url)
    {
        this.initUrl = url;
    }
    
    this.setAutoPlay = function(ap)
    {
        this.autoPlay = ap;
    }
    
    /**
     * setting the domain where the audioplayer is located
     * @param String domain - default flashplayer.kino.de
     */
    this.setDomain = function (domain)
    {
        this.fpDomain = domain;
    }
    
    /**
     * setting the subfolder where the player is located
     * @param string | default empty - just used for testing purposes
     */
    this.setFolder = function (fold)
    {
        this.fpFolder = fold;
    }
    
    /**
     * returns player id pseudo interface to store in the registry
     * @return Number
     */
    this.getId = function()
    {
        return this.id;
    }
    
    /**
     * calls audioplayer an initializes loading this soundfile
     * @param string url |  mp3 full qualified filename
     */
    this.loadMp3 = function(url)
    {
//      console.log('loadMp3: ' + url);
        this.getMovie().loadMp3(url);   
    }
    
    /**
     * used for intern calls - returns flashmovie
     */
    this.getMovie = function() 
    {
        if (navigator.appName.indexOf("Microsoft") != -1) 
        {
            return window[this.name];
        }
        else 
        {
            return document[this.name];
        }
    }
    
    this.loadTrack = function(offset)
    {
        this.currentOffset = offset;
        var pl = this.getPlaylist();
        var track     = pl.getTrackForOffset(offset);
        this.loadItem(track, offset)
    };
    
    this.loadItem = function(track, offset)
    {
    	this.loadMp3(track.getTrackUrl());
    	var params = {track: track};
    	if('undefined' == typeof(offset))
    	{
    	   offset = 0;
    	}
    	params.offset = offset;
        Emv.Observer.Controller.fireEvent(Mediacenter.Audioplayer.Event._TRACK_LOADED, params, this.getId());
    };
    
    this.handleEvent = function(event)
    {
//    	console.log('Mediacenter.Audioplayer.handleEvent ' +event.name);
        if(event.name == Mediacenter.Audioplayer.Event._SLOT_CLICKED)
        {
            this.loadTrack(event.params.clickedPlaylistOffset);
        }
        else if(event.name == Mediacenter.Audioplayer.Event._PLAYER_LOADED
                || event.name == Mediacenter.Playlist.Event._TRACK_SELECTED)
        {
        	this.loadItem(event.params.item, event.params.offset);
        }
    };
};


Mediacenter.Audioplayer.Legend = function(id)
{
    this.id = id;
    this.playerId;
    
    this.smallAppend = '_smallTitle';
    this.bigAppend   = '_bigTitle';
    
    this.getId = function()
    {
        return this.id;
    };
    
    this.setPlayerId = function(pid)
    {
        this.playerId = pid;
    };
    
    this.handleEvent = function(event)
    {
        if(event.name == Mediacenter.Audioplayer.Event._TRACK_LOADED)
        {
            this.setTitles(event.params.track);
        }
    };
    
    this.setTitles = function(track)
    {
        var sm = document.getElementById(this.playerId + this.smallAppend);
        if(sm)
        {
            sm.innerHTML = track.getTrackTitle();
        }
        var bg = document.getElementById(this.playerId + this.bigAppend);
        if(bg)
        {
            bg.innerHTML = track.getTrackTitle();
            bg.title = track.getTrackTitle();
        }
    };
};

Mediacenter.Audioplayer.Event = {
    // playerLoaded: the initial event, after the player is loaded called from flash.
    _PLAYER_LOADED   : "playerLoaded",
    _TRACK_LOADED    : "trackLoaded",
    _SLOT_CLICKED    : "slotClicked"
};

