/* Crea una ventana popup */
function funPopUpWindow(parEDireUrl, parENombVent, parEScrollbars, parEResizable, parEWidth, parEHeight, parELeft, parETop)
{
  /* Setea el ancho máximo de la ventana y la centro si no se paso un valor de parámetro o si el valor es mayor al máximo permitido */
  if ((parEWidth>=screen.width-12)||(parEWidth==""))
  {
    parEWidth = screen.width - 12;
    parELeft = 0;
  }

  /* Setea el alto máximo de la ventana y la centro si no se paso un valor de parámetro o si el valor es mayor al máximo permitido */
  if ((parEHeight>=screen.height-58)||(parEHeight==""))
  {
    parEHeight = screen.height - 58;
    parETop = 0;
  }

  /* Centra la ventana a lo ancho si no se paso un valor de parámetro */
  if ((parELeft=="")&&(parELeft!="0"))
    parELeft = (screen.width - 12 - parEWidth) / 2;

  /* Centra la ventana a lo alto si no se paso un valor de parámetro */
  if ((parETop=="")&&(parETop!="0"))
    parETop = (screen.height - 58 - parEHeight) / 2;

  /* alert ('Width: ' + parEWidth + ' Height: ' + parEHeight + ' Left: ' + parELeft + ' Top: ' + parETop); */

  /* Crea la nueva ventana */
  flyout=window.open(parEDireUrl,parENombVent,"resizable=" + parEResizable + ",scrollbars=" + parEScrollbars + ",width=" + parEWidth + ",height=" + parEHeight + ",top=" + parETop + ",left=" + parELeft)
}

function funPopUpWindow2(parEDireUrl, parENombVent, parEScrollbars, parEResizable, parEWidth, parEHeight, parELeft, parETop)
{

  /* Setea el ancho máximo de la ventana y la centro si no se paso un valor de parámetro o si el valor es mayor al máximo permitido */
  if ((parEWidth>=screen.width-12)||(parEWidth==""))
  {
    parEWidth = screen.width - 12;
    parELeft = 0;
  }

  /* Setea el alto máximo de la ventana y la centro si no se paso un valor de parámetro o si el valor es mayor al máximo permitido */
  if ((parEHeight>=screen.height-58)||(parEHeight==""))
  {
    parEHeight = screen.height - 58;
    parETop = 0;
  }

  /* Setea el izquierda máximo de la ventana si el parámetro más el ancho excede la pantalla */
  if ((parseInt(parELeft)+parseInt(parEWidth))>=screen.width-12)
    parELeft = screen.width - 12 - parEWidth;

  /* Setea el arriba máximo de la ventana si el parámetro más el alto excede la pantalla */
  if ((parseInt(parETop)+parseInt(parEHeight))>=screen.height-58)
    parETop = screen.height - 58 - parEHeight;

  /* Centra la ventana a lo ancho si no se paso un valor de parámetro */
  if ((parELeft=="")&&(parELeft!="0"))
    parELeft = (screen.width - 12 - parEWidth) / 2;

  /* Centra la ventana a lo alto si no se paso un valor de parámetro */
  if ((parETop=="")&&(parETop!="0"))
    parETop = (screen.height - 58 - parEHeight) / 2;

  /* alert ('Width: ' + parEWidth + ' Height: ' + parEHeight + ' Left: ' + parELeft + ' Top: ' + parETop); */

  /* Crea la nueva ventana */
  flyout=window.open(parEDireUrl,parENombVent,"resizable=" + parEResizable + ",scrollbars=" + parEScrollbars + ",width=" + parEWidth + ",height=" + parEHeight + ",top=" + parETop + ",left=" + parELeft)
  return flyout;
}

/* Deshabilita el botón derecho del mouse */
function funDisableRightClick()
{
  if (event.button == 2)
  {
    alert("Lo siento no puede utilizar el boton derecho.\n")
  }
}

