/*******************************************/
/* Javascript by gonchuki - (c)soho - 2006 */
/*******************************************/

/* este script attachea los eventos necesarios para la barra de menus */

menu_bar_init = function() {
	var menu = document.getElementById('menu_bar');
	var items = menu.getElementsByTagName('A');
	
	for (var i = 0; i < items.length; i++) {
		var li = find_parent(items[i], 'LI');
		var ul = li.getElementsByTagName('UL')[0];
		var p_ul = find_parent(find_parent(li, 'UL'), 'UL');

		items[i].onmouseover = function() {
			hide_menu_s(this);
		}
				
		if (ul) {
			//agrega la clase que muestra la flechita de presencia de sub-menu
			//li.className = 'con_menu';
			
			items[i].onmouseover = function() {
				hide_menu_s(this); show_menu(this); 
			}
			items[i].onmouseout = function() {
				hide_submenu(this);
			}
			
			//setea el ancho minimo del menu al ancho del parent para evitar menus cortos.
			ul.style.minWidth = items[i].clientWidth + 'px';
			
			ul.onmouseover = function() {
				clearTimer();
			}
			ul.onmouseout = function() {
				hide_submenu(find_parent(this, 'LI').getElementsByTagName('A')[0]);
			}
			ul.onclick = function() {
				hide_menu();
			}
		}
		
	}
}

var timer;
var currentMenu;
var currentSubMenu;

function show_menu(element) {
	var li = find_parent(element, 'LI');
	var ul = li.getElementsByTagName('UL')[0];
	var p_ul = find_parent(find_parent(li, 'UL'), 'UL');
	var c_li = ul.getElementsByTagName('LI')[0];
	
	if (ul) {
		clearTimer();
		if (p_ul == null) {
			hide_menu();
		} else {
			currentSubMenu = ul;
			ul.style.left = (li.offsetLeft + find_parent(li, 'UL').clientWidth) + 'px';
			ul.style.top = (li.offsetTop) + 'px';
		}
		if (c_li) {
			//element.className = 'current';
			ul.style.display = 'block';
			
			// <oink>
			if (p_ul == null) {
				var items = ul.getElementsByTagName('A');
				var max = 0;
				for (var i = 0; i < items.length; i++) {
					if (max < items[i].clientWidth) {
						max = items[i].clientWidth;
					}
				}
				for (var i = 0; i < items.length; i++) {
					items[i].style.width = (max - 24) + 'px';
				}
			}
			// </oink>
		}
	}
}

function hide_submenu(element) {
  var li = find_parent(element, 'LI');
	var ul = li.getElementsByTagName('UL')[0];
	var p_ul = find_parent(find_parent(li, 'UL'), 'UL');
	
	if (p_ul == null && ul) {
		currentMenu = ul;
		timer = setTimeout("hide_menu();", 200);
	}
}

function hide_menu() {
	//recursively hide open submenus
	if (currentSubMenu) {
		while (currentSubMenu != currentMenu) {
			find_parent(currentSubMenu, 'LI').getElementsByTagName('A')[0].className = '';
			currentSubMenu.style.display = 'none';
			currentSubMenu = find_parent(currentSubMenu, 'UL');
		}
		currentSubMenu = null;
	}
	
	//hide current menu
	if (currentMenu) {
		//find_parent(currentMenu, 'LI').getElementsByTagName('A')[0].className = '';
		currentMenu.style.display = 'none';
		currentMenu = null;
	}
}

function hide_menu_s(caller) {
	if (currentSubMenu && find_parent(caller, 'UL') != currentSubMenu) {
		//find_parent(currentSubMenu, 'LI').getElementsByTagName('A')[0].className = '';
		currentSubMenu.style.display = 'none';
		//currentSubMenu = null;
	}
}

function clearTimer() {
	if (timer) {
		clearTimeout(timer);
		timer = 0;
	}
}

function find_parent(element, name) {
	var ret = element;
	if (ret != null) ret = ret.parentNode;
	
	while (ret != null && ret.nodeName != name) {
		ret = ret.parentNode;
	}
	return(ret);
}	

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

addLoadEvent(menu_bar_init);
