/*
* Fecha        	: 01/07/2005
* Archivo       : formateador.js
* Descripcion 	: Funciones de formateo ES_es de campos de formularios
*/

// Funci�n para dar formatear a�os
// Pensada para llamar al onblur de un campo de texto pas�ndole this como par�metro

function formatAno(obj){
	  var valor = obj.value;
	  if (valor != ""){
	    var valid = "0123456789";    
	    var allValid = true;  
	    for (n=0;  n<valor.length; n++){
	      for (m=0;  m<valid.length; m++){
	      	if (valor.charAt(n) == valid.charAt(m)){ 
	      	  break;
	      	}
	      }	
	      if (m == valid.length){ 
	      	allValid = false; 
	      	alert(dameAlerta(idioma, 242));
	   	    obj.focus();
	   	    obj.select();
	      	break;
	      }      
	    }    
	    if (!allValid){
	      return false;
	    }
	    return true;
	  }
}
// Funci�n para dar formatear n�meros
// Pensada para llamar al onblur de un campo de texto pas�ndole this como
// par�metro
function formatNumero(obj){
  var valor = obj.value;
  if (valor != ""){
    var valid = "0123456789.-";    
    var allValid = true;  
    for (n=0;  n<valor.length; n++){
      for (m=0;  m<valid.length; m++){
      	if (valor.charAt(n) == valid.charAt(m)){ 
      	  break;
      	}
      }	
      if (m == valid.length){ 
      	allValid = false; 
      	alert(dameAlerta(idioma, 243));
   	    obj.focus();
   	    obj.select();
      	break;
      }      
    }    
    if (!allValid){
      return false;
    }
	// si no hay puntos ni comas
   var signo="";
   if (valor.charAt(0)=="-"){
   	   signo="-";
       sItem = valor.split("-");
       valor=sItem[1];
    }
   if (valor.indexOf(".")==-1){
      obj.value = signo+processIntPart(valor);
      return true;
    }
   // si hay punto pero no hay coma
   if (valor.indexOf(".")!=-1) {
      pos = valor.lastIndexOf(".");
      intPart = processIntPart(valor);
      // decPart = processDecPart(valor.substring(pos+1,valor.length));
      obj.value = signo+intPart; 
      return true;
    }  
    return true;
  }
}