/* Redondea un número */
function roundit(Num, Places, parEDeci)
{
	if (Places > 0) 
	{
		if ((Num.toString().length - Num.toString().lastIndexOf(parEDeci)) > (Places + 1))
		{
			var Rounder = Math.pow(10, Places);
			Num = Math.round(Num * Rounder) / Rounder;

			varCero = "";
			varDeci = Num.toString().length - Num.toString().lastIndexOf(parEDeci) - 1;

			if (Num.toString().lastIndexOf(parEDeci)>0)
			{
				for (varI=varDeci;varI<Places;varI++)
				{
					varCero = varCero + "0";
				}
				Num = Num + varCero;
			}
			else 
			{
				for (varI=0;varI<Places;varI++)
				{
					varCero = varCero + "0";
				}
				Num = Num + "." + varCero;
			}

			return Num;
		}
		else
		{
			varCero = "";
			varDeci = Num.toString().length - Num.toString().lastIndexOf(parEDeci) - 1;

			if (Num.toString().lastIndexOf(parEDeci)>0)
			{
				for (varI=varDeci;varI<Places;varI++)
				{
					varCero = varCero + "0";
				}
				Num = Num + varCero;
			}
			else 
			{
				for (varI=0;varI<Places;varI++)
				{
					varCero = varCero + "0";
				}
				Num = Num + "." + varCero;
			}

			return Num;
		}
	}
	else return Math.round(Num);
}

/* Verifica si el campo es número */
function funVeriNume (parECadena)
{
	var CadenaNumeros="0123456789.";
	var EsteCaracter;
	var Contador =0;
	for (var i=0; i < parECadena.value.length ; i++)
	{
		EsteCaracter= parECadena.value.substring(i,i+1);
		if (CadenaNumeros.indexOf(EsteCaracter) != -1)
			Contador ++;
	}
	if (Contador == parECadena.value.length)
		return (true)
	else
	{
		alert (" Solo puede ingresar números en este campo");
		parECadena.value="";
		parECadena.focus();
	}
}

/* Verifica si el campo es número */
function funVeriNumeEnte (parECadena)
{
	var CadenaNumeros="0123456789";
	var EsteCaracter;
	var Contador =0;
	for (var i=0; i < parECadena.value.length ; i++)
	{
		EsteCaracter= parECadena.value.substring(i,i+1);
		if (CadenaNumeros.indexOf(EsteCaracter) != -1)
			Contador ++;
	}
	if (Contador == parECadena.value.length)
		return (true)
	else
	{
		alert ("Solo puede ingresar números enteros en este campo");
		parECadena.value="";
		parECadena.focus();
	}
}


/*Funcion del Digito Verificador*/
function funEsCedula(Dato)
{
	pal="";
	letra="";
	impar=0;
	valimpar=0;
	valpar=0;
	result=0;
	codverif=0;
	auxres=0;
	auxres1=0;

	for (var i=0; i < Dato.length ; i++)
	{
		letra= Dato.substring(i,i+1);
		if (letra != "-")
		{
			pal= pal + letra;
		}
		 
	}
	Dato=pal;
	if (Dato.length != 10)
		return false;
	
	codiverif=Dato.substring(9,10);
	valimpar=0;
	for (var i=0; i < Dato.length -1  ; i=i+2)
	{
		impar=(parseInt(Dato.substring(i,i+1)))*2;
		if (impar > 9)
			impar=impar-9;
			valimpar = valimpar+impar;
		
	}
	valpar=0;
	for (var i=1; i < Dato.length -2  ; i=i+2)
	{
		valpar = valpar + parseInt(Dato.substring(i,i+1));
	}
	result = valimpar + valpar;
	auxres = result%10
	auxres1 = 10 - auxres;
	
	if (auxres != 0)
	{
		if (codiverif == auxres1)
		return true;
	}
	else
	{
		if(codiverif == auxres)
		return true;
	}
	return false;
}

