
/*
  Validaciones generales
  Ultima actualización : 24/03/2004 18:26 
*/
//Variables para saber que navegador se esta utilizando
var NS,IE;
var strPagina='';
NS=false; IE=false;
if (navigator.appName=="Netscape") NS=true;
else IE=true;

/*
Arreglo para validar entidades en la CURP
*/
var entidadesValidas = new Array(34);
    entidadesValidas[ 1] = "AS"; // 1 AGUASCALIENTES
    entidadesValidas[ 2] = "BC"; // 2 BAJA CALIFORNIA
    entidadesValidas[ 3] = "BS"; // 3 BAJA CALIFORNIA SUR
    entidadesValidas[ 4] = "CC"; // 4 CAMPECHE
    entidadesValidas[ 5] = "CL"; // 5 COAHUILA
    entidadesValidas[ 6] = "CM"; // 6 COLIMA
    entidadesValidas[ 7] = "CS"; // 7 CHIAPAS
    entidadesValidas[ 8] = "CH"; // 8 CHIHUAHUA
    entidadesValidas[ 9] = "DF"; // 9 DISTRITO FEDERAL
    entidadesValidas[10] = "DG"; //10 DURANGO
    entidadesValidas[11] = "GT"; //11 GUANAJUATO
    entidadesValidas[12] = "GR"; //12 GUERRERO
    entidadesValidas[13] = "HG"; //13 HIDALGO
    entidadesValidas[14] = "JC"; //14 JALISCO
    entidadesValidas[15] = "MC"; //15 MEXICO
    entidadesValidas[16] = "MN"; //16 MICHOACAN
    entidadesValidas[17] = "MS"; //17 MORELOS
    entidadesValidas[18] = "NT"; //18 NAYARIT
    entidadesValidas[19] = "NL"; //19 NUEVO LEON
    entidadesValidas[20] = "OC"; //20 OAXACA
    entidadesValidas[21] = "PL"; //21 PUEBLA
    entidadesValidas[22] = "QT"; //22 QUERETARO
    entidadesValidas[23] = "QR"; //23 QUINTANA ROO
    entidadesValidas[24] = "SP"; //24 SAN LUIS POTOSI
    entidadesValidas[25] = "SL"; //25 SINALOA
    entidadesValidas[26] = "SR"; //26 SONORA
    entidadesValidas[27] = "TC"; //27 TABASCO
    entidadesValidas[28] = "TS"; //28 TAMAULIPAS
    entidadesValidas[29] = "TL"; //29 TLAXCALA
    entidadesValidas[30] = "VZ"; //30 VERACRUZ
    entidadesValidas[31] = "YN"; //31 YUCATAN
    entidadesValidas[32] = "ZS"; //32 ZACATECAS
    entidadesValidas[33] = "NE"; //39 SERV. EXTERIOR MEXICANO

