function ValidateString(theField, checkOK)
{
  var checkStr = theField.value;
  var allValid = true;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  if (!allValid)
  {
	sMsg = "debe poseer caracteres válidos";
    return (false);
  }
  else
  {
    return (true);
  }
}


// valida cadenas vacias 
String.prototype.trim = _String_trim;

function _String_trim(){
 var tstr = this.toString();

 while(tstr.charAt(0) == " ")
 tstr = tstr.substring(1);

 while(tstr.charAt(tstr.length - 1) == " ")
 tstr = tstr.substring(0,tstr.length-2);
 
 return tstr;
}

// valida mail
var sMsg       = ""
var sAlpha     = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz- ";
var sAlphaExt  = "ÁÉÍÓÚÑÄËÏÖÜÂÊÎÔÛ áéíóúñäëïöüâêîôû";
var sAlphaMail = "@.-_";
var sNumeric   = "1234567890";
var sDot       = ".";
var sHyphen	   = "-";
var sHyphen2	   = "-";
var sHyphen3	   = "/";
var sAlphaOk = "@.-_,:;$!()|?°";

function ValidateEmail(theField){
var checkOK = sAlpha + sNumeric + sAlphaMail;
var checkStr = theField.value;
var allValid = true;

for (i = 0;  i < checkStr.length;  i++)
{
  ch = checkStr.charAt(i);
  for (j = 0;  j < checkOK.length;  j++)
	if (ch == checkOK.charAt(j))
	  break;
  if (j == checkOK.length)
  {
	allValid = false;
	break;
  }
}

if (!allValid)
{
 sMsg = " contiene caracteres inválidos.";
  return (false);
}
else
{
  return (true);
}
}

function popup(url,epi,barra,scroll,w,h) {
	if (url == '/recomendar.asp') {
		url = '/recomendar.asp?nota=' + window.location;
	}
		vent=window.open(url,'Recomendar','screenx=0,screeny=0,toolbar=' + barra + ',width=' + w + ',height='+ h + ',directories=no,status=no,scrollbars=' + scroll + ',resize=no,menubar=no');vent.focus();
}

function valida(datos)
    {
	if(datos.nombre.value=="")
		{
		alert("Ingrese su nombre");
		datos.nombre.focus();
		return false;
		}
	if (datos.apellido.value=="")
		{
		alert("Ingrese su apellido")
		datos.apellido.focus();
		return false;
		}

	if (datos.email.value != "")
	{
		if ((datos.email.value.indexOf(".") == -1) || (datos.email.value.indexOf("@") == -1) )
		{
		alert ("Su dirección de correo es incorrecta");
		datos.email.focus();
		return false
		}
	} else {
		alert ("Su dirección de correo es incorrecta");
		datos.email.focus();
		return false
	}
	return true;

}

function validaRegistro(datos)
    {
    
	if(datos.matricula.value=="")
		{
		alert("Ingrese su número de matricula");
		datos.matricula.focus();
		return false;
		}
	if (ValidateString(datos.matricula, sNumeric)== false) {
        datos.matricula.focus();
        alert("Su número de matrícula contiene caracteres no válidos. Unicamente números.");
        return false;
    } 

	if (datos.dni.value=="")
		{
		alert("Ingrese su número de documento")
		datos.dni.focus();
		return false;
		}

	if (datos.email.value != "")
	{
		if ((datos.email.value.indexOf(".") == -1) || (datos.email.value.indexOf("@") == -1) )
		{
		alert ("Su dirección de correo es incorrecta");
		datos.email.focus();
		return false
		}
	}
    if (datos.npasswd.value.trim() == "") {
         datos.npasswd.focus();
         alert("Por favor ingrese su Clave.");
         return false;
    } 
	  if (ValidateString(datos.npasswd, sAlphaExt+sAlpha+sNumeric)== false) {
           datos.npasswd.focus();
           alert("La Clave ingresada contiene caracteres no válidos.");
           return false;
      } 
    if (datos.rpasswd.value.trim() == "") {
         datos.rpasswd.focus();
         alert("Por favor Reingrese ingrese su Clave.");
         return false;
    } 
	  if (ValidateString(datos.rpasswd, sAlphaExt+sAlpha+sNumeric)== false) {
           datos.rpasswd.focus();
           alert("La Clave ingresada contiene caracteres no válidos.");
           return false;
      } 
    if (datos.rpasswd.value.trim() != datos.npasswd.value.trim()) {
         datos.rpasswd.focus();
         alert("Las Claves ingresadas son distintas.");
         return false;
    } 
	
    if(datos.terminos.checked==false) {
         alert("Debe leer y aceptar lo términos y condiciones.");
         return false;
    }
	

	return true;

}

