if(typeof HTMLElement!="undefined" && !
		HTMLElement.prototype.insertAdjacentElement){
			HTMLElement.prototype.insertAdjacentElement = function
		(where,parsedNode)
			{
				switch (where){
				case 'beforeBegin':
					this.parentNode.insertBefore(parsedNode,this)
					break;
				case 'afterBegin':
					this.insertBefore(parsedNode,this.firstChild);
					break;
				case 'BeforeEnd':
					this.appendChild(parsedNode);
					break;
				case 'afterEnd':
					if (this.nextSibling) 
		this.parentNode.insertBefore(parsedNode,this.nextSibling);
					else this.parentNode.appendChild(parsedNode);
					break;
				}
			}
			HTMLElement.prototype.insertAdjacentHTML = function
			(where,htmlStr)
				{
					var r = this.ownerDocument.createRange();
					r.setStartBefore(this);
					var parsedHTML = r.createContextualFragment(htmlStr);
					this.insertAdjacentElement(where,parsedHTML)
				}
}


ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false

var onClose = new Array(); 
var ancho_ventana = 0;

function oculta(obj) {

	if (ns4) obj.visibility = "hide"
	else if (ie4) {obj.style.visibility = "hidden";}
}

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = 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;
  }
}

var browser = new Browser();

var dragObj = new Object();
dragObj.zIndex = 0;
var capa_accion='';

