// playlist.js
// Ron Lau 2009
// Copyright Netcast Platform 2009
//
// Created       : 09/03/2009
// <script>

function addToPL(filepath, caption)
{
    //alert("Path = \"" + filepath + "\"");
    if(player.playlist.length == 30)
    {
        alert("You can at most add 15 items into the playlist.");
        return;
    }
    if(player.ads.length > 0)
        player.playlist.push(player.ads[Math.floor(Math.random() * player.ads.length)]);
    player.playlist.push({file:filepath, songName:caption, ad:false});
    if(showPL.show)
    {
        hidePL();
        showPL();
    }

    var nowstate = player.player.getConfig();
    if(nowstate.state != "IDLE" && nowstate.state != "COMPLETED")
        player.dirtyPL = true;
    else
        updatePL(player.playlist, player.nowplay + 1);
}

function updatePL(obj, index)
{
    // player.player.addItem(obj, idx);
    //alert(obj.file);
    player.player.sendEvent("LOAD", obj);
    if(index != null)
        player.player.sendEvent("ITEM", index);
    player.player.sendEvent("PLAY", "true");
}

function rmvFromPL(index)
{
    player.playlist.splice(index, 2);
    player.dirtyPL = true;
    if(index <= player.nowplay)
        player.nowplay -= 2;
    if(index <= player.respos)
        player.respos -= 2;
    hidePL();
    showPL();
}

function playItem(index)
{
    updatePL(player.playlist, index);
}

function playNewItem()
{
    player.respos = player.nowpos;
    if(player.playlist.length)
        updatePL(player.playlist, player.playlist.length - 2);
}

function showPL()
{
    document.getElementById('plBox').style.display = 'inline';
    var tmppl = player.playlist;
    if(tmppl)
    {
        var rowele, cellele, tmpele,
            pltable = document.getElementById('plTable');
        if(pltable.childNodes.length > 0)
        {
            if(pltable.childNodes[0].tagName == 'TBODY')
                pltable = pltable.childNodes[0];
            else
            {
                clearChildren(pltable);
                pltable = pltable.appendChild(document.createElement('tbody'));
            }
        }
        else
            pltable = pltable.appendChild(document.createElement('tbody'));

        for(var index = 0; index < tmppl.length; ++index)
        {
            if(tmppl[index].ad)
                continue;
            rowele = document.createElement('tr');
            cellele = document.createElement('td');
//            cellele.width = 14;
            eval("cellele.onclick = function onclick(event) { rmvFromPL(" + index + "); }");
            cellele.className = 'delIcon';
            rowele.appendChild(cellele);
/*
            cellele = cellele.appendChild(document.createElement('div'));
            cellele.className = 'delIconArea';
            cellele.appendChild(document.createTextNode('\u00A0'));
*/
            cellele = document.createElement('td');
            tmpele = cellele.appendChild(document.createElement('div'));
            tmpele.style.overflow = 'hidden';
            tmpele = tmpele.appendChild(document.createElement('nobr'))
            tmpele = tmpele.appendChild(document.createElement('a'));
            tmpele.appendChild(document.createTextNode(tmppl[index]['songName']));
            tmpele.href = 'javascript:;';
            eval("tmpele.onclick = function onclick(event) { playItem('" + index + "'); }");
            rowele.appendChild(cellele);

            pltable.appendChild(rowele);
        }
    }
    document.getElementById('plBox').style.display = 'inline';
}

function hidePL()
{
    var plbox = document.getElementById('plInner');
    document.getElementById('plBox').style.display = 'none';
    clearChildren(document.getElementById('plTable'));
/*
    plbox.removeChild(document.getElementById('plTable'));
    plbox = plbox.appendChild(document.createElement('table'));
    plbox.id = 'plTable';
    plbox.cellpadding = 0;
    plbox.cellspacing = 1;
    plbox.border = 0;
    plbox.className = 'playlistfont';
    plbox.style.display = 'inline';
*/
}

function togglePL()
{
    if(showPL.show)
    {
        hidePL();
        document.getElementById('plButton').parentNode.className = 'plbutton_off ptcur';
    }
    else
    {
        showPL();
        document.getElementById('plButton').parentNode.className = 'plbutton_on ptcur';
    }
    showPL.show = !showPL.show;
}

function updateMeta(obj)
{
    var ele = document.getElementById('curply');
    if(obj['songName'])
        ele.innerHTML = obj['songName'];
    else if(obj['title'])
        ele.innerHTML = obj['title'];
}

function updateState(obj)
{
    switch(obj.newstate)
    {
        case "PLAYING":
            //if(obj.oldstate != "PAUSED" && obj.oldstate != "PLAYING")
            //{
                player.nowplay = player.player.getConfig().item;
                if(player.respos == player.nowplay)
                    player.respos = -1;
                document.getElementById('curply').innerHTML = player.playlist[player.nowplay]['songName'];
            //}
            break;

        case "IDLE":
        case "COMPLETED":
            if(typeof player.respos == 'undefined')
                player.respos = -1;
            if(player.dirtyPL)
            {
                if(player.respos != -1)
                    updatePL(player.playlist, player.respos);
                else
                    updatePL(player.playlist, player.nowplay + 1);
                player.dirtyPL = false;
            }
            else if(player.respos != -1)
                player.player.sendEvent("ITEM", player.respos);
            else if(player.player.getConfig().item < player.player.getPlaylist().length - 1)
            {
                player.player.sendEvent("ITEM", player.nowplay + 1);
            }
            else
            {
                player.nowplay = -1;
                player.respos = -1;
                document.getElementById('curply').innerHTML = 'None';
            }
            break;
    }
}

function initPlayer()
{
    initPlayer.trigger = setInterval(
                            function() {
                                if(typeof document.getElementById('mpl').addModelListener != 'undefined')
                                    { player(); clearInterval(initPlayer.trigger); }
                            }, 100);
}

function player()
{
    player.player = document.getElementById('mpl');
    player.playlist = new Array();
    player.nowplay = -1;
    player.dirtyPL = false;
    player.respos = -1;
    showPL.show = false;
    setListeners();
}

function setListeners()
{
    //player.player.addModelListener("TIME", "updateTimes");
    //player.player.addModelListener("META", "updateMeta");
    player.player.addModelListener("STATE", "updateState");
}

function removeChildren(ele)
{
    while(ele.lastChild)
    {
        ele.removeChild(ele.lastChild);
    }
}

// </script>
