﻿// JScript File

var myTimer;
var headlineOpacity = 100;
var headlinePos = 8.0;
var TICK_RATE = 30;        // tics/sec for moving
var TICK_INTERVAL = (1 / TICK_RATE) * 1000;
var MIN_LEFT_OFFSET = 0.1;
var FADE_RATE = 50; // ms
var FADE_DELAY = 5000; // ms

var accelerationSec = 0.4;  // in/sec*sec
var accelerationTick = accelerationSec / TICK_RATE;      // in/tick

var speedInchPerSec = -0.7;                                // in/sec
var speedInchPerTick = speedInchPerSec / TICK_RATE;


var panelHeadlineClientId = "";
var buttonHidden1ClientId = "";
var panelSuperMainClientId = "";
var hiddenHeadlineInfo = "";
var panelSuperMainCoverClientId = "";
var tableMainClientId = "";
var panelBaseClientId = "";
var panelDropShadowClientId = "";

// paused means the mouse is over it
var enumState = {"Moving" : 0, "Paused" : 1, "Fading" : 3, "Clicked" : 3, "Viewing" : 4};
var headlineState = enumState.Moving;
var headlineFileName = "";
var panelBreakingNewsClientId = "";

// version = Microsoft Internet Explorer 4
// Netscape 5

var browserAppName = navigator.appName;
var b_version = navigator.appVersion;
var browserVersion = parseFloat(b_version);

var bFeedsLoaded = 0;

function AddToCssPos(leftPos, offset)
{
   var x = new Number(leftPos.slice(0, -2));
   x = x + offset;
   
   return (x.toString() + "in");
}

var count = 0;
var first = 4;

// http://www.reloco.com.ar/mozilla/compat.html
function HeadlineMouseOver(e)
{
	if (!e) 
	{
	   e = window.event;
	}
   var srcElement = e.srcElement ? e.srcElement : e.target; 
   
   srcElement.style.cursor='pointer';
   srcElement.style.textDecoration='underline';
   
   headlineState = enumState.Paused;
   clearTimeout(myTimer);
}


function HeadlineMouseOut(e)
{
	if (!e) 
	{
	   e = window.event;
	}
   var srcElement = e.srcElement ? e.srcElement : e.target; 
   
   //alert(srcElement);
   srcElement.style.cursor='default';
   srcElement.style.textDecoration='none';

   if (headlineState == enumState.Viewing) return;
   
   headlineState = enumState.Moving;
   myTimer = setTimeout("MyTimerHandler()", TICK_INTERVAL);
}

function UpdateCssPos()
{
   var panelHeadline = $get(panelHeadlineClientId);
   var nLeft = new Number(panelHeadline.style.left.slice(0, -2));
   nLeft = nLeft + speedInchPerTick;
   
   // we have reached the far left side
   if (nLeft < MIN_LEFT_OFFSET)
   {
      nLeft = MIN_LEFT_OFFSET;
      clearTimeout(myTimer);
      headlineState = enumState.Paused;
      myTimer = setTimeout("MyTimerPauseHandler()", FADE_DELAY);
      __doPostBack(buttonHidden1ClientId,'');
      return 1;
   }
   
   panelHeadline.style.left = nLeft.toString() + "in";
   
   // slow down as we approach the left side
//   if (nLeft < 0.3)
//   {
//      speedInchPerTick += accelerationTick;
//      if ( Math.abs(speedInchPerTick) < (0.5 / TICK_RATE))
//      {
//         //alert(count + " " + speedInchPerTick + " " + accelerationTick);
//         accelerationTick = 0;
//      }
//   }
   
   return 0;
}

function SetOpacity(element, newOpacity)
{
   element.style.opacity = (newOpacity / 100); // chrome, mozilla
   element.style.Khtmlopacity = (newOpacity / 100); 
   element.style.Mozopacity = (newOpacity / 100); 
   if (navigator.appName == "Microsoft Internet Explorer")
   {
      element.filters.item("alpha").Opacity = newOpacity;
   }

   return;
}

function HeadlineClicked()
{
   headlineState = enumState.Viewing;
   clearTimeout(myTimer);

   var panelSuperMainCover = $get(panelSuperMainCoverClientId);
   var panelBreakingNews = $get(panelBreakingNewsClientId);
   var tableMain = $get(tableMainClientId);
   
   panelSuperMainCover.style.display = "block";
   panelBreakingNews.style.display = "block";
   
   var bounds = Sys.UI.DomElement.getBounds(tableMain);
   panelSuperMainCover.style.height = bounds.height;
   panelSuperMainCover.style.width = bounds.width;
}

function HeadlineBeGone()
{
   headlineState = enumState.Moving;
   clearTimeout(myTimer);
   myTimer = setTimeout("MyTimerHandler()", TICK_INTERVAL);

   var panelSuperMainCover = $get(panelSuperMainCoverClientId);
   var panelBreakingNews = $get(panelBreakingNewsClientId);
   var tableMain = $get(tableMainClientId);
   
   panelSuperMainCover.style.display = "none";
   panelBreakingNews.style.display = "none";
}

// we get here after the headline has been stable for a while
function MyTimerPauseHandler()
{
   // start the fade
   headlineState = enumState.Fading;
   if (headlineOpacity > 0)
   {
      headlineOpacity -= 5;
      SetOpacity(document.getElementById(panelHeadlineClientId), headlineOpacity);
      clearTimeout(myTimer);
      myTimer = setTimeout("MyTimerPauseHandler()", FADE_RATE);
      return;
   }
   else
   {
      // done fading, get new text
      // the postback was done in UpdateCssPos() and then there was a delay, so hiddenHeadlineInfo is updated
      var tokenStr = new String($get(hiddenHeadlineInfo).value);
      var tokens = tokenStr.split(":");
      $get(panelHeadlineClientId).innerHTML = tokens[0];
      headlineFileName = tokens[1];
      
      // reset the animation parameters
      headlineOpacity = 100;
      headlineState = enumState.Moving;
      panelHeadline = $get(panelHeadlineClientId);
      panelHeadline.style.left = "6.5in";
      accelerationTick = accelerationSec / TICK_RATE;
      speedInchPerTick = speedInchPerSec / TICK_RATE;

      SetOpacity(document.getElementById(panelHeadlineClientId), headlineOpacity);

      clearTimeout(myTimer);
      myTimer = setTimeout("MyTimerHandler()", TICK_INTERVAL);
   }
}

function MyTimerHandler()
{
   var timerWasReset = UpdateCssPos();

   if (timerWasReset == 0)
   {
      myTimer = setTimeout("MyTimerHandler()", TICK_INTERVAL);
   }
}