var resultado,mensaje="";
var TIPO_PERSONA_FISICA			= "F"
var TIPO_PERSONA_FISICA_MORAL	= "FM"
var TIPO_PERSONA_MORAL			= "M"
/*
   Desc.: Valida que la cadena RFC sea un RFC válido sin importar la homoclave.
   Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validarRFCSinHomoclave(rfc,tipoPersona){
  var rfcAux;
  if((rfc.length == 9) || (rfc.length == 10))
    rfcAux = rfc  + "AB1";
  else
    rfcAux = rfc;
  return validarRFC(rfcAux,tipoPersona);
}
/*
  Desc.: Valida que la cadena RFC sea un RFC válido.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validarRFCCompleto(rfc,tipoPersona){
  return validarRFC(rfc,tipoPersona);
}
/*
  Desc.: Valida que la cadena RFC sea un RFC válido.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validarRFC(rfc,tipoPersona) {
  var retorno           = false;
  var abreviatura	    = "";
  var anio				= "";
  var mes				= "";
  var dia				= "";
  var homoclave	  	    = "";
  var digitoVerificador	= "";
  var retornoFisica	    = false;
  var retornoMoral	    = false;
  if(tipoPersona == TIPO_PERSONA_FISICA || tipoPersona == TIPO_PERSONA_FISICA_MORAL)
    if(rfc.length == 13){
      abreviatura	= rfc.substring(0, 4);
      anio      = rfc.substring(4, 6);
      mes	    = rfc.substring(6, 8);
      dia	    = rfc.substring(8, 10);
      homoclave = rfc.substring(10, 12);
      digitoVerificador	= rfc.substring(12, 13);
      if(validaAbreviatura(abreviatura) && validaAnio(anio) && validaMes(mes) && validaDia(dia,mes,anio) && 
         (validaFecha(anio,mes,dia)==0) && validaHomoclave(homoclave) && validaDigitoVerificador(digitoVerificador))
         retornoFisica = true;
      else
        retornoFisica = false;
    }  
    if(tipoPersona == TIPO_PERSONA_MORAL || tipoPersona == TIPO_PERSONA_FISICA_MORAL)
      if(rfc.length == 12){
        abreviatura = rfc.substring(0, 3);
        anio = rfc.substring(3, 5);
        mes	 = rfc.substring(5, 7);
        dia	 = rfc.substring(7, 9);
        homoclave	= rfc.substring(9, 11);
        digitoVerificador	= rfc.substring(11, 12);
        if(validaAbreviatura(abreviatura) && validaAnio(anio) && validaMes(mes) && validaDia(dia,mes,anio) && (validaFecha(anio,mes,dia)==0) && validaHomoclave(homoclave) && validaDigitoVerificador(digitoVerificador))
          retornoFisica = true;
        else
          retornoFisica = false;
    }    
  return retornoFisica || retornoMoral;
}
/*
  Desc.: Valida que la cadena abreviatura represente contenga solo caractees validos.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validaAbreviatura(abreviatura) {
  var retorno = false;
  for(var indice = 0; indice < abreviatura.length; indice++) {
    if((abreviatura.charAt(indice)>="A" && abreviatura.charAt(indice)<="Z") || 
		(abreviatura.charAt(indice)>="a" && abreviatura.charAt(indice)<="z") || abreviatura.charAt(indice) == '&' ||
	    abreviatura.charAt(indice)=="ñ" || abreviatura.charAt(indice)=="Ñ"  )
        retorno = true;
    else{
        retorno = false;
        break;
    }
  }
  return retorno;
}
/*
  Desc.: Valida que la cadena Anio represente un Año.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validaAnio(anio){
  var retorno = false;
  for(var indice = 0; indice < anio.length; indice++) {
    if(anio.charAt(indice)>="0" && anio.charAt(indice)<="9")
      retorno = true;
    else{
      retorno = false;
      break;
    }
  }
  return retorno;
}
/*
  Desc.: Valida que la cadena mes represente un mes.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validaMes(mes){
  var retorno = false;
  for(var indice = 0; indice < mes.length; indice++){
    if(mes.charAt(indice)>="0" && mes.charAt(indice)<="9")
      retorno = true;
    else{      
      retorno = false;
      break;
    }
  }  
  if (retorno) {
    if(mes.valueOf() < 1 || mes.valueOf() > 12){      
      retorno = false;
    }
  }
  return retorno;
}
/*
  Desc.: Valida que la cadena dia represente un dia.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validaDia(dia,mes,anio){
  var Monthdays=0;
  mes=parseInt(mes,10);
  var leapdays = new Array(31,29,31, 30,31,30, 31,31,30, 31,30,31); 
  var yeardays = new Array(31,28,31, 30,31,30, 31,31,30, 31,30,31); 
  dia=parseInt(dia,10);mes=parseInt(mes,10)-1; anio=parseInt(anio,10);
 
  if (dia <= 0) { return false; }
  if (isLeapYear(anio)) {
      if (dia <= leapdays[mes]) return true; 
      else return false;
    }
   else{ 
    if (dia <= yeardays[mes]) return true;
    else return false; 
   }

}

/*
 Funcion : Función que valida si es año bisiesto o no.
 
*/
function isLeapYear( year ){
  // is it leap year ? returns a boolean
  return ( (0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))); 
  // ie, if the year divides by 4, but not by 100 except when it divides by
  // 400, it is leap year
}