function validaRegistro2(datos)
    {
    
	if (datos.email.value != "")
	{
		if ((datos.email.value.indexOf(".") == -1) || (datos.email.value.indexOf("@") == -1) )
		{
		alert ("Su dirección de correo es incorrecta");
		datos.email.focus();
		return false
		}
	}

	return true;

}

function validaLogin(datos)
    {
    
	if (datos.usuario.value != "")
	{
		alert ("Ingrese su Número de matrícula.");
		datos.usuario.focus();
		return false
	}
	  if (ValidateString(datos.usuario, sNumeric)== false) {
           datos.usuario.focus();
           alert("La Matrícula ingresada contiene caracteres no válidos, únicamente valores numéricos.");
           return false;
      } 

	if (datos.pass.value != "")
	{
		alert ("Ingrese su Clave.");
		datos.pass.focus();
		return false
	}
	  if (ValidateString(datos.pass, sAlphaExt+sAlpha+sNumeric+sAlphaOk)== false) {
           datos.pass.focus();
           alert("La Clave ingresada contiene caracteres no válidos.");
           return false;
      } 

	return true;

}

function validaRegistroClave(datos)
    {
    
    if (datos.apasswd.value.trim() == "") {
         datos.apasswd.focus();
         alert("Por favor ingrese su Clave Anterior.");
         return false;
    } 
    if (datos.npasswd.value.trim() == "") {
         datos.npasswd.focus();
         alert("Por favor ingrese su Clave.");
         return false;
    } 
	  if (ValidateString(datos.npasswd, sAlphaExt+sAlpha+sNumeric)== false) {
           datos.npasswd.focus();
           alert("La Clave ingresada contiene caracteres no válidos.");
           return false;
      } 
    if (datos.rpasswd.value.trim() == "") {
         datos.rpasswd.focus();
         alert("Por favor Reingrese ingrese su Clave.");
         return false;
    } 
	  if (ValidateString(datos.rpasswd, sAlphaExt+sAlpha+sNumeric)== false) {
           datos.rpasswd.focus();
           alert("La Clave ingresada contiene caracteres no válidos.");
           return false;
      } 
    if (datos.rpasswd.value.trim() != datos.npasswd.value.trim()) {
         datos.rpasswd.focus();
         alert("Las Claves ingresadas son distintas.");
         return false;
    } 
	

	return true;

}

