//how often rendered
//lower numbers = smoother but more processing
var tm =15;
//linear speed
//how fast it moves
var lsp = 2;
//variable speed
//triangle moves faster the farther it is
//higher number = less influence 
//provides that accelerating effect
var vsp = 13;


var lis;
var tri;
	
function slideStep(x, dir){
//alert('sliding');
	var trix = tri.offsetLeft + (tri.offsetWidth/2);
	var d = x-trix;
	var v = d / vsp;
	trix = Math.ceil(trix + v + (lsp*dir));
	if(((dir==1)&&(trix>x))||((dir==-1)&&(trix<x))){
		trix = x;
		clearInterval(tri.timer);
	}
	trix -= tri.offsetWidth/2;
	tri.style.left = trix + 'px';
}
    
function slideTo(x){
	//alert('slideto');
	clearInterval(tri.timer);
	var func = function(){
		slideStep(x, (x > (tri.offsetLeft + (tri.offsetWidth/2))) ? 1:-1);
	}
	tri.timer=setInterval(func, tm);
}

function initTriangle(ulid, trid, index){
	ul = document.getElementById(ulid);
	tri = document.getElementById(trid);
	lis = ul.getElementsByTagName('li');
	var l = lis.length;
	for (var i=0;i<l;i++){
		var func = function(event){
			slideTo(this.offsetLeft + (this.offsetWidth / 2));
		}
		Event.observe(lis[i], 'mouseover', func);
	}
	if(typeof index != 'undefined'){
		tri.style.left = (lis[index].offsetLeft + (lis[index].offsetWidth/2) - (tri.offsetWidth/2)) + 'px';
	} else {
		for(i=0;i<l;i++){
			if(lis[i].getElementsByTagName('a').length == 0){
				tri.style.left = (lis[i].offsetLeft + (lis[i].offsetWidth/2) - (tri.offsetWidth/2)) + 'px';
			}
		}
	}
}