/*************************************************************************************************************/
//Funciones para verificar el Ruc
 function funEsRuc(parERuc)
 {	
	if (funVeriVaci(parERuc) == false)
	{
	   if (parERuc.value.length != 13)
	  {
		alert("El RUC no es correcto, debe ingresar 13 números");
		parERuc.focus();
		return false;
	  }
	 
	  varVeriRuc1 = -1
	  //Guardo el ruc en una variable
	  varAuxRuc = parERuc.value;

	  //Control de los tres últimos dígitos
	  varFinRuc = varAuxRuc.substr(10,3);

	  if (varFinRuc != "001")
	  {
		parERuc.focus();
		alert("El Ruc no es válido");
		return false;
	  }
	  
	  //Control del tercer número
	  varTerNumRuc = varAuxRuc.substr(2,1);

	  //Toma los 10 primeros números
	  varDiePrimNumRuc = varAuxRuc.substr(0,10);

	  if (varTerNumRuc >= 0 && varTerNumRuc <= 5)
	  {
		if (funEsCedula(varDiePrimNumRuc) == true )
			varVeriRuc1 = 1;
		else
			varVeriRuc1 = -1;
	  }
	  else 
	  {
		if (varTerNumRuc == 6)
			varVeriRuc1 = funValidaTercero6(varDiePrimNumRuc);
		if (varTerNumRuc == 9)
			varVeriRuc1 = funValidaTercero9(varDiePrimNumRuc);
	  }
	  
	  if (varVeriRuc1 == -1)
	  {
		parERuc.focus();
		alert("El Ruc no es válido");
		return false;
	  }
	  else
		 return true;
	}
 }
 
 //*****Estas funciones tambien son para el ruc***/	
 function funValidaTercero9(parENume)
 {
	varUno = parENume.substr(0,1);
	varDos = parENume.substr(1,1);
	varTre = parENume.substr(2,1);
	varCua = parENume.substr(3,1);
	varCin = parENume.substr(4,1);
	varSei = parENume.substr(5,1);
	varSie = parENume.substr(6,1);
	varOch = parENume.substr(7,1);
	varNue = parENume.substr(8,1);
	varDie = parENume.substr(9,1);

	varSum = varUno * 4 + varDos * 3 + varTre * 2 + varCua * 7 + varCin * 6 + varSei * 5 + varSie * 4 + varOch * 3 + varNue * 2;
	while (varSum > 11)
	{
		varSum = varSum - 11;
	}
	
	varOnc = 11 - varSum;
	
	if (varOnc == 10)
	{
		varOnc = 0;
		varRet = -1
	}
	
	if  (varOnc != varDie)
		varRet = -1;
	else
		varRet = 1;
	
	return varRet;
}

 function funValidaTercero6(parENume)
 {
	varUno = parENume.substr(0,1);
	varDos = parENume.substr(1,1);
	varTre = parENume.substr(2,1);
	varCua = parENume.substr(3,1);
	varCin = parENume.substr(4,1);
	varSei = parENume.substr(5,1);
	varSie = parENume.substr(6,1);
	varOch = parENume.substr(7,1);
	varNue = parENume.substr(8,1);

	varSum = varUno * 3 + varDos * 2 + varTre * 7 + varCua * 6 + varCin * 5 + varSei * 4 + varSie * 3 + varOch * 2;
	
	while (varSum > 11)
	{
		varSum = varSum - 11;
	}
	
	varOnc = 11 - varSum;
	
	if (varOnc == 10)
	{
		varOnc = 0;
		varRet = -1
	}
	
	if  (varOnc != varNue)
		varRet = -1;
	else
		varRet = 1;
	
	return varRet;
 }
//chao validaciones ruc
/******************************************************************************************************/