function ValidateFormulario(formulario)
    {
    
    fecha= formulario.Dia_busc.value + '/' + formulario.Mes_busc.value +'/'+ formulario.Ano_busc.value;
	if (!isDate(fecha)) {
		return false;
	} 

	if (formulario.idObraSocial.value == "-1") {
         alert("Por favor ingrese la Obra Social.");
         return false;
    } 

	if (formulario.idPrestacion.value == "-1") {
         alert("Por favor ingrese la Prestación.");
         return false;
    } 
    
	if (formulario.Cantidad.value == "0") {
         alert("Por favor ingrese la Cantidad.");
         return false;
    } 
	

	if (formulario.NroAfiliado.value == "") {
         alert("Por favor ingrese el Nro. de Afiliado.");
         formulario.NroAfiliado.focus();
         return false;
    } 
    if (ValidateString(formulario.NroAfiliado, sNumeric)== false) {
           formulario.NombrePaciente.focus();
           alert("El Número de Afiliado ingresado contiene caracteres no válidos.");
           return false;
      } 
    
	if (formulario.NombrePaciente.value == "") {
         alert("Por favor ingrese el Nombre.");
         formulario.NombrePaciente.focus();
         return false;
    } 
    if (ValidateString(formulario.NombrePaciente, sAlphaExt+sAlpha+sAlphaOk)== false) {
           formulario.NombrePaciente.focus();
           alert("El Nombre ingresado contiene caracteres no válidos.");
           return false;
      } 


    if (ValidateString(formulario.CodAutorizacion, sAlphaExt+sAlpha+sAlphaOk+sNumeric)== false) {
           formulario.CodAutorizacion.focus();
           alert("El Cod. de Autorización ingresado contiene caracteres no válidos.");
           return false;
      } 
    if (formulario.idObraSocial.value=='03') {
		if (ValidateString(formulario.NroAfiliado, sNumeric)== false) {
			formulario.NroAfiliado.focus();
			alert("El Nro. de Afiliado debe ser numérico.");
			return false;
		} 
		if (ValidateString(formulario.digito, sNumeric)== false) {
			formulario.digito.focus();
			alert("El Dígito verificador debe ser numérico.");
			return false;
		} 
		if (formulario.mas.value.length<=0) {
			formulario.mas.focus();
			alert("Debe ingresar todos los datos.");
			return false;
		}
		
		if (ValidateString(formulario.mas, sNumeric)== false) {
			formulario.mas.focus();
			alert("Los dígitos deben ser numéricos.");
			return false;
		} 
		var numero= validarut(formulario.NroAfiliado.value);
		if (formulario.digito.value!=numero) {
			formulario.NroAfiliado.focus();
			alert("Los datos del Afiliado no concuerdan.");
			return false;
		}
		if (formulario.mas.value.length!=2) {
			formulario.mas.focus();
			alert("El último digito verificador tiene que tener 2 caracteres.");
			return false;
		}
		
	}

	if (formulario.nroboleta.value != "") {
		if (formulario.nroboleta.value.length > 7) {
			formulario.nroboleta.focus();
			alert("El Número de Boleta tiene que tener 7 dígitos.");
			return false;
		}

		if (ValidateString(formulario.nroboleta, sNumeric)== false) {
			formulario.nroboleta.focus();
			alert("El Nro. de Boleta ingresado contiene caracteres no válidos.Usted puede cargar solamente números");
			return false;
		} 

    } 


     if (formulario.idObraSocial.value=='07'  || formulario.idObraSocial.value=='10' ||  formulario.idObraSocial.value=='15') {
	/*	if (trim(formulario.tipoboleta.value) == "") {
			alert("Por favor ingrese el Tipo de Boleta.");
			formulario.tipoboleta.focus();
			return false;
		} 
		if (trim(formulario.CIE.value) == "") {
			alert("Por favor ingrese el CIE.");
			formulario.CIE.focus();
			return false;
		} 
	*/

		if (formulario.NroAfiliado.value.length > 8) {
			formulario.NroAfiliado.focus();
			alert("El Número de afiliado tiene que tener 8 dígitos.");
			return false;
		}
		if (formulario.digito.value.length > 2) {
			formulario.digito.focus();
			alert("El digito verificador tiene que tener 2 caracteres.");
			return false;
		}
    }

    if (formulario.idObraSocial.value=='25') {
		if (formulario.NroAfiliado.value<=0) {
			formulario.NroAfiliado.focus();
			alert("El Número de afiliado debe ser mayor a 0.");
			return false;
		}
		if (formulario.digito.value.length<=0) {
			formulario.digito.focus();
			alert("El digito verificador debe ser mayor a 0.");
			return false;
		}
    }
    if (formulario.idObraSocial.value=='02') {
		if (formulario.NroAfiliado.value.length!=7) {
			formulario.NroAfiliado.focus();
			alert("El Número de afiliado tiene que tener 7 dígitos.");
			return false;
		}
    }

    if (formulario.idObraSocial.value=='03' || formulario.idObraSocial.value=='02' || formulario.idObraSocial.value=='07' || formulario.idObraSocial.value=='10' || formulario.idObraSocial.value=='15' || formulario.idObraSocial.value=='25') {
		if (ValidateString(formulario.NroAfiliado, sNumeric)== false) {
			formulario.NroAfiliado.focus();
			alert("El Nro. de Afiliado ingresado contiene caracteres no válidos.Usted puede cargar solamente números");
			return false;
		} 
		if (ValidateString(formulario.digito, sNumeric)== false) {
			formulario.digito.focus();
			alert("El Nro. de Afiliado ingresado contiene caracteres no válidos.Usted puede cargar solamente números");
			return false;
		} 
	} else {
		if (ValidateString(formulario.NroAfiliado, sNumeric+sHyphen2+sHyphen3)== false) {
			formulario.NroAfiliado.focus();
			alert("El Nro. de Afiliado ingresado contiene caracteres no válidos.Usted puede cargar solamente números, - y /");
			return false;
		} 
	}
	return true;

}

