var linkTarget="main";
var imgWidth=110;
var imgBorder=0;
var baseX=254;
var baseY=0;
var waveHeight=0;
var waveLength=67;
var wavePhase=0;
var wavePhaseShift=10;
var speed=32; //can be positive or negative
var fps;
var lastTime=1*(new Date());
var scrollX=0;

fps=85;
/*if(document.all) fps=16; //IE
else {
	fps=12; //Mozilla
	speed*=2/3;
}*/

var imgList=new Array();
var minX=baseX-imgWidth;

var fullWidth=0;

function addImage(url,link,width) {
	var i=imgList.length;
	var m=imgList[i]=new Array();
	m.x=fullWidth;
	m.v=false;
	m.src=url;
	width=width?width:imgWidth;
	if(baseX-width<minX) minX=baseX-width;
	fullWidth+=width;
	//don't actually load images until the marquee starts
	document.write("<div id='img"+i+"' style='visibility:hidden; position:absolute;'><a href='"+link+"' target='"+linkTarget+"'><img id='imgt"+i+"' border="+imgBorder+" src='images/blank.gif'></a></div>");
}

function getY(x) {
	return baseY+Math.floor(0.5+(Math.sin((x+wavePhase)/waveLength*6.2832)+1)*waveHeight/2);
}

function isInRange(x) {
	return x>=minX && x<pageWidth();
}

function el(n) {
	if(document.all) {
		return document.all(n);
	} else if(document.getElementById) {
		return document.getElementById(n);
	}
}

function pageWidth() {
	if(document.all) return document.body.clientWidth;
	else return document.width+16;
}

function shiftAll(dx) {
	for(var i=0;i<imgList.length;i++) {
		var m=imgList[i]
		m.x+=dx;
		/*if(isInRange(m.x)) {*/
			var e=el("img"+i);
			m.y=getY(m.x);
			e.style.top=m.y;
			e.style.left=m.x;
			//e.style.zIndex=(m.x<baseX)?1:1;
			if(!m.v) {
				e.style.visibility="visible";
				m.v=true;
			}
		/*} else if(m.v || ((m.x>minX)^(dx<0))) {
			var e=el("img"+i);
			e.style.visibility="hidden";
			m.v=false;
			if(m.x<minX) m.x+=fullWidth;
			else m.x-=fullWidth;
		} else if(isInRange(m.x-fullWidth)) {
			m.x-=fullWidth;
		} else if(isInRange(m.x+fullWidth)) {
			m.x+=fullWidth;
		}*/
	}
}

function scrollRight(dx) {
	var e=el("scroller");
	var x=scrollX;
	x+=dx;
	//x=Math.floor(Math.random()*1000);
	if(x>=fullWidth/6) x-=fullWidth/6;
	if(Math.round(x)!=Math.round(scrollX)) {
		e.scrollLeft=Math.round(x);
	}
	scrollX=x;
}

function nextFrame() {
	var t=1*(new Date());
	var dt=(t-lastTime)/1000;
	if(dt>2/fps) dt=2/fps;
	lastTime=t;
	//shiftAll(speed*dt);
	scrollRight(speed*dt);
	
	wavePhase+=wavePhaseShift*dt;
	if(document.getElementById && !document.all)
		window.setTimeout("nextFrame();",1000/fps);
}

function startMarquee() {
	for(var i=0;i<imgList.length;i++) {
		var e=el("imgt"+i);
		e.src=imgList[i].src;
	}
	shiftAll(249);
	if(document.getElementById && !document.all)
		window.setTimeout("nextFrame();",1000/fps);
	else
		window.setInterval("nextFrame();",1000/fps);
}


