// http://homework.nwsnet.de/news/ea21_turn-nested-lists-into-a-collapsible-tree-with-jquery
// Execute this after the site is loaded.
$(function() {
});



/*
$(document).ready(function () {
	attachCustomSelectEvents();
}
*/

function browserIsIE6() {
	var oBrowser = $.browser;
	return (oBrowser.msie && parseInt(oBrowser.version) <= 6);
}

function attachCustomSelectEvents() {
	var rCustomSelects = $("div.customSelect");
	if(!rCustomSelects.length) { return; }
	$(rCustomSelects).bind("click", null, toggleCustomSelectOptions);
	$(rCustomSelects).bind("mouseleave", null, hideCustomSelectOptions);

	// attach hover events to select dropdown items
	if(browserIsIE6()) {
		$("li", rCustomSelects).hover(showCustomSelectOptionHighlight, hideCustomSelectOptionHighlight);
	}

	$("li", rCustomSelects).bind("click", null, updateCustomSelectLabel);
	var oTest = $("ul", rCustomSelects);
	$("ul", rCustomSelects).bind("mouseleave", null, hideCustomSelectOptions);
}

function showCustomSelectOptionHighlight(e) {
	var oEl = e.target;
	$(oEl).addClass("hover");
}

function hideCustomSelectOptionHighlight(e) {
	var oEl = e.target;
	$(oEl).removeClass("hover");
}

function toggleCustomSelectOptions(e) {
	var oEl = e.target;
	var oSelectContainer = $(oEl).closest("div.customSelect");

	if($(oSelectContainer).hasClass("selectActive")) {
		$(oSelectContainer).removeClass("selectActive");
	} else {
		$(oSelectContainer).addClass("selectActive");
	}
}

function showCustomSelectOptions(e){
	var oEl = e.target;
	$(oEl).closest("div.customSelect").addClass("selectActive");
}

function hideCustomSelectOptions(e){
	var oEl = e.target;
	var oRelatedTarget = e.relatedTarget;
	//var sRelatedTargetTag = String(oRelatedTarget.tagName).toLowerCase();
	var oSelect = $(oEl).closest("div.customSelect").get(0);

	// prevent hide if user mouses back into the parent select from the options panel
	if($(oRelatedTarget).closest("div.customSelect").get(0) == oSelect) {
		return;
	}

	$(oSelect).removeClass("selectActive");
}

function updateCustomSelectLabel(e) {
	var oEl = e.target;

	var sValue = oEl.getAttribute("value") || oEl.innerHTML;
	var sLabel = oEl.innerHTML;

	var oSelect = $(oEl).closest("div.customSelect").get(0);
	var oLabel = $("em", oSelect).get(0);

	oSelect.setAttribute("value", sValue);
	oLabel.innerHTML = sLabel;
}
