/*
 +-------------------------------------------------------------------+
 |                     J S - T I C K E R   (v1.4)                    |
 |                                                                   |
 | Copyright Gerd Tentler               www.gerd-tentler.de/tools    |
 | Created: Oct. 20, 2004               Last modified: Jan. 26, 2007 |
 +-------------------------------------------------------------------+
 | This program may be used and hosted free of charge by anyone for  |
 | personal purpose as long as this copyright notice remains intact. |
 |                                                                   |
 | Obtain permission before selling the code for this program or     |
 | hosting this software on a commercial website or redistributing   |
 | this software over the Internet or in any other medium. In all    |
 | cases copyright must remain intact.                               |
 +-------------------------------------------------------------------+
*/

/*
======================================================================================================
 This script was tested with the following systems and browsers:

 - Windows XP: IE 6, NN 7, Opera 7 + 9, Firefox 2
 - Mac OS X:   IE 5, Safari 1

 If you use another browser or system, this script may not work for you - sorry.

 NOTE: IE 5 on Mac OS doesn't view elements (text etc.) below the ticker area properly; they will
 appear underneath the ticker area instead.
======================================================================================================
*/

//---------------------------------------------------------------------------------------------------------
// Ticker entries
//---------------------------------------------------------------------------------------------------------
/*

var tickerEntries = new Array(
  "Hello!",
  "Use this script to create a news ticker.",
  "You can also use <b>HTML tags</b>.",
  "The quick brown fox jumps over the lazy dog."
);
*/

//---------------------------------------------------------------------------------------------------------
// Configuration
//---------------------------------------------------------------------------------------------------------

var tickerWidth = 800;                               // width (pixels)
var tickerMargin = 0;                                // margin (pixels)
var tickerDelay = 40;                                // scrolling delay (smaller = faster)
var tickerSpacer = "&nbsp;&nbsp;**&nbsp;&nbsp;";  // spacer between ticker entries

var tickerBGColor = "#97a6da";                              // background color
var tickerHLColor = "";                              // hilight (mouse over) color

var tickerFont = "Verdana";                           // font family (CSS-spec)
var tickerFontSize = 11;                             // font size (pixels)
var tickerFontColor = "#434d6e";                     // font color
var tickerFontWeight = "bold";

var tickerBorderWidth = 0;                           // border width (pixels)
var tickerBorderStyle = "";                          // border style (CSS-spec)
var tickerBorderColor = "#ff0000";                          // border color

//---------------------------------------------------------------------------------------------------------
// Functions
//---------------------------------------------------------------------------------------------------------

var DOM = document.getElementById;
var IE4 = document.all;

var tickerIV, tickerID;
var tickerItems = new Array();
var tickerHeight = tickerFontSize + 8;

function tickerGetObj(id)
{
  if(DOM) return document.getElementById(id);
  else if(IE4) return document.all[id];
  else return false;
}

function tickerObject(id)
{
  this.elem = tickerGetObj(id);
  this.width = this.elem.offsetWidth;
  this.x = tickerWidth;
  this.css = this.elem.style;
  this.css.width = this.width + 'px';
  this.css.left = this.x + 'px';
  this.move = false;
  return this;
}

function tickerNext()
{
  if(!DOM && !IE4) return;
  var obj = tickerItems[tickerID];
  obj.x = tickerWidth;
  obj.css.left = tickerWidth + 'px';
  obj.move = true;
}

function tickerMove()
{
  if(!DOM && !IE4) return;
  for(var i = 0; i < tickerItems.length; i++)
  {
    if(tickerItems[i].move)
    {
      if(tickerItems[i].x > -tickerItems[i].width)
      {
        tickerItems[i].x -= 2;
        if (Dir && Dir == "right")
        {
           tickerItems[i].css.right = tickerItems[i].x + 'px';
        }
        else
        {
           tickerItems[i].css.left = tickerItems[i].x + 'px';
        }
      }
      else tickerItems[i].move = false;
    }
  }
  if (tickerItems[tickerID].x + tickerItems[tickerID].width <= tickerWidth)
  {
    var oldtickerID = tickerID;
    tickerID++;
    if(tickerID >= tickerItems.length) tickerID = 0;
    if (tickerItems[tickerID].x + tickerItems[tickerID].width <= 0)
    {
      tickerNext();
    }
    else
    {
      tickerID = oldtickerID;
    }
  }
}

function tickerStart(init)
{
  if(!DOM && !IE4) return;
  if(tickerBGColor)
  {
    var obj = tickerGetObj('divTicker');
    obj.style.backgroundColor = tickerBGColor;
  }
  if(init)
  {
    tickerID = 0;
    tickerNext();
  }
  tickerIV = setInterval('tickerMove()', tickerDelay);
}

function tickerStop()
{
  if(!DOM && !IE4) return;
  clearInterval(tickerIV);
  if(tickerHLColor)
  {
    var obj = tickerGetObj('divTicker');
    obj.style.backgroundColor = tickerHLColor;
  }
}

function tickerInit()
{
  if(!DOM && !IE4) return;
  for(var i = 0; i < tickerEntries.length; i++)
  {
    tickerItems[i] = new tickerObject('divTickerEntry' + (i+1));
    tickerItems[i].x = 0 - tickerItems[i].width;
  }
  var obj = tickerGetObj('divTicker');
  obj.style.width = tickerWidth + 'px';
  obj.style.visibility = 'visible';
  tickerStart(true);
}

function tickerReload()
{
  if(!DOM && !IE4) return;
  document.location.reload();
}

//---------------------------------------------------------------------------------------------------------
// Build ticker
//---------------------------------------------------------------------------------------------------------

function buildTicker ()
{
   document.write('<style> ' +
                  '#divTicker { ' +
                  'position: absolute; ' +
                  'width: 10000px; ' +
                  'height: ' + tickerHeight + 'px; ' +
                  'cursor: default; ' +
                  'overflow: hidden; ' +
                  'visibility: hidden; ' +
                  (tickerBorderWidth ? 'border-width: ' + tickerBorderWidth + 'px; ' : '') +
                  (tickerBorderStyle ? 'border-style: ' + tickerBorderStyle + '; ' : '') +
                  (tickerBorderColor ? 'border-color: ' + tickerBorderColor + '; ' : '') +
                  '} ' +
                  '.cssTickerContainer { ' +
                  'position: relative; ' +
                  'height: ' + tickerHeight + 'px; ' +
                  'margin-top: ' + tickerMargin + 'px; ' +
                  'margin-bottom: ' + tickerMargin + 'px; ' +
                  '} ' +
                  '.cssTickerEntry { ' +
                  'font-family: ' + tickerFont + '; ' +
                  'font-weight: ' + tickerFontWeight + '; ' +
                  'font-size: ' + tickerFontSize + 'px; ' +
                  'color: ' + tickerFontColor + '; ' +
                  'direction: ' + Dir + '; ' +
                  '} ' +
                  '</style>');

   document.write('<div class="cssTickerContainer">' +
                  '<div id="divTicker" onMouseOver="tickerStop()" onMouseOut="tickerStart()">');

   for(var i = 0; i < tickerEntries.length; i++) {
     document.write('<div id="divTickerEntry' + (i+1) + '" class="cssTickerEntry" ' +
                    'style="position:absolute; top:2px; white-space:nowrap">' +
                    tickerEntries[i] + ((tickerEntries.length > 1) ? '&nbsp;' + tickerSpacer + '&nbsp;' : '') +
                    '</div>');
   }
   document.write('</div></div>');
}

//---------------------------------------------------------------------------------------------------------