/* CALCULA VCF */
var ntdif,ndalfa, ndparcial,nfactor,ndfinal,nfactor;

//var ndmed, ntmed=0;

function float2str(num, dec)
{
	if (isNaN(num))
		return num;
	else
	{  
		var txt=(Math.round(num*Math.pow(10, dec))/Math.pow(10, dec)).toString();
		var pun=txt.indexOf(".");
		if (pun==-1){
			txt+=".00000000000000000";
			var pun=txt.indexOf(".");
		}
		else{
			txt+="00000000000000000";
		}
		if(dec==0)
			return txt.substr(0, pun);
		else
			return txt.substr(0, pun+dec+1);

		//var res=Math.round(num*Math.pow(10, dec))/Math.pow(10, dec);
		//var re= /\./
		//return res.toString().replace(re, ',');
	}
}

function calc_vcf(nk0, nk1)
{
  var nalfa15=nk0/ndalfa/ndalfa+nk1/ndalfa;
  var nexp=-nalfa15*ntdif-0.8*Math.pow(nalfa15*ntdif,2);
  var nvcf=Math.exp(nexp);
  return nvcf;
}

/* IMPRIME EL RESULTADO FINAL */
function resultado(ndens,nfact)
{

  if((ndens<653.0) || (ndens>=1075.1)) 
	  alert("RESULTADO NO VALIDO. NO SON DE APLICACION ESTAS TABLAS");
  else {  
	  	//document.res.den.value=float2str(ndparcial, 1);
		//document.res.fcv.value=float2str(nfactor, 4);
		document.res.vol.value=float2str(nfactor*document.ent.voli.value, 0);
	 }

}

/* VALIDA ENTRADA DE DATOS EN CUANTO A FORMATO */
function valida1(dato,opcion1)
{
dato=dato.toString();

 if(opcion1==1) {
   expreg1 = new RegExp("^-{0,1}[0-9]{1,3}[.]{1}[0-9]{1,2}$");
   expreg2 = new RegExp("^-{0,1}[0-9]{1,3}$");
   result1 = expreg1.test(dato);
   result2 = expreg2.test(dato);
 }
 else 
	 if(opcion1==2){
		expreg1 = new RegExp("^[0-9]{1,4}[.]{1}[0-9]{1}$");
		expreg2 = new RegExp("^[0-9]{1,4}$");
		result1 = expreg1.test(dato);
		result2 = expreg2.test(dato);
		}
		else{
				expreg2 = new RegExp("^[0-9]{0,15}$");
				result1=false;
				result2 = expreg2.test(dato);
		}
 if (result1 || result2) return true;
 else return false;
}

/* VALIDA ENTRADA DE DATOS EN CUANTO A INTERVALOS VALIDOS*/
function valida2(dato,opcion2)
{

  if(opcion2==1){
    if((dato>=-18.0) && (dato<=150.0)) return true;
  					}
  else {
    if((dato>=653.0) && (dato<1075.1)) return true;
  }

  return false;
}

/* IMPRIME PANTALLA CON ERROR */
function pintaerror(ncaso, ntmed, ndmed)
{

 switch (ncaso){

       case 1:                        /* FORMATO DE ENTRADA NO VALIDO */
         if (!valida1(ntmed,1)){
           alert ("TEMPERATURA Formato válido: NNN.NN");
		   break;
         }

         if (!valida1(ndmed,2)){
           alert ("DENSIDAD Formato válido: NNNN.N");
		   break;
         }
		 if (!valida1(document.ent.voli.value,3)){
           alert ("VOLUMEN Formato válido: número entero");
		   break;
         }
         break;

       case 2:                         /* VALORES FUERA DE INTERVALO VALIDO */
         if (!valida2(ntmed,1)){
			alert ("Intervalo válido de TEMPERATURA: -18 a 150 ºC");
			break;
         }

         if (!valida2(ndmed,2)){
           alert ("Intervalo válido de DENSIDAD: 653.0 a 1075.0");
		   break;
         }
         break;

       case 3:                         /* HUECOS DE LA TABLA */
         alert ("TEMPERATURA Y DENSIDAD MEDIDAS INCOMPATIBLES CON ESTAS TABLAS");
         break;

       case 4:
         alert ("MAL FUNCIONAMIENTO. FALLÓ LA SELECCIÓN DE FÓRMULA");
         break;
    }
}

/* IMPRIME EL RESULTADO FINAL EN PROGRAMA INVERSO */
function resultinv(ndfinal,ndmed)
{
	//document.res.dte.value=float2str(ndfinal, 1);
	//document.res.ftv.value=float2str(nfactor, 4);
	document.res.vte.value=float2str(ndfinal*document.ent.voli.value/ndmed, 0);
  //alert ("Densidad a "+ntmed+" ºC en Kg/m3 "+ndfinal);
  //alert ("Factor de transformación de volumen "+nfactor);
}
