var timeout = 80;
var sl = new Array(); 
var si = 0;
var lock = 0;

function scrollLayerInit(layer, cols, steps){   
    
    // Get column size
    colsize	= document.getElementById(layer).scrollWidth / cols;

    // Get step size
    stepsize	= colsize / steps;

    sl[si] = new Array(layer,steps,stepsize);
    si++;
}

function getLayerId(layer){
    x = 0;
    for (x in sl){
	if (sl[x][0] == layer){
	    return x;
	}
    }
    
    return -1;
}

function scrollColumn(index, step, i, cols){

    // set vars
    steps   = sl[index][1];

    // All steps done
    if (i == steps){
	if (cols > 0){
	    cols--;
	    i = 0;
	} else {
	    lock = 0; 
	    return;
	}
    }

    // Scroll the layer
    document.getElementById(sl[index][0]).scrollLeft += step;

    // Increment counter
    i++;

    // Set timer
    setTimeout("scrollColumn("+index+","+step+","+i+","+cols+")", timeout);
    
}
    
function scrollLayerNext(layer, cols){    

    if (lock) { return 0; }

    lock = 1;
    id	 = getLayerId(layer);
    step = sl[id][2]; 

    scrollColumn(id, step, 0, cols);
}

function scrollLayerPrev(layer, cols){
    
    if (lock) { return 0; }

    lock = 1;
    id	 = getLayerId(layer);
    step = sl[id][2]; 

    scrollColumn(id, (step*-1), 0, cols);
}

function scrollLayerOffset(layer, width, x){
    id = getLayerId(layer);
    x  = convertScrollunit(layer, width) * x;
}

function convertScrollunit(layer, pixels){
    return (document.getElementById(layer).scrollWidth / pixels);
}

function scrollLayerStop(){

}

function scrollButton(layer, col, tcol){

    id	    = document.getElementById(layer);
    colw    = id.scrollWidth / tcol;
    dpos    = colw * col;
    spos    = id.scrollLeft;
    cols    = (dpos - spos) / colw;
    
    if (cols < 0) {
	cols *= -1;
    }

    /* FIXME: small correction */
    cols--;
  
    //alert("colw:"+colw+";cols:"+cols);
 
    if (dpos == spos){
	return 0;	/* we're already there */
    }

    if (dpos > spos){
	scrollLayerNext(layer, cols);
    } else {
	scrollLayerPrev(layer, cols);
    }
}
