﻿/*  BroadClip MediaPlayer - Holds All Functions for the BroadClip Media Player .SWF     */  

var proxyport = "50004";

// **************** Startup ********************
function loadMediaPlayer()
{
    createPlayer("", false);
}

function createPlayer(fileName, autoplay)
{
    var so = new SWFObject('mediaplayer.swf','ftplayer','000','000','8');
    so.addParam('allowscriptaccess','always');
    so.addParam('allowfullscreen','true');
    so.addParam('loop','false');
    so.addVariable('bufferlength',3);
    so.addVariable('width','000');
    so.addVariable('height','000');
    //so.addVariable('file',fileName);
    so.addVariable('screencolor','0x29395A');
    so.addVariable('backcolor','0x29395A');
    so.addVariable('frontcolor','0x29395A');
    so.addVariable('lightcolor','0x29395A');
    so.addVariable('javascriptid','ftplayer');
    so.addVariable('enablejs','true');
    so.addVariable('type', 'mp3');
    if (autoplay) so.addVariable('autostart','true');
    so.write('ftplayercontainer');
}

function createVideoPlayer(fileName, autoplay, width, height)
{
    var so = new SWFObject('mediaplayer.swf','ftplayer',width,height,'8');
    so.addParam('allowscriptaccess','always');
    so.addParam('allowfullscreen','true');
    so.addParam('loop','false');
    so.addVariable('bufferlength',3);
    so.addVariable('width',width);
    so.addVariable('height',height);
    so.addVariable('file',fileName);
    so.addVariable('screencolor','0x000000');
    so.addVariable('backcolor','0x000000');
    so.addVariable('frontcolor','0xFFFFFF');
    so.addVariable('lightcolor','0x999999');
    so.addVariable('javascriptid','ftplayer');
    so.addVariable('enablejs','true');
    so.addVariable('type', 'mp4');
    if (autoplay) so.addVariable('autostart','true');
    so.write('ftplayercontainer');
}

// **************** Constants ********************


// **************** Global Variables *************
var autoPlayFlag = false;
var BCMPTrackObject = null;
var BCMPVolumeSetting = 10; //number from 0-10
var BCMPmuteState = false;
var BCMPplayState = "off";
var playerTime = "";
var loadedMP3 = "";
var breakLoadLoop = 0;
var loadLoopTimeout;

// ************** Events ***********************
function mp3Loaded()
{
    //call this function once an mp3 is loaded
    ExecuteBCMPCallback("prompt","Loaded " + BCMPTrackObject.Title);
    ExecuteBCMPCallback("load",BCMPplayState);
}

function mp3Playing()
{
    //this function calls once an MP3 is successfully playing
    ExecuteBCMPCallback("prompt",BCMPTrackObject.Title);
    ExecuteBCMPCallback("play",BCMPplayState);
}

function mp3Paused()
{
    ExecuteBCMPCallback("prompt",BCMPTrackObject.Title + " Paused");
    ExecuteBCMPCallback("pause",BCMPplayState);
}

function mp3Stopped()
{
    ExecuteBCMPCallback("prompt","");
    ExecuteBCMPCallback("pause",BCMPplayState);
}

function mp3VolumeUpdated(intSetting)
{
    ExecuteBCMPCallback("volumeChange",intSetting);
}

// **************** Event Handler ***************

function getUpdate(typ,pr1,pr2,swf) 
{ 
    if (typ == "time") 
    { 
        playerTime = pr1 +"-" + pr2;
        ExecuteBCMPCallback("scan", playerTime);         
    }
    if (typ == "state") 
    {
        if (pr1 == "0") // Stopped
        {
            ExecuteBCMPCallback("videoState0", "");
        }
        if (pr1 == "1") // Buffering
        {
            ExecuteBCMPCallback("videoState1", "");
        }
        if (pr1 == "2") // Playing
        {
            ExecuteBCMPCallback("videoState2", "");
        }
        if (pr1 == "3") // Completed
        {
            BCMPplayState = "over";
            ExecuteBCMPCallback("complete", BCMPplayState);
        }
    }
    if (typ == "state")
    {
        ExecuteBCMPCallback("state", pr1 + " " + pr2);
    }

}

// **************** Functions ********************
function getPlayerObject()
{
    var player = "ftplayer";
    
    try
    {
        if(navigator.appName.indexOf("Microsoft") != -1) {
            return window[player];
        } else {
            return document[player];
        }
    }
    catch(e)
    {
        Debug(e.description + " in getPlayerObject");
    }
}

function seekmp3(seekPercentage)
{
//    var player = getPlayerObject();
//    var timePlayed = playerTime.split("-")[0];
//    var timeTotal = playerTime.split("-")[1];
//    timePlayed = timePlayed/1;
//    timeTotal = timeTotal/1 + timePlayed;
//    var seek = seekPercentage * timeTotal;
// 
//    player.sendEvent("scrub",seek);
//    
//    volumemp3(BCMPVolumeSetting);
//    
//    if (BCMPplayState == "paused")
//    {
//        BCMPplayState = "on";
//        mp3Playing();
//    }
}

function loadplaymp3()
{
    autoPlayFlag = true;
    breakLoadLoop = 0;
    clearTimeout(loadLoopTimeout);
    setTimeout("loadmp3(BCMPTrackObject.ClipFilePath, BCMPTrackObject.Title);",300);
}

