//$Id: truveosearch.js,v 1.5.2.2 2008/01/29 08:34:11 jack Exp $

load_functions[0] = 'truveoSearch';
var TVS = null;
function search_button()
{
  var cleanQuery = document.forms.searchForm.query.value.replace(/ /g, '')
  if (cleanQuery != '')
  {
    document.searchForm.submit();
  }
}
function truveoSearch()
{
  TVS = new TruveoVideoSearch('50e5a5941787405cd');
  TVS.results = 12;
  TVS.showAdult = 1;
  TVS.showRelatedItems = 1;
  TVS.tagResults = 50;
  TVS.attachEvent('onerror', 'handleTVSError(errorCode, errorMessage);');
  TVS.attachEvent('onload', 'handleTVSLoad();');
  TVS.attachEvent('onupdate', 'handleTVSUpdate();');
  TVS.initialize();
}

function handleTVSError(errorCode, errorMessage)
{
  document.getElementById('video_results').innerHTML = '<div align="center" style="padding:50px"> Video Explore is temporarily unavailable. Please try your request again in a few minutes.</div>';
}

function handleTVSLoad()
{
  if (video_search.start > 1000)
    video_search.start = 996;
  TVS.getVideos(video_search.query, video_search.start);
}

function handleTVSUpdate()
{
  if (TVS.VideoSet && TVS.VideoSet.Video)
  {
    var theHTML = '<table width="95%" align="center" cellpadding="5">';
    for (var i=0; i < TVS.VideoSet.totalResultsReturned; i++)
    {
      if (TVS.VideoSet.Video[i])
      {
        if (!TVS.VideoSet.Video[i].viewCount)
          TVS.VideoSet.Video[i].viewCount = 0;

        var title = TVS.VideoSet.Video[i].title.substring(0,30);
        if ((TVS.VideoSet.Video[i].title).length > 30)
          title += "...";

        if (TVS.VideoSet.Video[i].thumbnailUrl.match('imageNotAvail.jpg'))
          TVS.VideoSet.Video[i].thumbnailUrl = '../video/images/image_not_available.gif';

        if (i%4 == 0)
          theHTML += "<tr>";
        theHTML += '<td valign="top" align="left" style="padding: 15px 0px" width="25%">'+
                   '<table width="100%" align="center" border="0">'+
                   '<tr><td  align="left" valign="bottom">'+
                   '<div class="grayBorderAll video_thumbnail" valign="middle">'+
                   '<a href="view.php?video='+TVS.VideoSet.Video[i].id+'"><img src="'+TVS.VideoSet.Video[i].thumbnailUrl+'" align="middle"/></a>'+
                   '</div></td></tr>'+
                   '<tr><td align="left" valign="top">'+
                   '<a href="view.php?video='+TVS.VideoSet.Video[i].id+'" class="lightblueHeading10 bold">'+title+"</a><br/>"+
                   '<div class="small">Plays: '+TVS.VideoSet.Video[i].viewCount+'<br/></div>'+
                   "</td></tr></table></td>";

        if (i%4 == 3 || i+1 == TVS.VideoSet.totalResultsReturned)
          theHTML += "</tr>";
      }
    }

    document.getElementById('video_results').innerHTML = theHTML + '</table>';

    if (document.getElementById('video_tags'))
      handleVideoTags();

    if (showNavigation)
      createPageNavigation(TVS.VideoSet.totalResultsAvailable,
                           TVS.results,
                           video_search.current,
                           video_search.link);
  }

  if (showSearch)
  {
    var plural = '';
    if (TVS.VideoSet.totalResultsAvailable != 1)
      plural = 's';
    document.getElementById('searchTotal').innerHTML = '<b id="searchString">'+
      TVS.VideoSet.totalResultsAvailable +
      '</b> result' + plural;

    if (TVS.VideoSet.totalResultsAvailable == 0)
    {
      document.getElementById('searchSuggestions').style.display = '';
      document.getElementById('navigation1').style.display = 'none';
      document.getElementById('navigation2').style.display = 'none';
      document.getElementById('video_results').innerHTML = '';
    }
    document.getElementById('searchString').style.display = '';
  }
}

function createPageNavigation(total, limit, current, link)
{
  if (total > 1000)
    total = 1000;
  var total_pages = Math.ceil(total/limit);

  if (current >= total_pages)
    current = (total_pages - 1);
  else if (current < 0)
    current = 0;

  var start = 0;
  var finish = 0;
  if (total_pages <= 5 || current <= 2)
  {
    finish = 5;
  }
  else if (current >= total_pages - 2)
  {
    start = total_pages - 5;
    finish = total_pages;
  }
  else
  {
    start = current - 2;
    finish = current + 3;
  }
  var pages = "Pages: ";
  for (var i = start; i < finish && i < total_pages; i++)
  {
    if (i != start)
      pages += "&nbsp;|&nbsp;";

    if (i != current)
      pages += '<a href="'+link+i+'">'+ (i + 1) +"</a>";
    else
      pages += (i + 1);
  }

  document.getElementById('pageString1').innerHTML = pages;
  document.getElementById('pageString2').innerHTML = pages;

  if (current > 0)
    prevnext = '<a href="'+link + (current - 1) +'">Previous</a>';
  else
    prevnext = 'Previous';

  prevnext += "&nbsp;|&nbsp;";

  if (current < total_pages - 1)
   prevnext += '<a href="'+link + (current + 1) +'">Next</a>';
  else
    prevnext += 'Next';

  document.getElementById('pageNav1').innerHTML = prevnext;
  document.getElementById('pageNav2').innerHTML = prevnext;

}

function handleVideoTags()
{
  document.getElementById('video_tags').style.display = '';
  if (TVS.TagSet && TVS.TagSet.Tag)
  {
    var tagCloud = '';
    TVS.TagSet.Tag.sort(sortTags);
    var max = min = TVS.TagSet.Tag[0].count;
    for (var j = 0; j < TVS.TagSet.totalResultsReturned; j++)
    {
      var count = parseInt(TVS.TagSet.Tag[j].count);
      if (count > max)
        max = count;
      if (count < min)
        min = count;
    }

    var range = max - min;
    if (range == 0)
      range = 1;
    var maxFont = 32;
    var minFont = 12;
    var step = (maxFont - minFont)/range;

    for (var i = 0; i < TVS.TagSet.totalResultsReturned; i++)
    {
      var fontsize = Math.round(minFont + ((TVS.TagSet.Tag[i].count - min) * step));
      tagCloud += ' <span style="margin-right:5px"><a style="font-size:'+ fontsize+'px" href="index.php?tag='+escape(TVS.TagSet.Tag[i].name.toLowerCase())+'">'+TVS.TagSet.Tag[i].name.toLowerCase()+'</a></span>';
    }
    document.getElementById('tagCloud').innerHTML = tagCloud;
  }
  else
  {
    document.getElementById('video_tags').style.display = 'none';
  }
}

function sortTags(a, b)
{
  var x = a.name.toLowerCase();
  var y = b.name.toLowerCase();
  return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