/*
  Desc.: Valida que la cadena homoclave contenga solo carecteres validos.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validaHomoclave(homoclave){
  var retorno = false;
  for(var indice = 0; indice < homoclave.length; indice++){
    if((homoclave.charAt(indice)>="A" && homoclave.charAt(indice)<="Z") || 
	   (homoclave.charAt(indice)>="a" && homoclave.charAt(indice)<="z") || homoclave.charAt(indice) == '&' ||
	   (homoclave.charAt(indice)=="ñ" || homoclave.charAt(indice)=="Ñ") ||	  
       (homoclave.charAt(indice)>="0" && homoclave.charAt(indice)<="9"))
      retorno = true;
    else{
      retorno = false;
      break;
    }
  }
  return retorno;
}
/*
  Desc.: Evalua que el caracter enviado sea un digito.
  Valor de Retorno: Regresa true cuando la cadena evaluada es correcta false en caso contrario.
*/
function validaDigitoVerificador(digito) {
  var retorno = false;
  for(var indice = 0; indice < digito.length; indice++){    
	  if((digito.charAt(indice)>="0" && digito.charAt(indice)<="9") || digito.charAt(indice) == 'A' || digito.charAt(indice) == 'a')
      retorno = true;
    else{        
      retorno = false;
      break;
    }
  }
  return retorno;
}
/*
  Desc.: Evalua que el año, el mes y el dia en forma compuesta sea una fecha valida.
  Valor de Retorno: Regresa true cuando la fecha es correcta false en caso contrario.
*/
function validaFecha(anio,mes,dia){
  var regresa  = 1;
  var anioAux1 = 0;
  var anioAux2 = 0;    
  anioAux1     = eval(anio + ' + 1900');
  anioAux2     = eval(anio + ' + 2000');
  if(dia >= 1 && dia <= 31 && anioAux1 >= 1900 && mes != 0){
    regresa = 0;
    //Meses de 31 dias
    if(( mes == 1 || mes == 3 || mes == 5 || mes == 7|| mes == 8 || mes == 10 || mes == 12) && dia > 31){
      regresa = 1;
    }
    //Meses de 30 dias
    if((mes == 4 || mes == 6 || mes == 9 || mes == 11)&& dia > 30) {    
      regresa = 1;
    }
    //Febrero y bisiestos
    if(((mes == 2 && ( dia > 29 ||( dia == 29 &&((anioAux1 % 400 != 0)&& ((anioAux1 % 4 != 0) || (anioAux1 % 100 == 0))))))) && (mes == 2 && ( dia > 29 ||( dia == 29 &&((anioAux2 % 400 != 0)&& ((anioAux2 % 4 != 0) || (anioAux2 % 100 == 0))))))){
      regresa = 1;
    }
  }
  return regresa;
}
/*
  Desc.: Valida que el caracter sexo contenga solo el carectere valido H o M.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validaSexo(sexo){
  var retorno=false;
  for(var indice = 0; indice < sexo.length; indice++){
    if(sexo.charAt(indice) == 'H' || sexo.charAt(indice) == 'M'){
      retorno = true;
    }else{        
      retorno = false;
      break;
    }
  }
  return retorno;
} 
/*
  Desc.: Valida que el cadena entidad contenga solo las entidades validas.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validaEntidad(entidad){
  var retorno=false;
  for(var indice = 1; indice < entidadesValidas.length; indice++){
    if(entidad==entidadesValidas[indice]){
      retorno = true;
      break;
    }
  }  
  return retorno;
}
/*
  Desc.: Valida que la cadena de consonantes contenga solo las consonantes validas.
  Valor de Retorno: Regresa true cuando la cadena es correcta false en caso contrario.
*/
function validaConsonantes(consonantes){
  var retorno=false;
  consonantes=consonantes.toUpperCase();
  for(var indice = 0; indice < consonantes.length; indice++){
    if( consonantes.charAt(indice) != 'A' && consonantes.charAt(indice) != 'E' && consonantes.charAt(indice) != 'I' && consonantes.charAt(indice) != 'O' && consonantes.charAt(indice) != 'U'){
      retorno = true;
    }else{
      retorno = false;      
      break;
    }
  }
  return retorno;
}
/*
  Description: Valida si la CURP dada esta correctamente escrita.
*/  
function validaCURP(curp){  
  var CURP;
  var retorno = false;
  var abreviatura;
  var anio; 
  var mes;  
  var dia;  
  var sexo;
  var entidad;
  var consonatesApellidos;
  var homoclave; 
  var digitoVerificador;
  curp = curp.toUpperCase();
  if(curp.length == 18){
    abreviatura = curp.substring(0, 4);
    anio = curp.substring(4, 6);
    mes = curp.substring(6, 8);
    dia = curp.substring(8, 10);
    sexo = curp.substring(10, 11);
    entidad = curp.substring(11, 13);
    consonatesApellidos = curp.substring(13, 16);
    homoclave = curp.substring(16, 17);
    digitoVerificador = curp.substring(17, 18);
    validaConsonantes(consonatesApellidos)
    if(validaAbreviatura(abreviatura) &&
      validaAnio(anio) && validaMes(mes) && validaDia(dia,mes,anio) && (validaFecha(anio, mes, dia) == 0) &&
      validaSexo(sexo) &&
      validaEntidad(entidad) &&
      validaConsonantes(consonatesApellidos) &&
      validaHomoclave(homoclave) &&
      validaDigitoVerificador(digitoVerificador))
      retorno = true;
    else
      retorno = false;
  }
  return retorno;
}  

