/******************** ArticleSearch Class ********************/
function ArticleSearch(id, limit, offset, allowNavigation)
{
  //document.getElementById("debugTA").value += "\nArticleSearch class constructor called.";

  this.containerObject = null;
  this.retrieverObject = null;
  if ((id == null) || (typeof id == "undefined"))
  {
    this.id = "";
  }
  else
  {
    this.id = id;
  }
  this.limit = limit;
  this.offset = offset;
  if ((allowNavigation === "") || (typeof allowNavigation == "undefined"))
  {
    this.allowNavigation = true;
  }
  else
  {
    this.allowNavigation = allowNavigation;
  }
  this.searchText = "";
  this.status = "initializing";  // Possible values: "initializing", "loading", "loaded"
  this.artArr = new Array();
  this.artIDArr = new Array();
  this.artPos = -1;
  this.activeArticle = -1;
}

ArticleSearch.articleArray = new Array();

ArticleSearch.nextOffset = null;

ArticleSearch.prevOffset = null;

ArticleSearch.prototype.dataRetrieved = function(artArray, offset, prevOffset, nextOffset, totalArticles, resultStart, resultEnd)
{
  //document.getElementById("debugTA").value += "\nArticleSearch.dataRetrieved() called.";
  //document.getElementById("debugTA").value += "\n artArray="+artArray+"\n offset="+offset+", prevOffset="+prevOffset+", nextOffset="+nextOffset;

  this.offset = offset;
  var numArts = artArray.length;
  var displayStr = '<table width="345" cellpadding="0" cellspacing="0" border="0">';

  // Set number of results
  document.getElementById("videoSearch_numResults").innerHTML = numArts;

  // Set search text
  document.getElementById("videoSearch_text").innerHTML = this.searchText;

  for (var i=0; i < numArts; i++)
  {
    this.artArr[i] = artArray[i];
    this.artIDArr["ID_"+this.artArr[i].id] = i;

    displayStr += '<tr id="asTR_' + this.artArr[i].id + '" onclick="articleSearchObj.jump(' + i + ', false);" onmouseover="articleSearchObj.hover_hl(' + this.artArr[i].id + ');" onmouseout="articleSearchObj.hover_dl(' + this.artArr[i].id + ');" class="Article" style="cursor:pointer;" title="Play video">' +
                    '<td align="left" valign="top"><img src="http://versusimg.cdn.dayport.com/img/1x1.gif" width="1" height="1" border="0" /><br />' +
                      '<table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#000000">' +
                        '<tr>' +
                          '<td id="asTD_number_' + this.artArr[i].id + '" width="24" rowspan="3" align="center" valign="bottom" class="Article_number">' +
                            zeroPad((i + 1)) +
                          '</td>' +
                          '<td width="321" colspan="3" align="left" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0">' +
                              '<tr>' +
                                '<td id="asTD_name_' + this.artArr[i].id + '" width="99%" align="left" valign="top" class="Article_name"><span title="' +
                                  unescape(this.artArr[i].name) + '">' +
                                  player_truncateString(unescape(this.artArr[i].name), 25) +
                                  '</span></td>' +
                                '<td width="1%" align="right" valign="middle" class="rightTime" nowrap>(' +
                                  convertFromSec(this.artArr[i].durationSeconds, 8, true) +
                                  ')<img src="http://versusimg.cdn.dayport.com/img/1x1.gif" width="6" height="1" border="0" /><a href="#" onclick="player_email(' + this.artArr[i].id + ');if (window.event){ event.cancelBubble = true; } else{ event.stopPropagation(); }; return false;" title="E-mail"><img src="http://versusimg.cdn.dayport.com/img/player/mail_red.gif" width="20" height="12" border="0" align="absmiddle" /></a></td>' +
                              '</tr>' +
                            '</table></td>' +
                        '</tr>' +
                        '<tr>' +
                          '<td width="77" align="left" valign="top">';

    if (this.artArr[i].previewImage != "")
    {
      displayStr +=         '<img id="asIMG_' + this.artArr[i].id + '" src="' + this.artArr[i].previewImage + '" width="77" height="59" border="0" class="Article" />';
    }
    else if (player_defaultPreviewImg != null)
    {
      displayStr +=         '<img id="asIMG_' + this.artArr[i].id + '" src="' + player_defaultPreviewImg + '" width="77" height="59" border="0" class="Article" />';
    }
    else
    {
      displayStr +=         '<img id="asIMG_' + this.artArr[i].id + '" src="http://versusimg.cdn.dayport.com/img/1x1.gif" width="77" height="59" border="0" class="Article" />';
    }

    displayStr +=         '</td>' +
                          '<td width="10"><img src="http://versusimg.cdn.dayport.com/img/1x1.gif" width="10" height="1" border="0" /></td>' +
                          '<td id="asTD_intro_' + this.artArr[i].id + '" width="234" align="left" valign="top" class="Article_intro"><p>' +
                            unescape(this.artArr[i].intro) +
                            '</p></td>' +
                        '</tr>' +
                        '<tr>' +
                          '<td height="4" colspan="3"><img src="http://versusimg.cdn.dayport.com/img/1x1.gif" width="1" height="4" border="0" /></td>' +
                        '</tr>' +
                      '</table>' +
                      '<img src="http://versusimg.cdn.dayport.com/img/1x1.gif" width="1" height="1" border="0" /></td>' +
                  '</tr>';
  }

  if (this.allowNavigation && ((prevOffset != null) || (nextOffset != null)))
  {
    displayStr += '<tr><td height="10" align="left" valign="top"><img src="http://versusimg.cdn.dayport.com/img/1x1.gif" width="1" height="10" border="0" /></td></tr>' +
                  '<tr><td align="right" valign="middle" class="playerText_navigation">';

    if (prevOffset != null)
    {
      displayStr += '<a href="/" onclick="articleSearchObj.retrieveData(' + prevOffset + '); return false;" class="playerText_navigation" title="Previous videos"><< BACK</a>';

      if (nextOffset != null)
      {
        displayStr += ' | ';
      }
    }

    if (nextOffset != null)
    {
      displayStr += '<a href="/" onclick="articleSearchObj.retrieveData(' + nextOffset + '); return false;" class="playerText_navigation" title="Next videos">NEXT ' + this.limit + ' >></a>';
    }

    displayStr += '</td></tr>';
  }

  displayStr += '</table>';

  if ((navigator.userAgent.toLowerCase().indexOf("mac") != -1) && (navigator.appVersion.toLowerCase().indexOf("msie") != -1))
  {
    // IE on Mac
    setTimeout("articleSearchObj.containerObject.innerHTML = unescape('" + escape(displayStr) + "');", 10);
  }
  else
  {
    this.containerObject.innerHTML = displayStr;
  }
  this.status = "loaded";

  // See if a listed article is being played
  if ((typeof dpVidObj != "undefined") && (typeof this.artIDArr["ID_"+dpVidObj.video.articleID] != "undefined"))
  {
    this.jump(this.artIDArr["ID_"+dpVidObj.video.articleID], false);
  }
};

