/**
 * @version     $Id$
 * @copyright   2010 exozet interact
 * @author      frank.fiebig <frank.fiebig@exozet.com>
 * @since       06/2010
 * @package     ClubTV
 * @subpackage  Frontend
 */

/**
 * dom ready - do jquery stuff inside here
 * pay attention to use only jQuery() as selector to avoid side effects with other frameworks
 */
function remote(command, params) {

    switch (command) {
        
        // get video by teaser click
        case 'teaserClicked':
            if((typeof( params ) == 'string')) {
                params = JSON.parse(params);
            }
            var url = jQuery('meta[name="player.list"]').attr('content')+'/0/'+params+'/1';
            jQuery.getJSON(url, { 'json': 1 }, function(data){
                sendToActionScript('startVideo', JSON.stringify(data));
            });
            var params = {
                target      : jQuery('#playlist'),
                layer       : 'playlist',
                url         : url,
                method      : 'get',
                totop       : true
            };
            processLayer(params);
            break;

        // trigger error events
        case 'error':
            if((typeof( params ) == 'string')) {
                params = JSON.parse(params);
            }
            switch(params.message) {
                case 'success':
                    break;
                case 'login_required':
                    var params = {
                        target      : jQuery('#page_overlay'),
                        layer       : 'page_overlay',
                        url         : jQuery('meta[name="user.login"]').attr('content'),
                        method      : 'get',
                        totop       : true,
                        addclass    : 'po_small'
                    };
                    remote('playerPause');
                    processLayer(params);
                    break;
                case 'abo_required':
                    var params = {
                        target      : jQuery('#page_overlay'),
                        layer       : 'page_overlay',
                        url         : jQuery('meta[name="user.abo"]').attr('content'),
                        method      : 'get',
                        totop       : true,
                        addclass    : 'po_medium'
                    };
                    remote('playerPause');
                    processLayer(params);
                    break;
                default:
                    break;
            }
            break;

        // get config - pull from player
        case 'getConfig':
            var url = jQuery('meta[name="player.init"]').attr('content');
            jQuery.getJSON(url, { 'json': 1 }, function(data){
                sendToActionScript('setConfig', JSON.stringify(data));
            });
            break;
        
        // load a video and start player
        case 'playerStartVideo':
            var url = params.url;
            jQuery.getJSON(url, { 'json': 1 }, function(data){
                if (data.video !== null) {
                    sendToActionScript('startVideo', JSON.stringify(data));
                }
            });
            break;
        
        // stop player
        case 'playerPause':
            sendToActionScript('pause');
            break;
        
        // resume player
        case 'playerResume':
            sendToActionScript('resume');
            break;
        
        // seek player
        case 'playerSeek':
            sendToActionScript('seek');
            break;
        
        // seek player
        case 'playerSeekTo':
            sendToActionScript('seekToPosition', params.position);
            break;
        
        // trigger exception if function is not yet implemented
        default:
            alert('Exception: Command '+command+' not implemented in remote.js! '+params);
            break;
    }
}

// base flash as api
function sendToActionScript(functionName, value) {
    if(undefined != thisMovie("website")) {
        if(typeof thisMovie("website")[ functionName ] == 'function'){
            thisMovie("website")[ "execute" ]( functionName, value );
        }
        else{
            alert(' Flash has no function ' + functionName + ' registered' );
        }
    }else {
        //alert('Flash player is not initialized ' + functionName + '|' + value);
    }
}
function thisMovie(movieName) {
    if (navigator.appName.indexOf( "Microsoft" ) != -1) {
        return window[ movieName ];
    } 
    else {
        return document[ movieName ];
    }
}

