﻿// 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 TICK_RATE_1 = 0.25;        // tics/sec for checking animations
var TICK_INTERVAL_1 = (1 / TICK_RATE_1) * 1000;
var MIN_LEFT_OFFSET = 0.1;
var FADE_RATE = 50; // ms

var FADE_DELAY = 4000; // ms
var MOVE_DURATION = 8; // sec
var FADE_DURATION = 0.8; // sec

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, "StartUp" : 5, "WaitingToFade" : 6};
var headlineState = enumState.StartUp;
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;

// these are global Animations
var headlineMove;
var headlineFade;

var count = 0;
var first = 4;


// unused
function AddToCssPos(leftPos, offset)
{
   var x = new Number(leftPos.slice(0, -2));
   x = x + offset;
   
   return (x.toString() + "in");
}

// 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;
   headlineMove.pause();
}


function HeadlineMouseOut(e)
{
	if (!e) 
	{
	   e = window.event;
	}
   var srcElement = e.srcElement ? e.srcElement : e.target; 
   
   srcElement.style.cursor='default';
   srcElement.style.textDecoration='none';

   if (headlineState == enumState.Viewing) return;
   
   headlineState = enumState.Moving;
   headlineMove.play();
}

// unused
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);
      // this will update the headline
      __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;

   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;

   var FADE_TIME = new Number(0.2);
   var parallel = new AjaxControlToolkit.Animation.ParallelAnimation(panelSuperMainCover, FADE_TIME, 25);  //
   var fade = new AjaxControlToolkit.Animation.FadeInAnimation(panelSuperMainCover, FADE_TIME, 25, 0, 0.4, false);
   parallel.add(fade);
   fade = new AjaxControlToolkit.Animation.FadeInAnimation(panelBreakingNews, FADE_TIME, 25, 0, 1, false);
   parallel.add(fade);
   
   parallel.play();
}

function PanelBreakingNewsDismiss()
{
   headlineState = enumState.Moving;

   var panelSuperMainCover = $get(panelSuperMainCoverClientId);
   var panelBreakingNews = $get(panelBreakingNewsClientId);
   var tableMain = $get(tableMainClientId);
   
   var FADE_TIME = new Number(0.2);
   var parallel = new AjaxControlToolkit.Animation.ParallelAnimation(panelSuperMainCover, FADE_TIME, 25);  //
   var fade = new AjaxControlToolkit.Animation.FadeOutAnimation(panelSuperMainCover, FADE_TIME, 25, 0, 0.4, false);
   parallel.add(fade);
   fade = new AjaxControlToolkit.Animation.FadeOutAnimation(panelBreakingNews, FADE_TIME, 25, 0, 1, false);
   parallel.add(fade);
   parallel.play();
   
   headlineMove.play();

   // have to set the grey box display to none after we dismiss or we can't click anywhere
   setTimeout("HeadlineDissmissTimer()", 200);
}

function HeadlineDissmissTimer()
{
   var panelSuperMainCover = $get(panelSuperMainCoverClientId);
   var panelBreakingNews = $get(panelBreakingNewsClientId);
   panelSuperMainCover.style.display = "none";
   panelBreakingNews.style.display = "none";
}

function AnimationEnd()
{
   if (headlineState == enumState.Moving)
   {
      // pause and then fade
      headlineState = enumState.WaitingToFade;
      myTimer = setTimeout("AnimationEnd()", FADE_DELAY);

      // this will update the headline
      __doPostBack(buttonHidden1ClientId,'');
   }
   else if (headlineState == enumState.WaitingToFade)
   {
      // done pausing, start fade
      headlineState = enumState.Fading;

      var fade = new AjaxControlToolkit.Animation.FadeOutAnimation(panelHeadline, FADE_DURATION, 25, 0, 1.0, false);
      fade.onEnd = AnimationEnd;
      fade.play();
   }
   else if (headlineState == enumState.Fading)
   {
      // done fading, get new text
      headlineState = enumState.Moving;

      // 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
      
      var fade = new AjaxControlToolkit.Animation.FadeInAnimation(panelHeadline, 0.01, 25, 0, 1.0, false);
      fade.play();
      
      ResetHeadlineAnimation();
   }
}

function ResetHeadlineAnimation()
{
   headlineState = enumState.Moving;
   
   panelHeadline.style.left = "6.5in";
   headlineMove = new AjaxControlToolkit.Animation.MoveAnimation(panelHeadline, MOVE_DURATION, 30, 10,  0,  false, "px");
   
   headlineMove.onEnd = AnimationEnd;  // or headlineParallel.onEnd = function () {alert("it works");}
   headlineMove.play();
}

