function showCategories(parentDiv) {
	var dropdownContent = document.getElementById('dropdownContent');
	var legend = document.getElementById('dropdownLegend');
	var dropdownArrow = document.getElementById('dropdownArrow');

	if (dropdownContent.style.display == 'none') {
		dropdownContent.style.display = 'block';
		parentDiv.className = "dropdown_over";
		parentDiv.onmouseout = "";
		parentDiv.onmouseover = "";
		legend.className = "dropdown_legend";
		dropdownArrow.className = "selected";
		addEvent(document.body, 'click', showCategoriesEventListener);
	} else {
		dropdownContent.style.display = 'none';
		parentDiv.className = "dropdown";
		parentDiv.onmouseout = new Function("this.className='dropdown';");
		parentDiv.onmouseover = new Function("this.className='dropdown_over';");
		legend.className = "";
		dropdownArrow.className = "";
		removeEvent(document.body, 'click', showCategoriesEventListener);
	}
}

function isInternetExplorer() {
	if (parseInt(navigator.appVersion) > 3) {
	        if (navigator.appName.indexOf("Microsoft") != -1) {
	        	return true;
	        }
	}
	return false;
}

function showCategoriesEventListener(e) {
	var parentDiv = document.getElementById('dropdown_categories');

	var targetId = isInternetExplorer() ? e.srcElement.id : e.target.id;
	if (targetId.indexOf('dropdown') >= 0) {

	} else {
		showCategories(parentDiv);
	}
}

// heavily based on the Quirksmode addEvent contest winner, John Resig
// addEvent
function addEvent(obj,type,fn){
	if(obj.addEventListener) {
		obj.addEventListener(type, fn, false);
	} else if(obj.attachEvent) {
		obj["e" + type + fn] = fn;
		obj[type + fn] = function() {
			obj["e" + type + fn](window.event);
		};
		obj.attachEvent("on" + type, obj[type + fn]);
	}
}

//------------------------------------
// removeEvent
function removeEvent(obj, type, fn){
	if (obj.removeEventListener) {
		obj.removeEventListener(type, fn, false);
	} else if (obj.detachEvent) {
		obj.detachEvent("on" + type, obj[type + fn]);
		obj[type + fn] = null;
		obj["e" + type + fn] = null;
	}
}
