﻿$namespace('System.Controls.MediaPlayer');

/*Variável que conterá o objeto player*/
var wmplayer;

/* váriável para controle do listener OnPlaying */
var _playingCalled;
/* váriável para controle do listener OnError */
var _errorCalled;

//configuraçóes do player
var _tableWindowsMediaId = 'tableWindowMedia';
var _divWindowsMediaId = 'divWindowsMedia';
var _divWMPlayerId = 'playerWMV';

//tamanhos
var _displayWidth = null;
var _displayHeight = null;
var _displayWideHeight = null;


//Carrega o player com as configurações iniciais
function LoadWindowMediaPlayerControls(displayWidth, displayHeight)
{
    if(!wmplayer || wmplayer.disposed)
    {
        var created = CreateMediaPlayer();
        
        if(!created)
        {
            //Modo Embed!!
            wmplayer.ShowControls = false;
       }
       
        if(_displayWidth == null || _displayHeight == null)
        {
            _displayWidth = new Number(displayWidth);
            _displayHeight = new Number(displayHeight);
            _displayWideHeight = ((displayWidth/16)*9);
        }
        
        $(_tableWindowsMediaId).width  = displayWidth;
        
        //setando os máximos
        wmplayer.maxWidth = _displayWidth;
        wmplayer.maxHeight = _displayHeight;
        wmplayer.minWidth = 0;
        wmplayer.minHeight = 0;
        
        //inicializando...
        _playingCalled = false;

        SetUpListeners();
    }
};

function CreateMediaPlayer()
{
    //verificando se os divs necessários existem
     if($(_divWindowsMediaId) && $(_divWMPlayerId))
     {
        $(_divWindowsMediaId).show();
         
        wmplayer = new MediaPlayer($(_divWMPlayerId));
     }
     else
     {
        alert("Os divs não foram encontrados: " + _divWindowsMediaId + " e " + _divWMPlayerId);
     }
     
     return !wmplayer.isEmbedPlayer;
};

function UnloadWindowsMediaPlayer() 
{
    $(_divWindowsMediaId).hide();
    wmplayer.setUrl(null);
    wmplayer.onPlaying = null;
    wmplayer.onBuffering = null;
    wmplayer.onStop = null;
    
    wmplayer.dispose();
};

//seta como false para que seja feita a chamada do listener no flash ao iniciar a reprodução
function SetURL(url){ _playingCalled = false; _errorCalled = false; wmplayer.setUrl(url); };

//Cadastra os listeners
function SetUpListeners()

{
    wmplayer.onBuffering = function()
    {
        document.VMP.ChangeLoadingVisibility(true);
        $(_divWindowsMediaId).hide();
    };
    
    wmplayer.onPlaying = function()
    {        
        document.VMP.ChangeLoadingVisibility(false);
        $(_divWindowsMediaId).show();
        
        //verifica se a inicialização do listener no flash já foi feita
        if(!_playingCalled)
        {
            //caso negativo efetua a chamada e altera o status do controlador (_playingCalled)
            StartOnPlaying();
            _playingCalled = true;
        }
    };
    
    wmplayer.onStop = function()
    {
        if(_playingCalled)
        {
            //zerando o controle de start
             _playingCalled = false;
             
             document.VMP.ThrowFinish();
        };
    };
    
    wmplayer.onError = function()
    {
        if(!_errorCalled)
        {
            _errorCalled = true;
            
            document.VMP.OnLoadingMediaError();
        }
    };
};

//efetua a chamada do método no actionscript que inicia o listener "OnPlaying"
function StartOnPlaying(){ document.VMP.StartWindowsMediaPlaying();};
//altera as dimensões do vídeo
function SetDimensions(width, height) { wmplayer.setDimensions(height, width); };
//Captura a posição atual em segundos do vídeo
function GetDuration(){ return wmplayer.getDuration(true);};
//Captura a duração total do vídeo
function GetPosition(){return wmplayer.getPosition(true);};
//Captura a largura do vídeo
function GetWidth(){return wmplayer.obj.object.ImageSourceWidth;};
//Captura a altura do vídeo
function GetHeigth(){ return wmplayer.obj.object.ImageSourceHeight;};
//efetua o seek por segundos do vídeo
function SetPosition(seconds){ wmplayer.setPosition(seconds); };

//===============================================================
// Controle da playlist

//diminuindo o diplay para exibir a playlist
function OnShowPlaylist(){ ChangeDisplayHeight(_displayWideHeight); };
//aumentando o display para ocultar a playlist
function OnHidePlaylist(){ ChangeDisplayHeight(_displayHeight); };

//função que altera o tamanho do display
function ChangeDisplayHeight(heightTarget)
{
    if(!wmplayer || wmplayer.disposed) return;

    var iframe = $(_divWMPlayerId).getElementsByTagName("IFRAME");
    iframe[0].style.height = heightTarget;
    $(_tableWindowsMediaId).height = heightTarget;
};