
/*
  src: index van hoofdmenu item -> eerste hoofdmenu item heeft index 0, n-de hoofdmenu item heeft index (n - 1)
  target: naam (id) van het submenu
*/
function initUkm(offset_left,offset_top,offset_top_inc,submenu_width,submenu_height)
{//deze functie zet de globale variabeles voor offset
	gOffsetLeft=offset_left
	gOffsetTop=offset_top;
	gOffsetTopInc=offset_top_inc;
	gSubmenuWidth=submenu_width;
	gSubmenuHeight=submenu_height;
}

function showMenu( src ) 
{
	target="submenu"+src
	target_el = document.getElementById( target );
  // y position
  // aantal pixels van boven + inc * het hoeveelste item het is
	offsetTop = gOffsetTop + gOffsetTopInc * src;

  // x position
  // aantal pixels van de linkerkant
  offsetLeft = gOffsetLeft;
  	
	target_el.style.top = offsetTop + 'px';	
  	target_el.style.left = offsetLeft + 'px';	
	target_el.style.visibility = 'visible';
}

function hideMenu( src ) 
{
	target="submenu"+src
	target_el = document.getElementById( target );
	target_el.style.visibility = 'hidden';
}

/* Argument is een lijstje met id's van submenu's, beginnend vanaf het eerste submenu,
   en eindigend met de id van het submenu dat de functie aanroept

   De eerste entry in deze array is de index van het menuitem in zijn eigen submenu
*/
function showSubMenu(idValue) 
{
  var offsetLeft = 0;
  var offsetTop = 0;
  var displacement = 0;
//showSubMenu2('0', 'submenu1','submenu1_0')  => 1,0
//showSubMenu2('3', 'submenu1','submenu1_0','submenu1_0_3)  => 1,0,3
	idsToShow=[];
	idCreate='submenu';
	args=idValue.split("_");
  for( i = 0; i < args.length; i++ ) 
  {
    if( i == args.length-1 ) 
      displacement = parseInt( args[ i ] ) * gSubmenuHeight;
    if (i)
    	idCreate+="_";
    idCreate+=args[i];
    idsToShow[i]=idCreate;
   
  }
  for (id in idsToShow)
  {
		el = document.getElementById(idsToShow[id]);
		el.style.visibility = 'visible';
      

    // get coordinates from parent
		if( id == ( args.length - 2 ) ) 
		{
			offsetLeft  = parseInt( el.style.left ) + gSubmenuWidth;
			offsetTop = parseInt( el.style.top ) + displacement;
		} else if( id == ( args.length -1 ) ) 
		{
			el.style.left = offsetLeft + 'px';
			el.style.top = offsetTop + 'px';
		}
  }
}

function hideSubMenu(targetid) 
{
	target="submenu"+targetid;
  target_el = document.getElementById( target );
  target_el.style.visibility = 'hidden';
}


/*
  argument is een lijstje met id's van parent submenu's, *exclusief* het mainmenu-item
*/
function showParents() 
{
	idCreate="submenu";
	for( i = 0; i < arguments.length; i++ ) 
	{
  		if (i) idCreate+="_";
  		idCreate+=arguments[i];
		el = document.getElementById(idCreate);
		el.style.visibility = 'visible';
  	}
}

/*
  argument is een lijstje met id's van parent submenu's, *exclusief* het mainmenu-item
*/
function hideParents() 
{
	idCreate="submenu";
	for( i = 0; i < arguments.length; i++ ) 
	{
  		if (i) idCreate+="_";
  		idCreate+=arguments[i];
		el = document.getElementById(idCreate);
    el.style.visibility = 'hidden';
  }

}


//hier de constructors van de 'classes'
function Submenu(id_array)
{
	this.nr_items=0;
	this.item=[];
	this.depth=id_array.length;
	this.idNr=id_array.join("_");
	this.id="id='submenu"+this.idNr+"' ";
	if(id_array.length>1)
		parentsToShow=id_array.join();
	else
		parentsToShow="";
	this.omover="onmouseover=\"this.style.visibility = 'visible'; showParents("+parentsToShow+");\" ";
	this.omout="onmouseout=\"this.style.visibility = 'hidden'; hideParents("+parentsToShow+");\" ";
}
function SubmenuItem(aVal,tVal,hasChild,nr,subNr)
{
	this.a=aVal;
	this.t=tVal;
	this.nr=nr;
	this.subNr=subNr;
	if (hasChild)
	{
		this.omover="onmouseover=\"showSubMenu('"+this.subNr+"');\" ";
		this.omout="onmouseout=\"hideSubMenu('"+this.subNr+"');\" ";
	}
	else
	{
		this.omover="";
		this.omout="";
	}
}
function add_submenu_item(aVal,tVal,hasChild)
{
	nitem=new SubmenuItem(aVal,tVal,hasChild,this.nr_items,this.idNr+"_"+this.nr_items);
	this.item[this.nr_items]=nitem;
	this.nr_items++;
}
function render_submenu()
{
	document.write(this.values[0],
		this.id,
		this.omover,
		this.omout,
		this.values[1]
		);
	for (id in this.item)
	{
		this.item[id].render();
	}
	document.write(this.footer);
		
}
function render_submenu_item()
{
	document.write(this.values[0],
		this.omover,
		this.omout,
		this.values[1],
		this.a,
		this.values[2],
		this.t,
		this.values[3]
		);
		
}
function initSubmenu(table_value,table_close)
{
	Submenu.prototype.values=table_value.split("|");
	Submenu.prototype.footer=table_close;

}
function initSubmenuItem(td_value)
{
	SubmenuItem.prototype.values=td_value.split("|");
}
Submenu.prototype.add=add_submenu_item;
Submenu.prototype.render=render_submenu;
SubmenuItem.prototype.render=render_submenu_item;
