
//Funciones de Apoyo
//INICIO -----------------------------------------------------------------
function ValidaCaracter()
{
	if (event.keyCode==39 )
		event.returnValue = false;
	return;
}

//Funcion que valida si la expresion es un numero SI=True, NO=False
function IsDigits(FormName, ObjName, FieldName)	{
	var number=eval('document.' + FormName + '.' + ObjName + '.value');
	var VALID_CHAR = "1234567890";
	//var VALID_CHAR = "1234567890.";
	for (i = number.length - 1; i >= 0; i--) {
		esta = false;
		for (var k = 0; k < VALID_CHAR.length ; k++) {
			if (number.charAt(i) == VALID_CHAR.charAt(k)) esta = true;
		}
		if (!esta)	{
			var message='Datos no válidos en el campo ' + FieldName + ' (Solo Números)';
			alert(message);
			eval('document.' + FormName + '.' + ObjName + '.value=""');
			eval('document.' + FormName + '.' + ObjName + '.focus()');
			return false;
		}
	}
	return true;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Funcion que valida un valor numerico
function IsDigitsVal(FormName,ObjName, ValNum, FieldName) {
	var number=ValNum;
	var VALID_CHAR = "1234567890";
	//var VALID_CHAR = "1234567890.";
	for (i = number.length - 1; i >= 0; i--) {
		esta = false;
		for (var k = 0; k < VALID_CHAR.length ; k++) {
			if (number.charAt(i) == VALID_CHAR.charAt(k)) esta = true;
		}
		if (!esta)	{
			var message='Datos no válidos en el campo ' + FieldName + ' (Solo Números)';
			alert(message);
			eval('document.' + FormName + '.' + ObjName + '.focus()');
			return false;
		}
	}
	return true;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Funcion que localiza en la posicion correspondiente un elemento de la lista
//en un combo
function Mail(FormName, ObjName, FieldName) {
	var number=eval('document.' + FormName + '.' + ObjName + '.value');
	var VALID_CHAR = "@.";
	esta = 0;
	if (number=="") esta = true;
	for (i = number.length - 1; i >= 0; i--)	{
		for (var k = 0; k < VALID_CHAR.length ; k++){
			if (number.charAt(i) == VALID_CHAR.charAt(k)) esta ++;
		}
	}
	if (esta < VALID_CHAR.length) {
		var message='Los datos del campo ' + FieldName + ' son incorrectos';
		alert(message);
		eval('document.' + FormName + '.' + ObjName + '.value=""');
		eval('document.' + FormName + '.' + ObjName + '.focus()');
		return false;
	}
	return true;
}

/*------------------------------------------------------------------------------------------------------------------------*/
function PosiCombo(FormName, ObjSeek, strseek) {
	var totredactore = eval('document.' + FormName + '.' + ObjSeek + '.length');
	for (i=0; i<totredactore; i++)	{
		strvalor = eval('document.' + FormName + '.' + ObjSeek + '.options[i].value');
		if (strvalor==strseek)	{
			eval('document.' + FormName + '.' + ObjSeek + '.selectedIndex=i');
		}
	}
}

//------------------------------------------------------------------------------------------------------------------------
//Funcion que valida si el control tiene la propiedad valor esta vacia
//devuelve un mensaje si es asi y envia el foco a ese control
function Vacio(FormName, ObjName, FieldName) {
	var VarTmp=eval('document.' + FormName + '.' + ObjName + '.value');
	if (VarTmp=="")	{
		var message='Faltan datos en el campo ' + FieldName;
		alert(message);
		eval('document.' + FormName + '.' + ObjName + '.focus()');
		return false;
	}
	return true;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Funcion que valida que los campos cumplan con el numero minimo de digitos o caracteres
//devuelve un mensaje si es asi y envia el foco a ese control

function LengthChars(FormName, ObjName, FieldName, LengthMin) {
	var VarTmp=eval('document.' + FormName + '.' + ObjName + '.value');
	if (VarTmp.length > 0 && VarTmp.length < LengthMin)	{
		var message='La cantidad mínima de caracteres en el campo ' + FieldName + ' es: ' + LengthMin;
		alert(message);
		eval('document.' + FormName + '.' + ObjName + '.focus()');
		return false;
	}
	return true;
}
/*------------------------------------------------------------------------------------------------------------------------*/

  //Funcion que construye un combo con valores en base a numeros recibe un argumento
  //que representa el numero de veces que se va a ejecutar la funcion

function GetCombo(IntValue){
	for (var I=1; I<=IntValue; I++)	{
		if (I>=10) {
			document.write("<option value='" + I + "'>" + I + "</option>");
		}else{
			document.write("<option value='0" + I + "'>0" + I + "</option>");
		}
	}
}

/*------------------------------------------------------------------------------------------------------------------------*/
function Deletes(FormName, NameChk, NameHd, LngCont) {
	eval("document." + FormName + "." + NameHd + ".value=''")
	for (var Tmp=1; Tmp < Cont ; Tmp++)	{
	text="document." + FormName + "." + NameChk +  Tmp + ".checked==true"
		if (eval(text))	{
			text="document." + FormName + "." + NameHd + ".value += " + "document." + FormName + "." + NameChk + Tmp + ".value";
			eval(text);
			eval("document." + FormName + "." + NameHd +  ".value += ','");
		}
	}
}


/*------------------------------------------------------------------------------------------------------------------------*/
function SelectAllChk(FormName, NameChk, value, LngCont){
	for (var Tmp=1; Tmp < LngCont ; Tmp++){
		text="document." + FormName + "." + NameChk + Tmp + ".checked=" + value;
		eval(text);
	}
}

/*------------------------------------------------------------------------------------------------------------------------*/
function newwin (url,ancho,alto){
	msgwindow=window.open(url,"DisplayWindows","toolbar=no,directories=no,menubar=no,width=" + ancho+ ",height=" + alto + ",scrollbars=yes,top=110px,left=100px");
}

/*------------------------------------------------------------------------------------------------------------------------*/
  //Funcion que devuelve el residuo de la division de dos numeros
  //la variable devuelve un variable global denominada "res"

function residuo(IntDvdo, IntDvsor)	{
	do
	IntDvdo-=IntDvsor
	while(IntDvsor < IntDvdo)
	res=IntDvdo
}

/*------------------------------------------------------------------------------------------------------------------------*/
  //Funcion que se encarga de validar que la fecha que se esta ingresando sea correcta
function ValDate(NameForm, NameObjDay, NameObjMonth, NameObjYear) {
	var dia=eval("document." + NameForm + "." + NameObjDay + ".value");
	var mes=eval("document." + NameForm + "." + NameObjMonth + ".value");
	var anio=eval("document." + NameForm + "." + NameObjYear + ".value");
	if (dia==""){
		alert("Seleccione el día en la fecha");
		eval("document." + NameForm + "." + NameObjDay + ".focus()");
		return false;
	}
	if (mes==""){
		alert("Seleccione el mes en la fecha");
		eval("document." + NameForm + "." + NameObjMonth + ".focus()");
		return false;
	}
	// validacion del año //
	if (anio.length < 4 ) {
		alert("En el año se deben ingresar 4 dígitos");
		eval("document." + NameForm + "." + NameObjYear + ".focus()");
		return false;
	}
	if (!IsDigits(NameForm, NameObjYear, 'Año')) {
		return false;
	}
	var a= new Date;
	if ((eval(anio) < 1910 || eval(anio) > 2004) ){
		alert("El año solo acepta números entre el intervalo 1910 al 2004");
		eval("document." + NameForm + "." + NameObjYear + ".focus()");
		return false;
	}
	residuo(eval(anio),4);
	pri=res;
	residuo(eval(anio),100);
	seg=res;
	residuo(eval(anio),400);
	tri=res;
	if (eval(mes)==2 && eval(dia)>29)	{
		alert("Este mes no acepta este número de dia");
		eval("document." + NameForm + "." + NameObjDay + ".focus()");
		return false;
	}
	if (!((pri==0 && seg != 0) || (tri==0))) {
		if (eval(mes)== 2 && eval(dia) > 28) {
			alert("Este año no es bisiesto y no acepta este número de día en este mes");
			eval("document." + NameForm + "." + NameObjDay + ".focus()");
			return false;
		}
	}
	//validacion del mes //
	if ((mes == 4 || mes == 6 || mes== 9 || mes==11) && (dia >= 31)) {
		alert("Este mes no acepta este número de día");
		eval("document." + NameForm + "." + NameObjDay + ".focus()");
		return false;
	}
	return true ;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Validacion de la fecha para un campo texto
function ValDateText(StrFormName, StrObjName, dia, mes, anio) {
	if (trim(dia)=="") {
		alert("Digite el día en la fecha. \n 'dd/mm/aaaa'");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}
	if (trim(mes)=="") {
		alert("Digite el mes en la fecha. \n dd/mm/aaaa");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}
	// validacion del año //
	if (anio.length < 4 || trim(anio)=="") {
		alert("En el año se deben ingresar 4 dígitos. \n 'dd/mm/aaaa'");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}
	if (!IsDigitsVal(StrFormName, StrObjName,anio,'Año')) {
		return false;
	}
	var a= new Date;
	if ((eval(anio) < 1910 || eval(anio) > 2050) ) {
		alert("El año solo acepta números entre el intervalo 1910 al 2050. \n 'dd/mm/aaaa'");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}
	residuo(eval(anio),4);
	pri=res;
	residuo(eval(anio),100);
	seg=res;
	residuo(eval(anio),400);
	tri=res;
	if (eval(mes)==2 && eval(dia)>29) {
		alert("Este mes no acepta este número de día. \n 'dd/mm/aaaa'");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}
	
	if (consisfec(dia,mes,anio) == false) {
		alert("Este año no es bisiesto y no acepta este número de día en este mes.");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}

//	if (!((pri==0 && seg != 0) || (tri==0))) {
//		if (!(eval(mes)== 2 && eval(dia) > 28)) {
//			alert("Este año no es bisiesto y no acepta este numero de día en este mes.");
//			eval("document." + StrFormName + "." + StrObjName + ".focus()");
//			return false;
//		}
//	}
	//validacion del mes //
	if (mes>12) {
		alert("El número de mes es incorrecto. \n 'dd/mm/aaaa'");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}
	if ((mes == 1 || mes == 3 || mes== 5 || mes==7 || mes==8 || mes==10 || mes==12) && (dia >= 32))	{
		alert("Este mes no acepta este número de día. \n 'dd/mm/aaaa'");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}
	if ((mes == 4 || mes == 6 || mes== 9 || mes==11) && (dia >= 31))	{
		alert("Este mes no acepta este número de día. \n 'dd/mm/aaaa'");
		eval("document." + StrFormName + "." + StrObjName + ".focus()");
		return false;
	}
	return true ;
}

/*------------------------------------------------------------------------------------------------------------------------*/
// Función que controla el formato de la fecha y que sea una fecha correcta.
function MiFecha(StrFormName, StrNameObj)    {
	OFecha=eval("document." + StrFormName +  "." + StrNameObj);
	if (OFecha.value.length ==2 || OFecha.value.length ==5) {
		OFecha.value += "/";
	}
	if (OFecha.value.length ==10)  { 
		if (ValDateText(StrFormName,StrNameObj,OFecha.value.substring(0,2),OFecha.value.substring(3,5),OFecha.value.substring(6,10) ) == false ) {
			OFecha.value = "";
		}
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
// Función que controla si la fecha es correcta.
function FechaCorrecta(StrFormName, StrNameObj)    {
	OFecha=eval("document." + StrFormName +  "." + StrNameObj);
	if (ValDateText(StrFormName,StrNameObj,OFecha.value.substring(0,2),OFecha.value.substring(3,5),OFecha.value.substring(6,10) ) == false ) {
		OFecha.value = "";
		return false;
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
// Función que controla la longitud del RUC que sea de 11 dígitos o en blanco
function LongRUC(StrFormName, StrNameObj) {
	ORUC=eval("document." + StrFormName +  "." + StrNameObj);
	if (ORUC.value.length < 11 && ORUC.value.length > 0) {
		alert("El Ruc debe ser de 11 dígitos.");
		eval("document." + StrFormName +  "." + StrNameObj + ".focus()");
		return false;
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla la casilla de dia
function ValidaDia(StrFormName, StrNameObj) {
	Valor=eval("document." + StrFormName +  "." + StrNameObj);
	if (Valor.value.length > 0 && (Valor.value < 1 || Valor.value > 31)) {
		alert("El día solo acepta números entre el intervalo 1 al 31. \n 'dd'");
		eval("document." + StrFormName +  "." + StrNameObj + ".focus()");
		Valor.value = "";
		return false;
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla la casilla de mes
function ValidaMes(StrFormName, StrNameObj) {
	Valor=eval("document." + StrFormName +  "." + StrNameObj);
	if (Valor.value.length > 0 && (Valor.value < 1 || Valor.value > 12)) {
		alert("El mes solo acepta números entre el intervalo 1 al 12. \n 'mm'");
		eval("document." + StrFormName +  "." + StrNameObj + ".focus()");
		Valor.value = "";
		return false;
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla la casilla de año 
function ValidaAno(StrFormName, StrNameObj) {
	Valor=eval("document." + StrFormName +  "." + StrNameObj);
	if (Valor.value.length > 0 && (Valor.value < 1910 || Valor.value > 2050)) {
		alert("El año solo acepta números entre el intervalo 1910 al 2050. \n 'aaaa'");
		eval("document." + StrFormName +  "." + StrNameObj + ".focus()");
		Valor.value = "";
		return false;
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla los valores numéricos que se ingresan (0123456789.)
function ValidarNumericos(){
	//alert(event.keyCode);
	// && (!(event.keyCode==46))
	if (!(event.keyCode>=48 && event.keyCode<=57) ) {
		event.returnValue = false;
	}
	return;
}
//Función que controla los valores numéricos que se ingresan (0123456789.)
function ValidarMontos(){
	//alert(event.keyCode);
	// && (!(event.keyCode==46))
	if (!(event.keyCode>=48 && event.keyCode<=57 || event.keyCode==46)) {
		event.returnValue = false;
	}
	
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla los valores numéricos con porcentaje que se ingresan (0123456789.%)
function ValidarPorcen(){
	if (!(event.keyCode>=48 && event.keyCode<=57 || event.keyCode==37) && (!(event.keyCode==46))) {
		event.returnValue = false;
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla los valores numéricos (numeros y /) que se ingresan (0123456789/)
function ValidarFecha(){
//alert();
	if (!(event.keyCode>=48 && event.keyCode<=57) && (!(event.keyCode==47))) {
		event.returnValue = false;
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla los valores numéricos para cuentas de banco que se ingresan (0123456789-)
function ValidarCuenta(){
	if (!(event.keyCode>=48 && event.keyCode<=57) && (!(event.keyCode==45))) {
		event.returnValue = false;
	}
	return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla los valores válidos para email. (nombre@dominio.com)
function ValidateMail(objSrc, strText) {
	var i = 0;
	var p = 0;
	strError='Error';
	if (objSrc.value == '') return true;
	var sLength = objSrc.value.length;
	var x = 0;
	while ((i < sLength) ){
		if (objSrc.value.charAt(i)  == '@'){
			x = x + 1;
			p =  i
			if (objSrc.value.charAt(i+1)  == '.')
				return false;
		}
		if  (x > 1)
		return false;
		i++;
	}
	if  (x == 0)
		return false;
	i = 0;
	while ((i < sLength) ) {
		if (objSrc.value.charAt(i)  == '.') {
			x = x + 1;
			if (objSrc.value.charAt(i+1)  == '.')
				return false;
		}
		i++;
	}
	if (objSrc.value.charAt(i-1)  == '.')
	return false;
	i = p;
	x = 0;
	while (i < sLength)	{
		if (objSrc.value.charAt(i)  == '.')	{    
			x = x + 1;
			if (objSrc.value.charAt(i+1)  == '.')
				return false;
		}
		i++;
	}
	if  (x == 0)
	return false;
	while (i < sLength)	{
		if (objSrc.value.charAt(i) == ' ')
			return false;
		i++;
	}
	return true;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que controla los valores ingreso de valores enteros.
function validateInt(s)	{
	var idx;
	var c;
	if (trim(s) == "")
		return true;
	for (idx = 0 ; idx < s.length ; idx ++) {
		c = s.charAt(idx);
		if (c < "0" || c > "9")
		return true;
	}
	if (String(parseInt(s)) == "NaN")
		return true;
	return false;
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Función que recorta los valores en blanco.
function trim(s) {
	var idx  = 0;
	var idxf = 0;
	var str  = String(s);
	while (str.charAt(idx) == " " && idx < str.length)
		idx++;
	if (idx == str.length)
		str = "";
	else{
		str  = str.substring(idx,str.length);
		idxf = str.length - 1;
		while(str.charAt(idxf) == " ")
		idxf--;
		str = str.substring(0, idxf + 1);
	}
	return str;
}

	//********* Verfica la Validez de la Fecha
function consisfec(xdia,xmes,xano) {
  var meses=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  meses[1]=((xano % 4)==0) ? 29 : 28;
  return ((xdia<=meses[xmes-1]) ? true : false );  // true -> OK     false -> KO
 }

/*FIN-----------------------------------------------------------------------*/
    