/*
 Función :	GuardaDatosHidden
 Descripción:	Arma la cadena de datos proveniente de un Arreglo para guardarse en un campo oculto
                 y asi poder ser enviada la información           
 Author:	RSP , diciembre 2003 
*/
function GuardaDatosHidden(nombreForma,ArrDat,nombreHidden){
 var strSend='',i;
 if(ArrDat.length >0){
  for(i=0;i<ArrDat.length;i++){
    ArrDat[i]=checkAmp(ArrDat[i],0);
    i==0 ? strSend=ArrDat[i]+'&' : i==ArrDat.length-1 ? strSend+=ArrDat[i] : strSend+=ArrDat[i]+'&';
  }
 } 
 eval('document.'+nombreForma+'.'+nombreHidden+'.value=strSend;');
}

/*
	Función :		checkAmp
	Descripción :	Función que sustituye el ampersand por la tilde ( & -> ~)
	Datos entrada:	Cadena a sustituir, opcion : 0 ->Regresar la cadena con el con la tilde si es el caso
					1 -> Regresa la cadena modificada con el ampersand
					sino se encuentra el ampersand se regresa la cadena tal cual se recibió	                   
	Datos salida:	Cadena modificada
*/
function checkAmp(strCad,opc){
var re1='',re2='';
 re1=/\&/g;
 re2=/\~/g;
 
 switch (opc){
  case 0 : 
     if(strCad != true && strCad != false && strCad.length>0){
    strCad=strCad.replace(re1,String.fromCharCode(126));
    }
  break;
  case 1:
   if(strCad != true && strCad != false && strCad.length>0){
    strCad=strCad.replace(re2,String.fromCharCode(38));
   } 
  break;
 }//fin switch
return (strCad);
}