// Funci�n para formatear n�meros decimales
// Pone una coma y un cero en caso de que no los haya,
// Pensada para llamar al onblur de un campo de texto pas�ndole this como
// par�metro
function formatNumeroDecimal(obj,entero,decimal){
  var valor = obj.value;
  
  if (valor != ""){
    var valid = "0123456789,.";    
    var allValid = true;  
    for (n=0;  n<valor.length; n++){
      for (m=0;  m<valid.length; m++){
      	if (valor.charAt(n) == valid.charAt(m)){ break; }
      }	
      if (m == valid.length){ allValid = false; break; }      
    }    
    if (!allValid){
      alert(dameAlerta(idioma, 244));
      obj.focus();
      return false;
    }
	// si no hay puntos ni comas
    if ((valor.indexOf(".")==-1) && (valor.indexOf(",")==-1)){
      if (valor.length > (entero)){
          var msge = dameAlerta(idioma, 246);
          msge=msge.replace("replace1",entero);
          alert(msge);
      	  obj.focus();
      	  obj.select();
      	  return false;
      }
      else {
       	  obj.value = processIntPart(valor) + ",00";
      	  return true;
      }
	       // bbobj.value = processIntPart(valor) ;}
    }
	// si hay punto pero no hay coma
    if ((valor.indexOf(".")!=-1) && (valor.indexOf(",")==-1)){
      pos = valor.lastIndexOf(".");
      intPart = processIntPart(valor.substring(0,pos));
      // quitar los puntos y comas
      valorEntero = trimPointers(intPart);  
      // quitar los ceros a la izquierda
      valorEntero = trimLeftZeroes(valorEntero);
      
      if (valorEntero.length > entero){
      	  var msge2 = dameAlerta(idioma, 246);
          msge2=msge2.replace("replace1",entero);
          alert(msge2);
      	  obj.focus();
      	  obj.select();
      	  return false;
      }
      else {
        var longitudpartedecimal=(valor.substring(pos+1,valor.length)).length;
        if (longitudpartedecimal>decimal){
      	    alert(dameAlerta(idioma, 247));
      	    obj.focus();
      	    obj.select();
			return false;
        }
        else {
            decPart = processDecPart(valor.substring(pos+1,valor.length));
            obj.value = intPart+ ","+ decPart; 
        	return true;
        }    
      }
    }  
	// si hay coma pero no hay punto
    if ((valor.indexOf(".")==-1) && (valor.indexOf(",")!=-1)){
      pos = valor.lastIndexOf(",");
      intPart = processIntPart(valor.substring(0,pos));
      // quitar los puntos y comas
      valorEntero = trimPointers(intPart);  
      // quitar los ceros a la izquierda
      valorEntero = trimLeftZeroes(valorEntero);
      
      if (valorEntero.length > entero){
      	  var msge3 = dameAlerta(idioma, 246);
          msge3=msge3.replace("replace1",entero);
          alert(msge3);
      	  obj.focus();
      	  obj.select();
      	  return false;
      }
      else {
         var longitudpartedecimal=(valor.substring(pos+1,valor.length)).length;
         if (longitudpartedecimal>decimal){
      	    alert(dameAlerta(idioma, 247));
      	    obj.focus();
      	    obj.select();
      	    return false;
        }
         else {	  	  
	         decPart = processDecPart(valor.substring(pos+1,valor.length));
	         obj.value = intPart+ ","+ decPart;
	         return true;
         } 
      }
    }
	// si hay puntos y comas
    if ((valor.indexOf(".")!=-1) && (valor.indexOf(",")!=-1)){
      posComa = valor.lastIndexOf(",");
      posPunt = valor.lastIndexOf(".");
      pos = posComa>posPunt? posComa:posPunt;
      intPart = processIntPart(valor.substring(0,pos));
      // quitar los puntos y comas
      valorEntero = trimPointers(intPart);  
      // quitar los ceros a la izquierda
      valorEntero = trimLeftZeroes(valorEntero);
      
      if (valorEntero.length > entero){
      	  var msge4 = dameAlerta(idioma, 246);
          msge4=msge4.replace("replace1",entero);
          alert(msge4);
      	  obj.focus();
      	  obj.select();
      	  return false;
      }
      else {
         var longitudpartedecimal=(valor.substring(pos+1,valor.length)).length;
         if (longitudpartedecimal>2){
      	    alert(dameAlerta(idioma, 247));
      	    obj.focus();
      	    obj.select();
      	    return false;
        }
         else {	  	  
	          decPart = processDecPart(valor.substring(pos+1,valor.length));
	          obj.value = intPart+ ","+ decPart; 
	          return true;
         }
      }
    }         
  }
}

