
  var stopScroll   = new Object();
  var initPosition = new Object();
  var Direction    = new Object();
  Direction.left   = -1;
  Direction.right  = 1;
  var Debug        = new Object();

  var DHTML = (document.getElementById || document.all || document.layers);

  function getObj(name)
  {
    if (document.getElementById)
    {
      this.obj = document.getElementById(name);
      this.style = document.getElementById(name).style;
    }
    else if (document.all)
    {
      this.obj = document.all[name];
      this.style = document.all[name].style;
    }
    else if (document.layers)
    {
      this.obj = getObjNN4(document,name);
      this.style = this.obj;
    }

    this.moveBy = moveBy;
    this.moveTo = moveTo;
    if (Debug.report) alert("Marker getObj() END");

  }

  function getObjNN4(obj,name)
  {
    var x = obj.layers;
    var foundLayer;
    for (var i=0;i<x.length;i++)
    {
      if (x[i].id == name)
      {
        foundLayer = x[i];
      }
      else if (x[i].layers.length)
      {
        var tmp = getObjNN4(x[i], name);
      }
      if (tmp) foundLayer = tmp;
    }

    foundLayer.moveBy = moveBy;
    foundLayer.moveTo = moveTo;

    return foundLayer;
  }

  function moveBy(amountX, amountY)
  {
    if (!DHTML) return;

    if (Debug.report) alert("Marker moveBy() current position:\n\n" + this.style.left + ", " + this.style.top);
    currentX = (+this.style.left.match(/-?\d+/));
    currentY = (+this.style.top.match(/-?\d+/));
    if (Debug.report) alert("Marker moveBy() current position:\n\n" + currentX + ", " + currentY);

    moveToX = currentX + amountX;
    moveToY = currentY + amountY;

    this.style.left = "" + moveToX + "px";
    this.style.top = "" + moveToY + "px";
  }

  function moveTo(moveToX, moveToY)
  {
    if (!DHTML) return;

    this.style.left = "" + moveToX + "px";
    this.style.top = "" + moveToY + "px";
  }

  function initializeNewsTicker(newsTickerId, direction, speed)
  {
    if (Debug.report) alert("Marker initializeNewsTicker() got:\n\nnewsTickerId:" + newsTickerId + "\ndirection:" + direction + "\nspeed:" + speed);

    var ticker = new getObj('newsTicker' + newsTickerId);
    var news   = new getObj('newsTickerFloater' + newsTickerId);
    if (Debug.report) alert("Marker initializeNewsTicker() fetched:\n\nnews:" + news + ", ticker:" + ticker);
    if (direction == "left")
    {
      initPosition.x = ticker.obj.offsetWidth;
      initPosition.y = 0;
    }
    else if (direction == "right")
    {
      initPosition.x = -news.obj.offsetWidth;
      initPosition.y = 0;
    }
    news.style.display = "block";

    if (Debug.report) alert("Marker initializeNewsTicker() fetched initPosition:\n\n" + initPosition.x + ", " + initPosition.y);
    news.moveTo(initPosition.x, initPosition.y);
    if (Debug.report) alert("Marker initializeNewsTicker() moved news to initPosition:\n\n" + initPosition.x + ", " + initPosition.y);

    // start ticker

    if (Debug.report) alert("Marker initializeNewsTicker:\n\n->shiftNewsTicker(" + direction + ", " + speed + ")\n\n" + shiftNewsTicker);
    if (speed > -1) {
      shiftNewsTicker(newsTickerId, direction, speed);
    }
  }

  function stop(newsTickerId, status)
  {

    stopScroll[newsTickerId] = status;

  }

  function shiftNewsTicker(newsTickerId, direction, speed) {

    if (Debug.report && Debug.maxIter) alert("Marker shiftNewsTicker() START");
    // get parent ticker layer
    var news = new getObj('newsTickerFloater' + newsTickerId);
    if (Debug.report && Debug.maxIter) alert("Marker shiftNewsTicker() fetched newsTicker:\n\n" + news);
    // get moved news layer
    var ticker = new getObj('newsTicker' + newsTickerId);
    if (Debug.report && Debug.maxIter) alert("Marker shiftNewsTicker() fetched newsTickerFloater:\n\n" + ticker);

    /*
      Bei Direction
      - left
        Startposition = ticker.obj.offsetWidth
        Endposition   = -news.obj.offsetWidth
      - right
        Startposition = -news.obj.offsetWidth
        Endposition   = ticker.obj.offsetWidth
    */

    if (Debug.report && Debug.maxIter) alert("Marker shiftNewsTicker() reset:\n\nleft: " +
        (direction == "left" && news.obj.offsetLeft + news.obj.offsetWidth <= 0) +
        "\nright: " + (direction == "right" && news.obj.offsetLeft >= ticker.obj.offsetWidth)
       );
    if (
         (direction == "left" && news.obj.offsetLeft + news.obj.offsetWidth <= 0) ||
         (direction == "right" && news.obj.offsetLeft >= ticker.obj.offsetWidth)
       )
    {
      news.moveTo(initPosition.x, initPosition.y);
    }
    else {
    if (Debug.report) alert("Marker shiftNewsTicker() moveBy");
    if (!stopScroll[newsTickerId])
    {
      if (Debug.report) alert("Marker shiftNewsTicker() moveBy:\n\n" + Direction[direction] + ", " + 0);
      news.moveBy(Direction[direction], 0);
      if (Debug.report) alert("Marker shiftNewsTicker() moved to:\n\n" + news.obj.offsetLeft + ", " + 0);
    }
    }

    if (Debug.report) alert("Marker shiftNewsTicker() setTimeout\n\n" + (!Debug.maxIter || Debug.iter <= Debug.maxIter));
    if (!Debug.maxIter || Debug.iter <= Debug.maxIter)
    {
      if (Debug.report) alert("Marker shiftNewsTicker() setTimeout()");
      Debug.iter++;
      window.setTimeout("shiftNewsTicker('" + newsTickerId + "', '" + direction + "', " + speed + ");", speed);
    }

  }

