/*
	
	Script que permite mostrar un DIV sobre un select(problema en IE), mostrando un iframe
	sobre la superficie que ocupará el DIV y tapando esa parte del select
	
	A tener en cuenta:

	*Style: Estilo que debe ser incluido
	<style type="text/css">
	
		div.menu {
		  position: absolute;
		  visibility: hidden;
		  z-index: 101;
		  background-color: #FFF;
		  width: 160px;
		}
		
	</style>
	
	//--------------------------------------------------------------------------//
	
	*HTML: Modelo de html que se debe respetar
	<div>
	  <a href="" onclick="return dos_(event, 'arquivoMenu');">Clique aqui para abrir e fechar o Menu</a>
	</div>
	
	<iframe id="iFrameMenu" src="" style="visibility:hidden; position:absolute; z-index:2"></iframe>
	
	<div id="arquivoMenu" class="menu">
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	  <div>Item que vai aparecer no Menu 1</div>
	</div>
	
	<br>
	
	<select style="z-index:1" >
		<option>Opção um que vai estar no componente</option>
		<option>Opção dois que vai estar no componente</option>
		<option>Opção tres que vai estar no componente</option>
	</select>

*/
/* detecto el browser */
function dos_Browser() {

  var ua, s, i;

  this.isIE    = false;  // Internet Explorer
  this.isOP    = false;  // Opera
  this.isNS    = false;  // Netscape
  this.version = null;

  ua = navigator.userAgent;

  s = "Opera";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isOP = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }

  s = "MSIE";
  if ((i = ua.indexOf(s))) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }
}

var browser = new dos_Browser();

var botonActivo = null;

var divFrame = null;
//--------------------------------------------------------------------//
/* primer evento q se dispara */
function dos_ClickBoton(event, menuId, distLeft) {

  var boton;

  if (browser.isIE)
    boton = window.event.srcElement;
  else
    boton = event.currentTarget;

  if (boton.menu == null) {
    boton.menu = document.getElementById(menuId);
  }

  if (botonActivo != null)
    dos_cierraMenu(botonActivo);

  if (boton != botonActivo) {
    dos_abreMenu(boton, distLeft);
    botonActivo = boton;
  } else {
    botonActivo = null;
  }
  
  return false;

}
//--------------------------------------------------------------------//
function dos_abreMenu(boton,distLeft) {

  boton.menu.style.zIndex = 4

  if (browser.isIE) {

    x = dos_getPageOffsetLeft(boton.menu,distLeft);
    y = dos_getPageOffsetTop(boton.menu);
    
    w = boton.menu.offsetWidth;
    h = boton.menu.offsetHeight;
  
    frameM = document.getElementById("iFrameMenu");

    frameM.style.left = x + "px";
    frameM.style.top  = y + "px";
    frameM.style.width = w + "px";
    frameM.style.height  = h + "px";
    
    frameM.style.zIndex = (boton.menu.style.zIndex-1);
    
    frameM.style.visibility = "visible";
  }
  
  
  boton.menu.style.visibility = "visible";
}
//--------------------------------------------------------------------//
function dos_cierraMenu(boton) {

  if (boton.menu != null) {

    if (browser.isIE) {

        frameM = document.getElementById("iFrameMenu");
  
        frameM.style.visibility = "hidden";
      }

    boton.menu.style.visibility = "hidden";
  }
}

//--------------------------------------------------------------------//
function dos_getPageOffsetLeft(el,distLeft) {

  var x=distLeft;
  //x = el.offsetLeft;
  if (el.offsetParent != null)
    x += dos_getPageOffsetLeft(el.offsetParent,distLeft);

  return x;
}
//--------------------------------------------------------------------//
function dos_getPageOffsetTop(el) {

  var y;

  y = el.offsetTop;
  if (el.offsetParent != null)
    y += dos_getPageOffsetTop(el.offsetParent);

  return y;
}
//--------------------------------------------------------------------//