//Funcion:			RecuperaDatosHidden
//Autor:			RSP,Dic. 2003
//Descripcion :			Funcion que Asigna los valores que se recibieron del submit a arreglos
//Parametros de entrada :	Cadena con la informacion
//Datos de salida :		Arreglo con los valores dados en la cadena recibida
function RecuperaDatosHidden(strCad){
var ValorCampos= new Array();
var pos1,pos2,tmp1,i,j;
var pos1=0;
var pos2=0;
var nchars=0;
var nchars2=0;
var longCad=0;
var nRegistros;
j=0;
if(strCad.length>0){
 for(i=0;i<=strCad.length;i++){
  pos2=strCad.indexOf("&",pos1);
  nchars=pos2-pos1;
  if (pos2==-1){ nchars=(strCad.length-pos1); longCad+=nchars;}
  else longCad+=nchars +1;
 
   tmp1=strCad.substr(pos1,nchars);  
   if(tmp1!='' || tmp1!=null || tmp!=undefined){
    tmp1=checkAmp(tmp1,1);
    ValorCampos[j]=tmp1;
   }
   j+=1;
   pos1=pos2+1;
   i=longCad;

  }//fin for   
}//fin if strCad.length>0  
 return ValorCampos;
}


/*
  Función :				round2
  Descricpión :			Redondea un número con el criterio en decimales > .51 suben el sig. entero
  Datos de entrada :	Número a redondear
*/
function round2(num){
var tmp,tmp1,num2;
 tmp=num.toString();
 tmp1=tmp.substr(0,tmp.indexOf('.'));
 tmp=tmp.substr(tmp.indexOf('.'));
 if(tmp>0.50 ) return Math.round(num);
 else{
   if(tmp1.length==0 && tmp.length>0)  return (num);
   if(tmp1>0) return Math.round((num-0.1));
   else{ tmp-=0.1; return Math.round(tmp);}
  }
}

/*
 Función :			formatCurrency
 Descripción :		Formatea una cantidad con comas y signo de pesos ademas de redondear opcionalmente
 Datos de entrada :	numero y opcion de redondeo 0-No, 1-Si
*/
function formatCurrency(num,opc) {
 var valor,strTemp='';
 num = num.toString().replace(/\$|\,/g,'');
 
 if(isNaN(num)) num = "0";
 if(opc==1) num =round2(num); //se trata de redondear el numero
 sign = (num == (num = Math.abs(num)));
 num = Math.floor(num*100+0.50000000001);
 cents = num%100;
 num = Math.floor(num/100).toString();
 if(cents<10)
  cents = "0" + cents;
 for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
  num = num.substring(0,num.length-(4*i+3))+','+
  num.substring(num.length-(4*i+3));
  valor = ((sign)?'':'-') + '$' + num + '.' + cents;
  //return (valor.substring(0,15));
  //se valida que si son 15 posiciones no vaya un punto al final de la cantidad
  if(UnformatCurrency(valor) > 999999999.99)
   strTemp='$999,999,999.99';
  else  strTemp=valor.substring(0,15);
  
  strTemp=strTemp.replace(/\.$/,''); 
  return(strTemp);
}

function formatCurrencybk(num) {
var valor;
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
valor = ((sign)?'':'-') + '$' + num + '.' + cents;
return (valor.substring(0,15));
}

/*
  Función :			UnformatCurrency
  Descripción :		Quita el formato currency de un numero
  Datos entrada :	numero a quitar el formato
*/
function UnformatCurrency(num){
num = num.toString().replace(/\$|\.00|\,/g,'');
//num = num.toString().replace(/\$|\,/g,''); backup 01/03/2004
return (num);
}

/*
 Función :			formatNumeric
 Descripción :		verifica que el formato numerico sea valido,de lo contrario coloca 0 en el campo donde se llama a esta funcion
 Datos de entrada :	numero 
*/
function formatNumeric(num,opc) {
 num = num.toString().replace(/\$|\,/g,'');
 if(isNaN(num)) num = "0";
 return (num);
}