ArticleSearch.prototype.dl = function()
{
  //document.getElementById("debugTA").value += "\nArticleSearch.dl() called.";

  if (this.activeArticle != -1)
  {
    var astrElem = document.getElementById("asTR_"+this.activeArticle);
    if (astrElem)
    {
      // Reset row class
      astrElem.className = "Article";

      var astd_nameElem = document.getElementById("asTD_name_"+this.activeArticle);
      if (astd_nameElem)
      {
        // Reset name class
        astd_nameElem.className = "Article_name";
      }

      var astd_numberElem = document.getElementById("asTD_number_"+this.activeArticle);
      if (astd_numberElem)
      {
        // Reset number class
        astd_numberElem.className = "Article_number";
      }

      var asimgElem = document.getElementById("asIMG_"+this.activeArticle);
      if (asimgElem)
      {
        // Reset image class
        asimgElem.className = "Article";
      }

      var astd_introElem = document.getElementById("asTD_intro_"+this.activeArticle);
      if (astd_introElem)
      {
        // Reset intro class
        astd_introElem.className = "Article_intro";
      }
    }

    this.activeArticle = -1;
  }
};

ArticleSearch.prototype.hl = function(artID)
{
  //document.getElementById("debugTA").value += "\nArticleSearch.hl() called.";

  var astrElem = document.getElementById("asTR_"+artID);
  if (astrElem)
  {
    // Set row class
    astrElem.className = "ArticleSelected";

    var astd_nameElem = document.getElementById("asTD_name_"+artID);
    if (astd_nameElem)
    {
      // Set name class
      astd_nameElem.className = "ArticleSelected_name";
    }

    var astd_numberElem = document.getElementById("asTD_number_"+artID);
    if (astd_numberElem)
    {
      // Set number class
      astd_numberElem.className = "ArticleSelected_number";
    }

    var asimgElem = document.getElementById("asIMG_"+artID);
    if (asimgElem)
    {
      // Set image class
      asimgElem.className = "ArticleSelected";
    }

    var astd_introElem = document.getElementById("asTD_intro_"+artID);
    if (astd_introElem)
    {
      // Set intro class
      astd_introElem.className = "ArticleSelected_intro";
    }    
  }
};

