/*
Additional attributes:
ddvoffset
ddhoffset
ddparent
ddclose
ddwidth
ddheight
ddclass
*/
var dropdown_sMenuDomPath = ".DropDownMenu";
var dropdown_iTimeout = 500;
var dropdown_xOffset = 0;
var dropdown_yOffset = 0;
//var dropdown_bGrowWidth = true;	// if submenu's width is smaller than mainmenu item, it grows to its width
var dropdown_pTimeout;
var dropdown_bHover = false;


$(document).ready(function() {
					   
	$(dropdown_sMenuDomPath).find('a[dropdown]').bind("mouseenter", function(e) {
			if(!$(this).attr("dropdown")) { return(false); }

			var sDropdown = $(this).attr("dropdown");
			var sDropdownXpath = '#' + $(this).attr("dropdown");
			var objDropdown = $(sDropdownXpath).get(0);

			var arrAnchorOffset = $(this).offset();
			var iAnchorWidth = $(this).outerWidth();
			var iAnchorHeight = $(this).outerHeight();
			var bUseAnchorWidth = false;
			var bUseAnchorHeight = true;

			var iVerticalOffset = 0;
			var iHorizontalOffset = 0;
			
			var iLeft = 0;
			var iTop = 0;

			dropdown_bHover = true;
			clearTimeout(dropdown_pTimeout);

			// Hide open dropdowns
			dropdown_hideOpen(sDropdown);

			// Positions dropdown
			if($(objDropdown).attr("ddparent")) {
				bUseAnchorWidth = true;
				bUseAnchorHeight = false;
			}

			if($(this).attr('ddclass') !== undefined) {
				$('.DropDown').attr('class','DropDown ' + $(this).attr('ddclass'));
			}

			if($(objDropdown).attr('ddwidth')=='true') { bUseAnchorWidth = true; }
			else if($(objDropdown).attr('ddwidth')=='false') { bUseAnchorWidth = false; }
			if($(this).attr('ddwidth')=='true') { bUseAnchorWidth = true; }
			else if($(this).attr('ddwidth')=='false') { bUseAnchorWidth = false; }

			if($(objDropdown).attr('ddheight')=='true') { bUseAnchorHeight = true; }
			else if($(objDropdown).attr('ddheight')=='false') { bUseAnchorHeight = false; }
			if($(this).attr('ddheight')=='true') { bUseAnchorHeight = true; }
			else if($(this).attr('ddheight')=='false') { bUseAnchorHeight = false; }
			
			if(!bUseAnchorWidth) { iAnchorWidth = 0; }
			if(!bUseAnchorHeight) { iAnchorHeight = 0; }

			if($(objDropdown).attr("ddvoffset")) { iVerticalOffset = Number($(objDropdown).attr("ddvoffset")); }
			if($(objDropdown).attr("ddhoffset")) { iHorizontalOffset = Number($(objDropdown).attr("ddhoffset")); }

			iLeft = (arrAnchorOffset.left + iAnchorWidth + iHorizontalOffset + dropdown_xOffset);
			iTop = (arrAnchorOffset.top + iAnchorHeight + iVerticalOffset + dropdown_yOffset);
			
			$(objDropdown).css('left', iLeft + 'px');
			$(objDropdown).css('top', iTop + 'px');

			// Displays dropdown
			$(objDropdown).show();

			// Dropdown element event handlers
			$(objDropdown).bind("mouseenter", function(e) {
				clearTimeout(dropdown_pTimeout);
			}).bind("mouseleave", function(e) {
				clearTimeout(dropdown_pTimeout);
				dropdown_pTimeout = setTimeout("dropdown_mouseOut()", dropdown_iTimeout);					
			});

	}).bind("mouseleave", function(e) {
			if(!$(this).attr("dropdown")) { return(false); }

			dropdown_bHover = false;
			clearTimeout(dropdown_pTimeout);
			dropdown_pTimeout = setTimeout("dropdown_mouseOut()", dropdown_iTimeout);

	});
	
	$(dropdown_sMenuDomPath).find('a[ddclose]').bind("mouseenter", function(e) {
		clearTimeout(dropdown_pTimeout);
		dropdown_hideOpen($(this).attr('ddclose'));
	});
	
	// Selects active parent links
	$(dropdown_sMenuDomPath).find('DIV.DropDown').bind("mouseleave", function(e) {
		$(dropdown_sMenuDomPath).find('A[dropdown]').removeClass('Sel');
	}).bind("mouseenter", function(e) {
		var arrOpenDropdowns = new Object();
		var sDropdown = $(this).attr('id');
		
		dropdown_getParents(arrOpenDropdowns, sDropdown);
	
		$(dropdown_sMenuDomPath).find('A[dropdown]').removeClass('Sel');
		for(var sKey in arrOpenDropdowns) {
			$(dropdown_sMenuDomPath).find('A[dropdown=' + sKey + ']').addClass('Sel');
		}

	});

});

// Mouse out handler
function dropdown_mouseOut() {
	if(dropdown_bHover == false) { $('.DropDown').hide(); }
}

// Hide open dropdowns
function dropdown_hideOpen(sDropdown) {
	var arrOpenDropdowns = new Object();
	dropdown_getParents(arrOpenDropdowns, sDropdown);

	$(dropdown_sMenuDomPath).find('.DropDown').each(function() {
		var sTmpDropdownId = $(this).attr('id');
		var bHide = true;
		for(var sKey in arrOpenDropdowns) {
			if(sTmpDropdownId == sKey) { bHide = false; }
		}
		if(bHide && sTmpDropdownId) { $('#' + sTmpDropdownId).hide(); }
	});
}

// Get menu parents
function dropdown_getParents(arrOpenDropdowns, sDropdown) {
	if(!sDropdown) { return(false); }
	var objDropdown = $('#' + sDropdown).get(0);
	var sDropdownParentId = $(objDropdown).attr('ddparent');
	arrOpenDropdowns[sDropdown] = true;
	if(sDropdownParentId) { dropdown_getParents(arrOpenDropdowns, sDropdownParentId); }
}
