function MenuBuilder( elementId, menuDuration, fadeDuration ) {

	this.liArr	    = new Array();

	this.tOutAnchor = 0;



	if( elementId ) this.element_id = elementId;

	else this.element_id = 'menu';



	if( menuDuration ) this.menu_duration = (menuDuration < 100) ? ( menuDuration * 1000) : menuDuration;

	else this.menu_duration = 3000;



	if( fadeDuration ) this.fade_duration = fadeDuration;

	else this.fade_duration = 0.5;



	this.showMenuItems = function( liKey, fade_duration ) {

		clearTimeout( this.tOutAnchor );

		this.tOutAnchor = 0;

		// hide unselected						

		for(var x=0;x<this.liArr.length;++x) {

			if(x != liKey) {

				ulItem = $$( '#'+this.liArr[x].id+' ul.mbchild')[0];

				this.hideMenuItem( ulItem, 0.0 );

			}

		}

		// show selected

		ulItem = $$( '#'+this.liArr[liKey].id+' ul.mbchild')[0];

		this.showMenuItem( ulItem, fade_duration );

	}

	this.hideMenuItems = function( fade_duration ) {

		clearTimeout( this.tOutAnchor );

		// hide unselected		

		if( this.tOutAnchor > 0) {

			for(var x=0;x<this.liArr.length;++x) {

				ulItem = $$( '#'+this.liArr[x].id+' ul.mbchild')[0];

				this.hideMenuItem( ulItem, fade_duration );

			}

		}

		this.tOutAnchor = 0;

	}



	this.showMenuItem = function( ulItem, fade_duration ) {

		if( ulItem ) ulItem.appear({ duration: fade_duration });

	}

	this.hideMenuItem = function( ulItem, fade_duration ) {

		if( ulItem ) ulItem.fade({ duration: fade_duration });

	}

	this.buildMenu = function() {

		this.liArr = $$( '#'+this.element_id+' li.mbparent'); // build list of menu:li

		

		// attach actions to li

		for(var x=0; x<this.liArr.length;++x) {

			this.liArr[x].id = x;



			// create href mouse controls			

			aArr = $$( '#'+this.liArr[x].id+' a.aparent');

			if(aArr.length > 0) {

				aArr[0].bMenu = this; // create callback

				aArr[0].liParent = this.liArr[x]; // create callback

					

				// create li mouse controls

				aArr[0].onmouseover = function() {

					fade_duration = this.bMenu.fade_duration;

					bMenu = this.bMenu;

					liParent = this.liParent;

					bMenu.showMenuItems( liParent.id, fade_duration );

				}

				aArr[0].onmouseout = function() {

					bMenu = this.bMenu;

					bMenu.tOutAnchor = setTimeout( function(){bMenu.hideMenuItems( bMenu.fade_duration );}, bMenu.menu_duration );

				}

			}



			// create ul mouse controls

			ulArr = $$( '#'+this.liArr[x].id+' ul.mbchild');

			if(ulArr.length > 0) {

				ulArr[0].bMenu = this; // create callback

				ulArr[0].liParent = this.liArr[x]; // create callback



				ulArr[0].onmouseover = function() {

					fade_duration = this.bMenu.fade_duration;

					bMenu = this.bMenu;

					liParent = this.liParent;

					bMenu.showMenuItems( liParent.id, fade_duration );

				}

				ulArr[0].onmouseout = function() {

					bMenu = this.bMenu;

					bMenu.tOutAnchor = setTimeout( function(){bMenu.hideMenuItems( bMenu.fade_duration );}, bMenu.menu_duration );

				}

			}

		}

	}

}