function isDate(dateStr) {
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?

	if (matchArray == null) {
		alert("Por favor ingrese una fecha válida dd/mm/aaaa.");
		return false;
	}

	day = matchArray[1]; // p@rse date into variables
	month = matchArray[3];
	year = matchArray[5];

	if (month < 1 || month > 12) { // check month range
		alert("El mes debe estar entre 1 y 12.");
		return false;
	}

	if (day < 1 || day > 31) {
		alert("El día debe estar entre 1 y 31.");
		return false;
	}

	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("El mes "+month+" no tiene 31 días")
		return false;
	}

	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
			alert("Febrero " + year + " no tiene " + day + " días.");
			return false;
		}
	}
	
	today = new Date();
	seleccion  = new Date(year, (month-1), day,00,00);
	 
	//if (seleccion >= today) {
	//	alert("La Fecha ingresada debe ser menor o igual a la actual.");
	//	return false;
	//}
	
	return true; // date is valid
}

function validarut(strrut) {
	strrut= trim(strrut);
	var arut = new Array(19);
	var i, j, dv;
	if ((strrut.length) = 0 ) {
		window.alert("Debe ingresar un Número de Rut");
	}
	else {
		for (i=1; i<20;i++) {
			arut[i]=0; 
		}
		i=0;
		for (j = (10-strrut.length+1); j<strrut.length+(10-strrut.length+1);j++) {
			arut[j] = strrut.substr(i,1); i++; 
		}
		if (i>0) {
			dv = 10 - (( (arut[1]*1) + (arut[2]*3) + (arut[3]*9) + (arut[4]*7) + (arut[5]*1) + (arut[6]*3) + (arut[7]*9) + (arut[8]*7) + (arut[9]*1) + (arut[10]*3))%10)
			if (dv === 10) {
				dv = "K"; 
			} else if (dv === 11) {
				dv = "0"; 
			}
			return dv 
		}
	}
}

function valida_rut(crut,dv)
{
	var rut=crut;
	var largo=rut.length;
	var i=0;
	var dv=dv;
	var mult=2;
	var suma=0;
	largo--;
	while(largo>=0){
	    suma=suma+(rut.charAt(largo)*mult);
		if(mult>6) mult=2;
	    else mult++;
	    largo--;
    }
	var resto = suma%11;
	var digito = 11-resto
	if(digito==10)
	   digito="K" ;
	else 
		if(digito==11) digito=0;
	
	if(digito!=dv) return false;
	else
  return true;

}

function ValidateFormularioCancelaciones(formulario) {
	if (formulario.email.value != "") {
		if ((formulario.email.value.indexOf(".") == -1) || (formulario.email.value.indexOf("@") == -1) ) {
			alert ("Su dirección de correo es incorrecta");
			formulario.email.focus();
			return false
		}
	} else {
         alert("Por favor ingrese su email.");
         formulario.email.focus();
         return false;
	}
    
	if (formulario.Motivo.value == "Otros") {
		if (formulario.Otros.value == "") {
			alert("Por favor ingrese el Motivo.");
			formulario.Otros.focus();
			return false;
        }
    } 
	return true;

} 

