var el=new Array();
var h=0;
var i2=new Array();
var dir=new Array();
var elw=new Array();
var cid=0;

// number of elements in scroller:
var numelements=new Array();

// current element number:
var curel=new Array();
var prevel=new Array();

function CFScroller_Init(id) {
 var children = document.getElementsByTagName('table');
 for (var i = 0; i < children.length; i++) {
  if ((children[i].id==id)) {
   var ch = children[i].getElementsByTagName('td');
   numelements[id]=ch.length;
   elw[id]=ch[0].offsetWidth;
  }
 }
 curel[id]=0;
 prevel[id]=0;
 
 el[id]=0;
 h=0;
 i2[id]=0;
 dir[id]=0;
}

function CFScroller_ScrollLeft(id) {
//  alert (h);
 if (h==0) { 
//  alert (curel[id]+" "+(numelements[id]-1));
  curel[id]=((curel[id])<=0)?((numelements[id])-2):((curel[id])-1);
//  alert (curel[id]+" "+(numelements[id]-1));
  cfscr_update(0,id);
 }
}

function CFScroller_ScrollRight(id) {
 if (h==0) {
//  alert (curel[id]+" "+(numelements[id]-1));
  curel[id]=((curel[id])>=((numelements[id])-1))?1:((curel[id])+1);
//  alert (curel[id]+" "+(numelements[id]-1));
  cfscr_update(1,id);
 }
}

function move(){
 var id=cid;
 if (dir[id]==1) {
  i2[id]=i2[id]+1+Math.sin(i2[id] / (elw[id] / 3.14159265358979))*10;
  if (i2[id]>=elw[id]) {
   clearInterval(h);
   i2[id]=elw[id];
   if (curel[id]==(numelements[id]-1)) {curel[id]=0;}
   prevel[id]=curel[id];
   h=0;
  }
  el[id].style.cssText="margin-left:-"+((curel[id]-1)*(elw[id])+(i2[id]))+"px;";
 } else {
  i2[id]=i2[id]-1-Math.sin((Math.abs(i2[id])) / (elw[id] / 3.14159265358979))*10;
  if (i2[id]<=0) {
   clearInterval(h);
   i2[id]=0;
   if (curel[id]==0) {curel[id]=numelements[id]-1;}
   prevel[id]=curel[id];
   h=0;
  }
  el[id].style.cssText="margin-left:-"+((curel[id])*(elw[id])+(i2[id]))+"px;";
 }
}

function cfscr_update(action,id) {
 if (h==0) {
  var children = document.getElementsByTagName('table');
  for (var i = 0; i < children.length; i++) {
   if ((children[i].id==id)) {
    var ch = children[i];
    el[id]=ch;
    if (action==1) { // prevel[id]<curel[id]
     dir[id]=1;
     i2[id]=0;
    } else {
     dir[id]=-1;
     i2[id]=elw[id];
    }
    window.status=prevel[id]+" "+curel[id]+" "+dir[id];
    cid=id;
//    alert (cid);
    h=setInterval("move()",25);
   }
  }
 }
}