// Format numero decimal con signo
function formatNumeroDecimalConSigno(obj,entero,decimal){

  var valor = obj.value;

  if (valor != ""){
    var valid = "-0123456789,.";    
    var allValid = true;
    var signo = "";  
    for (n=0;  n<valor.length; n++){
      for (m=0;  m<valid.length; m++){
      	if ((valor.charAt(n) == valid.charAt(m)) && (n==0) && (valid.charAt(m)=="-"))
      	   { signo="-";
      	     break;}
      	if ((valor.charAt(n) == valid.charAt(m))&& (valid.charAt(m)!="-")){ break; }
      }	
      if (m == valid.length){ allValid = false; break; }      
    }  
      
    if (!allValid){
      alert(dameAlerta(idioma, 244));
      obj.focus();
      return;
    }
    if (signo =="-"){
    	valor=valor.substring(1,valor.length);
    }
// si no hay puntos ni comas
    if ((valor.indexOf(".")==-1) && (valor.indexOf(",")==-1)){
      if (valor.length > (entero)){
      	  var msge = dameAlerta(idioma, 246);
          msge=msge.replace("replace1",entero);
          alert(msge);
      	  obj.focus();
      	  obj.select();}
      else {
       obj.value = signo+processIntPart(valor) + ",00";}
       // bbobj.value = signo+processIntPart(valor) ;}
      return;
    }
// si hay punto pero no hay coma
    if ((valor.indexOf(".")!=-1) && (valor.indexOf(",")==-1)){
      pos = valor.lastIndexOf(".");
      intPart = processIntPart(valor.substring(0,pos));
      // quitar los puntos y comas
      valorEntero = trimPointers(intPart);  
      // quitar los ceros a la izquierda
      valorEntero = trimLeftZeroes(valorEntero);
      
      if (valorEntero.length > entero){
      	  var msge2 = dameAlerta(idioma, 246);
          msge2=msge2.replace("replace1",entero);
          alert(msge2);
      	  obj.focus();
      	  obj.select();}
      else {
        var longitudpartedecimal=(valor.substring(pos+1,valor.length)).length;
        if (longitudpartedecimal>decimal){
        	alert(dameAlerta(idioma, 247));
      	    obj.focus();
      	    obj.select();
        }
        else {
            decPart = processDecPart(valor.substring(pos+1,valor.length));
            obj.value = signo+intPart+ ","+ decPart; }
      }
      return;
    }  
// si hay coma pero no hay punto
    if ((valor.indexOf(".")==-1) && (valor.indexOf(",")!=-1)){
      pos = valor.lastIndexOf(",");
      intPart = processIntPart(valor.substring(0,pos));
      // quitar los puntos y comas
      valorEntero = trimPointers(intPart);  
      // quitar los ceros a la izquierda
      valorEntero = trimLeftZeroes(valorEntero);
      
      if (valorEntero.length > entero){
      	  var msge3 = dameAlerta(idioma, 246);
          msge3=msge3.replace("replace1",entero);
          alert(msge3);
      	  obj.focus();
      	  obj.select();}
      else {
         var longitudpartedecimal=(valor.substring(pos+1,valor.length)).length;
         if (longitudpartedecimal>decimal){
      	    alert(dameAlerta(idioma, 247));
      	    obj.focus();
      	    obj.select();
        }
         else {	  	  
         
         decPart = processDecPart(valor.substring(pos+1,valor.length));
         obj.value = signo+intPart+ ","+ decPart;
         } 
      }
      return;
    }
// si hay puntos y comas
    if ((valor.indexOf(".")!=-1) && (valor.indexOf(",")!=-1)){
      posComa = valor.lastIndexOf(",");
      posPunt = valor.lastIndexOf(".");
      pos = posComa>posPunt? posComa:posPunt;
      intPart = processIntPart(valor.substring(0,pos));
      // quitar los puntos y comas
      valorEntero = trimPointers(intPart);  
      // quitar los ceros a la izquierda
      valorEntero = trimLeftZeroes(valorEntero);
      
      if (valorEntero.length > entero){
      	  var msge4 = dameAlerta(idioma, 246);
          msge4=msge4.replace("replace1",entero);
          alert(msge4);
      	  obj.focus();
      	  obj.select();}
      else {
         var longitudpartedecimal=(valor.substring(pos+1,valor.length)).length;
         if (longitudpartedecimal>2){
      	    alert(dameAlerta(idioma, 247));
      	    obj.focus();
      	    obj.select();
        }
         else {	  	  
          decPart = processDecPart(valor.substring(pos+1,valor.length));
          obj.value = signo+intPart+ ","+ decPart; 
         }
      }
      return;
    }         
  }
}
// Funci�n para formatear fechas
// Comprueba que la fecha tenga separadores. Si no los tiene, los pone. Si hay 7
// caracteres, se a�ade un 0 al dia
// Pensada para llamar al onblur de un campo de texto pas�ndole this como
// par�metro

function formatoFechaSlash (sFecha){
        var Fecha;
            aux=0;
        sItem=sFecha.split("/");
        aux = parseInt (sItem[0],10);
        if (aux<10)
          Fecha="0"+aux;
        else
          Fecha=""+aux;
        aux= parseInt (sItem[1],10);
 
        if (aux<10)   
          Fecha=Fecha+"/0"+aux;
        else
          Fecha=Fecha+"/"+aux;
        aux= parseInt (sItem[2],10);
        
        if (aux<99)   
          Fecha=Fecha+"/20"+aux;
        else
          Fecha=Fecha+"/"+aux;        
        return Fecha;   
   }  // Fin funcion formatoHoras
   