/*Verifica si es Fecha*/
function funEsFecha(parEDia,parEMes,parEAnio)
{
	varDia=parEDia.value;
	varMes=parEMes.value;
	varAnio=parEAnio.value;
	FechActu = new Date();
	AnioActu= parseInt(FechActu.getFullYear());
	dia=varDia;
	mes=varMes;
	anio=varAnio;
	if ((funVeriVaci(parEDia) == false) && ((funVeriNumeEnte(parEDia)==false) || (dia<1) || (dia>31)))
	{
		alert ("La fecha (día) no es correcta");
		parEDia.value="";
		dia=0;
		parEDia.focus();
		return false;
	}
	if ((varMes.length > 0) && ((funVeriNumeEnte(parEMes)==false) || (mes<1) || (mes>12)))
	{
		alert ("La fecha (mes) no es correcta");
		if (funVeriNumeEnte(parEMes)==false)
		alert (varMes);
		parEMes.value="";
		mes=0
		parEMes.focus();
		return false;				
		
	}
	else if ((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)||(mes==10)||(mes==12))
	{
		if (dia>31)
		{
			alert ("La fecha no es valida");
			parEDia.value="";
			dia=0
			parEMes.value="";
			mes=0;
			parEDia.focus();
			return false;
		}
	}

	else if ((mes==4)||(mes==6)||(mes==9)||(mes==11))
	{
		if (dia>30)
		{
			alert ("La fecha no es valida");
			parEDia.value="";
			dia=0;
			parEMes.value="";
			mes=0;
			parEDia.focus();
			return false;
		}
	}
	if ((varAnio.length > 0) && (funVeriNumeEnte(parEAnio)==false || (anio<1900)))
	{
		alert ("La fecha (año) no es correcta");
		parEAnio.value="";
		anio=0;
		parEAnio.focus();
		return false;
	}
	
	else if (mes==2)
	{
		if ((anio%4)==0)
		{
			if (dia>29)
			{
				alert ("La fecha no es valida");
				parEDia.value="";
				dia=0;
				parEMes.value="";
				mes=0;
				parEAnio.value="";
				anio=0
				parEDia.focus();
				return false;
			}
		}

		else
		{
			if (dia>28)
			{
				alert ("La fecha no es valida");
				parEDia.value="";
				dia=0
				parEMes.value="";
				mes=0
				parEAnio.value="";
				anio=0
				parEDia.focus();
				return false;
			}
		}
	}   
	return true;
}

/*Verifica si la fecha de nacimiento corresponde a un mayor de edad*/
function funEsMayordeEdad(parEDia,parEMes,parEAnio)
{
	FechActu = new Date();
	AnioActu= parseInt(FechActu.getFullYear());
	MesActu = parseInt(FechActu.getMonth()) + 1;
	DiaActu = parseInt(FechActu.getDate());
	DiaNaci = parseInt(parEDia);
	MesNaci = parseInt(parEMes);
	AnioNaci = parseInt(parEAnio);
		
	if((AnioNaci + 18) < AnioActu)
		return true;
	else if ((AnioNaci + 18) > AnioActu)
		return false;
	else 
		{
			if (MesNaci < MesActu)
				return true;
			
			else if(MesNaci > MesActu)
				return false;
			else if (DiaNaci <= DiaActu)
				return true;
			else 
				return false;
		}
}

/*Verifia si es mail*/
function funEsMail (Dato)
{
	varPasa=0;
	varCuenta=0;

	// Verifica que exista la cadena del e-mail
	if (Dato.value.length==0) return false;

	// Verifica el que exista el (@)
	for (varI=0;varI<Dato.value.length;varI++)
	{
		EsteCaracter=Dato.value.substring(varI,varI+1);
		if (EsteCaracter == "@")
		{
			varCuenta++;
			varPosi=varI;
		}
	}

	// Verifica que exista solo 1 (@)
	if (varCuenta == 1)
		varPasa=1;
	else
		varPasa=0;

	// Verifica que haya por lo menos un (.) despues del (@)
	if (varPasa==1)
	{
		varPasa = 0;
		for (varI=varPosi+1;varI<Dato.value.length-1;varI++)
		{
			EsteCaracter=Dato.value.substring(varI,varI+1);
			if (EsteCaracter == ".") varPasa=1;
		}
	}

	// Devuelve el exito o fracaso de la validacion
	if (varPasa == 1)
		return true;
	else
		return false;

}

function funCalcEdad(parEDiaNaci,parEMesNaci,parEAnioNaci)
{
	d = new Date();
	DiaActual = d.getDate();
	MesActual = d.getMonth() + 1;
	AnioActual = d.getFullYear();

	if ((MesActual < parEMesNaci.value) || (MesActual == parEMesNaci.value && DiaActual < parEDiaNaci.value))
	{
        varEdad = AnioActual - parEAnioNaci.value - 1;
	}
    else
	{
        varEdad = AnioActual - parEAnioNaci.value;
	}
	return varEdad;
}


/*Verifica si el campo esta vacio*/
function funVeriVaci(Dato)
{
	if (Dato.value.length == 0)
	return true;

	for (var i=0; i < Dato.value.length; i++)
	{
		if (Dato.value.substring(i, i+1) != " ")
			return false;
	}
	return true;
}
