var scrollFrom = 0;
var scrollTo = 0;
var scrollExp = 1.0;
var scrollSectionWidth = 792;
var scrollFrameDelay = 1000.0 / 50.0; // 50 fps

function scroll(from, to) {
	scrollFrom = from;
	scrollExp = 1.0;
	scrollTo = to;
	scrollIncrement();
}

function scrollIncrement() {
	scrollExp *= 0.8;
	if (scrollExp > 1.0 / (scrollSectionWidth * 2)) {
		scrollPosition = (1 - scrollExp) * scrollSectionWidth * (scrollTo - scrollFrom) + scrollFrom * scrollSectionWidth;
		document.getElementById('scroller').scrollLeft = scrollPosition;
		setTimeout('scrollIncrement()', scrollFrameDelay);
	} else {
		document.getElementById('scroller').scrollLeft = scrollTo * scrollSectionWidth;
		scrollFrom = scrollTo;
	}
}

function externalLinks() { 
	if (!document.getElementsByTagName) return; 
	var anchors = document.getElementsByTagName("a"); 
	for (var i = 0; i < anchors.length; i++) { 
		var anchor = anchors[i]; 
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
			anchor.target = "_blank"; 
		}
	}
}

String.prototype.trim = function () {
    return this.replace(/^\s*/,'')
                     .replace(/\s*$/,'');
};

function enableDropDown() {
	var navRoot = document.getElementById('nav');
	var subNavs = Array();
	
	var navItems = navRoot.getElementsByTagName('li');
	for (i = 0; i < navItems.length; i++) {
		var menuItem = navItems[i];
		var rel = menuItem.getAttribute('rel');
		if (rel == null || rel == '') continue;
		var element = document.getElementById(rel);
		subNavs.push(element);
		menuItem.subNav = element;
	}
		
	for (i = 0; i < navItems.length; i++) {
		var menuItem = navItems[i];
		menuItem.allNavs = navItems;
		menuItem.allSubNavs = subNavs;
		menuItem.onmouseover = function() {
			for (i = 0; i < this.allNavs.length; i++) {
				removeClassFrom(this.allNavs[i], 'selected');
			}
			addClassTo(this, 'selected');
			for (i = 0; i < this.allSubNavs.length; i++) {
				addClassTo(this.allSubNavs[i], 'hidden');
			}
			removeClassFrom(this.subNav, 'hidden');
		}
	}
}

function addClassTo(e, className) {
	if (isClass(e, className)) return;
	e.className = e.className + ' ' + className;
}

function removeClassFrom(e, className) {
	if (!isClass(e, className)) return;
	
	var newClasses = '';
	var classes = e.className.split(' ');
	for (var i = 0; i < classes.length; i++) {
		if (classes[i] != className) newClasses = newClasses + ' ' + classes[i];
	}	
	e.className = newClasses;
}

function isClass(e, className) {
	var classes = e.className.split(' ');
	for (var i = 0; i < classes.length; i++) {
		if (classes[i] == className) return true;
	}
	return false;
}