/*
  Función :			currencyFormat
  Descripción :		Función que permite la entrada de datos numericos con punto decimal
					siempre y cuando se pase la opcion 0, si es 1 entonces solo aceptara numero enteros
  Datos entrada :	Evento del teclado
*/
function currencyFormat(e,opc) {
//codigos de teclado : 37, 39->flechas desplazamiento, Tabulador=9, BackSpace=8 , punto=46
var key = '',strVals='';
var whichCode = (window.Event) ? e.which : e.keyCode;
opc=(opc==null ? 0:opc);

if(window.Event){ //se trata de Netscape
 strVals=(opc==0 ? '(whichCode<48 || whichCode>57) && whichCode !=46 && whichCode !=37 && whichCode !=39 && whichCode !=8 && whichCode !=0' : '(whichCode<48 || whichCode>57) && whichCode !=37 && whichCode !=39 && whichCode !=8 && whichCode !=0');
 
  if (eval(strVals)){
    return false;  // tecla no valida
   }
   else return true;
}
else{ //se trata de Explorer
 strVals=(opc==0 ? '(e.keyCode<48 || e.keyCode>57) && e.keyCode !=46' : '(e.keyCode<48 || e.keyCode>57)');
  if (eval(strVals)){
    return false;  // tecla no valida
   }
   else return true;
  }
}


/*
 Función:		handleEnter
 Descripción:	Función que habilita con <enter> el dar un tab(IE y NS)
 Datos de entrada : campo,objeto evento
*/
function handleEnter (field, event) {
  var keyCode = event.keyCode ? event.keyCode : 
                event.which ? event.which : event.charCode;
  if (keyCode == 13 ) {
    var i;
    for (i = 0; i < field.form.elements.length; i++)
     if (field == field.form.elements[i]) break;
     i = (i + 1) //% field.form.elements.length;
     if(field.form.elements[i].type=='hidden' || field.form.elements[i].disabled || (field.form.elements[i].style.visibility =='hidden')){
      handleEnter(field.form.elements[i],event);
     }
     else{
      field.form.elements[i].focus();
      if(IE && field.form.elements[i].type != "select-one") field.form.elements[i].select();
     }
	return true;
  }
  else
    return true;
}

/*
 Función:		handleEnter2
 Descripción:	Función que envia el enfoque a un elemento en especifico con <enter> el dar un tab(IE y NS)
 Datos de entrada : nombre de la forma,nombre del campo destino,objeto evento
*/
function handleEnter2 (strform,fieldname,event) {
 var i,targ;
 var keyCode = event.keyCode ? event.keyCode : 
                event.which ? event.which : event.charCode;
  if (keyCode == 9 ) {
    for (i = 0; i < eval('document.'+strform+'.elements.length'); i++){
      if (fieldname == eval('document.'+strform+'.elements[i].name') ){
        targ=i; 
        break;} 
   }//fin for
    eval('document.'+strform+'.elements['+targ+'].focus()');
    return true;
  }
  else
    eval('document.'+strform+'.'+fieldname+'.focus()');
  return true;
}


