var divs = 80;
var div;
var freq = 1;
var stepsize;
window.onload = function(){
  div = document.getElementsByTagName('div')[0];
  div.style.visibility = "hidden";
  for (var i = 0; i < divs; i++){
    var para = document.createElement('pre');
    para.textContent = "This is a long, and somewhat pointless scrolltext, just to demonstrate a sinewave scroller. Bwah ";
    div.appendChild(para);
    stepsize = Math.ceil(para.parentElement.offsetWidth/divs);
    window.status = stepsize;
    para.style.height = para.offsetHeight+"px";
 //   para.style.clip = "rect(0 "+(i*stepsize)+" 64px "+((i*stepsize)-stepsize)+"px)";
  } 
  
  move(-256);
  div.style.visibility = "visible";
}

function move(seed){
if (seed > div.getElementsByTagName('pre')[0].scrollWidth+256) seed = -256;
for (var i = 0; i < divs; i++){
  var ele = div.getElementsByTagName('pre')[i];
  amp = 15*Math.cos(2*Math.PI*(seed+i)*freq/41);
  ele.style.clip = "rect(0 "+(seed+i*stepsize)+" 64px "+((seed+i*stepsize)-stepsize)+"px)";
  ele.style.color = "rgb("+(5*amp)+","+(6*amp)+","+(10*amp)+")";  
  ele.style.top = (25+Math.round(amp*Math.sin(freq*Math.PI*(seed+i)/41))  )+ "px";
  ele.style.left = (-seed)+"px";
}
setTimeout(move,50,seed+=2);
}