//Refreshing rss messages
var refreshCurrentRssNewsReq = getXmlHttpRequestObject();
var color_timeout = 5000;
//Starts the AJAX request.
document.popup = false;
function refreshRssNews(lastmsgid, maxNumber) {
  if (refreshCurrentRssNewsReq.readyState == 4 || refreshCurrentRssNewsReq.readyState == 0) {
     refreshCurrentRssNewsReq.open("GET", '/infostock/ar/arssnews?lastmid=' + lastmsgid +
                                       '&maxCount=' + maxNumber +
                                       '&time=' + new  Date().getTime(), true);
    refreshCurrentRssNewsReq.onreadystatechange = handleRefreshCurrentRssNews;
    refreshCurrentRssNewsReq.send(null);
  }
}

//Called when the AJAX response is returned.
function handleRefreshCurrentRssNews() {
  //alert(_type + "   " + refreshCurrentRssNewsReq.readyState);
  if (refreshCurrentRssNewsReq.readyState == 4) {
    var messageDiv = document.getElementById("rssnews");

     // only if "OK"
    if (refreshCurrentRssNewsReq.status == 200) {
      if (refreshCurrentRssNewsReq.responseText == '') return;
      var start = new Date();
      //alert(refreshCurrentRssNewsReq.responseText);
      var parsedXML = Base.XML.parseFromString(refreshCurrentRssNewsReq.responseText);
      if ( document.last_rss_news_id == null || !document.last_rss_news_id || document.last_rss_news_id == 0) {
        var generatedHtml = generateCurrentRssNewsHtml(parsedXML);
        if (generatedHtml && generatedHtml.length > 0) {
          messageDiv.innerHTML = generatedHtml;
          scrollRssTable();
        }
      } else {
        generateCurrentRssNewsPartialHtml( parsedXML, messageDiv.firstChild );
      }
     } else {
      messageDiv.innerHTML = "Trying ot connect...: " + refreshCurrentRssNewsReq.status;
    }
  }
}

function generateCurrentRssNewsHtml(parsedXML) {
  var extendCols = !Utils.browser.IE; //document.location.href.indexOf('popup') &&
  var root = parsedXML.getElementsByTagName('rssnews-data')[0];
  var lastmid = root.getAttribute('lastmid');
  document.last_rss_news_id = lastmid;
  var rssRoot = root.getElementsByTagName('rssnews')[0];
  var visibleRows = rssRoot.getAttribute('visible-rows');

  var rssmessages = rssRoot.getElementsByTagName('rss-message');
  var rowsNum = document.last_rss_news_id != lastmid && visibleRows > rssmessages.length ? visibleRows : rssmessages.length;
  if (rowsNum > 0) {
    var rssHtml =
            '<table id="messageTable" border="0" cellspacing="0" width="282" cellpadding="0" class="homeTable" style="table-layout:fixed;">';// +
    for (var i = 0; i < rssmessages.length; i++) {
      var msgContent = "&nbsp;";
      var rowContent;
      if (i < rssmessages.length) {
        // get row content of current rss message
        rowContent = generateRssRowContent(rssmessages[i]);
      }
      rssHtml += '<tr class="' + (i % 2 != 0 ? 'evenrow' : 'oddrow') + '">' +
                     ' <td width="' + (extendCols ? 266 : 266) + '" align="left">' + rowContent + '</td>' +
                     '</tr>';
    }
    rssHtml += '</table>';
  }
  if (rssmessages.length > 0) {
    document.last_rss_news_id = lastmid;
  }
  return rssHtml;
}

function generateCurrentRssNewsPartialHtml(parsedXML,contain) {
  var messageHtml = "";
  var extendCols = !Utils.browser.IE;
  var root = parsedXML.getElementsByTagName('rssnews-data')[0];
  var rssRoot = root.getElementsByTagName('rssnews')[0];
  var visibleRows = rssRoot.getAttribute('visible-rows');
  var lastmid = root.getAttribute('lastmid');
  document.last_rss_news_id = lastmid;
  var rssmessages = rssRoot.getElementsByTagName('rss-message');
  var rowsNum = visibleRows > rssmessages.length ? rssmessages.length : visibleRows;

  var old_class = contain.firstChild.lastChild.className;
  if( old_class.indexOf( "_tagged" ) != -1 )
    old_class = old_class.substr( 0, old_class.indexOf( '_tagged' )-1 );

  for (var i = 0; i < rssmessages.length; i++) {
    var rowContent;
    var id;
    if (i < rssmessages.length) {
      // get row content of current rss message
      rowContent = generateRssRowContent(rssmessages[i]);
      id = rssmessages[i].getElementsByTagName("id")[0].firstChild.nodeValue;
    }

    if ( !document.tc_class )
      document.tc_class = old_class == "oddrow" ? "evenrow" : "oddrow";
    else
      document.tc_class = document.tc_class == "oddrow" ? "evenrow" : "oddrow";

    var oddrow = document.tc_class;
    var evenrow = document.tc_class == "oddrow" ? "evenrow" : "oddrow";

    var tagged = "_tagged";
    {
      var row = document.createElement("tr");
      row.setAttribute("class", oddrow + tagged );
      row.className = oddrow + tagged;
      row.setAttribute( "id", "rc-" + id );
      var col = document.createElement( "td" );

      col.innerHTML = rowContent;
      col.setAttribute( "width", (extendCols ? 266 : 266) );
      col.setAttribute( "align", "left" );
      row.appendChild( col );

    }
   // Remove one line from the top, and add one line at the bottom
    if (visibleRows <= contain.firstChild.childNodes.length) {
      var el = contain.firstChild.firstChild;
      contain.firstChild.removeChild( el );
    }
    contain.firstChild.appendChild(row);


    // Start timer for color removal ( Default to 10 secs, now set to 5 for testing )
    setTimeout( "removeColoredCode( 'rc-" + id + "' );", color_timeout );
  }
  if (rowsNum > 0) {
    scrollRssTable();
  }
  document.tc_class = false;
}
function generateRssRowContent(message) {
  var rssurl = message.getElementsByTagName("url")[0].firstChild.nodeValue;
  var date = message.getElementsByTagName("date")[0].firstChild.nodeValue;
  var rsstitle = message.getElementsByTagName("title")[0].firstChild.nodeValue;
  var rsssitepublished = message.getElementsByTagName("sitepublished")[0].firstChild.nodeValue;
  return '<u class="fleft rss_site">'  + date + '&nbsp;-&nbsp;' + rsssitepublished + '</u>&nbsp;-&nbsp;<a class="speclnk" href="' + rssurl + '">' + rsstitle + '</a>';
}
function removeColoredCode( id ) {
  var el = document.getElementById( id );
  if( !el )
    return;
  if ( el.className.indexOf( "_tagged_red" ) != -1 )
    el.className = el.className.replace( "_tagged_red", "" );
  else if ( el.className.indexOf( "_tagged_green" ) != -1 )
    el.className = el.className.replace( "_tagged_green", "" );
  else if( el.className.indexOf( "_tagged" ) != -1 )
    el.className = el.className.replace( "_tagged", "" );
  el.removeAttribute( "id" );
}