var nIndex = 0;
var timerID = null;
var storycnt = 3;

var useFade = false;

function rotateNews()
{
  if (nIndex >= storycnt)
     nIndex = 0;
  
  showStory(nIndex, false);
  
  nIndex++;
  timerID = setTimeout('rotateNews()', 4000);
}

function pauseNews()
{
  if (timerID != null)
  {
    clearTimeout(timerID);
    timerID = null;
  }
}
 
function playNews()
{
  if (timerID == null)
    timerID = setTimeout('rotateNews()', 1000);
}

function changeClass(elemID, val)
{
  var elem = document.getElementById(elemID);
  
  if (navigator.appName == "Microsoft Internet Explorer")
    elem.className = val;
  else
    elem.setAttribute("class", val);
}

function showStory(id, pause)
{
  if (useFade == true)
  {
    fadeStory(id, pause);
    return false;
  }
  
  if (pause == true)
    pauseNews();
  
  //Shows the next story
  document.getElementById("Story" + id).style.display = "block";
  changeClass("NewsPageLink" + id, "HubPageTab SelectedPage");
  
  //Hides the rest
  for (var i = 0; i < 3; i++)
  {
    if (i != id)
    {
      document.getElementById("Story" + i).style.display = "none";
      changeClass("NewsPageLink" + i, "HubPageTab");
    }
  }
  
  return false;
}

function fadeStory(id, pause)
{
  if (pause == true)
    pauseNews();
  
  var previous = id--;
  
  if (previous < 0)
    previous = storycnt;
  
  //fade out the previous story
  //document.getElementById("Story" + previous).style.display = "none";
  fade("Story" + previous);
  changeClass("NewsPageLink" + previous, "HubPageTab");
  
  //fade in the next story
  //document.getElementById("Story" + id).style.display = "block";
  fade("Story" + id);
  changeClass("NewsPageLink" + id, "HubPageTab SelectedPage");
  
  
  /*
  //Shows the next story
  document.getElementById("Story" + id).style.display = "block";
  changeClass("NewsPageLink" + id, "HubPageTab SelectedPage");
  
  //Hide the current story
  if (i != id)
  {
    document.getElementById("Story" + i).style.display = "none";
    changeClass("NewsPageLink" + i, "HubPageTab");
  }
  */
  return false;
}

var TimeToFade = 250.0;

function fade(eid)
{
  var element = document.getElementById(eid);
  
  if (element == null)
    return;
   
  if (element.FadeState == null)
  {
    if (element.style.opacity == null
        || element.style.opacity == ''
        || element.style.opacity == '0.8')
      element.FadeState = -2;
    else
      element.FadeState = 2;
  }
   
  if (element.FadeState == 1 || element.FadeState == -1)
  {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  }
  else
  {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    element.style.display = element.FadeState == 2 ? 'none' : 'block';
    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
  }
}

function animateFade(lastTick, eid)
{
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
 
  var element = document.getElementById(eid);
 
  if (element.FadeTimeLeft <= elapsedTicks)
  {
    element.style.display = element.FadeState == 1 ? 'block' : 'none';
    element.style.opacity = element.FadeState == 1 ? '.85' : '0';
    element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '85' : '0') + ')';
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    return;
  }
 
  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  
  if (element.FadeState == 1)
    newOpVal = 1 - newOpVal;

  newOpVal = newOpVal * 0.85;
  element.style.opacity = newOpVal;
  element.style.filter = 'alpha(opacity = ' + (newOpVal * 100) + ')';
 
  setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}

function sleep(naptime)
{
  naptime = naptime * 1000;
  var sleeping = true;
  var now = new Date();
  var alarm;
  var startingMSeconds = now.getTime();
  
  while (sleeping)
  {
    alarm = new Date();
    alarmMSeconds = alarm.getTime();
    
    if (alarmMSeconds - startingMSeconds > naptime)
      sleeping = false;
  }
}