function dragStart(event, id){
 
  capa_accion=id+'cab_cp';

  //var myzIndex=eval('top.zIndex'+id+'.value');
  //alert(eval('top.zIndex'+id+'.value'));
  var myzIndex=top.document.getElementById('zIndex'+id).value;
  top.document.getElementById(capa_accion).style.height = "600px";

  id=id+'_mod';
  var el;
  var x, y;

  if (id)
    dragObj.elNode = document.getElementById(id);
  else {
    if (browser.isIE)
      dragObj.elNode = window.event.srcElement;
    if (browser.isNS)
      dragObj.elNode = event.target;

    if (dragObj.elNode.nodeType == 3)
      dragObj.elNode = dragObj.elNode.parentNode;
  }

	// Coje posicion del cursor respecto a la pagina

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

	// guarda las posiciones de inicio del cursor y elemento

  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;

	// Actualiza los elementos z-index
	dragObj.elNode.style.zIndex = myzIndex;//++dragObj.zIndex;;	

	// captura los eventos mousemove y mouseup de la pagina

  if (browser.isIE) {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup",	dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function dragGo(event) {

  	var x, y;
	var maxy = top.document.getElementById(nameCuerpo).style.height;
	maxy = maxy.substring(0,parseInt(maxy.length-2));
	
  // Coje la posición del cursor respecto a la pagina

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
    if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }
	
	if (((x > 0) && (x < 790)) &&
		((y > 0) && (y < maxy))){
		dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
		dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";
	}

  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function dragStop(event) {


	top.document.getElementById(capa_accion).style.height = "30px";

	// Para de capturar los eventos del mouse

  if (browser.isIE) {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup",	dragStop);
  }
  if (browser.isNS) {
    document.removeEventListener("mousemove", dragGo,	true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}

function getOpener(nombre_ventana) {

    if (!nombre_ventana) nombre_ventana=getMyId();
    //var strWin=eval('top.windowName'+nombre_ventana+'.value');
    var strWin=top.document.getElementById('windowName'+nombre_ventana).value;
    if (strWin=='top.') strWin='top';
    
    return(eval(strWin+'.window'));
}

function enPopup() {

	return (top!=window);
}

function getMyId() {

  return parent.name.substring(parent.name.length-6,0);
}


function abrirVentanaModal(nombre_ventana,url_txt,arriba,izquierda,ancho,alto,pForm){
      //Esta variable se usa para que cree con las dimensiones correctas la capa para mover la pop
      //es decir que la cruz que esta a la derecha que no este debajo de la capa 
      //margen que se aplica a cada lado de la popup.

      margen = 20;
      ancho_ventana = ancho - 16;
      ancho_ventana = ancho_ventana + margen;
      ancho = ancho + margen;   
      izquierda = (screen.width - ancho) / 2;
      
	  //En este trozo de codigo validamos la posici?n de la izquierda y la anchura de la pop
	  //para que no salga partida en caso de que la pagina se abra en otras dimensiones
      if((izquierda + ancho) > top.document.body.offsetWidth){
        izquierda = top.document.body.offsetWidth - ancho - 15 ;
      }
      
      if(izquierda < 10){
        ancho = ancho + izquierda - 15;
		izquierda = 10;
      }
      
	  //Aqui hacemos lo mismo pero con la posición de arriba y la altura 
      if((arriba + alto + 20) > top.document.body.offsetHeight){
        arriba = top.document.body.offsetHeight - alto - 20;
      }
      
      if(arriba < 10){
        alto = alto + arriba - 15;
		arriba = 10;
      }
	
        if (!top.z_Index) top.z_Index=0;

        makeLayer(nombre_ventana,this);
		
        var nivel = "";
        var path =top.location.pathname;
	
		if(path == '/' || path.substr(0,path.indexOf('/',1)+1) == '')
			path = '../../';
		else
			path = path.substr(0,path.indexOf('/',1)+1)
		
        var frameCabecera=eval("top." + nombre_ventana + "cab_if");
        var frameBorde=eval("top." + nombre_ventana + "_borde");
	if (!frameCabecera.document.body || frameCabecera.document.body.innerHTML=="") {
	    frameCabecera.location.href = '';
	    frameCabecera.document.write(HTMLCabecera(nombre_ventana,path,ancho));
	    frameBorde.document.write(HTMLBorde(nombre_ventana,alto,ancho,path));
    }
    
	top.z_Index+=2;
	
    var myzIndex=top.z_Index;//eval('top.zIndex'+nombre_ventana+'.value');
    
    //eval('top.zIndex'+nombre_ventana).value=myzIndex;
    top.document.getElementById('zIndex'+nombre_ventana).value=myzIndex;
    
    //var myOpener=eval('top.windowName'+nombre_ventana);
    var myOpener=top.document.getElementById('windowName'+nombre_ventana);
	var x=this;
    var strWin=this.name;
    
	while (x.parent!=top) {

        strWin=x.parent.name+'.'+strWin;
    	x=x.parent;
	}
        
    myOpener.value='top.'+strWin;
	top.document.getElementById(nombre_ventana+"cortina_cp").style.visibility = "visible";
	top.document.getElementById(nombre_ventana+"_mod").style.visibility = "visible";
	
	if(!pForm){
		 eval("top.frames['" + nombre_ventana + "_borde'].document.getElementById('"+nombre_ventana+"frameBody')").src = url_txt;
		 top.frames[nombre_ventana + '_borde'].document.getElementById(nombre_ventana + 'frameBody').style.visibility="visible";       	
	}else{
    	pForm.target=eval("top.frames['" + nombre_ventana + "_borde'].frames['"+nombre_ventana+"frameBody']").name;
    	top.frames[nombre_ventana + '_borde'].document.getElementById(nombre_ventana + 'frameBody').style.visibility="visible";       		  
        pForm.submit();
    }
    
  	x=top.document.documentElement.scrollLeft+top.document.body.scrollLeft+izquierda;
	y=top.document.documentElement.scrollTop+top.document.body.scrollTop+arriba;
	top.document.getElementById(nombre_ventana+"_mod").style.zIndex = myzIndex;
	top.document.getElementById(nombre_ventana+"_cp").style.visibility = "visible";
    top.document.getElementById(nombre_ventana+"cab_cp").style.visibility = "visible";
	top.document.getElementById(nombre_ventana+"_mod").style.top = y + "px";
	top.document.getElementById(nombre_ventana+"_mod").style.left = x + "px";
	
	/*Relativo al iframe del comprendido entre los bordes y donde se pinta el jsp */
	top.document.getElementById(nombre_ventana+"_borde").style.height = alto+9;
	top.window.frames[nombre_ventana+"_borde"].document.getElementById(nombre_ventana+"frameBody").style.height = alto;
	/******************************************************************************/
	top.window.frames[nombre_ventana+"_borde"].document.getElementById(nombre_ventana+"frameBody").style.width = (ancho - 4) + "px";	
	top.document.getElementById(nombre_ventana+"_borde").style.width = (ancho) + "px";
    top.document.getElementById(nombre_ventana+"cab_if").style.width = (ancho) + "px";
	top.document.getElementById(nombre_ventana+"_mod").style.width = (ancho) + "px";
	top.document.getElementById(nombre_ventana+"cab_cp").style.width = (ancho) + "px";
	top.document.getElementById(nombre_ventana+"_cp").style.width = (ancho)+ "px";
}


function getFrameName(nombre_ventana) {

	   if (!nombre_ventana) nombre_ventana=getMyId();
	   //var tituloCabecera=top.document.getElementById(nombre_ventana + "cab_if").getAttribute("tituloDiv");	   
	   var tituloCabecera1=window.frames[nombre_ventana + "cab_if"];
	   var tituloCabecera=tituloCabecera1.document.getElementById("tituloDiv");
	   var pathPagina=tituloCabecera.innerHTML=eval("top." + nombre_ventana + "_borde."+nombre_ventana+"frameBody").location.pathname;
	   var tipoArchivo=pathPagina.substring(pathPagina.length-4);
	   if ((tipoArchivo=='.jsp')||(tipoArchivo=='.htm')||(tipoArchivo=='html')) 
		   tituloCabecera.innerHTML=eval("top." + nombre_ventana + "_borde."+nombre_ventana+"frameBody").document.title;
	   else tituloCabecera.innerHTML=pathPagina;
}

// Función que crea una capa dinámicamente

function makeLayer(id) {
 if (document.getElementsByTagName("*").length) { 
  if (top.document.getElementById(id+'cortina_cp')) {
   return
  }
    var LR='<div  name="'+id+'cortina_cp" id="'+id+'cortina_cp" style="visibility: hidden; position:absolute; left:0px; top:0px; z-index: '+top.z_Index+'; width:790px; height:580px;">&nbsp;</div>';
    LR+='\n<div name="'+id+'_mod" id="'+id+'_mod" style="margin:0px; position:absolute; left:5px; top:10px; width:200px; visibility: hidden; z-index: '+top.z_Index+';">';
    top.z_Index++;
    LR+='<div name="'+id+'cab_cp" id="'+id+'cab_cp" style="position:absolute; left:0px; top:0px; z-index: '+(top.z_Index+1)+'; "  onMouseDown="dragStart(event,\''+ id+'\');"><img name="'+id+'x_img" id="'+id+'x_img" src="../../img/pixel.gif" width="'+(ancho_ventana)+'" height="20" border=0></div><img name="'+id+'x2_img" id="'+id+'x2_img"  src="../../img/pixel.gif"  border=0  style="width: 12px; height: 10px; position: absolute; top: 4px; left: '+(ancho_ventana)+'px; cursor: pointer;  z-index: '+(top.z_Index+2)+';" onClick="cerrarModal(\''+id+'\');">';
    LR+='<iframe name="'+id+'cab_if" id="'+id+'cab_if" frameborder="0" src="" width="200" height="26" scrolling="no" tabindex="-1"></iframe>';
    LR+='<div name="'+id+'_cp" id="'+id+'_cp" style="visibility: hidden; position:absolute; z-index: '+(top.z_Index-1)+';  left:0px; top:14px;margin-top:5px;">';
    LR+='<iframe name="'+id+'_borde" id="'+id+'_borde" src="" frameborder="0" width="200" height="200" scrolling="no" tabindex="-1"></iframe>';
    LR+='<iframe name="'+id+'_if" id="'+id+'_if" src="" frameborder="0" width="0" height="0" scrolling="auto" tabindex="-1"></iframe>';
    LR+='</div>';
    LR+='</div>';
    LR+='<input type="hidden" id="zIndex'+id+'" name="zIndex'+id+'" value="'+top.z_Index+'"/>';
    LR+='<input type="hidden" id="windowName'+id+'" name="windowName'+id+'" value=""/>';
    top.z_Index+=2;
    //insertaHTML(top.document.body,LR);
    top.document.body.insertAdjacentHTML("BeforeEnd", LR);
 }
}

function insertaHTML(pElemento, pHTML) {
		if (pElemento.insertAdjacentHTML != null) {
			pElemento.insertAdjacentHTML("BeforeEnd", pHTML)
			return;
		}
		var df;	// DocumentFragment
		var r = pElemento.ownerDocument.createRange();
		r.selectNodeContents(pElemento);
		r.collapse(false);
		df = r.createContextualFragment(pHTML);
		pElemento.appendChild(df);
}

//Esta funcion sirve para ejecutar un funcion que esta en el jsp padre
//al cerrar la pop. en cada linea tiene un array de dos para metros que 
//uno es el nombre de la pop que se ha abierto y el otro es el valor de la funcion
function setOnClose(nombre_pagina,nombre_funcion){
  for(i=0; i<onClose.length && onClose[i][0] != nombre_pagina; i++);
  top.onClose[i] =new Array(nombre_pagina,nombre_funcion);
  //top.onClose[top.onClose.length] =new Array(nombre_pagina,nombre_funcion);
}

function cerrarModal(nombre_ventana) {
var elimina_pos = new Array(onClose.length);;
var existe_pop = '';
var existe_cuerpo = '';
var existe = true;
// el codigo siguiente sirve saber si se ha asignado una funcion de la pagina padre al cerrar la pop
for (i = 0;i < onClose.length;i++)
{
 if(onClose[i][0] == nombre_ventana){  	
   pos_final = onClose[i][1].lastIndexOf('(');
   //existe_pop = eval('top.windowName'+nombre_ventana+'.value');
   existe_pop = top.document.getElementById('windowName'+nombre_ventana).value;
   //if((eval(existe_pop) == undefined)){ //aqui comprueba que la pagina padre si es una pop que este abierta
   if((existe_pop == undefined)){ //aqui comprueba que la pagina padre si es una pop que este abierta
      existe = false;
   }
   if (existe)
   {
	      existe_cuerpo = onClose[i][1].substr(0, pos_final); 
	     if((eval(existe_cuerpo) == undefined)){// aqui si la pagina padre no es una pop y esta abierta
           existe = false;
         }
   }
   if(existe){ //si existe ejecutamos la funcion asignada
     eval(onClose[i][1]);
   }
   elimina_pos[i] = 'SI';
 }else{
   elimina_pos[i] = 'NO';
 }
}
// Elimina las funciones que se ejecutado y la que no se han ejecutado porque 
//  la pagina padre a no esta habierta
for (n = onClose.length - 1;n >= 0 ;n--) 
{
  if(elimina_pos[n] == 'SI'){
    top.onClose.splice(n,1); 
	elimina_pos.splice(n,1); 
  }                            
}

   if (!nombre_ventana) nombre_ventana=getMyId();
   
   //top.frames[nombre_ventana + "_borde"].document.getElementById(nombre_ventana+'frameBody').src = "";
   top.document.getElementById(nombre_ventana+"cortina_cp").style.visibility = "hidden";
   top.document.getElementById(nombre_ventana+"_mod").style.visibility = "hidden";
   top.document.getElementById(nombre_ventana+"_cp").style.visibility = "hidden";
   top.document.getElementById(nombre_ventana+"cab_cp").style.visibility = "hidden";
   top.document.getElementById(nombre_ventana+"_mod").style.top = 0 + "px";
   top.document.getElementById(nombre_ventana+"_mod").style.left = 0 + "px";
   top.document.getElementById(nombre_ventana+"_borde").style.height = 0;
   top.document.getElementById(nombre_ventana+"_borde").style.width = 0;		
   
}

function HTMLCabecera(id,path,pwidth) {
	
  	var strHTML='<html><head>';
  	strHTML+='<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">';
  	strHTML+='<link href="/b2b/css/cuerpos/principal.css" rel="stylesheet" type="text/css">';
  	strHTML+='<link href="/b2b/css/cuerpos/capas.css" rel="stylesheet" type="text/css">';
 	strHTML+='<link href="/b2b/css/cuerpos/reserva.css" rel="stylesheet" type="text/css">';
  	strHTML+='</head>';
  	strHTML+='<body>';
	strHTML+='<table name="'+id+'cab_tb" id="'+id+'cab_tb" border="0" cellspacing="0" cellpadding="0" style="width:'+pwidth+';border:#434343 1px solid; background-color:#5c9eed;">';
	strHTML+='    <tr style="background-color:#326cb4; height:1px">';
	strHTML+='	      <td><img src="/b2b/img/pixel.gif" width="3" height="1"></td>';
	strHTML+='		  <td><img name="'+id+'cab_img" id="'+id+'cab_img" src="/b2b/img/pixel.gif" width="'+parseInt(pwidth-21)+'" height="1"></td>';
	strHTML+='	      <td><img src="/b2b/img/pixel.gif" width="15" height="1"></td>';
	strHTML+='	      <td><img src="/b2b/img/pixel.gif" width="3" height="3"></td>';
	strHTML+='	  </tr>';
	strHTML+='	  <tr style="background:url(/b2b/img/pop_up/fondo_cabecera.gif) repeat-x; height:15px;}">';
	strHTML+='	      <td colspan="2" style="color:#fff; font-size:11px; font-weight:bold; padding-left:8px"><div name="tituloDiv" id="tituloDiv"></div></td>';
	strHTML+='	      <td style="background:url(/b2b/img/pop_up/cerrar_pop.gif) no-repeat 0; width:15px; height:15px;"></td>';
	strHTML+='	       <td></td>';
	strHTML+='	  </tr>';
  	strHTML+='</table>';
  	strHTML+='</body></html>';
	
  	return strHTML;
}

function HTMLBorde(id,alto,ancho,path) {

  	var strHTML = 
  		'<html>\n'+
  			'<head>\n'+
  				'<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n'+
  				'<link href="/b2b/css/cuerpos/principal.css" rel="stylesheet" type="text/css">\n'+
  				'<link href="/b2b/css/cuerpos/capas.css" rel="stylesheet" type="text/css">\n'+
  				'<link href="/b2b/css/cuerpos/reserva.css" rel="stylesheet" type="text/css">\n'+
  			'</head>\n';
  			
  	strHTML += 
  			'<body>\n'+
  					'<div id="'+id+'borde" name="'+id+'borde" style="border:#498AD7 2px solid; background-color:#fff;display:block;float:left;">\n'+
  						'<iframe id="'+id+'frameBody" name="'+id+'frameBody" frameborder="0" scrolling="auto" tabindex="-1" onLoad="parent.getFrameName(\''+id+'\');" style="margin-bottom:5px;width:100%;height:'+alto+'visibility:hidden;"></iframe>\n'+
  					'</div>'
  			'</body>\n'+
  		'</html>\n';

 	return strHTML;
}

function resize_pop(nombre_ventana, alto){
	top.window.frames[nombre_ventana+"_borde"].document.getElementById(nombre_ventana+"frameBody").style.height = alto;
	top.document.getElementById(nombre_ventana+"_borde").style.height = alto+9;	
}

function resize_ancho(nombre_ventana, ancho){
	
	top.window.frames[nombre_ventana+"_borde"].document.getElementById(nombre_ventana+"frameBody").style.width = ancho;
	top.document.getElementById(nombre_ventana+"_borde").style.width = parseInt(ancho+4);

	top.document.getElementById(nombre_ventana+"x_img").style.width = parseInt(ancho+4) + 'px'; 
	top.document.getElementById(nombre_ventana+"x2_img").style.left = parseInt(ancho-13) + 'px'; 

    top.document.getElementById(nombre_ventana+"cab_if").style.width = parseInt(ancho+4);
	top.document.getElementById(nombre_ventana+"_mod").style.width = parseInt(ancho+4) + "px";
	top.document.getElementById(nombre_ventana+"cab_cp").style.width = parseInt(ancho+4) + "px";
	top.document.getElementById(nombre_ventana+"_cp").style.width = parseInt(ancho)+ "px";

	var path = top.location.pathname;

	var frameCabecera=eval("top." + nombre_ventana + "cab_if");
	frameCabecera.document.getElementById(nombre_ventana+"cab_tb").style.width = parseInt(ancho+4) + 'px';
	frameCabecera.document.getElementById(nombre_ventana+"cab_img").style.width = parseInt(ancho-19) + 'px';
}

/*
 * Función que imprime el contenido de la popup con los estilos correspondientes ( se hace necesario mover la modal a la izquierda
 * del navegador, a falta de implementar la ventana modal entera ).
 */
function imprimirModal(nombre_ventana){
	top.document.getElementById(nombre_ventana+"_mod").style.left = "0px";
	top.window.frames[nombre_ventana+'_borde'].window.frames[nombre_ventana+'frameBody'].print();
}