ArticleSearch.prototype.hover_dl = function(artID)
{
  //document.getElementById("debugTA").value += "\nArticleSearch.hover_dl() called.";

  var isActive = false;
  if (this.activeArticle == artID)
  {
    isActive = true;
  }

  var astrElem = document.getElementById("asTR_"+artID);
  if (astrElem)
  {
    // Set row class
    if (!isActive)
    {
      astrElem.className = "Article";
    }
    else
    {
      astrElem.className = "ArticleSelected";
    }

    var astd_nameElem = document.getElementById("asTD_name_"+artID);
    if (astd_nameElem)
    {
      // Set name class
      if (!isActive)
      {
        astd_nameElem.className = "Article_name";
      }
      else
      {
        astd_nameElem.className = "ArticleSelected_name";
      }
    }

    var astd_numberElem = document.getElementById("asTD_number_"+artID);
    if (astd_numberElem)
    {
      // Set number class
      if (!isActive)
      {
        astd_numberElem.className = "Article_number";
      }
      else
      {
        astd_numberElem.className = "ArticleSelected_number";
      }
    }

    var asimgElem = document.getElementById("asIMG_"+artID);
    if (asimgElem)
    {
      // Set image class
      if (!isActive)
      {
        asimgElem.className = "Article";
      }
      else
      {
        asimgElem.className = "ArticleSelected";
      }
    }

    var astd_introElem = document.getElementById("asTD_intro_"+artID);
    if (astd_introElem)
    {
      // Set intro class
      if (!isActive)
      {
        astd_introElem.className = "Article_intro";
      }
      else
      {
        astd_introElem.className = "ArticleSelected_intro";
      }
    }
  }
};

ArticleSearch.prototype.hover_hl = function(artID)
{
  //document.getElementById("debugTA").value += "\nArticleSearch.hover_hl() called.";

  var astrElem = document.getElementById("asTR_"+artID);
  if (astrElem)
  {
    // Set row class
    astrElem.className = "ArticleSelected";

    var astd_nameElem = document.getElementById("asTD_name_"+artID);
    if (astd_nameElem)
    {
      // Set name class
      astd_nameElem.className = "ArticleSelected_name";
    }

    var astd_numberElem = document.getElementById("asTD_number_"+artID);
    if (astd_numberElem)
    {
      // Set number class
      astd_numberElem.className = "ArticleSelected_number";
    }

    var asimgElem = document.getElementById("asIMG_"+artID);
    if (asimgElem)
    {
      // Set image class
      asimgElem.className = "ArticleSelected";
    }

    var astd_introElem = document.getElementById("asTD_intro_"+artID);
    if (astd_introElem)
    {
      // Set intro class
      astd_introElem.className = "ArticleSelected_intro";
    }    
  }
};

// Jump to specified article in list
ArticleSearch.prototype.jump = function(aPos, queueAd)
{
  //document.getElementById("debugTA").value += "\nArticleSearch.jump() called.";

  if (!pageLoaded)
  {
    alert("Please allow the player to finish loading.");
    return false;
  }

  if (this.status != "loaded")
  {
    //alert("Please allow the video list to finish loading.");
    return false;
  }

  this.artPos = aPos;
  this.select(this.artArr[this.artPos].id, queueAd);

  return true;
};

ArticleSearch.prototype.resetData = function()
{
  //document.getElementById("debugTA").value += "\nArticleSearch.resetData() called.";

  this.retrieverObject.innerHTML = "";
  this.artPos = -1;
  this.activeArticle = -1;
  this.artArr.length = 0;
  ArticleSearch.articleArray.length = 0;

  // Clear any references by article ID
  for (var prop in this.artIDArr)
  {
    delete this.artIDArr[prop];
  }
};

