var ns = (navigator.appName == "Netscape Navigator")? true:false
var ie = (navigator.appName == "Microsoft Internet Explorer")? true:false

// Funciones de Marcos

  //Recibe un documento y el nombre de un marco contenido en él, devuelve el el marco
  function getFrame(principal,marco){
    return principal.frames[marco]    
  }
  
  //Recibe un número y devuelve la página de marcos tantos niveles arriba
  function upFrameLevels(num){
    p=parent
	for(i=1; i<num; i++){
	  p=p.parent
	}
	return p
  }
  
  // Recibe un nombre y devuelve la imagen correspondiente
  function getImage(nombre){
	  return document.images[nombre];
  }

  //crea una nueva ventana, con los parámetros recibidos, devuelve la ventana
  function ventanaVacia(url, ancho, alto, nombre){
    var style = 'resizable=no,width='+ancho+',height='+alto+',toolbox=no,scrollbars=no'
	ventana=0
	ventana= window.open(url, nombre, style)
	ventana.focus()
	return ventana
  } 
  
  function ventanaParametrizada(style, nombre, url){
	ventana=0
	ventana= window.open(url, nombre, style)
	ventana.focus()
	return ventana  
  }

  //Devuelve el form cuyo nombre se pasa como parámetro
  function getForm(formName){
    return (document.forms[formName])
  }

  function getInput(formName, inputName){
   if (ns) return (document.forms[formName][inputName])
   else if (ie) return (document.all[formName][inputName])  

  }
//FUNCIONES de SESIÓN

  function sessionSet(principal, clave, valor){
    if (!principal.session){
	  principal.session= new Array()
	}
	principal.session[clave]=valor
  }
  

	  
  function sessionGet(principal,clave){
    return principal.session[clave]
  }
  
// Funciones de imágenes 
//recibe todas las imágenes a mostra al posar el mouse, el orden importa para la recuperación
  function preloadOverImages() {
    var d=document; 
    d.Over=new Array();
    var i, size=d.Over.length, a=preloadOverImages.arguments; 
      for(i=0; i<a.length; i++){
          d.Over[size]=new Image; d.Over[size++].src=a[i];
      }
  }


  function preloadOutImages() {
    var d=document; 
    d.Out=new Array();
    var i, size=d.Out.length, a=preloadOutImages.arguments; 
      for(i=0; i<a.length; i++){
          d.Out[size]=new Image; d.Out[size++].src=a[i];
      }
  }

  function swapImage(image, index, bool){
    d=document;
    if (bool){
      image.src=d.Over[index].src
    }
    else{
      image.src=d.Out[index].src
    }
  }

// funciones de capas

function getLayer(id) {
	if (ns) return document.layers[id]
	else if (ie) return document.all[id].style
}

function mostrar(l) {
   if (ns) l.visibility = "show"
   else if (ie) l.visibility = "visible"
}

function esconder(l) {
   if (ns) l.visibility = "hide"
   else if (ie) l.visibility = "hidden"
}

function makeVisible(capa,bool){
  if (bool){
    mostrar(capa)
  }
  else{
    esconder(capa)
  }
}

// Guarda las capas que forman la página, recibe los nombres. Es importante el orden
function loadLayer(name){
    var d=document; 
    if (!d.Capas){
	  d.Capas=new Array();
	}
    size=d.Capas.length,  
    d.Capas[size]=getLayer(name)
}

function loadLayers(){
    var d=document; 
    d.Capas=new Array();
    var i, size=d.Capas.length, a=loadLayers.arguments; 
      for(i=0; i<a.length; i++){
          d.Capas[size]=getLayer(a[i])
		  size++
      }
}

function organizeLayers(index,dif,vector){
  for(i=vector.length-1; i>=index; i--){
    vector[i].top=parseInt(vector[i].top)-dif
  }
}

function swapLayers(index, layerName){
  vector=document.Capas
  capaVieja= vector[index]
  capaNueva= getLayer(layerName)
  capaNueva.top=capaVieja.top
  vector[index]=capaNueva
  
  diferencia=parseInt(capaVieja.height)-parseInt(capaNueva.height)
  organizeLayers(index+1,diferencia,vector)
  
  makeVisible(capaVieja,false)
  makeVisible(capaNueva,true)
}