function formatoFechaSlashEusk (sFecha){
    var Fecha;
    aux=0;
    
    sItem=sFecha.split("/");
    aux= parseInt (sItem[0],10);
    if (aux<99)   
        Fecha="20"+aux;
      else
        Fecha=""+aux;    
    aux= parseInt (sItem[1],10);

    if (aux<10)   
      Fecha=Fecha+"/0"+aux;
    else
      Fecha=Fecha+"/"+aux;
   
    aux = parseInt (sItem[2],10);
    if (aux<10)
      Fecha=Fecha+"/0"+aux;
    else
      Fecha=Fecha+"/"+aux;
    return Fecha;   
}  // Fin funcion formatoHoras

function formatearFecha(obj){

	if (idioma=="eu"){
		
		return formatearFechaEusk(obj);
	}
	else{
  var format2 = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{2,4})$/;
  var match2 = obj.value.match(format2);
  if (match2!=null){
     obj.value=formatoFechaSlash(obj.value);
  }
  var cadEntrada=obj.value;
  var cad = obj.value;
  var cadEntrada=obj.value;
  var separador = "/";
  var retorno="0";
  // var format = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
  var format = /^(\d{2})(\/)(\d{2})(\/)(\d{4})$/;
  var match = cad.match(format);
  if (match == null){
    cad = toDigits(cad);
    if (cadEntrada=="") {
       	retorno="1";
       	return retorno;
    }
    if ((cad.length != 6) && (cad.length != 7) && (cad.length != 8)){ 
    	if ((cad.length !=0 )|| (cadEntrada!="")){
          alert(dameAlerta(idioma, 248));
      	  obj.focus();
      	  obj.select();
      	  retorno="1";}
          return retorno;
     }
    if (cad.length == 8){
    	var dia = cad.charAt(0) + cad.charAt(1);
    	var mes = cad.charAt(2) + cad.charAt(3);
    	var anyo = cad.charAt(4) + cad.charAt(5) + cad.charAt(6) + cad.charAt(7);
    	var numMes = processIntPart(mes);
    	if ((numMes <= 12 ) && (numMes > 0 )){
    		var numDia = processIntPart(dia);
    		if ((numDia <= 31)&& (numDia > 0 )){
    			obj.value = dia + separador + mes + separador + anyo;
    		}
    		else {
              alert(dameAlerta(idioma, 249));
              obj.focus();
      	      obj.select();
      	      retorno="1";
      	    }
    	}else{
         	  alert(dameAlerta(idioma, 250));
              obj.focus();
      	      obj.select();
      	      retorno="1";
      	}
        obj.value = dia + separador + mes + separador + anyo;
    }
    if (cad.length == 7){
      var dia = cad.charAt(0) + cad.charAt(1);
      var numDia = 0;
      if (cad.charAt(0) == "0"){
        numDia = processIntPart(cad.charAt(1));
      } else {
        numDia = processIntPart(dia);
      } 
      if ((numDia <= 31 ) && (numDia > 0 )){
        var numMes=0;
        var mes = "0" + cad.charAt(2);
        numMes = processIntPart(mes);
        if (!((numMes <= 12 ) && (numMes > 0 ))){
            dia="0"+cad.charAt(0);
            mes=cad.charAt(1)+cad.charAt(2);

        }
        numDia = processIntPart(dia);        
        var anyo = cad.charAt(3) + cad.charAt(4) + cad.charAt(5) + cad.charAt(6);
        obj.value = dia + separador + mes + separador + anyo;
      } else {
        mes = cad.charAt(1) + cad.charAt(2);
        var numMes = processIntPart(mes)
        if ((numMes <= 12)&& (numMes > 0 )){
          var dia = "0" + cad.charAt(0);
          var anyo = cad.charAt(3) + cad.charAt(4) + cad.charAt(5) + cad.charAt(6);
          obj.value = dia + separador + mes + separador + anyo;
        }
      }
    }
    if (cad.length == 6){
      var dia = "0" + cad.charAt(0);
      var mes = "0" + cad.charAt(1);
      var anyo = cad.charAt(2) + cad.charAt(3) + cad.charAt(4) + cad.charAt(5);
      var numMes = processIntPart(mes);
      
      if ((numMes <= 12 ) && (numMes > 0 )){
        var numDia = processIntPart(dia);
        if ((numDia <= 31)&& (numDia > 0 )){
           obj.value = dia + separador + mes + separador + anyo;}
        else {alert(dameAlerta(idioma, 249));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
      }else{
         	  alert(dameAlerta(idioma, 250));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
    }
  }else{
    cad = toDigits(cad);

      var dia = cad.charAt(0) + cad.charAt(1);
      var mes = cad.charAt(2) + cad.charAt(3);
      var anyo = cad.charAt(4) + cad.charAt(5) + cad.charAt(6) + cad.charAt(7);
      var numMes = processIntPart(mes);
      if ((numMes <= 12 ) && (numMes > 0 )){
        var numDia = processIntPart(dia);
        if ((numDia <= 31)&& (numDia > 0 )){
           obj.value = dia + separador + mes + separador + anyo;}
        else {
              alert(dameAlerta(idioma, 249));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
      }else{
              alert(dameAlerta(idioma, 250));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
      // obj.value = dia + separador + mes + separador + anyo;
     }  
      var nMes=processIntPart(mes);
      var nDia=processIntPart(dia);
      var nAnyo=processIntPart(anyo);
      if ((numMes==2)&&(numDia == 29)&& (!checkYear(trimPointers(nAnyo)))){
         	  alert(dameAlerta(idioma, 251));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
      if ((numDia == 31)&& ((numMes == 2 )||(numMes == 4 )||(numMes == 6 )||(numMes == 9 )||(numMes == 11 ))){
         	  alert(dameAlerta(idioma, 251));
              obj.focus();
      	      obj.select();
      	      retorno="1";
      }
	return retorno;	
	}
}
function formatearFechaEusk(obj){
	
	  var format2 = /^(\d{2,4})(\/)(\d{1,2})(\/)(\d{1,2})$/;
	  var match2 = obj.value.match(format2);
	  if (match2!=null){
	     obj.value=formatoFechaSlashEusk(obj.value);
	  }
	  var cadEntrada=obj.value;
	  var cad = obj.value;
	  var cadEntrada=obj.value;
	  var separador = "/";
	  var retorno="0";
	  // var format = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	  var format = /^(\d{4})(\/)(\d{2})(\/)(\d{2})$/;
	  var match = cad.match(format);
	  if (match == null){
	    cad = toDigits(cad);
	    if (cadEntrada=="") {
	       	retorno="1";
	       	return retorno;
	    }
	    if ((cad.length != 6) && (cad.length != 7) && (cad.length != 8)){ 
	    	if ((cad.length !=0 )|| (cadEntrada!="")){
	          alert(dameAlerta(idioma, 248));
	      	  obj.focus();
	      	  obj.select();
	      	  retorno="1";}
	          return retorno;
	     }
	    if (cad.length == 8){
	    	var dia = cad.charAt(6) + cad.charAt(7);
	    	var mes = cad.charAt(4) + cad.charAt(5);
	    	var anyo = cad.charAt(0) + cad.charAt(1) + cad.charAt(2) + cad.charAt(3);
	    	var numMes = processIntPart(mes);
	    	if ((numMes <= 12 ) && (numMes > 0 )){
	    		var numDia = processIntPart(dia);
	    		if ((numDia <= 31)&& (numDia > 0 )){
	    			obj.value = anyo + separador + mes + separador + dia;
	    		}
	    		else {
	              alert(dameAlerta(idioma, 249));
	              obj.focus();
	      	      obj.select();
	      	      retorno="1";
	      	    }
	    	}else{
	         	  alert(dameAlerta(idioma, 250));
	              obj.focus();
	      	      obj.select();
	      	      retorno="1";
	      	}
	        obj.value = anyo + separador + mes + separador + dia;
	    }
	    if (cad.length == 7){
	      var dia = cad.charAt(5) + cad.charAt(6);
	      var numDia = 0;
	      if (cad.charAt(5) == "0"){
	        numDia = processIntPart(cad.charAt(6));
	      } else {
	        numDia = processIntPart(dia);
	      } 
	      if ((numDia <= 31 ) && (numDia > 0 )){
	        var numMes=0;
	        var mes = "0" + cad.charAt(4);
	        numMes = processIntPart(mes);
	        if (!((numMes <= 12 ) && (numMes > 0 ))){
	            dia="0"+cad.charAt(6);
	            mes=cad.charAt(4)+cad.charAt(5);

	        }
	        numDia = processIntPart(dia);        
	        var anyo = cad.charAt(0) + cad.charAt(1) + cad.charAt(2) + cad.charAt(3);
	        obj.value = anyo + separador + mes + separador + dia;
	      } else {
	        mes = cad.charAt(4) + cad.charAt(5);
	        var numMes = processIntPart(mes)
	        if ((numMes <= 12)&& (numMes > 0 )){
	          var dia = "0" + cad.charAt(6);
	          var anyo = cad.charAt(0) + cad.charAt(1) + cad.charAt(2) + cad.charAt(3);
	          obj.value = anyo + separador + mes + separador + dia;
	        }
	      }
	    }
	    if (cad.length == 6){
	      var dia = "0" + cad.charAt(5);
	      var mes = "0" + cad.charAt(4);
	      var anyo = cad.charAt(0) + cad.charAt(1) + cad.charAt(2) + cad.charAt(3);
	      var numMes = processIntPart(mes);
	      
	      if ((numMes <= 12 ) && (numMes > 0 )){
	        var numDia = processIntPart(dia);
	        if ((numDia <= 31)&& (numDia > 0 )){
	           obj.value = anyo + separador + mes + separador + dia;}
	        else {alert(dameAlerta(idioma, 249));
	              obj.focus();
	      	      obj.select();
	      	      retorno="1";}
	      }else{
	         	  alert(dameAlerta(idioma, 250));
	              obj.focus();
	      	      obj.select();
	      	      retorno="1";}
	    }
	  }else{
	    cad = toDigits(cad);

	      var dia = cad.charAt(6) + cad.charAt(7);
	      var mes = cad.charAt(4) + cad.charAt(5);
	      var anyo = cad.charAt(0) + cad.charAt(1) + cad.charAt(2) + cad.charAt(3);
	      var numMes = processIntPart(mes);
	      if ((numMes <= 12 ) && (numMes > 0 )){
	        var numDia = processIntPart(dia);
	        if ((numDia <= 31)&& (numDia > 0 )){
	           obj.value = anyo + separador + mes + separador + dia;}
	        else {
	              alert(dameAlerta(idioma, 249));
	              obj.focus();
	      	      obj.select();
	      	      retorno="1";}
	      }else{
	              alert(dameAlerta(idioma, 250));
	              obj.focus();
	      	      obj.select();
	      	      retorno="1";}
	      // obj.value = dia + separador + mes + separador + anyo;
	     }  
	      var nMes=processIntPart(mes);
	      var nDia=processIntPart(dia);
	      var nAnyo=processIntPart(anyo);
	      if ((numMes==2)&&(numDia == 29)&& (!checkYear(trimPointers(nAnyo)))){
	         	  alert(dameAlerta(idioma, 251));
	              obj.focus();
	      	      obj.select();
	      	      retorno="1";}
	      if ((numDia == 31)&& ((numMes == 2 )||(numMes == 4 )||(numMes == 6 )||(numMes == 9 )||(numMes == 11 ))){
	         	  alert(dameAlerta(idioma, 251));
	              obj.focus();
	      	      obj.select();
	      	      retorno="1";
	      }
		return retorno;	
	}

function FechaValida(objeto) { 
        var Fecha;
        var dia,mes,anyo;
        cad=objeto.value;
             aux="";
        sItem=cad.split("/");
        aux = sItem[0];
        if (aux.length<2)
          dia="0"+aux;
        else
          dia=""+aux;
        aux=sItem[1];
 
        if (aux.length<2)   
          mes="0"+aux;
        else
          mes=aux;
         anyo= sItem[2];
    
      var numMes=processIntPart(mes);
      var numDia=processIntPart(dia);
      var nAnyo=processIntPart(anyo);
      if ((numMes==2)&&(numDia == 29)&& (!checkYear(trimPointers(nAnyo)))){
         	objeto.value="01/03/"+anyo}
}

function checkYear(year) { 
return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? 1 : 0;
}
function formatearHora(obj){
  var cadEntrada=obj.value;
  var cad = obj.value;
  var separador = ":";
  var retorno="0";
  // var format = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

  var format = /^(\d{2})(\:)(\d{2})$/;
  var match = cad.match(format);
    if (cadEntrada=="") {
            obj.value=obj.value;
        	return retorno;
        }
  
  if (match == null){
  	  
    cad = toDigits(cad);
    if ((cad.length != 2) && (cad.length != 3) && (cad.length != 4)){ 
    	if ((cad.length !=0 )|| (cadEntrada != "")){
         alert(dameAlerta(idioma, 252));
      	  obj.focus();
      	  obj.select();
      	  retorno="1";}
          return retorno;
         }
    if (cad.length == 4){

      var hora = cad.charAt(0) + cad.charAt(1);
      var minuto = cad.charAt(2) + cad.charAt(3);
      // var anyo = cad.charAt(4) + cad.charAt(5) + cad.charAt(6) +
		// cad.charAt(7);
      var numMinuto = parseInt(minuto);
      if (numMinuto <= 59 ){
        var numHora = parseInt(hora);
        if (numHora <= 24){
           obj.value = hora + separador + minuto;}
        else {
              alert(dameAlerta(idioma, 253));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
      }else{
         	  alert(dameAlerta(idioma, 254));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
      
      obj.value = hora + separador + minuto;
    }
    if (cad.length == 3){

      var minuto = cad.charAt(1) + cad.charAt(2);
      var numMinuto = 0;
      if (cad.charAt(1) == "0"){
        numMinuto = parseInt(cad.charAt(2));
      } else {
        numMinuto = parseInt(minuto);
      } 
      if (numMinuto <= 59 ){
        var hora = "0" + cad.charAt(0);
        // var anyo = cad.charAt(3) + cad.charAt(4) + cad.charAt(5) +
		// cad.charAt(6);
        obj.value = hora + separador + minuto;
      } else {
        var hora = cad.charAt(0) + cad.charAt(1);
        var numHora = parseInt(dia)
        if (numHora <= 24){
          var minuto = "0" + cad.charAt(2);
          // var anyo = cad.charAt(3) + cad.charAt(4) + cad.charAt(5) +
			// cad.charAt(6);
          obj.value = hora + separador + minuto;
        }
      }
    }
    if (cad.length == 2){
      var hora = "0" + cad.charAt(0);
      var minuto = "0" + cad.charAt(1);
      // var anyo = cad.charAt(2) + cad.charAt(3) + cad.charAt(4) +
		// cad.charAt(5);
      var numMinuto = parseInt(minuto);
      
      if (numMinuto <= 59){
        var numHora = parseInt(hora);
        if (numHora <= 24){
           obj.value = hora + separador + minuto;}
        else {
        	  alert(dameAlerta(idioma, 253));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
      }else{
         	  alert(dameAlerta(idioma, 254));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
    }
  }else{
    cad = toDigits(cad);
      var hora = cad.charAt(0) + cad.charAt(1);
      var minuto = cad.charAt(2) + cad.charAt(3);
      // var anyo = cad.charAt(4) + cad.charAt(5) + cad.charAt(6) +
		// cad.charAt(7);
      var numMinuto = parseInt(minuto);
      if (numMinuto <= 59 ){
        var numHora = parseInt(hora);
        
        if (numHora <= 24){
           obj.value = hora + separador + minuto ;}
        else {alert(dameAlerta(idioma, 253));
              obj.focus();
      	      obj.select();
      	      retorno="1";}
      }else{
         	  alert(dameAlerta(idioma, 254));
              obj.focus();
      	      obj.select();
      	       retorno="1";}
      // obj.value = dia + separador + mes + separador + anyo;
      return retorno;
    }  
    return retorno;   
}


// Funciones privadas
function toDigits(str){
  cad = "";
  for (n=0; n<str.length; n++){
    car = str.charAt(n);
    if (!isNaN(parseInt(car))){	
      cad += car;	
    } 	
  }
  return cad;	
}

function processIntPart(valor){
  if (valor==""){
    valor = "0";
  }
// quitar los puntos y comas
  valor = trimPointers(valor);  
// quitar los ceros a la izquierda
  valor = trimLeftZeroes(valor);
// a�adir los puntos dando la vuelta
  var valor1 = "";
  var cont = 0;
  for(n=valor.length; n>=0; n--){
  	
    valor1 += valor.charAt(n);
    if (cont == 3){
      cont = 0;
      valor1 += ".";
    }
    cont ++;
  }
// dar la vuelta
  valor1 = reverse(valor1);
// si hay un punto inicial lo quitamos
  if (valor1.charAt(0)=="."){
    valor1 = valor1.substring(1,valor1.length);
  }  
  return valor1;  
}

function processDecPart(valor){
  if (valor==""){
    valor = "00";
  }
  valor = trimPointers(valor);
  valor = trimRightZeroes(valor);
  return valor;
}

function reverse(valor){
  var valor1 = "";
  for(n=valor.length; n>=0; n--){
    valor1 += valor.charAt(n);
  }
  return valor1;
}

function trimPointers(valor){
  var valor1 = "";  
  for(n=0; n<valor.length; n++){
    if ((valor.charAt(n)!=".") && (valor.charAt(n)!=",")){
      valor1 += valor.charAt(n);
    }
  }
  return valor1;
}

function trimComilla(valor){
  var valor1 = "";  
  for(n=0; n<valor.length; n++){
    if (valor.charAt(n)!="'") {
      valor1 += valor.charAt(n);
    }
  }

  return valor1;
}
function trimPuntosComas(valor){
	// convierte un numero de tipo n.nnn,dd a nnnn.dd
  var valor1 = "";  
  for(n=0; n<valor.length; n++){
    if ((valor.charAt(n)!=".") && (valor.charAt(n)!=",")){
      valor1 += valor.charAt(n);
    }
    else if (valor.charAt(n)==","){
      valor1 += ".";
    }
    
  }
  return valor1;
  
}

function trimLeftZeroes(valor){
  var valor1 = "";
  var trimer = true;
  for(n=0; n<valor.length; n++){
    if (!((valor.charAt(n)=="0") && (trimer))){
      valor1 += valor.charAt(n);
      trimer = false;
    }
  }
  if (valor1==""){
    valor1 = "0";
  }
  return valor1;
}

function trimRightZeroes(valor){
  var valor1 = "";
  var trimer = true;
  for(n=valor.length-1; n>=0; n--){
    if (!((valor.charAt(n)=="0") && (trimer))){
      valor1 += valor.charAt(n);
      trimer = false;
    }
  }
  valor1 = reverse(valor1);
  if (valor1==""){
    valor1 = "00";
  }  
  return valor1;
}

   function formatoFechasConBarra (sFecha){
          
        var Fecha, mes,dia, ejercicio;
        
        sItem = sFecha.split("/");
        dia=sItem[0];
        if (dia.length==1)
        	dia = "0" + dia;
        mes=sItem[1];
        if (mes.length==1)
        	mes = "0" + mes;
        ejercicio=sItem[2];
        Fecha=dia+"/"+mes+"/"+ejercicio;
        return Fecha;
   
   }

         function formatoFechasSinBarra (sFecha){
          
        var Fecha, mes,dia, ejercicio;
        sItem = sFecha.split("/");
        dia=sItem[0];
        if (dia.length==1)
        	dia = "0" + dia;
        mes=sItem[1];
        if (mes.length==1)
        	mes = "0" + mes;
        ejercicio=sItem[2];
        Fecha=ejercicio+mes+dia;
        return Fecha;
   
   }
 function formatearDni(obj)
   {
     var format = /^(\d{5,8})([A-Za-z]?)$/;
     var match = obj.value.match(format);
     if (obj.value != ""){
     if (match!=null)
     {
     obj.value=obj.value;
     }else{
     alert(dameAlerta(idioma, 259));
     obj.focus();

     }
    }
   }

   
   

   
   
  