/* this player is dependent on the following scripts */
mdp.apiDomain = mdp.apiDomain || 'http://www.bhg.com';
document.write('<scr'+'ipt type="text/javascript" src="'+mdp.apiDomain+'/bhg/files/videoplayer/grab/jquery.jcarousel.min.js"></scr'+'ipt>');
document.write('<scr'+'ipt type="text/javascript" src="'+mdp.apiDomain+'/bhg/files/videoplayer/grab/jquery.tipTip.minified.js"></scr'+'ipt>');
document.write('<link type="text/css" rel="stylesheet" href="'+mdp.apiDomain+'/bhg/files/videoplayer/grab/mdp.grab.rampPlayer.jcarousel.css" />');
document.write('<link type="text/css" rel="stylesheet" href="'+mdp.apiDomain+'/bhg/files/videoplayer/grab/mdp.grab.rampPlayer.tipTip.css" />');

mdp.gp = new mdp.app.GrabPlayer( "mdp.gp" );
var template = '<div id="mdp-vcl-wrapper"><div id="mdp-vcl-player">[PLAYER]</div><div id="mdp-playlist-wrapper"><div id="mdp-vcl-playlist-videos">[PLAYLIST]</div><div id="mdp-vcl-guide">[GUIDE]</div></div></div>';

mdp.gp.addCallback( 'onListLoaded', 'fixPlaylist' );
mdp.gp.addCallback( 'onPlayerLoaded', 'mdp.loadPlaylist' );
mdp.gp.addCallback( 'onVideoLoaded', 'mdp.onVideoLoaded' );
mdp.gp.addCallback( 'onVideoComplete', 'mdp.onVideoComplete' );
mdp.gp.addCallback( 'onPrerollAdBegin', 'mdp.onPrerollAdBegin' );
mdp.gp.addCallback( 'onPrerollAdEnd', 'mdp.onPrerollAdEnd' );

/* set advertising */
mdp.adType  = mdp.adType || 'pre';
mdp.sb 		= mdp.sb || 'bhg';
mdp.kw 		= mdp.kw || null;
mdp.frmt 	= mdp.frmt || null;
mdp.gp.setAdParams( mdp.sb, mdp.kw, mdp.frmt, mdp.adType );

/* set omniture */
mdp.videoPlayerName = mdp.videoPlayerName || null;
mdp.gp.videoPlayerName( mdp.videoPlayerName );


/* player settings */
mdp.nc = mdp.nc || false;
mdp.width = mdp.width || 648;
mdp.height = mdp.height || 365;
mdp.playerWidth = mdp.playerWidth || mdp.width;
mdp.playerHeight = mdp.playerHeight || mdp.height;
mdp.autoplay = mdp.autoplay || false;
mdp.scrollsize = mdp.scrollsize || 6;
var config = {
                player   : { width:mdp.playerWidth, height:mdp.playerHeight },
                title    : 'gp_hidden_videoTitle',
                desc     : 'gp_hidden_videoDescription',
                random   : true,
                template : template,
                apikey   : null
             };
if( mdp.firstId ) config.player.videoId = mdp.firstId;
document.write( mdp.gp.initGrabPlayer( config ) );
mdp.gp.registerReactors();

mdp.playlist_data = [];
mdp.theModelCarousel = null;
mdp.firstrun = true;
mdp.playlistId = mdp.playlistId || null;
mdp.catId = mdp.catId || null;
mdp.videoIdArray = mdp.videoIdArray || null;
mdp.firstId = mdp.firstId || null;
mdp.toRun = null;
mdp.currentItem = 0;

mdp.hiddenPlaylistTitle = null;
mdp.hiddenVideoTitle = null;
mdp.hiddenVideoDesc = null;

mdp.playlistTitle = null;
mdp.videoTitle = null;
mdp.videoDesc = null;
mdp.firstVideoComplete = null;

jQuery(window).load(function(){
    /* hidden data */
    mdp.hiddenVideoTitle 	= jQuery('#gp_hidden_videoTitle');

    /*update carousel width to match video player*/
    jQuery( '#wrap' ).css( 'width', mdp.playerWidth-2 );
    jQuery( '#meredith-interactive-vcl-player-grab-community-icon' ).css( 'display', 'none' );
    jQuery( '.grabMenuBtn' ).css( 'display', 'none' );
});


