Event.observe(window, 'load', SetupNav);

var Scrolling = false;
var ScrollTarget = false;
var ScrollTargetPos = 0;
var LastXPos = -1;
var ScrollingID = false;

function SetupNav()
{
	if (!IE6 && (BrowserDetect.browser != 'Firefox'))
	{
		$('Nav').style.left = '50%';
		$('Nav').style.marginLeft = -Math.floor($('Nav').offsetWidth / 2) + 'px';
	}

	var links = $('Nav').select('a');
	for (var i = 0, link; link = links[i]; i++)
	{
		link.onclick = function(evt)
		{
			if (!evt)
			{
				evt = window.event;
			}
			var id = Event.element(evt).id;

			if (Scrolling)
			{
				return false;
			}

			if (id)
			{
				StartScrolling(id);
			}
			return false;
		}
	}

	document.getElementById("BookLink").onclick = function(e) { Books(); };

	if (window.location.hash)
	{
		StartScrolling(window.location.hash.replace('#', ''));
	}
}

function StartScrolling(id)
{
	window.location.hash = id;

	ScrollTarget = $('Entry-' + id);
	if (!ScrollTarget)
	{
		return false;
	}

	Scrolling = true;
	ScrollingID = id;
	switch (id)
	{
		case 'call':
			Modifier = -300;
			break;
		case 'how_to_become_a_member':
			Modifier = -290;
			break;
		case 'support':
			Modifier = -75;
			break;
		case 'contacts':
			Modifier = -110;
			break;
		case 'events':
			Modifier = -285;
			break;
		case 'board':
			Modifier = -120;
			break;
		case 'ad_school':
			Modifier = -330;
			break;
		default:
			Modifier = -200;
			break;
	}
	
	if (id == 'actual')
	{
		ScrollTargetPos = 0;
	}
	else
	{
		ScrollTargetPos = ScrollTarget.offsetLeft + Modifier;
	}

	if (ScrollTargetPos < 0)
	{
		ScrollTargetPos = 0;
	}

	Flow();
}

function Flow()
{
	var XPos = document.viewport.getScrollOffsets().left;
	ViewportWidth = document.viewport.getDimensions().width;

	if (XPos + ViewportWidth > 8400)
	{
		Scrolling = false;
		
		return false;
	}
	else if (XPos + ViewportWidth == 8400)
	{
		if (XPos < ScrollTargetPos)
		{
			Scrolling = false;
			return false;
		}
	}

	var Distance = ScrollTargetPos - XPos;
	var Sign = Distance > 0 ? 2 : -2;

	if (Math.abs(Distance) > 400)
	{
		window.scrollBy(40 * Sign, 0);
	}
	else if (Math.abs(Distance) > 200)
	{
		window.scrollBy(20 * Sign, 0);
	}
	else if (Math.abs(Distance) > 50)
	{
		window.scrollBy(10 * Sign, 0);
	}
	else
	{
		window.scrollBy(1 * Sign, 0);
	}

	if (Math.abs(Distance) > 2 && LastXPos != XPos)
	{
		LastXPos = XPos;
		setTimeout('Flow()', 1);
	}
	else
	{
		if (ScrollingID == 'events')
		{
			ResetStuffPage();
		}
		Scrolling = false;
	}
	return false;
}