/****************************************************************
******************** Finciones JavaScript ***********************
*****************************************************************

01.- valida_rut				:
02.- format_rut				:
03.- limpia_rut				:
04.- Asinc					:
05.- valida_fecha			:
06.- MM_openBrWindow		:
07.- validamail

*****************************************************************/

function valida_rut(rut){ // 12345678-9

	if(rut.indexOf('-') < 5)
		return false;

	rrr = rut.split(/-/);
	valRut = rrr[0];
	digito = rrr[1];
	sw = 0;

	if ((valRut.length > 10 || valRut.length < 7) || (isNaN(digito) && digito.toUpperCase() != "K")) return false;

	var factor = 2;
	var suma = 0;

	for( var i = valRut.length - 1; i >= 0; i -= 1 ) {
		var ch = valRut.substring( i, i + 1 );
		if ( ch < 0 || ch > 9 ) return false;
		suma = parseInt( ch ) * factor + suma;
		factor++;
		if( factor == 8 ) factor = 2;
	}
	suma = 11 - (suma % 11);
	if(suma == 11 ) suma = 0;
	if((suma == 10 && digito.toUpperCase() == "K") || ( suma == parseInt( digito ) ) ) sw = 1;
	return ( sw == 0 )?false:true;
}

/**********************************************************************/

function format_rut(r){
	r = limpia_rut(r);
	n = r.length;
	if(valida_rut(r)){
		// de xxxxxxxxx -> xx.xxx.xxx-x
		// de 123456789 -> 12.345.678-9
		rr = new Array(12,345,678,9);
		x = r;
		rr[3] = x.substr(n-1,1);
		x = x.substr(0,(x.length)-1);
		rr[2] = x.substr((x.length)-3,3);
		x = x.substr(0,(x.length)-3);
		rr[1] = x.substr((x.length)-3,3);
		x = x.substr(0,(x.length)-3);
		rr[0] = x.substr(-3);
		x = '';
		for(i=0;i<=3;i++){
			if(i>0){
				if(i==3)
					x = x + "-";
				else
					x = x + ".";
			}
			x = x + rr[i];
		}
		return x;
	}else{
		alert('Error: Rut no Valido');
		return '';
	}
}

/**********************************************************************/

function limpia_rut(r){
	rr = r.split(/[-.]/);
	r = '';
	for(i=0;i<rr.length;i++){
		r = r + rr[i]; 
	}
	return r;
}

/**********************************************************************/

function Async(){
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}

/**********************************************************************/

function valida_fecha(f){
	var fecha = f.split(/[-|\/]/);
	var ok = true;
	
	if(fecha.length < 3){
		ok = false;
	}else{
		var dia = fecha[0];
		var mes = fecha[1];
		var anio = fecha[2];

		// Primera Validacion
		if(isNaN(dia) && isNaN(mes) && isNaN(anio)){
			ok = false;
		}else{			
			if(dia < 1 || dia > 31)	ok = false;
			if(mes < 1 || mes > 12)	ok = false;
			if(anio.length < 4) ok = false;
		}
	
		// Segunda Validacion (Ańo Bisiesto)
		if(mes == 2){
			if(anio%400==0 || (anio<1583 && anio%4==0) || (anio%4==0 && anio%100!=0)){
				if(dia > 29) ok = false;
			}else{
				if(dia > 28) ok = false;
			}
		}
	}

	if(!ok){
		alert('Error: Fecha no Válida');
		return false;
	}
	
	return true;
}

/**********************************************************************/

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

/**********************************************************************/

function alertamail(s){
	alert("Ingrese un e-mail válido");
	return false;
}

function validamail(s){
	if (s.indexOf(",") > -1 || s.indexOf(' ')  > -1){
		alertamail(s);
		return false;
	}	
	var ap = 0;
	var pp = 0;
	var lvari= 0;
	var nu = 0;
	var nd = 0;
	var arroa ="@";
	var ncorreo = new Array(2);
	largomail = s.length
	if (s.indexOf(arroa) < 1){
		alertamail(s);
		return false;
	} else {
		ncorreo = s.split(arroa);
		nusuario = ncorreo[0];
		ndominio = ncorreo[1];
		nu = nusuario.indexOf(".");
		nd = ndominio.indexOf(".");
		pp = s.indexOf(".");
		lvari = ndominio.length
		
		if (nd < 1 || nd > lvari-3){
			alertamail(s);
			return false;
		} 
	}
	return true;
}
