/**

* CSShiarchMenu v0.6

*	written by: me[AT]daantje[DOT]nl

*	last update: Sat Nov 26 13:08:45 CET 2005

*

*	Documentation:

*		Build this small script cause all the gpl-ed scripts I found where too big

*		and had too many options I never going to use, or the config for the menu

*		was not easy to set with a PHP routine.

*

*	License:

*		LGPL. (http://www.gnu.org/copyleft/lesser.txt)

*

*	Dontate:

*		Please, when you like my script, click a view banners on

*		http://www.dantje.nl Or use my pay-pal donation button.

*/



//declare

var submenu = new Array();

var tmr = new Array();

var adj = new Array();

var last_zIndex = 10000;

var lastOverId = '';





// EXAMPLE CONFIG

var alignSubmenu 	= 'bottom';		//bottom or right side of the main button.

var useLastItemCSS	= true;			//generate last menu item too

									//if false, it will behave as a normal item

									//and the css menuItemLast class will not be used

var adjustFirst		= false;		//overlap the first submenu too?

var adjustTop		= 0;			//move the submenu's some pixels. Positive number (10) for down, negative (-10) for up.

var adjustLeft		= 0;			//move the submenu's some pixels. Positive number (10) for right, negative (-10) for left.





//LE EMPRESA

submenu['menu2'] = new Array();

submenu['menu2'][0] = menuItem('Producci&oacute;n','?cont=emp&sc=produccion','');

submenu['menu2'][1] = menuItem('Garant&iacute;a y Calidad','?cont=emp&sc=garantiaycalidad','');

submenu['menu2'][2] = menuItem('Distribuci&oacute;n y Log&iacute;stica','?cont=emp&sc=cendislogis','');

submenu['menu2'][3] = menuItem('I+D','?cont=emp&sc=id','');

submenu['menu2'][4] = menuItem('Administraci&oacute;n','?cont=emp&sc=administracion','');

submenu['menu2'][5] = menuItem('RRHH','?cont=emp&sc=rrhh','');

//PRODUCTOS

submenu['menu3'] = new Array();

submenu['menu3'][0] = menuItem('Productos','?cont=prod','');

submenu['menu3'][1] = menuItem('Sistema de Trazabilidad','?cont=trazabilidad','');

//NOVEDADES

submenu['menu4'] = new Array();

submenu['menu4'][0] = menuItem('Productos','?cont=nov','');

submenu['menu4'][1] = menuItem('Institucionales','?cont=infoc&sc=p','');





//INFORMACIÓN

submenu['menu5'] = new Array();

submenu['menu5'][0] = menuItem('Publicaciones','?cont=infoc&sc=pub','');

submenu['menu5'][1] = menuItem('Art&iacute;culos Recomendados','?cont=infoc&sc=mat','');

submenu['menu5'][2] = menuItem('Eventos','?cont=eve','');



// END OF EXAMPLE CONFIG





//build or unhide submenu div...

