function treeMenu(navid, indexpage, stayopen, admin) {
	if (typeof document.getElementById == 'undefined') { return; }

	var rollover = new Image;
	rollover.src = '../images/minus.gif';

	var tree = document.getElementById(navid);
	if (tree) {
		var items = tree.getElementsByTagName('li');
		for (var i = 0; i < items.length; i++) {
			treeTrigger(tree, items[i], navid, stayopen);
		}
		if (navigator.vendor == 'Apple Computer, Inc.'
				|| typeof window.opera != 'undefined') {
			displayReset(tree);
		}
		findHere(tree, navid, indexpage, admin);
	}
}

var isreset = false;
function displayReset(tree) {
	var menus = tree.getElementsByTagName('ul');
	for (var i = 0; i < menus.length; i++) {
		if (menus[i].style.position != 'static') {
			menus[i].style.display = 'none';
		}
		menus[i].style.position = 'static';
	}
	isreset = true;
}

function treeTrigger(tree, li, navid, stayopen) {
	var a = li.getElementsByTagName('a')[0];
	var menu = li.getElementsByTagName('ul').length > 0
		? li.getElementsByTagName('ul')[0] : null;
	var treeEnd = li.getElementsByTagName('ul').length == 1
		? li.getElementsByTagName('ul')[0] : null;
	if (menu) {
		li.className += (li.className == '' ? '' : ' ') + 'hasmenu';
	}
	
	a.onmouseover = function(e) {
		var target = e ? e.target : window.event.srcElement;
		var pairs = target.href.substr(target.href.indexOf('?')+1,target.href.length).split('&');
		for (var i=0; i<pairs.length; i++) {
			var name = pairs[i].split('=')[0];
			var value = pairs[i].split('=')[1];
			if (name == 'cat_id') {
				menuImage(value);
				break;
			}		
		}
	};
	
	li.onclick = function(e) {
		var target = e ? e.target : window.event.srcElement;
		while (target.nodeName.toUpperCase() != 'LI') {
			target = target.parentNode;
		}
		if (target == this && isreset) {
			if (menu) {
				if (menu.style.display == 'none') {
					if (stayopen == false) {
						clearSiblingBranches(this);
					}
					menu.style.display = 'block';
					a.className += (a.className=='' ? '' : ' ') + 'rollover';
					//makes the last category (the one above the products) redirect to its href
					if (treeEnd) {
						document.location.href = a.href;
					}
				} else {
					menu.style.display = 'none';
					a.className = a.className.replace(/ ?rollover/g, '');
				}
				return false;
			} else {
				return true;
			}
		}
	};

	addEvent(a, 'keyup', function(e) {
		if (!isreset && e.keyCode == 9) {
			displayReset(tree);
		}
	}, false);

	var moves = 0;
	addEvent(a, 'mousemove', function() {
		if (!isreset) {
			moves++;
			if (moves > 2) { displayReset(tree); }
		}
	}, false);
}

function clearSiblingBranches(trigger) {
	var menus = trigger.parentNode.getElementsByTagName('ul');
	for (var i = 0; i < menus.length; i++) {
		menus[i].style.display = 'none';
		var a = menus[i].parentNode.getElementsByTagName('a')[0];
		if (a) {
			a.className = a.className.replace(/ ?rollover/g, '');
		}
	}
}

function findHere(tree, navid, indexpage, admin) {
	var page = document.location.href;
	page = page.replace(indexpage, '').replace(/,/g,'%2C');

	var links = tree.getElementsByTagName('a');
	var matches = [];
	for (var i = 0; i < links.length; i++) {
		var href = links[i].href;
		if (href && !/[a-z]+\:\/{2}/.test(href)) {
			matches = [];
			break;
		}
		href = href.replace(indexpage, '').replace(/,/g,'%2C');
		/* qs is the string after '?' in the url and linkqs is the string after '?' in the href of a menu link
		we test the */
		if (!admin) {
			var qs = page.substring(page.indexOf('?') + 1, page.length);
			var linkqs = href.substring(href.indexOf('?') + 1, href.length);
			if (href != '' && qs.indexOf(linkqs) != -1) {
				matches[matches.length] = links[i];
			}
		} else if (href != '' && page.indexOf(href) != -1) {
			matches[matches.length] = links[i];
		}
	}
	if (matches.length < 1) { return; }
	var probabilities = [];
	for (i = 0; i < matches.length; i++) {
		href = matches[i].href;
		probabilities[i] = [0, href];
		for (var j = 0; j < href.length; j++) {
			if (href.charAt(j) == page.charAt(j)) {
				probabilities[i][0]++;
			}
		}
	}

	probabilities.sort(compare);
	href = probabilities[0][1];
	for (i = 0; i < links.length; i++) {
		if (links[i].href == href) {
			youAreHere(links[i], href, navid);
			break;
		}
	}
}

function youAreHere(link, href, navid) {
	link.className += (link.className == '' ? '' : ' ') + 'rollover';

	var li = link.parentNode;
	var menu = li.getElementsByTagName('ul').length > 0
		? li.getElementsByTagName('ul')[0] : null;
	if (menu) {
		menu.style.display = 'block';
		menu.style.position = 'static';
	}

	var text = (link.getAttribute('title') && link.title != '')
		? link.title : link.firstChild.nodeValue;
		
	link.title = text + (link.href == href
		? ' [you are here]' : ' [you\'re in this section]');
	
	if (li.parentNode.id != navid) {
		link = li.parentNode.parentNode.getElementsByTagName('a')[0];
		youAreHere(link, href, navid);
	}
}

function menuImage(cat_id) {
	if(!document.getElementById('menuimage')) {return;}
	var imgHolder = document.getElementById('menuimage');
	var now = new Date();
	AJAXRequest('modules/ajax_response.cfm?action=menu&cat_id='+cat_id, 
		function(reqester) {
			var src = reqester.responseText;
			if (imgHolder.firstChild) {
				imgHolder.removeChild(imgHolder.firstChild);
			}			
			if (src != null && src != '') {
				var img = document.createElement('img');
				src = src.replace(/\.(jpg|jpeg).*/gi,'.jpg')+'?t='+now.getHours();
				img.src = src;
				imgHolder.appendChild(img);
			}
		}, 
	'GET', '');
}

addLoadListener(function() {if(typeof admin == 'undefined'){admin = false;} treeMenu('nav', 'index.cfm', false, admin); });
