function TMenuItem( padre, submenu, deltax, deltay ){
  this.padre = padre;
  this.submenu = submenu;
  this.deltax = deltax;
  this.deltay = deltay;
  return this;
}

function TMenu( id, visible, padre, colorFondoInactivo, colorLetraInactivo, colorFondoActivo, colorLetraActivo, iconourl ){
  this.id= id;
  this.visible= visible;
  this.tmp_visible= 0;
  this.caminoActivo = 0;
  this.padre= padre;
  this.colorFondoInactivo = colorFondoInactivo;
  this.colorLetraInactivo = colorLetraInactivo;
  this.colorFondoActivo = colorFondoActivo;
  this.colorLetraActivo = colorLetraActivo;
  this.iconourl= iconourl;
  if ( iconourl != '' ){
    this.icono= createLoadImg( iconourl );
    this.transgif= createLoadImg( '/trans.gif' );
  }



  return this;
}

function createLoadImg( url ){
  var a=new Image();
  a.src=url;
  return a;
}





var nombreDiv_visible= '';
var nombreDiv_ocultarR= '';
var timerR = '';

function timeoutR( ){
 if ( nombreDiv_ocultarR != '' ){
 // ocultar( nombreDiv_ocultarR );
   clearCamino();
   ocultarElBosque();
 }
}

function clearCamino( ){
  var n= menues.length;
  for ( var k = 0; k < n; k++ ){
    menues[k].caminoActivo = 0;
  }
}

function marcarCamino( kmenu ){
  var k = kmenu;
  while (( k >= 0 )&& ( k != '' )){
    menues[k].caminoActivo = 1;
    k= menues[k].padre;
  }
}

function ocultarElBosque(  ){
  var n= menues.length;
  for ( var k = 0; k < n; k++ ){
    if (( menues[k].caminoActivo == 0 ) && ( menues[k].tmp_visible==1 ) ) ocultar( k );
  }
}


function mostrar( nombreDiv, delta_x, delta_y ) {
//logconsola( 'mostrar: '+nombreDiv );
  if ( nombreDiv != nombreDiv_visible ){
    clearCamino(); marcarCamino( nombreDiv ); ocultarElBosque( );
//    if ( nombreDiv_visible != '' ) ocultar( nombreDiv_visible );
    posicionarDiv( 'menu_'+nombreDiv, delta_x, delta_y );
    var obj= document.getElementById( 'menu_'+nombreDiv );
    obj.style.visibility='visible';
    nombreDiv_visible= nombreDiv;
    if ( menues[ nombreDiv ].visible == 0 ) menues[ nombreDiv ].tmp_visible= 1;
  }else{
    if ( nombreDiv == nombreDiv_ocultarR ){
      nombreDiv_ocultarR = '';
      clearTimeout( timerR );
    }
  }
}

function ocultar( nombreDiv ) {
//logconsola( 'ocultar: '+nombreDiv );
    var obj= document.getElementById( 'menu_'+nombreDiv );
    obj.style.visibility='hidden';
    nombreDiv_visible= '';
    if ( nombreDiv== nombreDiv_ocultarR ) nombreDiv_ocultarR = '';
    menues[ nombreDiv ].tmp_visible= 0;
}

function ocultarR( nombreDiv, ms_timeout ) {
//logconsola( 'ocultarR: '+nombreDiv );

  if ( nombreDiv_ocultarR == nombreDiv ){
    mousein( nombreDiv );
  }

  nombreDiv_ocultarR= nombreDiv;
  timer= setTimeout( "timeoutR()", ms_timeout );
}


function mousein( nombreDiv ){
//logconsola( 'mousein: '+nombreDiv );
  if ( nombreDiv == nombreDiv_ocultarR ){
    nombreDiv_ocultarR = '';
    clearTimeout( timerR );
  }
}

function mouseout( nombreDiv ){
//logconsola( 'mouseout: '+nombreDiv );
  ocultarR( nombreDiv, 1000 );
}

function posicionarDiv( nombreDiv, delta_x, delta_y ){
  var nombrePos = nombreDiv+'_POS';

  var obj1 = document.getElementById(nombrePos);
  var coors = findPos(obj1);
  var obj2= document.getElementById( nombreDiv );
  obj2.style.left = (coors[0] + parseInt(delta_x) )+ 'px';
  obj2.style.top = (coors[1] + parseInt(delta_y) ) + 'px';

// logconsola( 'posicionarDiv: '+nombreDiv+' x:'+coors[0]+' y:'+coors[1] );
// logconsola( 'posicionarDiv: '+nombreDiv+' x:'+obj2.style.left+' y:'+obj2.style.top );

}

function findPos(obj)
{
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft
      curtop += obj.offsetTop
    }
  }
  return [curleft,curtop];
}




// el mouse ingrea a un menutab (mt)
function in_mt( id ){
  var fila = document.getElementById( 'mt_'+id );
  fila.style.color=menues[menuitems[id].padre].colorLetraActivo;
  fila.style.backgroundColor = menues[menuitems[id].padre].colorFondoActivo;
  var lnk = document.getElementById( 'ml_mt_'+id );
  lnk.style.color= menues[menuitems[id].padre].colorLetraActivo;

  if ( menuitems[id].submenu >= 0 ){
    mostrar( menuitems[id].submenu, menuitems[id].deltax, menuitems[id].deltay );
  }
  if ( menues[menuitems[id].padre].iconourl != '' ){
       document.images['img_mt_'+id].src= menues[menuitems[id].padre].icono.src;
  }
}

function out_mt( id ){
  var fila = document.getElementById( 'mt_'+id );
  fila.style.color=menues[menuitems[id].padre].colorLetraInactivo;
  fila.style.backgroundColor = menues[menuitems[id].padre].colorFondoInactivo;
  var lnk = document.getElementById( 'ml_mt_'+id );
  lnk.style.color= menues[menuitems[id].padre].colorLetraInactivo;
  if ( menuitems[id].submenu >= 0 ){
    ocultarR( menuitems[id].submenu, 2000 );
  }
  if ( menues[menuitems[id].padre].iconourl != '' ){
       document.images['img_mt_'+id].src= menues[menuitems[id].padre].transgif.src;
  }
}
