// JavaScript Document
var RegReq = getXmlHttpRequestObject();
var regex = /^[A-Za-z]{1,}[0-9A-Za-z_]{0,}[0-9A-Za-z]$/;
var regex2= /^[0-9A-Za-z]{1,}[0-9A-Za-z]{0,}[0-9A-Za-z]$/;
var bantispam;
var blogin;
function getXmlHttpRequestObject(){
	if (window.XMLHttpRequest){
		return new XMLHttpRequest();
	} else if(window.ActiveXObject){
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert('No se puede crear Objeto XMLHttp');
	}
}

function envioOff(){
	document.getElementById('saveForm').disabled=true;
}

function envioOn(){
	nick=document.getElementById('element_3').value;
	if(nick.match(regex)==null){
		MMens('msg3','Nick no valido');
		return false;
	} else {
		consultaReg(nick);
	}
}	
function envioOn2(){
	texto1=document.getElementById('element_11').value;
	if(texto1.match(regex2)==null){
		MMens('msg11','Icorrecto');
		return false;
	} else {
		var texto2="antispam-"+texto1;
		consultaReg(texto2);
	}
}	

function consultaReg(lognomb) {
	if (RegReq.readyState == 4 || RegReq.readyState == 0) {
		RegReq.open("POST",'../cons_usuario.php',true);
		RegReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		if (lognomb.indexOf("antispam-")>-1){
			nlognomb=lognomb.split('spam-');
			RegReq.onreadystatechange = respuestaSpam; 
			var param = 'accion=compspam&texto='+nlognomb[1];
		} else {
			RegReq.onreadystatechange = respuestaReg; 
			var param = 'accion=disponib&nombre='+lognomb;
		}
		RegReq.send(param);
	}			
}

function respuestaSpam() {
	if (RegReq.readyState == 4) {
		var texto = RegReq.responseText;
		if (texto=="correcto"){
			MMens('msg11','*');
			bantispam="ok";
			if (blogin=="ok"){
				document.getElementById('saveForm').disabled=false;
			}
		} else {
			MMens('msg11','Incorrecto');
			bantispam="";
			document.getElementById('saveForm').disabled=true;
		}
	}
}

function respuestaReg() {
	if (RegReq.readyState == 4) {
		var texto = RegReq.responseText;
		if (texto=="disponible"){
			MMens('msg3','*');
			blogin="ok";
			if (bantispam=="ok"){
				document.getElementById('saveForm').disabled=false;
			}
		} else {
			MMens('msg3','El usuario ya existe');
			blogin="";
			document.getElementById('saveForm').disabled=true;
		}
	}
}

function MMens(mensId,mensTxt){
	document.getElementById(mensId).innerHTML = mensTxt;
}

function verif2(){
	var regpass = /^[0-9A-Za-z_]{6,10}$/ ;  // 6 a 10 caracteres
	var regnom = /^[A-Za-zñÑáéíóúü]{1,}[A-Za-zñÑáéíóúü ]{0,}[A-Za-zñÑáéíóúü]$/; //solo letras  1 a +
	var regmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	var regfon = /^[0-9]{6,8}$/;
	nick = document.getElementById('element_3').value;
	var result=true;
	//verificar campo nick
	if(nick.match(regex)==null){
		MMens('msg3','Nick no valido');
		result=false;
	} else {
		MMens('msg3','*');
	}
	psw = document.getElementById('element_8').value;
	psw2 = document.getElementById('element_9').value;
	if (psw!=''){	
		if (psw.match(regpass)==null){
			MMens('msg8','Verifique contrase&ntilde;as');
			result=false;
		} else {
			if (psw2!=psw){
				MMens('msg8','Contrase&ntilde;as no coinciden');
				MMens('msg9','Contrase&ntilde;as no coinciden');
				result=false;
			} else {
				MMens('msg8','');
				MMens('msg9','');
			}
		}
	} else {
		MMens('msg8','Falta contrase&ntilde;a');
		result=false;
	}
	if (psw2!=''){	
		if (psw2.match(regpass)==null){
			MMens('msg9','Verifique contrase&ntilde;as');
			result=false;
		} else {
			if (psw2!=psw){
				MMens('msg8','Contrase&ntilde;as no coinciden');
				MMens('msg9','Contrase&ntilde;as no coinciden');
				result=false;
			} else {
				MMens('msg8','');
				MMens('msg9','');
			}
		}
	} else {
		MMens('msg9','Falta contrase&ntilde;a');
		result=false;
	}
//verificar nombres

	vnom = document.getElementById('element_1').value;
	if(vnom.match(regnom)==null){
		MMens('msg1','Verifique este dato');
		result=false;
	} else {
		MMens('msg1','*');
	}
 //verificar apellidos
	vape = document.getElementById('element_2_1').value;
	if (vape==''){
		MMens('msg2','Verifique este dato');
		return false;
	}
	if(vape.match(regnom)==null){
		MMens('msg2','Verifique este dato');
		result=false;
	} else {
		MMens('msg2','*');
	}
	vape = document.getElementById('element_2_2').value;
	if (vape==''){
		MMens('msg2','Verifique este dato');
		return false;
	}
	if(vape.match(regnom)==null){
		MMens('msg2','Verifique este dato');
		result=false;
	} else {
		MMens('msg2','*');
	}

//email
	vmail=document.getElementById('element_4').value;
	if (vmail==''){
		MMens('msg4','Direccion de correo no valida');
		result=false;
	}
	if(vmail.match(regmail)==null){
		MMens('msg4','Direccion de correo no valida');
		result=false;
	} else {
		MMens('msg4','*');
	}
//Fono
	vfono=document.getElementById('element_5').value;
	if (vfono!=''){
		if(vfono.match(regfon)==null){
			MMens('msg5','Verifique este dato ');
			result=false;
		} else {
			MMens('msg5','');
		}
	}
//verificar fecha
	var fecha = document.getElementById('element_6_1').value+'-';
	fecha+= document.getElementById('element_6_2').value+'-';
	fecha+= document.getElementById('element_6_3').value;
	if (fecha!="--"){
		result=esFecha(fecha);
	}
	return result;
}

function esFecha(dateStr) {

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // verifica fecha
	
	
	if (matchArray == null) {
		MMens('msg6','Verifique formato dd/mm/aaaa');
		return false;
	} else {
		MMens('msg6','');
	}
	month = matchArray[1]; // parsea fechas a variables
	day = matchArray[3];
	year = matchArray[5];
	
	if (month < 1 || month > 12) { // rango de meses
		MMens('msg6','Verifique mes(1 a 12)');
		return false;
	}
	
	if (day < 1 || day > 31) {
		MMens('msg6','Verifique dia (1 a 31)');
		return false;
	}	

	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		MMens('msg6','Dia 31 no valido para ' + month);
		return false;
	}

	if (month == 2) { // verifica los 29 o 28 dias de febrero 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
			MMens('msg6','Verifique si '  + year + ' es bisiesto.');
			return false;
		}
	}
	MMens('msg6','');
	return true; // valida
}