   function getV(id) {
     var valor;
	 eval("valor=self.document.editform.field_"+id+".value");
	 return valor;
   }
   function getVList(id) {
     var valor;
	 eval("valor=self.document.editform.field_"+id+".options[self.document.editform.field_"+id+".selectedIndex].text");
	 return valor;
   }
   
   function getO(id)  {
     var valor;
	 eval("valor=self.document.editform.field_"+id);
	 return valor;
   }
   
   function setV(id,valor) {
	 eval("self.document.editform.field_"+id+".value='"+valor+"'");
	 return valor;
   }
   
   function quitaCeros(val)    {
    while (val.charAt(0) == '0')
     val = val.substring(1, val.length);
    return val;
   }
   
   function cerosIzq(sVal, nPos){ 
    var sRes = sVal; 
    for (var i = sVal.length; i < nPos; i++) 
     sRes = "0" + sRes; 
    return sRes; 
   } 

//Funciones de FECHAS ##########################################   
  function armaFecha(nDia, nMes, nAno){ 
    var sRes;
	if (isNaN(nDia)) 	sRes = "00";
	else 				sRes = cerosIzq(String(nDia), 2); 
	if (isNaN(nMes)) 	sRes = sRes + "/00";
	else 				sRes = sRes + "/" + cerosIzq(String(nMes), 2); 
	if (isNaN(nAno)) 	sRes = sRes + "/0000";
	else 				sRes = sRes + "/" + cerosIzq(String(nAno), 4); 
    return sRes; 
   } 

   function sumaMes(fecha, nSum){ 
    nDia = parseInt(quitaCeros(fecha.substring(0,2)));
	nMes = parseInt(quitaCeros(fecha.substring(3,5)));
    nAno = parseInt(quitaCeros(fecha.substring(6,10)));
    if (nSum >= 0){ 
     for (var i = 0; i < Math.abs(nSum); i++){ 
      if (nMes == 12){ 
       nMes = 1; 
       nAno += 1; 
      } else nMes += 1; 
     } 
    } else { 
     for (var i = 0; i < Math.abs(nSum); i++){ 
      if (nMes == 1){ 
       nMes = 12; 
       nAno -= 1; 
      } else nMes -= 1; 
     } 
    } 
	//Ahora hay que restar un dia
	fechaNueva = new Date(nAno,nMes-1,nDia);
	tiempo=fechaNueva.getTime();
	milisegundos=parseInt(1*24*60*60*1000);
	total=fechaNueva.setTime(parseInt(tiempo-milisegundos));
    nDia=fechaNueva.getDate();
    nMes=fechaNueva.getMonth()+1;
    nAno=fechaNueva.getYear();
    return armaFecha(nDia, nMes, nAno); 
   } 
   
   
//FUNCIONES PARA EL FORMATO DE LOS DATOS ##########################
var vORIGEN = "";

//Limitar el maxlength de un campo
function setMX(campo,longitud) {
  // Quit if backspace key or arrow keys or INSERT or DEL
  if ( /^(8|3[7-9]|40|45|46)$/.test( event.keyCode ) ) return;
  if (campo.value.length > longitud) campo.value = vORIGEN;	
}

function redondear(valor,decimales) {
  return Math.round(parseFloat(valor) * Math.pow(10, decimales)) / Math.pow(10, decimales);
}

function getVO(campo) {
  vORIGEN = campo.value;
}   

function setVO(formu,campo,tipo) {
  //tipo 	= 1 - porcentaje con decimales dd,xx
  //		= 2 - real dddd,xx
  //tipo	= 3 - entero dddd
  //		= 4 - real con tres decimales dddd,xxx
  
  // Quit if backspace key or arrow keys or INSERT or DEL
  if ( /^(8|3[7-9]|40|45|46)$/.test( event.keyCode ) ) return;
  
  //Quit if empty
  if (campo.value == "") return;

  if (campo.value.indexOf(',') >= 0 ) 	campo.value = campo.value.replace(",",".");
  
  //if ( ((campo.value.charAt(campo.value.length-1)) == ".") && ((tipo=="1") || (tipo=="2"))) return;
  
  if (isNaN(Number(campo.value)) || ((tipo=="1") && ((campo.value < 0)||(campo.value > 100)))) {
    campo.value = vORIGEN;
	return;
  }	
  
  if ((tipo=="1") || (tipo=="2") ) 	decimales = 2;
  else if (tipo=="4")				decimales = 3;
  
  if ((tipo=="1") || (tipo=="2") || (tipo=="4")) {
    posicion_punto = campo.value.indexOf('.');
	if ( (posicion_punto >= 0) && (campo.value.length - posicion_punto > (parseInt(decimales)+parseInt(1))) ) {
      campo.value = Math.round(parseFloat(campo.value) * Math.pow(10, decimales)) / Math.pow(10, decimales); 
	} 
  } else {
    campo.value = Math.round(parseFloat(campo.value) * Math.pow(10, 0)) / Math.pow(10, 0); 
  }	
}

