/******************************************************************************/
var rssReq;    //The RSS request object. Sends request to the server.
var rssItems;  //The resulting collection of rssItem objects.
var rssItemsContainerId;  //The HTML id of the container element.
function RSSItem(title, link, description)  //Class: A single RSS item.
{
  this.title = title;
  this.link = link;
  this.description = description;
}
/*  This function sends a request for RSS data from the specified URL.
*/
function requestRSS(url)
{
  if (window.XMLHttpRequest)  //For Firefox
  { rssReq = new XMLHttpRequest(); }
  else if (window.ActiveXObject)  //For IE
  { rssReq = new ActiveXObject("Microsoft.XMLHTTP"); }
  if (rssReq != null)
  {
    try
    {
      rssReq.onreadystatechange = loadRSS;
      rssReq.open("GET", url, true);
      rssReq.send(null);
    } catch (err) { alert("ERROR: Could not open "+url+"."); }
  }
  else
  { alert("ERROR: Browser does not support XMLHTTP."); }
}
/*  This function loads the RSS data that's been retrieved.
  */
function loadRSS()
{
  if (rssReq.readyState == 4)
  {
    if (rssReq.status == 200)
    {
      var tmpItems = rssReq.responseXML.getElementsByTagName("item");
      rssItems = new Array();
      for (var i = 0; i < tmpItems.length; i ++)
      {
        var title = "";
        var link = "";
        var description = "";
        if (tmpItems[i].getElementsByTagName("title")[0].textContent)
        {
          title = tmpItems[i].getElementsByTagName("title")[0].textContent;
          link = tmpItems[i].getElementsByTagName("link")[0].textContent;
          description = tmpItems[i].getElementsByTagName("description")[0].textContent;
        }
        else if (tmpItems[i].getElementsByTagName("title")[0].text)
        {
          title = tmpItems[i].getElementsByTagName("title")[0].text;
          link = tmpItems[i].getElementsByTagName("link")[0].text;
          description = tmpItems[i].getElementsByTagName("description")[0].text;
        }
        rssItems[i] = new RSSItem(title, link, description);
      }
      //startTheTest();  //TEST
      fillContainerWithRSSItems(rssItemsContainerId);
    }
    else
    { alert("ERROR: Could not load RSS data."); }
  }
}
/******************************************************************************/
/*  A convenient way of creating elements in the document.
*/
function createDocElements(eleType, eleClass, attNames, attValues)
{
  var obj, i;
  var ele = "<" + eleType + " class=\"" + eleClass + "\" ";
  if (attNames != "" && attValues != "")
  {
    for (i = 0; i < attNames.length; i ++)
    { ele = ele + attNames[i] + "=\"" + attValues[i] + "\" "; }
  }
  ele = ele + ">"
  try  //For IE6.
  {
    obj = document.createElement(ele);
  }
  catch (exception)  //For Firefox.
  {
    obj = document.createElement(eleType);
    obj.setAttribute("class", eleClass);
    if (attNames != "" && attValues != "")
    {
      for (i = 0; i < attNames.length; i ++)
      { obj.setAttribute(attNames[i], attValues[i]); }
    }
  }
  return obj;
}
/*  This function removes the 'px' and 'pt' from a string.
    Useful when dealing with CSS dimension values.
  */  
function pxToInt(str)
{ return parseInt(str.replace("px", "").replace("pt", "")); }
/******************************************************************************/
/*  A simple function that scrolls the items from right to left.
    rssContainerId is the id of the container of the RSS Items.
 */
var tickertapeScrollOn;  //Indicates whether to scroll or not.
function scrollRightToLeft(rssContainerId)
{
  var increment = -1;  //MUST be negative.
  var baseX = 0;
  var rssContainer = document.getElementById(rssContainerId);
  var x;
  if (!tickertapeScrollOn) { return; }
  if (rssContainer.style.left)
  {
    x = pxToInt(rssContainer.style.left) + increment;
  }
  else { x = baseX; }
  var head = rssContainer.childNodes[0];
  var widthOfItem;
  try { widthOfItem = head.offsetWidth; }
  catch (err) {}
  if (x <= (baseX - widthOfItem))
  {
    x = x + widthOfItem;
    rssContainer.removeChild(head);  //Put the head to the tail.
    rssContainer.appendChild(head);
  }
  rssContainer.style.left = x + "px";
}
function fillContainerWithRSSItems(containerId)
{
  var container = document.getElementById(containerId);
  var attNames = "";
  var attValues = "";
  var ele;
  var content;
  while (container.childNodes.length > 0)  //Clear the container
  {
    var head = container.childNodes[0];
    container.removeChild(head);
  }
  for (var i = 0; i < rssItems.length; i ++)
  {
    attNames  = new Array("style");
    attValues = new Array("float: left;");
    ele = createDocElements("li", "", attNames, attValues);
    content = "<a href=\""+rssItems[i].link+"\" target=\"_blank\">" + rssItems[i].title + "</a>" ;
    ele.innerHTML = content;
    container.appendChild(ele);
  }
  //Push the RSS Items all the way to the right, so it appears from the right edge.
  try { container.style.left = container.parentNode.offsetWidth; }
  catch (err) {}
}
function closeTicker()
{
	var the_ticker = document.getElementById("fixed");
	the_ticker.style.display = "none";
}
function createHorizontalTickerTape(containerId, scrollTxt, scrollLink, intervalTime, mousePause)
{
  tickertapeScrollOn = true;
  if (mousePause == true)
  { 
	  document.write("<div class=\"tickertape\" style=\"position: relative; overflow: hidden;\" onmouseover=\"tickertapeScrollOn = false;\" onmouseout=\"tickertapeScrollOn = true;\" >\n"); 
  }
  else
  { 
	document.write("<div class=\"tickertape\" style=\"position: relative; overflow: hidden;\">\n"); }
	document.write("  <ul id=\""+containerId+"\" style=\"position: absolute; list-style:none; width: 10000px; overflow: hidden; margin: 0px;\" >\n");
	document.write("  </ul>\n")
	document.write("<a href=\"javascript:closeTicker()\" id=\"tickercloselink\" class=\"transON\" onmouseover=\"this.className=\'transOFF\'\" onmouseout=\"this.className=\'transON\'\"><img src=\"images/adticker_closebutton.png\" alt=\"Close\"\/></a>\n");
	//document.write("<a href=\"javascript:closeTicker()\" id=\"tickercloselink\">[Close]</a>\n");
	document.write("</div>\n");
	rssItemsContainerId = containerId;
	//requestRSS(rssURL);
	rssItems = new Array();
	for (var i = 0; i < scrollTxt.length; i ++) {
		rssItems[i] = new RSSItem(scrollTxt[i], scrollLink[i], "");
	}
	fillContainerWithRSSItems(rssItemsContainerId);  
	setInterval("scrollRightToLeft('"+containerId+"');", intervalTime);
}
/******************************************************************************/