/*
 Función :			compareDatesv2
 Descripción :	    Esta Funcion verifica si una fecha es menor o igual a otra.
 Datos de entrada : fecha1,fecha2, opción de validación
 Datos de salida :	true, false
 autor:				RSP, 19 Mar 2004 
*/
function compareDatesv2(value1, value2,opc) {
   var date1, date2;
   var month1, month2;
   var year1, year2;
   blnDC=true;
   
  switch(opc){
  case 3:
  case 1: //formato dd-mm-aaa , valida si value 2 =>value1 , si es cierto regresa 0, caso contrario regresa 1
    date1 = value1.substring (0, value1.indexOf ("-"));
    month1 = value1.substring (value1.indexOf ("-")+1, value1.lastIndexOf ("-"));
    year1 = value1.substring (value1.lastIndexOf ("-")+1, value1.length);

    date2 = value2.substring (0, value2.indexOf ("-"));
    month2 = value2.substring (value2.indexOf ("-")+1, value2.lastIndexOf ("-"));
    year2 = value2.substring (value2.lastIndexOf ("-")+1, value2.length);

    month2--;
    month1--;
    var cDate = new Date(year2, month2, date2);
    var today = new Date(year1, month1, date1);
    var dateDiff = (cDate - today) / 86400000; //son los milisegundos en un dia, para obtener los dias de dif.
    if(opc==1){
     if(dateDiff<0) blnDC=false; //la fecha 2 es menor que la fecha uno se regresa falso
     return blnDC; //se retorna true o false
    }
    else{//opc==3
     if(dateDiff<=0) blnDC=false; //la fecha 2 es menor que la fecha uno se regresa falso
     return blnDC; //se retorna true o false
    }
    break;
    
   case 2: //formato dd-mm-aaa , retorna la diferencia en años entre 2 fechas
    date1 = value1.substring (0, value1.indexOf ("-"));
    month1 = value1.substring (value1.indexOf ("-")+1, value1.lastIndexOf ("-"));
    year1 = value1.substring (value1.lastIndexOf ("-")+1, value1.length);

    date2 = value2.substring (0, value2.indexOf ("-"));
    month2 = value2.substring (value2.indexOf ("-")+1, value2.lastIndexOf ("-"));
    year2 = value2.substring (value2.lastIndexOf ("-")+1, value2.length);

    month2--;
    month1--;
    var cDate = new Date(year2, month2, date2);
    var today = new Date(year1, month1, date1);
    var dateDiff = (cDate - today)/ 31536000000; //se divide entre los milisegundos por año para obtener el # de años
    return Math.abs(Math.floor(dateDiff));
    break; 
  }

}

/*
 Funcion :			trim2
 Descripcion:		Elimina los espacios fuera de la cadena que se captura
 Datos de entrada:  Objeto de la forma
 Datos de salida:	Valor capturado dentro del objeto sin espacios fuera de la cadena
*/
function trim2(objeto) {
// Removes leading and trailing spaces from the passed string. Also removes
// consecutive spaces and replaces it with one space. If something besides
// a string is passed in (null, custom object, etc.) then return the input.
  inputString=objeto.value.toString();
  if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   objeto.value = retValue;
   return objeto; // Return the trimmed string back to the user
} // Ends the "trim" function


/*
 Funcion :			FormatNumber
 Descripción:		Formatea un numero a los decimales que uno le indique en el parametro decimals 
 Datos de entrada:	Numero a formatear y decimales a presentar
*/

function FormatNumber(pnumber,decimals) 
{  
  if (isNaN(pnumber)) { return 0};  
  if (pnumber=='') { return 0};  
   
  var IsNegative=(parseInt(pnumber)<0); 
  if(IsNegative)pnumber=-pnumber; 

  var snum = new String(pnumber);  
  var sec = snum.split('.');  
  var whole = parseInt(sec[0]);  
  var result = '';  
  if(sec.length > 1){  
    var dec = new String(sec[1]);  
    dec = parseInt(dec)/Math.pow(10,parseInt(dec.length-decimals-1)); 
Math.round(dec); 
dec = parseInt(dec)/10; 

if(IsNegative) 
{ 
  var x = 0-dec; 
      x = Math.round(x); 
  dec = - x; 
} 
else 
{ 
      dec = Math.round(dec); 
} 

/* 
 * If the number was rounded up from 9 to 10, and it was for 1 'decimal' 
 * then we need to add 1 to the 'whole' and set the dec to 0. 
 */ 
if(dec==Math.pow(10, parseInt(decimals)))
{ 
  whole+=1; 
  dec="0"; 
} 

    dec = String(whole) + "." + String(dec);  
    var dot = dec.indexOf('.');  
    if(dot == -1){  
      dec += '.';  
      dot = dec.indexOf('.');  
    } 
var l=parseInt(dot)+parseInt(decimals); 
    while(dec.length <= l) { dec += '0'; }  
    result = dec;  
  } else{  
    var dot;  
    var dec = new String(whole);  
    dec += '.';  
    dot = dec.indexOf('.');  
var l=parseInt(dot)+parseInt(decimals); 
    while(dec.length <= l) { dec += '0'; }  
    result = dec;  
  }  
  if(IsNegative)result="-"+result; 
  return result;  
}  
