Menu = function(x,p)
{
	// id do menu
	var id = (isString(x)) ? x : null;
	// se o id não for válido, para a execução do script
	if(isNull(id)) return;
	// recebe o container do menu
	var parent = document.getElementById(p);
	//referência ao próprio objeto
	var obj = this;
	// cria o menu
	var menu = jQuery.create("ul",{"id":id,"class":"menu"},[]);
	
	// função para adicionar os itens do menu
	this.addItem = function(m,l,d,t,i)
	{
		// recebe um novo submenu
		var submenu = (!isNull(m) && obj.constructor == m.constructor) ? m : null;
		// recebe o link
		var link = (isString(l)) ? replaceAll(l, "&amp;", "&") : "#";
		// recebe o texto do link
		var descricao = (isString(d)) ? d : "link";
		// recebe o alvo do link
		var target = (isString(t)) ? t : "";
		// cria o item do menu
		var li = jQuery.create("li",{},["a",{"href":link,"target":target,"title":descricao},[descricao]]);
		// se existe um novo submenu, configura-o
		jQuery(li).prepend("<div style='height:100%;background:'>"+((isString(i))?("<img src='"+i+"' title='' alt='' />"):"&nbsp;")+"</div>");
		if(!isNull(submenu))
		{
			jQuery(li).append(submenu.getObj());
			jQuery(li).addClass("submenu");
			jQuery("a:first",li).addClass("seta");
			li.onmouseover = function(){jQuery(submenu.getObj()).css({"visibility":"visible"});};
			li.onmouseout = function(){jQuery(submenu.getObj()).css({"visibility":"hidden"});};
		}
		// adiciona o item ao menu
		jQuery(menu).append(li);
	};
	// retorna o próprio objeto
	this.getObj = function()
	{
		return menu;
	};
	// desenha o obejto na tela
	this.draw = function()
	{
		jQuery(parent).append(menu);
		jQuery("a",menu).click(function(){this.blur();});		
	};
};

function replaceAll(string, token, newtoken) {
	while (string.indexOf(token) != -1) {
 		string = string.replace(token, newtoken);
	}
	return string;
}

MenuBar = function(x,p)
{
	// id do menu
	var id = (isString(x)) ? x : null;
	// se o id não for válido, para a execução do script
	if(isNull(id)) return;
	// recebe o container do menu
	var parent = document.getElementById(p);
	//referência ao próprio objeto
	var obj = this;
	// cria o menu
	var menu = jQuery.create("ul",{"id":id,"class":"menubar"},[]);
	
	// função para adicionar os itens do menu
	this.addItem = function(m,l,d,t)
	{
		// recebe um novo submenu
		var submenu = (!isNull(m) && m.constructor == Menu) ? m : null;
		// recebe o link
		var link = (isString(l)) ? l : "#";
		// recebe o texto do link
		var descricao = (isString(d)) ? d : "link";
		// recebe o alvo do link
		var target = (isString(t)) ? t : "";
		// cria o item do menu
		var li = jQuery.create("li",{"class":"menuvertical"},["a",{"href":link,"target":target,"title":descricao},[descricao]]);
		// se existe um novo submenu, configura-o
		if(!isNull(submenu))
		{
			jQuery(li).append(submenu.getObj());
			li.onmouseover = function(){jQuery(submenu.getObj()).css({"visibility":"visible"});};
			li.onmouseout = function(){jQuery(submenu.getObj()).css({"visibility":"hidden"});};
		}
		// adiciona o item ao menu
		jQuery(menu).append(li);
	};
	// retorna o próprio objeto
	this.getObj = function()
	{
		return menu;
	};
	// desenha o obejto na tela
	this.draw = function()
	{
		jQuery(parent).append(menu);
		if(navigator.appVersion.indexOf("MSIE 6") > -1)jQuery("li.menuvertical").each(function(){jQuery(this).css({"width":jQuery("a",this).width()});});
		var w = 0;
		jQuery("li.menuvertical").each(function(){w += this.offsetWidth;});
		var h = 0;
		jQuery("li.menuvertical").each(function()
		{
			if(this.offsetHeight > h)h = this.offsetHeight;
		}).each(function()
		{
			jQuery(this).css({"height":h});
			jQuery("a:first","li.menuvertical").css({"height":h-9});
		});
		jQuery(menu).css({"width":w,"height":h});
		jQuery("ul.menu:first","li.menuvertical").css({"margin-left":-1});
		jQuery("a",menu).click(function(){this.blur();});
	}
};

jQuery(document).ready(function()
{
	jQuery("ul.menu/li").each(function(){jQuery("div:first",this).css({"height":this.offsetHeight-1});});
	if(jQuery.browser.msie)document.execCommand("BackgroundImageCache", false, true);
});
