function findElementPos(elemFind)
{
	var elemX = 0;
	var elemY = 0;
	do
	{
		elemX += elemFind.offsetLeft;
		elemY += elemFind.offsetTop;
	} 
	while (elemFind = elemFind.offsetParent);

	return Array(elemX, elemY);
}

function sineInOut(t, b, c, d)
{
	return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
}


var currentSection = "";
var menuTag = "-m";


function scrollSection(link, scrollArea, offset)
{
	if (currentSection == link) {
		return;
	}
	lastSection = currentSection;
	currentSection = link;

    sectionTab = currentSection + menuTag;
    document.getElementById(sectionTab).className = "active";
    if (lastSection) {
	    lastTab = lastSection + menuTag;
	    document.getElementById(lastTab).className = "inactive";
	}
    	
	theScroll = document.getElementById(scrollArea);
	position = findElementPos(document.getElementById(link));

	if (offset != "") {
		offsetPos = findElementPos(document.getElementById(offset));
		position[0] = position[0] - offsetPos[0];
	}

	scrollStart(theScroll, theScroll.scrollLeft, position[0], "horiz");

	//window.location.hash = "#"+link;
	//return false;
}

function getLIs(elem)
{
 	menuElem = document.getElementById(elem);
	menuNames = new Array();
    
	if (menuElem.hasChildNodes())
	{
		var children = menuElem.childNodes;
		for (var i = 0; i < children.length; i++) 
		{
			if (menuElem.childNodes[i].tagName == "LI") 
				menuNames.push(menuElem.childNodes[i].id.split("-")[0]);
		}
	}
	return menuNames
}


function scrollArrow(direction, menu, scrollArea, offset) {

	menuNames = getLIs(menu)

	for (var i = 0; i < menuNames.length; i++) {
		if (menuNames[i] == currentSection) {
			if (direction == "left") {
				if (i - 1 < 0) {
					gotoTab = menuNames[menuNames.length - 1];
				} else {
					gotoTab = menuNames[i - 1];
				}
			} else {
				if ((i + 1) > (menuNames.length - 1)) {
					gotoTab = menuNames[0];
				} else {
					gotoTab = menuNames[i + 1];
				}
			}
		}
	}
	
	scrollSection(gotoTab, scrollArea, offset);

}

var scrollanim = {time:0, begin:0, change:0.0, duration:0.0, element:null, timer:null};

function scrollStart(elem, start, end, direction)
{
	if (scrollanim.timer != null) {
		clearInterval(scrollanim.timer);
		scrollanim.timer = null;
	}
	scrollanim.time = 0;
	scrollanim.begin = start;
	scrollanim.change = end - start;
	scrollanim.duration = 25;
	scrollanim.element = elem;
	
	if (direction == "horiz") {
		scrollanim.timer = setInterval("scrollHorizAnim();", 20);
	}
	else {
		scrollanim.timer = setInterval("scrollVertAnim();", 20);
	}
}

function scrollVertAnim()
{
	if (scrollanim.time > scrollanim.duration) {
		clearInterval(scrollanim.timer);
		scrollanim.timer = null;
	}
	else {
		move = sineInOut(scrollanim.time, scrollanim.begin, scrollanim.change, scrollanim.duration);
		scrollanim.element.scrollTop = move; 
		scrollanim.time++;
	}
}

function scrollHorizAnim()
{
	if (scrollanim.time > scrollanim.duration) {
		clearInterval(scrollanim.timer);
		scrollanim.timer = null;
	}
	else {
		move = sineInOut(scrollanim.time, scrollanim.begin, scrollanim.change, scrollanim.duration);
		scrollanim.element.scrollLeft = move;
		scrollanim.time++;
	}
}

function deactivate()
{
	if (currentSection != "")
    document.getElementById(currentSection+menuTag).className = 'deactivated';
}

function activate()
{
	if (currentSection != "")
    document.getElementById(currentSection+menuTag).className = 'active';
}
