google.load('prototype', '1.6.0.3');
google.load('scriptaculous', '1.8.2');

// arrowOn, arrowOff
var moveArrow, arrow, originalElement;

function domLoaded() {
	// unbind the initial listener
	document.stopObserving('dom:loaded');

	Prototype.Browser.IE6 =
		Prototype.Browser.IE &&
		parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 6;
	
	/*
	// Resize the white background, (ugly fix)
	if (($('main').getHeight() + 80) < 501)
		$('container').style.height = 501 + "px";
	else
		$('container').style.height = ($('main').getHeight() + 80) + "px";
	*/

	// Must be called AFTER the DOM has loaded, since it takes a while for
	// google.load to work
	Element.addMethods({
		// get absolute x position, by Peter-Paul Koch & Alex Tingle
		// from http://blog.firetree.net/2005/07/04/javascript-find-position/
		absX: function (obj) {
			obj = $(obj);
			var curleft = 0;
			if (obj.offsetParent)
				while (1) {
					curleft += obj.offsetLeft;
					if (!obj.offsetParent)
						break;
					obj = obj.offsetParent;
				}
			else if (obj.x)
				curleft += obj.x;
			return curleft;
		},
		
		// get absolute y position, by Peter-Paul Koch & Alex Tingle
		// from http://blog.firetree.net/2005/07/04/javascript-find-position/
		absY: function (obj) {
			obj = $(obj);
			var curtop = 0;
			if (obj.offsetParent)
				while (1) {
					curtop += obj.offsetTop;
					if (!obj.offsetParent)
						break;
					obj = obj.offsetParent;
				}
			else if(obj.y)
				curtop += obj.y;
				
			return curtop;
		}
	});
	
		
	if (Prototype.Browser.IE6) {
		$('leftnav').select('a').each(function (e) {
			e.observe(
				'mouseover',
				ie6LeftNavOver.bindAsEventListener(e)
			);
			
			e.observe(
				'mouseout',
				ie6LeftNavOut.bindAsEventListener(e)
			);
		});
	}
	
	// Add mouseover and mouseout event handlers for the navigation controls
	$$('div.nav-selected', 'div.nav').each(function (element) {
		element.observe(
			'mouseover',
			arrowOn.bindAsEventListener(element)
		);
		
		element.observe(
			'mouseout',
			arrowOff.bindAsEventListener(element)
		);
	});
	
	// Position the arrow to the selected navigation entry
	// the arrow's dimensions are 14 x 7 pixels
	$$('div.nav-selected').each(function (selected) {
		originalElement = selected;
		
		var posn = $(originalElement).positionedOffset();
		var dims = $(originalElement).getDimensions();
		var originalX = posn[0] + dims.width / 2 - 7;
		var originalY = posn[1] + dims.height;
		
		$('arrow').style.left = originalX + "px";
		$('arrow').style.top = originalY + "px";
	});
}

function moveArrow(x, y, time) {
	if (time == null)
		time = 1.0;
	
	if (typeof(arrow) != 'undefined')
		arrow.cancel();
	
	arrow = new Effect.Move('arrow', {
		x: x,
		y: y,
		mode: 'absolute',
		transition: Effect.Transitions.sinoidal,
		duration: time
	});
}

function arrowOn (e) {
	element = Event.element(e);
	
	if (typeof(resetArrow) != 'undefined')
		clearTimeout(resetArrow);
	
	if (element != originalElement)
		originalElement.style.backgroundColor = "#d1cfc5";

	element.style.backgroundColor = "#104773";
	element.style.color = "#fff";
		
	var posn = $(element).positionedOffset();
	var dims = $(element).getDimensions();
	var newX = posn[0] + dims.width / 2 - 7;
	var newY = posn[1] + dims.height;
	
	moveArrow(newX, newY, 0.2);
}

function arrowOff (e) {
	element = Event.element(e);
		
	if (element != originalElement){
		element.style.backgroundColor = "#d1cfc5";
		element.style.color = "#000";
	}
		
	var posn = $(originalElement).positionedOffset();
	var dims = $(originalElement).getDimensions();
	var originalX = posn[0] + dims.width / 2 - 7;
	var originalY = posn[1] + dims.height;
	
	resetArrow = setTimeout("originalElement.style.backgroundColor = '#104773'; moveArrow(" + originalX + ", " + originalY + ", 0.3);", 500);
}

function ie6LeftNavOver (e) {
	element = Event.element(e);
	
	element.addClassName('hover');
}

function ie6LeftNavOut (e) {
	element = Event.element(e);
		
	element.removeClassName('hover');
}