///////////////////////////////
//
// Date / Time Helpers
//
///////////////////////////////

var day_names = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var month_names = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

function formattedTime(date)
{
  var hour = date.getHours();
  var min = date.getMinutes();
  var postfix = "AM";
  var timeString = "";

  if (hour >= 12) {
    hour -= 12;
    postfix = "PM";
  }

  if (hour == 0) hour = 12;

  timeString = hour + ":"
    + ((min < 10) ? "0" : "") + min
    + " "  + postfix;

  return timeString;
}


///////////////////////////////
//
// Playlist Item Selection
//
///////////////////////////////

var selected_media_id;

function set_selected_media(media_id)
{
  if (selected_media_id != media_id)
  {
    if (selected_media_id)
    {
      var element = jQuery('#delve_media_' + selected_media_id);
      if (element)
      {
        element.removeClass("delve_playlist_item_box_selected");
        element.addClass("delve_playlist_item_box_default");
      }
    }

    selected_media_id = media_id;
    highlight_selected_media();
  }
}

function highlight_selected_media()
{
  if (selected_media_id)
  {
    var element = $('#delve_media_' + selected_media_id);
    if (element)
    {
      element.removeClass("delve_playlist_item_box_default");
      element.removeClass("delve_playlist_item_box_hover");
      element.addClass("delve_playlist_item_box_selected");
    }
  }
}

function playlist_item_box_mouseover(media_id)
{
  if (media_id != selected_media_id)
  {
    var element = jQuery('#delve_media_' + media_id);
    if (element)
    {
      element.removeClass("delve_playlist_item_box_default");
      element.addClass("delve_playlist_item_box_hover");
    }
  }
}

function playlist_item_box_mouseout(media_id)
{
  if (media_id != selected_media_id)
  {
    var element = jQuery('#delve_media_' + media_id);
    if (element)
    {
      element.removeClass("delve_playlist_item_box_hover");
      element.addClass("delve_playlist_item_box_default");
    }
  }
}


///////////////////////////////
//
// JavaScript API Helpers
//
///////////////////////////////

function get_ideal_image_url(media, ideal_width)
{
  var u = null;
  if (media != null && media.images != null) {
    var d = null;
    for (var i = 0; i < media.images.length; i++) {
      var c = media.images[i];
      if (d == null || d.width == undefined || (c.width != undefined && ((ideal_width <= c.width && (c.width < d.width || d.width < ideal_width)) || (d.width < c.width && c.width <= ideal_width)))) d = c;
    }
    if (d != null) u = d.url;
  }
  if (u == null) u = media.thumbnailUrl;
  if (u != null && u != undefined) {
    var cpc_base = "http://cpc.delvenetworks.com/";
    var img_base = "http://img.delvenetworks.com/";
    var new_base = "http://nfl.img.delvenetworks.com/";
    if (u.indexOf(img_base) == 0) u = u.replace(img_base, new_base);
    else if (u.indexOf(cpc_base) == 0) u = u.replace(cpc_base, new_base);
  }
  return u;
}

function set_media(media_id)
{
  DelvePlayer.doSetMedia(media_id, true, 0);
}

function do_on_media_load(e)
{
  set_selected_media(e.id);
}

function do_on_channel_load(e)
{
  var mediaId = getPageQuerystring("m", "");
  if (mediaId != "")
  {
    DelvePlayer.doSetMedia(mediaId);
  }

  var playlist_box = document.getElementById('delve_playlist_box');

  var htmlCode = "";
  if (e.mediaList && e.mediaList.length > 0) {
    htmlCode += '<ul class="delve_playlist">';

    for (var i = 0; i < e.mediaList.length; i++) {
      var media = e.mediaList[i];
      if (media) {

        var media_id_string = "'" + media.id + "'";

        var dateString = "";

        if (media.publishDate)
        {
          var date = new Date(media.publishDate);
          dateString =
            day_names[date.getDay()] +
            ", " +
            month_names[date.getMonth()] +
            " " +
            date.getDate() +
            ", " +
            date.getFullYear() +
            " | " +
            formattedTime(date);
        }

        htmlCode +=
        '<li class="delve_playlist_item">' +
        '<div class="delve_hrule"></div>' +

        '<div class="delve_playlist_item_box delve_playlist_item_box_default" id="' + 'delve_media_' + media.id + '">' +
        '<div class="delve_playlist_item_overlay_box" onclick="set_media(' + media_id_string + ');" onmouseover="playlist_item_box_mouseover(' + media_id_string + ');" onmouseout="playlist_item_box_mouseout(' + media_id_string + ');"></div>' +

        '<div class="delve_thumbnail_wrapper">' +
        '<img class="delve_thumbnail" src="' + get_ideal_image_url(media, 100) + '"/>' +
        '</div>' +

        '<div class="delve_media_title_box">' + media.title + '</div>' +
        '<div class="delve_media_publish_date_box">' + dateString + '</div>' +
        '<div class="delve_media_description_box">' + media.description + '</div>' +
        '</div>' +

        '</li>';
      }
    }

    htmlCode += "</ul>";
  }
  playlist_box.innerHTML = htmlCode;

  // activate the custom scroll bar styles
  $('#delve_playlist_box').jScrollPane({showArrows:true});

  highlight_selected_media();
}


function getPageQuerystring(key, default_)
{
  if (default_==null) default_="";
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return qs[1];
}


///////////////////////////////
//
// Player Callback
//
///////////////////////////////
var duration = -1;

function delvePlayerCallback(id, eventName, data)
{
  switch (eventName) {
    case 'onPlayerLoad':
      if (eventName == 'onPlayerLoad' && (DelvePlayer.getPlayers() == null || DelvePlayer.getPlayers().length == 0)) {
        DelvePlayer.registerPlayer("delve_player_object");
      }
      break;

    case 'onPlayheadUpdate':
      duration = data.durationInMilliseconds;
      break;

    case 'onMediaLoad':
      do_on_media_load(data);
      break;

    case 'onChannelLoad':
      do_on_channel_load(data);
      break;
  }
}
