var FADE_DELAY = 500;
var FADE_TIME = .4;

var curTimer = -1;
var curTimerTitle;
var defaultSectionTitle;
var defaultSectionDisplayed = false;
var curSectionTitle;

Event.observe(window, 'load', function() {
	initNav();
});

Event.observe(window, 'unload', function() {
	hideNav();
});

function initNav() {
	topNavLinks = $('nav').getElementsByTagName('a');
	var preloadedImages= [topNavLinks.length];
	var preloadedImagesOver= [topNavLinks.length];
	for (i = 0; i < topNavLinks.length; i++) {
		title = topNavLinks[i].id.substring(8);
		Event.observe(topNavLinks[i], 'mouseover', navMouseOver(title));
		Event.observe(topNavLinks[i], 'mouseout', navMouseOut(title));
		if (document.images) {
			preloadedImages[i] = new Image();
			preloadedImages[i].src= "/images/siteHeader/buttons/" + title + ".gif";
			preloadedImagesOver[i] = new Image();
			preloadedImagesOver[i].src= "/images/siteHeader/buttons/" + title + "-o.gif";
  		}
  		testImg = $('NavImg-' + title);
		if (testImg.src.substring(testImg.src.length-6) == "-o.gif") {
			defaultSectionTitle = title;
			defaultSectionDisplayed = true;
		}
	}
	
	subNavDivs = $('subNav').getElementsByClassName('subNav');
	for (i = 0; i < subNavDivs.length; i++) {
		title = subNavDivs[i].id.substring(7);
		Event.observe(subNavDivs[i], 'mouseover', navMouseOver(title));
		Event.observe(subNavDivs[i], 'mouseout', navMouseOut(title));
		subNavLinks = subNavDivs[i].getElementsByTagName('a');
		for (j = 0; j < subNavLinks.length; j++) {
			Event.observe(subNavLinks[j], 'mouseover', navMouseOver(title));
		}
	}
	
}

function hideNav() {
	if (curSectionTitle != null) {
		hideSectionNav(curSectionTitle);
	}
}

function navMouseOver(title) {
	return function() {
		showSectionNav(title);
		return true;
	};
}

function navMouseOut(title) {
	return function() {
		curTimer = setTimeout("hideSectionNav('" + title +"')", FADE_DELAY);
		curTimerTitle = title;
		return true;
	};
}

function showSectionNav(title) {
	if (curTimer >= 0) {
		clearTimeout(curTimer);
		curTimer = -1;
		if (curTimerTitle == title) {
			return;
		}
		hideSectionNav(curTimerTitle);
	}
	if (title == defaultSectionTitle) {
		defaultSectionDisplayed = true;
	} else {
		if (defaultSectionDisplayed) {
			defaultSectionDisplayed = false;
			hideSectionNav(defaultSectionTitle);
		}
	}
	curSectionTitle = title;
	
	cancelQueue(title + '-nav');
	cancelQueue(title + '-link');
	navElement = $('SubNav-' + title);
  	$('NavImg-' + title).src = "/images/siteHeader/buttons/" + title + "-o.gif";
	if (navElement != null) { 
		new Effect.Appear(navElement, {duration: FADE_TIME, queue: {position: 'end', scope: title + '-nav'}});
		Element.setStyle(navElement, { zIndex: '2'});
	}
	return true;
}

function hideSectionNav(title) {
	curTimer = -1;
	if (defaultSectionDisplayed && defaultSectionTitle == title) {
		return;
	}
	curSectionTitle = null;
	navElement = $('SubNav-' + title);
	cancelQueue(title + '-nav');
	cancelQueue(title + '-link');
  	$('NavImg-' + title).src = "/images/siteHeader/buttons/" + title + ".gif";
	if (navElement != null) {
		Element.setStyle(navElement, { zIndex: '1'});
		new Effect.Fade(navElement, {duration: FADE_TIME, queue: {position: 'end', scope: title + '-nav'}});
	}
	if ((! defaultSectionDisplayed) &&
		(defaultSectionTitle != null) &&
		(defaultSectionTitle != title)) {
		showSectionNav(defaultSectionTitle);
	} 
	return true;
}

function cancelQueue(scopeName) {
	var queue = Effect.Queues.get(scopeName);
	queue.each(function(e) { e.cancel(); });
}

function debug(message) {
	$('debug').insert({ top: message + '<br/>'});
}

function rollOver(buttonName) {
	if (document.images) {
		$('NavImg-' + buttonName).src = "/images/siteHeader/buttons/" + buttonName + "-o.gif";
	}
}
function rollOut(buttonName) {
	if (document.images) {
		$('NavImg-' + buttonName).src = "/images/siteHeader/buttons/" + buttonName + ".gif";
	}
}

// -- Shopping cart functions --

function cartChanged() {
	notification = document.getElementById("changesMadeNotification");
	notification.style.visibility = "visible";
}

function shippingDestinationChanged() {
	curDestination = document.getElementById("Cart|shippingDestinationKey").value;
	selectBoxes = document.getElementsByTagName("select");
	for (var i = 0; i != selectBoxes.length; i++) {
		curSelect = selectBoxes[i];
		if (curSelect.id.substring(0, 23) == "Cart|shippingMethodKey-") {
			destination = curSelect.id.substring(23);
			if (destination == curDestination) {
				curSelect.style.display = "inline";
			} else {
				curSelect.style.display = "none";
			}
		}
	}
}

function recalcTotalQty(key) {
	inputs = $('cart').getInputs('text');
	total = 0;
	inputs.each(function(input) {
		id = input.id;
		if (id.substr(0, id.lastIndexOf('-')) == key) {
			qty = parseInt(input.value);
			if (qty > 0) {
				total += qty;
			}
		}
	});
	$(key).value = total;
}