
<!-----------------------------------------------------------------------------
//
//  Ticker control client-side script. 
//  Copyright 2003 CYBERAKT INC. All Rights Reserved.
//  Version 1.0
//
//---------------------------------------------------------------------------->

// Ticker JavaScript class definition 
function CYBERAKT_Ticker()
{
  this.GlobalID = ''; 
  this.ElementID = '';
  this.CharDelay = 0;
  this.LineDelay = 0;
  this.Lines = new Array();
  this.NextTickerDelay = 0; 
  this.TickerType = 'default'; 

  this.IntervalID = 0;
  this.CurLine = 0;
  this.CurChar = 0;
  this.OnEnd = function () {rcr_doNothing()}; 
}

// Returns the text for the given ticker instance 
function rcr_GetTickerText(ticker)
{
  if (ticker.TickerType == 'statusbar') 
    return window.status;   
  else
    return rcr_DecodeText(document.getElementById(ticker.ElementID).innerHTML);   
}

// Sets text for the given ticker instance 
function rcr_SetTickerText(ticker, value)
{
  if (ticker.TickerType == 'statusbar') 
    window.status = value;   
  else
    document.getElementById(ticker.ElementID).innerHTML = rcr_EncodeText(value);
}

// Encodes ticker text 
function rcr_EncodeText(value)
{
  if (navigator.userAgent.indexOf('MSIE') != -1 || navigator.userAgent.indexOf('Opera') != -1)  
    return value.replace('&', '&amp;'); 
  else
    return value.replace('&', ' '); 
}

// Decodes ticker text 
function rcr_DecodeText(value)
{
  if (navigator.userAgent.indexOf('MSIE') != -1 || navigator.userAgent.indexOf('Opera') != -1)  
    return value.replace('&amp;', '&'); 
  else
    return value; 
}

// Starts the given ticker instance 
function rcr_StartTicker(ticker)
{
  rcr_SetTickerText(ticker, ''); 
  var functionParam = 'rcr_PrintNextChar(' + ticker.GlobalID + ')'; 
  ticker.IntervalID = window.setInterval(functionParam, ticker.CharDelay); 
}

// Stops the given ticker instance 
function rcr_StopTicker(ticker)
{
  window.clearInterval(ticker.IntervalID); 
}

// Prints the next character for the given ticker instance 
function rcr_PrintNextChar(ticker)
{
  if (rcr_GetTickerText(ticker).length == ticker.Lines[ticker.CurLine].length)
  {
    rcr_NextLine(ticker); 
  }
  else
  {
    rcr_SetTickerText(ticker, rcr_GetTickerText(ticker) + ticker.Lines[ticker.CurLine].charAt(ticker.CurChar)); 
    ticker.CurChar++; 
  } 
}

// Goes to next line for the given ticker instance 
function rcr_NextLine(ticker)
{
  ticker.CurChar = 0; 
  window.clearInterval(ticker.IntervalID); 
  if (ticker.CurLine == ticker.Lines.length - 1)
    if (ticker.Loop) 
      ticker.CurLine = 0; 
    else
    {
      rcr_StopTicker(ticker); 
      var functionParam = 'rcr_OnEnd(' + ticker.GlobalID + ')'; 
      var tid = window.setTimeout(functionParam, ticker.NextTickerDelay); 
      return null;       
    }
  else
    ticker.CurLine ++; 

  var functionParam = 'rcr_StartTicker(' + ticker.GlobalID + ')'; 
  var timout = window.setTimeout(functionParam, ticker.LineDelay); 
}

// Calls the OnEnd event handler 
function rcr_OnEnd(ticker)
{
  ticker.OnEnd(); 
}

// Dummy function used for wiring client-side events 
function rcr_doNothing()
{
}

