/**
 * Create a "div" and populate it with messages while debugging the code.
 * rand.
 */
var Menu = {

	menuId:'mainMenu',
	menuClass:'rLoadMenu',
	getSubMenu:function( menu ) {
		var newDiv = document.createElement( 'div' );
		if( menu.setId ) {
			newDiv.setAttribute('id', menu.setId );
			// Log.message(Log.debug, 'getSubMenu added id [' + menu.setId + ']' );
		}
		if( menu.setClass ) {
			newDiv.setAttribute('class', menu.setClass );
			// Log.message(Log.debug, 'getSubMenu added class [' + menu.setClass + ']' );
		}
		if( menu.title ) {
			// Log.message(Log.debug, 'getSubMenu content title [' + menu.title + ']' );
			var appendHere = newDiv;
			if( menu.description ) {
				var description = document.createElement( 'abbr' );
				description.setAttribute( 'title', menu.description );
				appendHere.appendChild( description );
				appendHere = description;
			}
			if( menu.uri ) {
				var uri = document.createElement( 'a' );
				uri.setAttribute( 'href', menu.uri );
				appendHere.appendChild( uri );
				appendHere = uri;
			}
			var title = document.createElement( 'span' );
			var newText = document.createTextNode( menu.title );
			title.appendChild( newText );
			appendHere.appendChild( title );
		}
		if( menu.children ) {
			// Log.message(Log.debug, 'getSubMenu shows [' + menu.children.length + '] children' );
			if( 0 < menu.children.length ) {
				var newList = document.createElement( 'ul' );
				newDiv.appendChild( newList );
				for( var child in menu.children ) {
					var nextLi = document.createElement( 'li' );
					var liDiv = Menu.getSubMenu( menu.children[child] );
					nextLi.appendChild( liDiv );
					newList.appendChild( nextLi );
				}
			}
		}
		return newDiv;
	},
	loadReceivedMenu:function( menu ) {
		var placeMenuHere = null;
		// Log.message(Log.debug, 'menu id[' + menu.menuId + ']' );
		if( menu.menuId ) {
			placeMenuHere = document.getElementById( menu.menuId );
		}
		if( null == placeMenuHere ) {
			placeMenuHere = document.getElementById( Menu.menuId );
		}
		if( null != placeMenuHere ) {
			var item = Menu.getSubMenu( menu );
			if( null != item ) {
				placeMenuHere.appendChild( item );
			}
		}
	},
	loadMenu:function( stat ) {
		// Log.message( Log.debug, 'loadMenu checking stat['+stat+']' );
		switch( typeof( stat )) {
			case 'boolean': Log.message(Log.debug, 'boolean status[' + stat + "] - don't process this here, sorry" ); break;
			case 'object': Menu.loadReceivedMenu( stat ); break;
			default: Log.message(Log.debug, 'default response[' + typeof( stat ) + "] - don't process this here, sorry" ); break;
		}
	},
	locateAndRequestMenus:function() {
		// Log.message( Log.debug, 'locateAndRequestMenus starting search for items to request.' );
		var divs = document.getElementsByTagName( 'div' );
		for( var i=0; i<divs.length; ++i ) {
			var item = divs[i];
			if( item.className.indexOf( Menu.menuClass ) != -1 ) {
				var page = item.getAttribute( 'id' ) + '.json';
				// Log.message( Log.debug, 'locateAndRequestMenus would ask for[' + page + ']' );
				AkA.request( item, item, page, Menu.loadMenu );
			}
		}
	}
};

Log.logLevel = Log.debug;
Events.addListener( window, 'load', Menu.locateAndRequestMenus );