ArticleSearch.prototype.retrieveData = function(offset)
{
  //document.getElementById("debugTA").value += "\nArticleSearch.retrieveData() called.";

  if (this.searchText == "")
  {
    alert("The search text cannot be blank.");
    return false;
  }

  this.status = "loading";
  this.resetData();
  this.containerObject.innerHTML = '<table width="345" cellpadding="0" cellspacing="0" border="0">' +
                                     '<tr>' +
                                       '<td align="center" valign="top" class="playerText">Loading...</td>' +
                                     '</tr>' +
                                   '</table>';
  if ((navigator.userAgent.toLowerCase().indexOf("mac") != -1) && (navigator.appVersion.toLowerCase().indexOf("msie") != -1))
  {
    // IE on Mac
    setTimeout("articleSearchObj.retrieverObject.innerHTML = '_<scr' + 'ipt id=\"videoSearch_retrieverJS\" language=\"JavaScript\" type=\"text/javascript\" src=\"http://www.versus.com/nw/article/search/?tf=broadband_player_articlesearch.tpl&Limit=' + this.limit + '&Offset=' + offset + '&mt=1&CatScope=' + this.id + '&SearchText=' + escape(this.searchText) + '\" defer></scr' + 'ipt>';", 100);
  }
  else if ((navigator.userAgent.toLowerCase().indexOf("mac") != -1) && (navigator.userAgent.toLowerCase().indexOf("safari") != -1))
  {
    // Safari on Mac
    var scrObj = document.createElement("script");
    scrObj.id = "videoSearch_retrieverJS";
    scrObj.defer = true;
    scrObj.src = "http://www.versus.com/nw/article/search/?tf=broadband_player_articlesearch.tpl&Limit=" + this.limit + "&Offset=" + offset + "&mt=1&CatScope=" + this.id + "&SearchText=" + escape(this.searchText);
    this.retrieverObject.appendChild(scrObj);
  }
  else
  {
    this.retrieverObject.innerHTML = '_<scr' + 'ipt id="videoSearch_retrieverJS" language="JavaScript" type="text/javascript" defer></scr' + 'ipt>';
    var target = this;
    setTimeout(function()
    {
      document.getElementById("videoSearch_retrieverJS").src = "http://www.versus.com/nw/article/search/?tf=broadband_player_articlesearch.tpl&Limit=" + target.limit + "&Offset=" + offset + "&mt=1&CatScope=" + target.id + "&SearchText=" + escape(target.searchText);
    }, 10);
  }

  return true;
};

ArticleSearch.prototype.select = function(artID, queueAd)
{
  //document.getElementById("debugTA").value += "\nArticleSearch.select() called.";

  this.dl();
  if (typeof articleListObj != "undefined")
  {
    // Remove any highlighting for ArticleList class object
    articleListObj.dl();
  }

  if (dpVidObj.video.articleID != artID)
  {
    if (queueAd)
    {
      // Have an advertisement played before this video
      dpVidObj.video.queueAd();
    }

    // Play selected article
    dpVidObj.video.setSource("article", artID);
  }
  this.activeArticle = artID;
  this.hl(artID);
  // See if the ArticleList class object has the article listed
  if ((typeof articleListObj != "undefined") && (typeof articleListObj.artIDArr["ID_"+artID] != "undefined"))
  {
    // Set activeArticle property and add highlighting for ArticleList class object
    articleListObj.activeArticle = artID;
    articleListObj.hl(artID);
  }

  return true;
};

ArticleSearch.prototype.setObjects = function(containerObj, retrieverObj)
{
  //document.getElementById("debugTA").value += "\nArticleSearch.setObjects() called.";

  this.containerObject = containerObj;
  this.retrieverObject = retrieverObj;

  if ((this.status == "initializing") && (this.searchText != ""))
  {
    this.retrieveData(this.offset);
  }
  else
  {
    this.status = "loaded";
  }
};

ArticleSearch.prototype.toString = function()
{
  //document.getElementById("debugTA").value += "\nArticleSearch.toString() called.";

  return "[object ArticleSearch]";
};
/******************** End of ArticleSearch Class ********************/