function fixPlaylist( arr ){
    /*console.log('build playlist object');*/
    mdp.playlist_data = [];

    jQuery('#mycarousel').empty();
    var item = GRAB.mediaos.core.registry.components.lists[0].children;
    for( var i = 0; i<item.length; i++ ) {
        mdp.playlist_data.push( { meta:item[i].children[0]._metadata } );
        if(mdp.playlist_data[i].meta.id == mdp.firstId) mdp.toRun = mdp.currentItem = i;
    }

    if( mdp.firstrun ){
        var jcarouselConfig = {
            size: mdp.playlist_data.length,
            scroll: mdp.scrollsize,
            itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
        };
        if( mdp.toRun != null ) jcarouselConfig['start'] = mdp.toRun;
        jQuery('#mycarousel').jcarousel(jcarouselConfig);
    	jQuery( '.jcarousel-container-horizontal' ).css( 'width', mdp.playerWidth-80 );
    	jQuery( '.jcarousel-clip-horizontal' ).css( 'width', mdp.playerWidth-80 );
        jQuery(".jcarousel-item:first").addClass('selectedVideoItem');
        mdp.firstrun = false;
    }

    if( mdp.toRun != null ) {
        mdp.loadVideoByIndex(mdp.toRun);
    }
}

function mycarousel_itemLoadCallback( carousel, state ){
    /*console.log('mycarousel_itemLoadCallback');*/
    mdp.theModelCarousel = carousel;

    for (var i = carousel.first; i <= carousel.last; i++) {
        if (carousel.has(i)) {
            continue;
        }

        if (i > mdp.playlist_data.length) {
            break;
        }

        carousel.add( i, mycarousel_getItemHTML( i, mdp.playlist_data[i-1] ) );
    }

    jQuery('.mdp-video-item').click(function () {
        mdp.currentItem = jQuery(this).attr("videoIndex") - 1;
        mdp.loadVideoByIndex(mdp.currentItem);
    });
    jQuery(".vtip").tipTip({defaultPosition: "top"});

}
/**
 * Item html creation helper.
 */
function mycarousel_getItemHTML( i, data ) {
    var meta = data.meta;
    var time = mdp.readableTime(meta.duration);
    var shortDescription = meta.short_description==null?"":meta.short_description;
    return '<div class="vtip" id="vtip' + i + '" title="<strong>'+meta.title+'</strong>&nbsp;('+time.hr + ':' +time.min + ':' +time.sec +')&nbsp;<br />'+shortDescription+'"><div class="mdp-video-item trigger" id="mdp-video-item-' + i + '" videoIndex="' + i + '" vidid="' + meta.id + '"><img src="' + meta.thumbnail_url + '" width="90" height="50" alt="' + meta.title + '" /><br /><div class="mdp-video-item-title">' + meta.title + '</div></div></div>';
}

function clearModelCarousel() {
    if( mdp.theModelCarousel ){
        mdp.theModelCarousel.reset();
        mdp.theModelCarousel.size(0);
    }
}

mdp.GrabDataHandler = new mdp.app.GrabDataHandler( 'mdp.GrabDataHandler' );
if( mdp.apiDomain ) mdp.GrabDataHandler.setDomain(mdp.apiDomain);
mdp.GrabDataHandler.nc(mdp.nc);
mdp.loadPlaylistIntoGrab = function( obj ){
    /*
    console.log('\n\n     loadPlaylistIntoGrab');
     /**/
    clearModelCarousel();
    var s = encodeURIComponent( jQuery.json.serialize( obj ) );
    GRAB.mediaos.core.ui.component.list.draw.call(document.createElement('div'), s,'grab-vcl-list', 'grabsingleasset',obj.length,'true','true','','my-vcl-list');

};

mdp.loadPlaylist = function( obj ){
    /*
    console.log('loadPlaylist');
    /**/

    if( mdp.playlistId != null){
        mdp.GrabDataHandler.getVideosByPlaylistId( mdp.playlistId, 'mdp.loadPlaylistIntoGrab' );
    } else {
        if( mdp.videoIdArray != null && mdp.catId != null ) mdp.GrabDataHandler.getPlaylistFromCatalogByVideoIds(
        mdp.catId, mdp.videoIdArray, 'mdp.loadPlaylistIntoGrab');
    }
};

