var activeMenuName = new HashMap();
var menuItemStyle = { 	'padding':'0px 10px 0px 0px',
						'fontFamily': 'Tahoma',
						'fontWeight': 'bold',
						'fontSize': '13px', 
						'height':'21px',
						'background': '#ADBFD5 url("images/MenuItemBackground.gif") top left',
						'height': '25px',
						'color' : '#022B5D'}

function pushProperties(list, into) {
	for(var i in list) { try {into[i] = list[i];} catch(e){} }
}

function overItem( itemName ){
	document.getElementById( itemName ).style.backgroundColor = "#D9F000";
	document.getElementById( itemName ).style.color = "black";
	document.getElementById( itemName ).style.cursor = 'hand';
	document.getElementById('bullet'+itemName).src='images/MenuBulletOver.gif';
	if( document.getElementById( itemName ).subMenu != null )
		overMenu( document.getElementById( itemName ).subMenu.id);
}

function clickItem( itemName ){
	location.href = document.getElementById( itemName ).toHref;
}

function outItem( itemName ){
	if( document.getElementById( itemName ).subMenu != null ){
		outMenu(document.getElementById( itemName ).subMenu.id);
	}
	document.getElementById( itemName ).style.cursor = 'pointer';
	document.getElementById( itemName ).style.color = "#022B5D";
	document.getElementById( itemName ).style.backgroundColor = "#ADBFD5";
	document.getElementById('bullet'+itemName).src='images/MenuBullet.gif';
}

function overMenu( menuName ){
	activeMenuName.add(menuName, menuName);
	if ( document.getElementById( menuName ).parent != null )
		overMenu( document.getElementById( menuName ).parent.id );
		
	document.getElementById( menuName ).style.visibility = 'visible';
}

function outMenu( menuName ){
	activeMenuName.remove(menuName);
	if ( document.getElementById( menuName ).parent != null )
		outMenu( document.getElementById( menuName ).parent.id );
	setTimeout("hideMenu('"+menuName+"');", 20);
}

function hideMenu( menuName ){
	if ( !activeMenuName.exists(menuName) ){
		document.getElementById( menuName ).style.visibility = 'hidden';
	}
}

function getSeperator(){
	var menuSeperator = document.createElement('div');
	menuSeperator.style.backgroundImage = "url('images/menuspacing.gif')";
	menuSeperator.innerHTML = '<img src="images/TransPix.gif" height="15">';
	menuSeperator.style.height = '15px';
	return menuSeperator;
}

function getSubmenu(id){
	var subMenu = document.createElement('div');
	subMenu.id = "subMenu"+id;
	subMenu.style.position = 'absolute';
	subMenu.style.visibility = 'hidden';
	subMenu.style.zIndex = '2';
	subMenu.innerHTML = '<table cellspacing="0" cellpadding="0"><tr><td><div id="subMenuContainer'+id+'" style="position:relative;"></div></td></tr></table>';
	subMenu.onmouseover = function (){ overMenu( this.id ) },
	subMenu.onmouseout	= function (){ outMenu( this.id ) },
	document.body.appendChild( subMenu );
	return subMenu;
}

function BreakMenu( container, name ){
	var menuContainer = document.createElement('div');
	menuContainer.style.position = 'relative';
	document.getElementById(container).appendChild(menuContainer);
	this.container = menuContainer;
	this.name = name;
	this.menuItems = new Array();
}

BreakMenu.prototype.addItem = function ( id, parent, caption, href ){
	var newItem = new MenuItem( id, parent, caption, href, this );
	if ( parent == 'none' ){
		this.menuItems.push(newItem);
		return true;
	}
	else{
		for( var i = 0; i < this.menuItems.length; i++ ){
			var parentItem = this.menuItems[i].getItem( parent );
			if ( parentItem != null ){
				parentItem.addItem( newItem );
				return true;
			}
		}
	}
	alert('parent not found');
}

BreakMenu.prototype.render = function(){

	var start = document.createElement('img')
	start.src = "images/MenuStartStop.gif";
	var stop = document.createElement('img')
	stop.src = "images/MenuStartStop.gif";
	this.container.appendChild(start);	
	for( i = 0; i < this.menuItems.length; i++ ){
		this.menuItems[i].render( this.container, null );
	}
	this.container.appendChild(stop);
	
	
	setPosition(this.container);
}


function setPosition(container){
	for( var i = 0; i < container.childNodes.length; i++ ){
		if ( container.childNodes[i].subMenu != null ){
			var top = container.offsetParent.offsetTop+container.childNodes[i].offsetTop;
			var left = container.offsetParent.offsetLeft+container.childNodes[i].offsetWidth+1;
			container.childNodes[i].subMenu.style.left= left+'px';
			container.childNodes[i].subMenu.style.top= top+'px';
			setPosition(container.childNodes[i].subMenu.subMenuContainer);
		}
	}
}

function MenuItem( id, parent, caption, href, menu ){
	this.id = id;
	this.parent = parent;
	this.caption = caption;
	this.href = href;
	this.menu = menu;
	this.htmlItem = null;
	this.children = new Array();
}

MenuItem.prototype.addItem = function( newItem ){
	this.children.push( newItem );
}

MenuItem.prototype.toString = function(  ){
	return this.id;
}

MenuItem.prototype.getItem = function( id ){
	if ( this.id == id ){
		return this;
	}
	else{
		for( var i = 0; i < this.children.length; i++ ){
		var item = this.children[i].getItem( id );
			if ( item != null)
				return item;
		}
	}
	return null;	
}

MenuItem.prototype.render = function( container, parentMenu ){

	if ( this.caption == '---' )
		return container.appendChild( getSeperator() );
		
	var html = '<img src="images/MenuBullet.gif" width="21" height="25" id="bulletmenuItem'+this.id+'" alt="*" border="0" align="absmiddle" />' +this.caption;
		
	var menuItem = document.createElement('div');
	
	pushProperties	( 	{ 
							innerHTML	: html, 
							parent		: parentMenu,
							toHref		: this.href,
							id			: 'menuItem' + this.id,
							onmouseover : function (){ overItem( this.id ) },
							onmouseout	: function (){ outItem( this.id ) },
							onclick		: function (){ clickItem( this.id ) }
						}, 
						menuItem
					);
	
	pushProperties( menuItemStyle, menuItem.style );
	container.appendChild( menuItem );
	
	if ( this.hasChildren()){
		var subMenu = getSubmenu(this.id);
		var subMenuContainer = document.getElementById('subMenuContainer'+this.id);
		subMenu.subMenuContainer = subMenuContainer;
		for( var j=0; j< this.children.length; j++ ){
			this.children[j].render( subMenuContainer, subMenu );
		}
		menuItem.subMenu = subMenu;
		subMenu.parent = parentMenu;
	}
}

MenuItem.prototype.hasChildren = function (){
	return this.children.length != 0;
}