var opaqueMenu = function(options){

	var menuClassName = 'leftNavMenu', // class of Parent UL tag
		colWidth = 132, // Width of each menu column in pixels
		colHeight = 465, // Height of each menu column in pixels
		colSpacing = 4, // spacing between columns in pixels
		colOpactiy = 0.5, // Column background opacity
		colBackground = '#FFF', // background color for columns (default is white - vaild Hex or css color)
		showFirstColBg = false, // show opaque background on parent columns
		zIndex = 1, // option to increase base zIndex of menu and backgrounds if menu exists on a zIndex layer
		delay = 50, // delay to hide submenus on mouseout (best left as is)
		numCols = 0, // used internally to draw columns based on number of submenus detected (do not change)
		options = options || {};
	
	// setup options
	for(var x in options) eval(x +'= options[x]');
	
	// Show Submenu function
	var showSubmenu = function(){
		var child = this.childSubmenu || false;
		var i = child.navMenuColIndex || false;
		var col = $('#opaqueCol'+i)[0];
		if(child){
			clearTimeout(child.hideTimeout);
			$(child).css({visibility:'visible'});
		}
		if(col){
			clearTimeout(col.Timeout);
			$(col).show().fadeIn(delay*3);
		}
	}
	// Hide Submenu function
	var hideSubmenu = function(){
		var child = this.childSubmenu || false;
		var i = child.navMenuColIndex || false;
		var col = $('#opaqueCol'+i)[0];
		if(child){
			child.hideTimeout = setTimeout(function(){ $(child).css({visibility:'hidden'}); }, delay);
			if(col) col.Timeout = setTimeout(function(){ $(col).fadeOut(delay*3); }, delay*3);
		}
	}
	/**
	 * Setup Css for menu UL and LI elements
	 */
	$('ul.'+menuClassName+', .'+menuClassName+' li').css({
		margin: 0, padding: 0, listStyle: 'none outside none', position: 'relative'
	});
	// Set css for all LI elements
	$('.'+menuClassName+' li').css({
		width: colWidth+'px', lineHeight:'16px', padding:'3px 0'
	});
	// Set LI Anchors CSS
	$('.'+menuClassName+' li a').css({
		display:'block', width: (colWidth-14)+'px', padding:'5px 2px', margin:'0 5px', lineHeight:'16px'
	});
	// Set css for all UL subMenu Elements contained in an LI
	$('.'+menuClassName+' li ul').css({
		position:'absolute', top:'0', left:'0', margin:'0 0 0 '+colWidth+'px', padding: '0 0 0 '+colSpacing+'px'
	})
	// Set events and vars for all UL subMenu Elements
	.each(function(i){
		var childUL = this;
		var parentLI = $(this).parent('li')[0];
		var index = $(this).parents('ul').length;
		parentLI.childSubmenu = childUL;
		childUL.navMenuColIndex = index;
		numCols = (index > numCols)? index : numCols;
		$(parentLI).mouseover(showSubmenu).mouseout(hideSubmenu);
		$(parentLI).children('a').addClass('subMenu');
		$(this).css({visibility:'hidden'});
	});
	/**
	 * Setup Opaque background divs container
	 */
	$('<div id="opaqueCols"/>').css({position:'absolute', height:colHeight+'px', width: (numCols+1)*(colWidth+colSpacing)+'px'}).insertBefore($('ul.'+menuClassName).css({zIndex:zIndex+1}));
	/**
	 * Setup Opaque background div columns
	 */
	var colCss = { width: colWidth+'px', height: colHeight+'px', zIndex: zIndex, backgroundColor:colBackground, float:'left', opacity: colOpactiy, display:'none', marginRight: colSpacing+'px', padding:'0' };
	// Show or Hide first column background
	showFirstColBg = (showFirstColBg==true)? 'visible' : 'hidden';
	$('<div id="opaqueCol0"/>').css(colCss).css({display:'block', visibility: showFirstColBg}).appendTo($('#opaqueCols'));
	// Add in column backgrounds for each column 
	for(var i=1; i<=numCols; i++){ $('<div id="opaqueCol'+i+'"/>').css(colCss).appendTo($('#opaqueCols')); }


	
}