mdp.onVideoLoaded = function( ){
    /*
    console.log('mdp.onVideoLoaded');
    /**/
    var asset = mdp.gp.currentAsset();

    var html = '<strong>Now Playing:&nbsp;</strong>' + asset.title;
    var relText = '', relUrl = '', relResult = '';
    if( asset.custom_fields ){
        for( var ii=0; ii<asset.custom_fields.length; ii++ ){

			if(asset.custom_fields[ii]['custom_field']){
				if( asset.custom_fields[ii]['custom_field']['name'] == 'Related_URL' ) relUrl = asset.custom_fields[ ii ]['custom_field'][ 'value' ];
				if( asset.custom_fields[ii]['custom_field']['name'] == 'Related_URL_Text' ) relText = asset.custom_fields[ ii ]['custom_field']['value' ];
			} else if(asset.custom_fields[ii]['name']){
				if( asset.custom_fields[ii]['name'] == 'Related_URL' ) relUrl = asset.custom_fields[ ii ][ 'value' ];
				if( asset.custom_fields[ii]['name'] == 'Related_URL_Text' ) relText = asset.custom_fields[ ii ][ 'value' ];
			}
        }
        relResult = '<div style="float:right;"><a href="'+relUrl+'">'+relText+'</a></div>';
    }

    jQuery('#gp_videoTitle').html( relResult + '<div style="float:left;"><strong>Now Playing:&nbsp;</strong>' + asset.title );
    jQuery('#rs_videoTitle').html(asset.title);
    jQuery('#rs_videoDescription').html(asset.short_description);

    if( mdp.firstVideoComplete ){
        jQuery('#fullTranscript').hide();
        jQuery('#ez-tags').hide();
        jQuery('#ez-about-media').css('width',640);
    }

    mdp.firstVideoComplete = true;
    if( mdp.autoplay ) mdp.gp.playVideo();
    return;
};

mdp.readableTime = function( ms ){

    var sec = Math.floor(ms/1000), t='', min, hr, day, op;
    ms = ms % 1000;
    t = ((ms>99)?"":"0")+((ms>9)?"":"0")+ms;

    min = Math.floor(sec/60);
    sec = sec % 60;
    t = ((sec>9)?"":"0")+sec + ":" + t;

    hr = Math.floor(min/60);
    min = min % 60;
    t = ((min>9)?"":"0")+min + ":" + t;

    day = Math.floor(hr/60);
    hr = hr % 60;
    t = ((hr>9)?"":"0")+hr + ":" + t;

    op = {  ms:((ms>99)?"":"0")+((ms>9)?"":"0")+ms,
            sec:((sec>9)?"":"0")+sec,
            min:((min>9)?"":"0")+min,
            hr:((hr>9)?"":"0")+hr,
            day:day,
            str:t};

    return op;
};

mdp.loadVideoById = function( id ){
    if( mdp.playlist_obj[id] ) mdp.gp.loadAsset( mdp.playlist_obj[id].meta );
};

mdp.onVideoComplete = function( ){
    /* if autoplay is se to tru - this will happen: */

    mdp.getNextItem();
};

mdp.loadVideoByIndex = function( index ){
    /* probably need to focus this better */
    var old = jQuery( '.selectedVideoItem' );
    if( old ) old.removeClass( 'selectedVideoItem' );
    mdp.gp.loadAsset( mdp.playlist_data[ index ].meta );
    jQuery('.jcarousel-item-' + ( index + 1 ) ).addClass('selectedVideoItem');
};

mdp.getNextItem = function(){
    mdp.currentItem++;
    if(mdp.currentItem >= mdp.playlist_data.length ) mdp.currentItem = 0;
    mdp.loadVideoByIndex( mdp.currentItem );
};

mdp.onPrerollAdBegin = function(){
    jQuery('div#grabsingleassetcontrolBar').css('display', 'none' )
    jQuery('#meredith-interactive-vcl-playercontrolBar').css('display', 'none' );
};

mdp.onPrerollAdEnd = function(){
    jQuery('div#grabsingleassetcontrolBar').css('display', 'block' )
    jQuery('#meredith-interactive-vcl-playercontrolBar').css('display', 'block' );  
};

/* write out navigation */
document.write('<div id="wrap" style="clear:both;"><div style="clear:both;height:15px;" id="gp_videoTitle"></div><ul id="mycarousel" class="jcarousel-skin-mdpvideo"><!-- The content will be dynamically loaded in here --></ul></div><div id="gp_hidden_videoTitle" style="display:none;"></div>');



