function NewsTicker(x,y,width,height) {
//  this.name = 'NewsTicker'+(NewsTicker.count++);
  this.name = 'ticker';
  this.x = x;
  this.y = y;
  this.w = width;
  this.h = height;
  this.obj = this.name + "Object";
  eval(this.obj + "=this");
  this.items = new Array();
  this.scrollCount = 0;
  
  // default values  
  this.pauseLength = 4000;
  this.inc = 2;
  this.speed = 30;

  this.fromX = 0;
  this.fromY = this.h;
  this.bgColor = null;

  this.addItem = NewsTickerAddItem;
  this.activate = NewsTickerActivate;
  this.build = NewsTickerBuild;
  this.start = NewsTickerStart;
  this.stop = NewsTickerStop;
  this.slide = NewsTickerSlide;
  this.setPause = NewsTickerSetPause;
  this.setSpeed = NewsTickerSetSpeed;
}

function NewsTickerSetSpeed(speed) {
    this.speed = speed;
}

function NewsTickerSetPause(pause) {
  this.pauseLength = pause;
}

function NewsTickerAddItem(text) {
  var i = this.items.length;
  this.items[i] = new Object();
  this.items[i].text = text;
}

function NewsTickerBuild() {
  this.css = css(this.name,this.x,this.y,this.w,this.h);
  this.div = '<div id="'+this.name+'">';
  for (var i=0;i<this.items.length;i++) {
    this.css += css(this.name+'Item'+i,0,0,this.w,this.h,this.bgColor,'hidden');
    this.div += '<div id="'+this.name+'Item'+i+'">'+this.items[i].text+'</div>';
  }
  this.div += '</div>';
}

function NewsTickerActivate(autostart) {
  for (var i=0;i<this.items.length;i++) {
    this.items[i].lyr = new DynLayer(this.name+'Item'+i);
    this.items[i].lyr.moveTo(this.fromX,this.fromY);
    this.items[i].lyr.show();
  }
  this.items[0].lyr.moveTo(0,0);
  //this.lyr = new DynLayer(this.name);
  this.lyr = document.getElementById(this.name);
  var num = Math.sqrt(Math.pow(this.fromX,2) + Math.pow(this.fromY,2))/this.inc;
  this.dx = this.fromX/num || 0;
  this.dy = this.fromY/num || 0;
  if (autostart!=false) setTimeout(this.obj+'.start()',this.pauseLength);
}

function NewsTickerStart() {
  if (!this.started) {
    this.started = true;
    var t = this.scrollCount;
    var b = (this.scrollCount==this.items.length-1)? 0 : this.scrollCount+1;
    var obj1 = this.items[t].lyr.obj;
    var obj2 = this.items[b].lyr.obj;
    this.timer = setInterval(this.obj+'.slide('+obj1+','+obj2+')',this.speed);
  }
}

function NewsTickerStop() {
  clearInterval(this.timer);
  this.started = false;
}

function NewsTickerSlide(obj1,obj2) {
  obj1.moveBy(-this.dx,-this.dy);
  obj2.moveBy(-this.dx,-this.dy);
  if ((this.dx!=0 && Math.floor(obj2.x)==0) || (this.dy!=0 && Math.floor(obj2.y)==0)) {
    clearInterval(this.timer);
    obj1.moveTo(this.fromX,this.fromY);
    obj2.moveTo(0,0);
    this.scrollCount = (this.scrollCount==this.items.length-1)? 0 : this.scrollCount+1;
    this.timer = setTimeout(this.obj+'.started=false;'+this.obj+'.start()',this.pauseLength);
  }
}

NewsTicker.count = 0;