function loadmp3(fileName, displayName)
{
    try
    {
        ExecuteBCMPCallback("prompt","Loading " + displayName);
        loadedMP3 = fileName;
        BCMPplayState = "off";    

        var player = getPlayerObject();

        if (breakLoadLoop <= 20)
        {   

            try
            {
                if (player.loadFile)
                {
                    if (fileName.toUpperCase().indexOf("UNKNOWN") > -1)
                    {
                        ExecuteBCMPCallback("prompt", displayName + " not found.");
                    } 
                    else 
                    {
                        if (fileName.toUpperCase().indexOf("HTTP://") == -1)
                        {
                            var f = "http://127.0.0.1:" + proxyport + "/" + fileName;
                            player.loadFile({file:f});
                        }
                        else
                        {
                            player.loadFile({file:fileName});
                        }
                        mp3Loaded();
                        if (autoPlayFlag == true)
                        {
                            autoPlayFlag = false;
                            playmp3();
                        }
                    }
                }
                else
                {

                    breakLoadLoop = breakLoadLoop + 1;
                    loadLoopTimeout = setTimeout("loadmp3(BCMPTrackObject.ClipFilePath, BCMPTrackObject.Title);",500);
                }
            }
            catch(e)
            { 
                //2009-08-12 Rather than restarting the audio player, show an error message
                //Debug("BCMP failure, try again",1);
                //setTimeout("restartAudioPlayer();",500);  
                
                //failed to get the station from the ID
                Debug("failed to get the station from the ID",1);
                glSet("glWebURL","/App/Help.aspx?HELP=STATIONFAIL");
                glSet("glNetStationID","");
                glSet("glSID","");
                glSet("glWebToolbarState",1);
                loadMode(1);
            }
        }
        else
        {
            //failed to load the player in time to play
            //break out of the load loop 
            Debug("FlyCast is unable to load its flash player");
        }
        
	}
	catch(e)
	{
	    Debug("error loading mp3:  " + e.description);
	}
}

function playmp3()
{
    try
    {
        var player = getPlayerObject();
        BCMPplayState = "on";
        player.sendEvent("playpause","");
        mp3Playing();
    
        player.sendEvent("volume", BCMPVolumeSetting * 10);
        if (BCMPmuteState == true)
        {
            mutemp3();  //unmute on play
        }
	}
	catch(e)
	{
	    Debug("error in playmp3:  " + e.description);
	}
}

function pausemp3()
{
    try
    {
        BCMPplayState = "paused";
        var player = getPlayerObject();
        player.sendEvent("playpause","");
        ExecuteBCMPCallback("pause",BCMPplayState);
        //DrawPlaybarTitle(GetPlaybarTitle()+" - Paused");
    }
    catch(e)
    {
	    Debug("pause\r  " + e.description);
	}
}

function mutemp3()
{
    BCMPmuteState = (!BCMPmuteState);
    var player = getPlayerObject();
    if (BCMPmuteState == true)
    {
        player.sendEvent("volume", -1);
        BCMPVolumeSetting = 0;
    }
    else
    {
//        player.sendEvent("volume", BCMPVolumeSetting * 10);
        player.sendEvent("volume", -1);
        BCMPVolumeSetting = 2;
    }
    ExecuteBCMPCallback("mute",BCMPmuteState);
}

function stopmp3()
{
    BCMPplayState = "off";
    var player = getPlayerObject();
    try
    {
        player.sendEvent("stop", "");
    }
    catch(e) {}

}

function volumemp3(intSetting)
{
    try
    {
        if (intSetting < 0) intSetting = 0;
        if (intSetting > 10) intSetting = 10;
        if ((intSetting >= 0)&&(intSetting <= 10))
        {
            var player = getPlayerObject();  
            if (intSetting == 0)
            {
                mutemp3();
                return;
            }
            else
            {
                player.sendEvent("volume", intSetting * 10);
            }
            BCMPVolumeSetting = intSetting;

            if (BCMPmuteState == true)
            {
                BCMPmuteState = false;
                player.sendEvent("volume", -1);
                ExecuteBCMPCallback("mute",BCMPmuteState);
            }
        }
    }
    catch(e)
    {
        Debug("Error in volumemp3: " + e.description);
    }
}

var deadMP3 = "";
function killmp3()
{
    var player = getPlayerObject();
    deadMP3 = loadedMP3;
//    fileName = "http://www.FlyCast.fm/rip.mp3";
//    player.loadFile({file:fileName});

    //reload the current mp3?
    var fileName = deadMP3;
    if (fileName.toUpperCase().indexOf("HTTP://") == -1)
    {
        //createPlayer("http://127.0.0.1:XXXXX/" + fileName, false);
        var f = "http://127.0.0.1:" + proxyport + "/" + fileName;
        player.loadFile({file:f});
    }
    else
    {
        //createPlayer(fileName, true);
        player.loadFile({file:fileName});
    }
    
    //play and then pause *real quick*
    player.sendEvent("playpause","");
    player.sendEvent("playpause","");

    BCMPplayState = 'killed';
}

function revivemp3()
{
    try
    {
        //Debug("revive mp3");
        //Debug(deadMP3);
        var player = getPlayerObject();
        var fileName = deadMP3;
        if (fileName.toUpperCase().indexOf("HTTP://") == -1)
        {
            //createPlayer("http://127.0.0.1:XXXXX/" + fileName, false);
            var f = "http://127.0.0.1:" + proxyport + "/" + fileName;
            player.loadFile({file:f});
        }
        else
        {
            //createPlayer(fileName, true);
            player.loadFile({file:fileName});
        }
        playmp3();
    }
    catch(e)
    {
        Debug("error in revivemp3: " + e.description);
    }
}



                


