function validaLargo(str,len)
{
	if(str.length>len) {
		return false;
	}
	return true;
}

function esBisiesto(aa)
{
	if(aa%400==0)
		return true;
	if(aa%100==0)
		return false;
	if(aa%4==0)
		return true;
	return false;
}

/* Esta función recibe un radiobutton y revisa que esté chequeado */
function validaRadio(radio)
{
	for(i=0;i<radio.length;i++) {
		if(radio[i].checked) {
			return true;
		}
	}
	return false;
}

function validaFecha(dd,mm,aa)
{
	var md=[31,28,31,30,31,30,31,31,30,31,30,31];
	if(!isNumero(dd)||!isNumero(mm)||!isNumero(aa)) {
		alert("Las fechas deben ser números: "+dd+"-"+mm+"-"+aa);
		return false;
	}
	if(esBisiesto(aa)) {
		md[1]++;
	}
	if(mm<1||mm>12) {
		alert("El mes del año debe estar entre 1 y 12");
		return false;
	}
	if(dd<1||dd>md[mm-1]) {
		alert("El día del mes debe estar entre 1 y "+md[mm-1]);
		return false;
	}
	if(aa<1000) {
		alert("El año debe ingresarse con los cuatro dígitos");
		return false;
	}
	return true;
}

function validaMail(mail)
{
	/* Buscamos por un simple @ y que termine en . algo */
	if(mail.search(/.+@.+\.[A-Za-z]+$/)<0) {
		return false;
	}
	return true;
}

function validaNum(num)
{
	if(num=='') {
		return false;
	} else if(isNumero(num)) {
		return true;
	}
	return false;
}

function validaNull(str)
{
	if(str=='')
		return false;
	return true;
}

function inArray(str,arr)
{
	var ini=0;
	var fin=arr.length;
	while(ini<fin&&arr[ini]!=str) {
		ini++;
	}
	if(arr[ini]==str)
		return true;
	return false;
}

/* Divide por el guión y llama a validaRut(rut,dv) */
function ValidaRutW(str)
{
}

/* R.U.T. Validation routines. Please call validaRut(rut,dv)
** Taken from the SII site. No copyright notice was found. */
function trimval(str){
	var ini=0;
	var fin=str.length-1;
	while(ini<=fin && str.charAt(ini)==" ") ini++;
	if (ini<=fin) {
		while(str.charAt(fin)==" ") fin--;
		if (fin<str.length-1) {
				fin++;
				return str.substring(ini,fin);
		} else return str.substr(ini);
	} else return '';
}

function isNumero(str)
{
	var flag=true;
	var i=0;
	var nums=new Array(1,1,1,1,1,1,1,1,1,1);
	while (i<str.length && flag) {
		flag= (nums[str.charAt(i++)]!=null);
	}
	return flag;
}

function validaM11(rut,dv)
{
	var suma=0;
	var mul=2;
	var i=0;
	for (i=rut.length-1;i>=0;i--) {
		suma=suma+rut.charAt(i) * mul;
		mul= mul==7 ? 2 : mul+1;
	}
	var dvr = ''+(11 - suma % 11);
	if (dvr=='10') dvr = 'K';
	else if (dvr=='11') dvr = '0';
	if (dvr!=dv) return false;
	else return true;
}

function validaRut(rut,dv)
{
	rut=trimval(rut);
	rut=rut.replace(/\./g,'');
	dv=trimval(dv).toUpperCase();
	if (rut=='' || !isNumero(rut) || rut*1==0) {
		alert('Rut Inválido');
		return false;
	}else if ((!isNumero(dv) && (dv != "K")) || (dv == "")) {
		alert('Dígito Verificador inválido');
		return false;
	}else if (!validaM11(rut,dv)) {
		alert('Dígito Verificador Erróneo');
		return(false);
	}
	return true;
}
