//--------------------------- funcion para validar que se ingresen numeros solamente -----------
// patron = /\d/; // Solo acepta números
// patron = /\w/; // Acepta números y letras
// patron = /\D/; // No acepta números
// patron =/[A-Za-zñÑ\s]/; // igual que el ejemplo, pero acepta también las letras ñ y Ñ
function valinum(e) { 
    tecla = (document.all) ? e.keyCode : e.which; 
    if (tecla==8) return true; // retroceso
	if (tecla==13) return true;  // enter
    patron =/[0123456789.]/; 
    te = String.fromCharCode(tecla); 
    return patron.test(te); 
}
function pasocampo() {
    event.chr(27);	
}
//-------------------------------------------------------------------------------------------------
function validarteclatasas(e)  
{
  tecla = (document.all) ? e.keyCode : e.which;
  if (tecla==13)  { validartasas(); }   //si la tecla es enter hace todo el proceso de validacion
}
//--------------------------------------------------- validacion y calculo tasas ------------------
function validartasas()
{
tcancuo = new Array();
ttasaa = new Array();
tmonto = new Array();
var i;
//----------- carga en la tabla tcancuo cada valor de cantidad de cuota -------------
for (i=1; i<=12; i=i+1)
{
	if (window.document.form1.elements["cancuo" + i].value!="") 
	{
       tcancuo[i-1] = parseFloat(window.document.form1.elements["cancuo" + i].value);
	} else {
       tcancuo[i-1] = "";
	   window.document.form1.elements["cancuo" + i].value="";
	}
}
for (i=1; i<=12; i=i+1)
{
	if (window.document.form1.elements["tasaa" + i].value!="") 
	{
       ttasaa[i-1] = parseFloat(window.document.form1.elements["tasaa" + i].value);
	} else {
       ttasaa[i-1] = "";
	   window.document.form1.elements["tasaa" + i].value="";
	}
}
for (i=1; i<=10; i=i+1)
{
	if (window.document.form1.elements["monto" + i].value!="") 
	{
       tmonto[i-1] = parseFloat(window.document.form1.elements["monto" + i].value);
	} else {
       tmonto[i-1] = "";
	   window.document.form1.elements["monto" + i].value="";
	}
}

for (i=0; i<=11; i=i+1)
{
alert("monto "+tmonto[i]+" cantidad cuota "+tcancuo[i]+" tasaa "+ttasaa[i]);
}

//var vmonto = parseFloat(window.document.form1.monto1.value);
//var vcancuo = parseFloat(window.document.form1.cancuo1.value);
//var vtasaa = parseFloat(window.document.form1.tasaa1.value);
//var vtasa = (vtasaa / 12 ) * vcancuo;
//vcuota = vmonto * vtasa;
//vcuota = vcuota / 100;
//vcuota = vmonto + vcuota;
//vcuota = vcuota / vcancuo;
//vcuota = redondeo1(vcuota);
//vcuota = fnum(vcuota);
//muestro(vcuota);
//window.document.form1.cuotam1c1.value=vcuota;	
//window.document.form1.cuotam1c1.focus();	
return false;
}

//-------------------------------------------------------------------------------------
function calcular(){ 
     textoCampo = window.document.form1.monto.value;
     textoCampo = validarEntero(textoCampo); 
     window.document.form1.monto.value = textoCampo;
}
function validarEntero(valor)
{ 
valor = parseInt(valor); 
if (isNaN(valor)) {
        return "";
    }else{
        return valor;
    }
}


//------------------- redondea a 1 decimales, si es 123,33 devuelve 123,3 ----------------
//------------------- devuelve tipo number -----------------------------------------------
//------------------- si se necesita hay que darle formato para presentacion al numero con fnum ---
function redondeo1(num) { 		
var original=parseFloat(num);
original=original*10;
original=Math.round(original);
original=original/10;
return (original);
}
//------------------------------- redondea a 2 decimales, si es 123,33333 devuelve 123,33 ---------
//------------------------------- pero no le da formato si es 123,30 devuelve 123,3 ---------------
//------------------------------- y devuelve una variable tipo number -----------------------------
function redondeo2(num) { 		
var original=parseFloat(num);
original=original*100;
original=Math.round(original);
original=original/100;
return (original);
}

//------------------------------- da formato a un numero o.oo entra number y devuelve  string -----
function fnum(mnt) { 
mnt -= 0; 
mnt = (Math.round(mnt*100))/100; 
return (mnt == Math.floor(mnt)) ? mnt + '.00' 
: ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt); 
}

//------------------------------- relleno un numero a la izq con el caracter especificado - devuelve string  -----
function alinum(num,ancho,prell) { 
if (num.length==ancho) { return num; }
cant = ancho - (num.length);
rell="";
for (i=1; i<=cant; i++) { rell += prell; }
return rell+num;
}

