/*
Sun Ringlé navigation JavaScript by Ty Rayner
---------------------------------------------
User-Definable constants are below:
*/

/*const*/ var		animTime = 400;
/*const*/ var		frameDelay = 0.01666667;
/*const*/ var		navHeight = 180;

/*const*/ var		animate = true;

/*
END USER-CONFIGURABLE CONTENT
DO NOT MODIFY BELOW THIS LINE
---------------------------------------------
*/

/*const*/ var		navClosed = 1;
/*const*/ var		navOpen = 2;
/*const*/ var		navClosing = 3;
/*const*/ var		navOpening = 4;

var		currentNavState = navClosed;
var		timerID;
var		animStarted;

var		currentNavPage = 'home';
var		currentContentPage = 'home';
var		currentNavPageDeep = 'home';
var		initialNavTo = null;

function animateNavOpen()
{
	if (currentNavState != navClosed) return;
	
	if (animate)
	{
		currentNavState = navOpening;
		startAnimation();
	}
	else
	{
		navDiv = document.getElementById('navdiv');
		navDiv.style.height = navHeight + 'px';
		navDiv.style.visibility = 'visible';
		currentNavState = navOpen;
	}
}

function animateNavClose()
{
	if (currentNavState != navOpen) return;
	
	navDiv = document.getElementById('navdiv');
	
	if (animate)
	{
		navDiv.style.visibility = 'hidden';
		currentNavState = navClosing;
		startAnimation();
	}
	else
	{
		navDiv.style.height = '0px';
		navDiv.style.visibility = 'hidden';
		currentNavState = navClosed;
	}
}

function toggleNav()
{
	switch (currentNavState)
	{
		case (navOpen):
			animateNavClose();
			break;
		case (navClosed):
			animateNavOpen();
			break;
	}
}

function startAnimation()
{
	animStarted = new Date();
	timerID = self.setTimeout("animateFrame()", frameDelay);
}

function initialLoadNavPage(page)
{
	pgArray = currentContentPage.split("/");
	initialNavTo = '';
	
	for (i=0; i<(pgArray.length - 1); i++)
	{
		initialNavTo += pgArray[i];
		if (i < (pgArray.length - 2)) initialNavTo += '_';
	}
	ajax_loadNavPage(currentNavPage, null);
}

function loadNavPage(page)
{
	if (page == currentNavPage)
	{
		toggleNav();
		//ajax_loadNavPage(page, null);
	}
	else
	{
		animateNavOpen();
		ajax_loadNavPage(page, null);
	}
	currentNavPage = page;
	
}

function loadNavPageCallback(result, err)
{
	navDiv = document.getElementById('navdiv');

	if (err)
	{
		navDiv.innerHTML = "ERROR: " + err;
		return;
	}

	navDiv.innerHTML = result;
	
	if (initialNavTo) showNavForPath(initialNavTo);
	
	highlightCurrentNav();
	//alert("Got text " + result);
}

function loadContentPage(page)
{
	page = page.replace('_', "/");
	
	ajax_loadContentPage(page, null);
	
	currentContentPage = page;
}


function hideNavTables()
{
	var navTables = new Array(
		"mtb_wheelsets", 
		"mtb_hubs", 
		"mtb_rims"
	);

	for (i=0; i<navTables.length; i++)
	{
		var thisNavTable = null;
		thisNavTable = document.getElementById('navtable_' + navTables[i]);
		if (thisNavTable)
		{
			thisNavTable.style.visibility = 'hidden';
		}
	}
}

function showNavForPath(path)
{
	navTable = document.getElementById('navtable_' + path);
	if (navTable)
	{
		hideNavTables();
		navTable.style.visibility = 'visible';
	} else {
		//alert("couldn't get table for path (" + path + ")");
	}
	
	
}

function loadContentPageCallback(result, err)
{
	mainDiv = document.getElementById('maindiv');

	if (err)
	{
		mainDiv.innerHTML = "ERROR: " + err;
		return;
	}

	mainDiv.innerHTML = result;
	
	//alert("Got text " + result);
}


function animateFrame()
{
	var		thisDate = new Date();
	var		timeDiff;
	var		fract;
	var		newHeight;
	var		err = null;
	var		navDiv = null;
	var		navInner = null;
	
	timeDiff = (thisDate - animStarted);
	if (timeDiff > animTime) timeDiff = animTime;
	
	fract = timeDiff / animTime;
	fract = fract * fract;
	

	switch (currentNavState)
	{
		case (navClosing):
			newHeight = Math.floor(navHeight - (fract * navHeight));
			break;
		case (navOpening):
			newHeight = Math.floor(fract * navHeight);
			break;
		default:
			err = ("Encountered unexpected nav state.");
	}


	if (err) { alert("ERROR: " + err); return; }
	
	navDiv = document.getElementById('navdiv');
	if (!navDiv) err = ("Couldn't select outer navigation div.")
	if (err) { alert("ERROR: " + err); return; }
	
	navDiv.style.background = '#e8e8e8';
	navDiv.style.height = newHeight + 'px';
		
	if (timeDiff < animTime)
	{
		timerID = self.setTimeout("animateFrame()", frameDelay);
	}
	else
	{
		switch (currentNavState)
		{
			case (navClosing): currentNavState = navClosed; break;
			case (navOpening):
				currentNavState = navOpen; 
				navDiv.style.visibility = 'visible';
				break;
			default: err = "Encountered unexpected nav state."; break;
		}
	}
	
	if (err) { alert("ERROR: " + err); return; }
}





function riNav(path)
{
	var		docElement;
	
	docElement = document.getElementById(path);
	
	if (!docElement)
	{
		alert("Couldn't get element for button");
		return;
	}
	
	docElement.style.opacity = '1';
	docElement.style.filter = 'alpha(opacity=100)';
}

function roNav(path)
{
	var		docElement;
	
	docElement = document.getElementById(path);
	
	if (!docElement)
	{
		alert("Couldn't get element for button");
		return;
	}
	
	docElement.style.opacity = '.70';
	docElement.style.filter = 'alpha(opacity=70)';
}

/*
function mdNav(path)
{
	loadContentPage(path);
}
*/

//loadContentPage(path);

function highlightCurrentNav()
{
	/*
	      <td width="140"><a onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('road_button','','images/1_roadbike_on.gif',1)" onMouseDown="loadNavPage('road');"><img src="/images/1_roadbike_off.gif" name="road_button" width="140" height="33" border="0" id="road_button" /></a></td>
	*/
	
	nav_swapImgRestore();
	
	if (currentNavPage == "road")
	{
		MM_swapImage('road_button','','images/1_roadbike_on.gif',1);
	} else if (currentNavPage == "mtb") {
		MM_swapImage('mtb_button','','images/1_mtb_on.gif',1);
	} else if (currentNavPage == "bmx") {
		MM_swapImage('bmx_button','','images/1_bmx_on.gif',1);
	} else if (currentNavPage == "home") {
		
	} else {
		//alert('unknown nav page ' + currentNavPage);
	}
	
	var deepNavArray = currentNavPageDeep.split('/');
	
	var arrayBuild = new Array();
	arrayBuild[0] = deepNavArray[0];
	for (i=1; i<deepNavArray.length; i++)
	{
		
		arrayBuild[i] = deepNavArray[i];
		
		var lightItem = document.getElementById(arrayBuild.join('_'));
		if (lightItem)
		{
			lightItem.style.opacity = 1.;
			lightItem.style.filter = 'alpha(opacity=100)';
		}
	}
	
	
}