//FUNCIONES DE ESTILOS #################################
function setClase(id,clase) {
  //var campo;
  campo = "field_"+id;
  //eval("campo=self.document.editform.field_"+id);
 //	 return valor;
  if (document.layers) {
	document.layers[campo].className 		= clase;
  } else if (document.all) {
	document.all[campo].className 			= clase;
  } else if (document.getElementById) {
	document.getElementById(campo).className= clase;
  }
}

//FUNCIONES AJAX#####################################
function crearAjax(){
    var xmlhttp=false;
     try {
         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
         try {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (E) {
             xmlhttp = false;
         }
      }

    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
         xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}


function pintaAjax(pagina, sVars, divContenedora)
{      
var contenedor = document.getElementById(divContenedora);

var url_final = pagina+'?'+sVars;

//Se crea un objeto XMLHttpRequest
var objAjax = crearAjax();                     
objAjax.open("POST", url_final)
objAjax.onreadystatechange = function() {
    if (objAjax.readyState == 4) {
    //Se escribe el resultado en la capa contenedora      
    contenedor.innerHTML = objAjax.responseText;
    }
}
objAjax.send(null);
}

//FUNCION PARA LIMITAR LOS VALORES DE UN SelectMultiple.
//Solo se quedan los valores que empiecen por lo mismo que el valor seleccionado en otro Select Multiple
//El termino "empezar" se determina hasta el separados.
//Por ejemplo, si field_1= 834-xxx en el field_2 solo dejara los 834*
//Se usa en formJS
function limitaSM2(id_field1,id_field2,sep) {
  var campo1,campo2;
  eval("campo2=document.editform.field_"+id_field2);
  for (i=0;i<document.editform.length;i++) {
    campo1 = document.editform.elements[i];
	if ( (campo1.name=='field_'+id_field1) && (campo1.type!='hidden') ) {
	  if (campo1.selectedIndex != 0) { 
        texto = campo1.options[campo1.selectedIndex].text.substr(0,campo1.options[campo1.selectedIndex].text.indexOf(sep));
        j=0;
        while (j<campo2.length) {
          if (campo2.options[j].text.indexOf(texto)==-1) {
	        campo2.options[j] = null;
          } else {
	        j++;
	      }
        }
      }
	  return;
    }
  }	 
}

//Solo se quedan los valores que contienen lo escrito en la caja de texto1. No se puede usar para 2 campos en un mismo formulario.
var aORIGENValor = new Array();
var aORIGENTexto = new Array();
function changeSelectFromText(campoText, campoSelect) {
  texto=campoText.value.toUpperCase();
  //Si es la primera vez que hay que filtrar, antes de filtar me guardo todos los datos en aORIGEN
  if (aORIGENValor.length==0) {  
    for (i=0;i<campoSelect.length;i++) {
	  aORIGENValor[i]=campoSelect.options[i].value;
	  aORIGENTexto[i]=campoSelect.options[i].text;
	}
  }
  //Borro todos los elementos del select
  campoSelect.length=0;
  //Pongo los valores que cumplen el texto de busqueda
  j=0;
  for (i=0;i<aORIGENValor.length;i++) {
    if (aORIGENTexto[i].indexOf(texto)!=-1) {
	  nuevaOpcion(campoSelect, j, aORIGENTexto[i], aORIGENValor[i]); 
	  j++;
    } 
  }
  //Fuerzo el posible evento onChange del select por si tiene un segundo selectet del que depende
  campoSelect.fireEvent("onchange");
}
function nuevaOpcion(oCntrl, iPos, sTxt, sVal){ 
  var selOpcion=new Option(sTxt, sVal); 
  eval(oCntrl.options[iPos]=selOpcion); 
} 





//PARA COYSEAS
function  muestraCapaVIVA(){
  capa	= 'tabla_emisiones';
  var obj = document.getElementById(capa);
  if(obj.style.display == "block") obj.style.display = "none"
  else obj.style.display = "block"
}