//----------- calcula digito verificador para pago facil - devuelve un string de 14 caracteres-----------
function dv(nro) {   // pasar el numero de cr. como viene sin ceros adelante y 2 ultimos numeros del anio 
var suma=0;          // ejm.  1750 del 2009   pasar  175009  pasar como nro o string
nro = nro*1;
var c = new Array(11);  // array de control
c[0]=1;	c[1]=3;	c[2]=5;	c[3]=7;	c[4]=9;	c[5]=3;	c[6]=5;	c[7]=7;	c[8]=9;	c[9]=3;	c[10]=5; c[11]=7;	
var n = new Array(12);  // array a generar
n[0]=0;	n[1]=4;	n[2]=4;	n[3]=7; n[4]=0; n[5]=0; n[6]=0; n[7]=0; n[8]=0; n[9]=0; n[10]=0; n[11]=0; n[12]=0; n[13]=0;
nro = nro.toString();
var long = (11-(nro.length-1));     
for (i=nro.length-1; i>=0; i--) {
	var exn = nro.substr(i,1);
	n[long+i] = (exn*1);
}
for (i=0; i<=11; i++) {
	suma=suma+(c[i]*n[i]);
}
var msuma = suma;
var suma = suma/2;
var suma = Math.floor(suma);  // devuelve el entero de un numero si es 129.6 da 129
var suma = suma.toString();   // lo convierto a cadena
var suma = suma.substr((suma.length-1),1);  // del largo de la cadena extraigo 1 osea el ultimo digito.
n[12] = suma*1;

var suma = (suma*1)*9;
var suma = suma + msuma;
var suma = suma/2;
var suma = Math.floor(suma);  
var suma = suma.toString();  
var suma = suma.substr((suma.length-1),1); 
n[13] = suma*1;
var cod="";
for (i=0; i<=13; i++) {
	cod=cod + n[i].toString();
}
return(cod)
}
//------------------------------------- da formato a un numero con el signo $ -----------
function fmon(num) { 
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)); 
return (((sign)?'':'-') + '$ ' + num + '.' + cents); 
}

//--------------------------------------- Formatea fecha --------------------------------
var primerslap=false; 
var segundoslap=false; 

function formateafecha(fecha) 
{ 
var long = fecha.length; 
var dia; 
var mes; 
var ano; 

if ((long>=2) && (primerslap==false)) { dia=fecha.substr(0,2); 
if ((IsNumeric(dia)==true) && (dia<=31) && (dia!="00")) { fecha=fecha.substr(0,2)+"/"+fecha.substr(3,7); primerslap=true; } 
else { fecha=""; primerslap=false;} 
} 
else 
{ dia=fecha.substr(0,1); 
if (IsNumeric(dia)==false) 
{fecha="";} 
if ((long<=2) && (primerslap=true)) {fecha=fecha.substr(0,1); primerslap=false; } 
} 
if ((long>=5) && (segundoslap==false)) 
{ mes=fecha.substr(3,2); 
if ((IsNumeric(mes)==true) &&(mes<=12) && (mes!="00")) { fecha=fecha.substr(0,5)+"/"+fecha.substr(6,4); segundoslap=true; } 
else { fecha=fecha.substr(0,3);; segundoslap=false;} 
} 
else { if ((long<=5) && (segundoslap=true)) { fecha=fecha.substr(0,4); segundoslap=false; } } 
if (long>=7) 
{ ano=fecha.substr(6,4); 
if (IsNumeric(ano)==false) { fecha=fecha.substr(0,6); } 
else { if (long==10){ if ((ano==0) || (ano<1900) || (ano>2100)) { fecha=fecha.substr(0,6); } } } 
} 

if (long>=10) 
{ 
fecha=fecha.substr(0,10); 
dia=fecha.substr(0,2); 
mes=fecha.substr(3,2); 
ano=fecha.substr(6,4); 
// Año no viciesto y es febrero y el dia es mayor a 28 
if ( (ano%4 != 0) && (mes ==02) && (dia > 28) ) { fecha=fecha.substr(0,2)+"/"; } 
} 
return (fecha); 
} 
//--------------------------------------- devengado --------------------------------
function indidev(ca,cc,cu) {
var b=0;
var a=0;
var indev=0;
var t1=1;
var t2=2;
while (true) {
   a=ca;
   indev=((t1+t2)/2);
   for (x=0; x<=cc; x++) {
       b=a*indev;
       if (x !== cc) { a=b-cu; }
   }
   if (redondeo2(a)+redondeo2(b)==0) { return(indev);} 
   if (a < 0) { t1=indev; } else { t2=indev; }
} 	
return(indev);
}