function buildSubmenu(obj,align){





	lastOverId = obj.id;



	//overrule default alignment of this submenu

	if(!align)

		align = alignSubmenu;



	//get common part of div id

	menuPath = obj.id.split('_');



	//unset mousout of parent menus and make sure they are visible...

	x = "div";

	for(i=0;i<menuPath.length;i++){

		x+= '_' + menuPath[i];

		if(document.getElementById(x)){

			if(tmr[x])

				window.clearTimeout(tmr[x]);

			document.getElementById(x).style.visibility = 'visible';

		}

	}



	//check if we have a submenu of the obj...

	if(submenu[obj.id]){

		//calc position of mouseover

		d = obj;

		if(d){

			L_pos = d.offsetLeft + d.offsetWidth;

			T_pos = d.offsetTop;

			while(d.offsetParent){

				d = d.offsetParent;

				L_pos+= d.offsetLeft;

				T_pos+= d.offsetTop;

			}

		}



		//patch first submenu to go right below the main buttons...

		if(obj.className.indexOf('menuItem') < 0 && align == 'bottom'){

			L_pos-= obj.offsetWidth;

			T_pos+= obj.offsetHeight;

		}



		//move the submenu (overlap?)

		if((adjustTop || adjustLeft) && (adjustFirst || (!adjustFirst && obj.className.indexOf('menuItem') >= 0))){

			L_pos+= adjustLeft;

			T_pos+= adjustTop;

		}



		//Only parse when position is higher than 0,0... Else we dont have the right position!

		if(L_pos > 0 && T_pos >0){

			//check if allready build...

			c = document.getElementById('div_' + obj.id);

			if(c){

				//unhide...

				c.style.visibility = 'visible';

				c.style.zIndex = last_zIndex++;



				//hard replace

				c.style.top = (T_pos - 1) + "px";

				c.style.left = (L_pos + 0) + "px";

			}else{

				//build new div

				subObj = document.createElement('div');

				subObj.id = 'div_' + obj.id;

				subObj.className = 'submenu';

				subObj.style.position = 'absolute';

				subObj.style.zIndex = last_zIndex++;

				subObj.style.top = (T_pos - 1) + "px";

				subObj.style.left = (L_pos + 0) + "px";



				//write div to the body...

				document.getElementsByTagName('body')[0].appendChild(subObj);



				//build html for submenu

				content = "";

				m = submenu[obj.id];

				for(i=0;i<m.length;i++){



					//determin target for onclick...

					//	(sorry, I should rewrite this routine...)

					if(m[i][1]){

						if(m[i][1].substring(0,11) == 'javascript:'){

							act = m[i][1].substring(11);

						}else{

							if(!m[i][2] || m[i][2] == '_self')

								act = "self.location.href='" + m[i][1] + "';";

							else if(m[i][2] == '_top')

								act = "top.location.href='" + m[i][1] + "';";

							else if(m[i][2] == '_parent')

								act = "parent.location.href='" + m[i][1] + "';";

							else if(m[i][2] == '_blank')

								act = "window.open('" + m[i][1] + "');";

							else

								act = "window.frames['"+m[i][2]+"'].location.href='" + m[i][1] + "';";

						}

					}



					//make item

					content+= "<div onmouseout=\"hideSubmenu(this)\" onmouseover=\"buildSubmenu(this)\" "+ (m[i][1] ? "onclick=\""+ act + "\" " : "") +"class=menuItem" + (i==0 ? 'First' : (i==(m.length -1) && useLastItemCSS ? 'Last' : '')) + " id=\"" + obj.id + "_" + i +"\">" + m[i][0] + "</div>";

					adj[i] = obj.id + "_" + i;

				}



				//insert new menu

				subObj.innerHTML = content;

			}

		}

	}

}



//hide a submebu div

function hideSubmenu(obj){



	//get common part of div id

	closePath = obj.id.split('_');



	//hide path

	x = "div";

	for(i=0;i<closePath.length;i++){

		x+= '_' + closePath[i];

		if(document.getElementById(x))

			tmr[x] = window.setTimeout("document.getElementById('"+x+"').style.visibility = 'hidden';",0);

		//The timeout above is needed for MSIE browsers... Or else the menu's will disapear on EVERY mousout!!!

		//Please get a normal browser like Firefox, Mozilla or Opera!!

	}

}



//add an menu item to the config array (called in the config lines)

function menuItem(txt,url,tar){

	return new Array(txt,url,tar);

}



//change div's on mouse over and out...

document.onmouseover = function(e){

	obj = document.all ? event.srcElement : e.target;

	if(obj.className == 'menuItemFirst' || obj.className == 'menuItem' || obj.className == 'menuItemLast')

		obj.className+='Over';

}

document.onmouseout = function(e){

	obj = document.all ? event.srcElement : e.target;

	if(obj.className == 'menuItemFirstOver' || obj.className == 'menuItemOver' || obj.className == 'menuItemLastOver')

		obj.className = obj.className.substring(0,(obj.className.length - 4));

}



//*** Patch for firefox bug with focus on mouseover...

//		This function should be called onMouseOver of every iFrame that's under the menu structure.

function iFramePatch(){

	if(!document.all && lastOverId)

		hideSubmenu(document.getElementById(lastOverId));

}




