/**
 * @version 20100225
 */
var xmlhttp = null;
var tipoSel = null;
var selectedOptionId = null;    // en caso de hacer update de datos
var selectedCiudadId = null;    // en caso de hacer update de datos

function fillSelect(tipo, id, valor1, valor2)
{
	if(id != ""){
        if(tipo == "idCiudad" || id == "mexico"){
            tipoSel = tipo;
            if(tipo == "idEstado"){
                loadXMLDoc('/xml/estados.php?pais=' + id);
            }
            if(tipo == "idCiudad"){
            	loadXMLDoc('/xml/ciudades.php?idEstado=' + id);
            }
        }
        else{
            obj('estadoText').style.display     = "none";
            obj('estadoSelect').style.display   = "none";
            obj('ciudadText').style.display     = "none";
            obj('ciudadSelect').style.display   = "none";
        }
	}
	selectedOptionId = valor1;
	selectedCiudadId = valor2;
    return 0;
}

function loadXMLDoc(url)
{
	if(window.XMLHttpRequest){				// code for Mozilla, etc.
		if(xmlhttp){
			xmlhttp.abort;
		}
		xmlhttp = new XMLHttpRequest();
	}
	else{
		if(window.ActiveXObject){		// code for IE
			try{
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e){
				try{
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e){
					alert("Error al tratar de crear objeto XMLHttpRequest");
				}
			}
		}
	}
	if(xmlhttp){
		xmlhttp.onreadystatechange = xmlhttpFillSelect;
		xmlhttp.open("GET",url,true);	// asynchronious false para que se detenga el procesamiento
		xmlhttp.send(null);
  	}
	else{
		alert("No se pudo crear objeto XMLHttpRequest");
		return false;
	}
	return true;
}

function xmlhttpFillSelect()
{
	if(xmlhttp.readyState == 4){
		if(xmlhttp.status == 200){
            var jsonObj = eval("(" + xmlhttp.responseText + ")");
			if(jsonObj.data){
                obj(tipoSel).innerHTML = '<option value="" selected></option>';
				var i;
				var id;
				var nombre;
				for(i = 0; i < jsonObj.data.length; i++){
                    id      = jsonObj.data[i].id;
                    nombre  = jsonObj.data[i].nombre;
					obj(tipoSel).options[i] = new Option(nombre, id);
				}
                if(tipoSel == "idEstado"){
                    obj('estadoText').style.display     = "inline";
                    obj('estadoSelect').style.display   = "inline";
                }
                if(tipoSel == "idCiudad"){
                    obj('ciudadText').style.display     = "inline";
                    obj('ciudadSelect').style.display   = "inline";
                }
				if(selectedOptionId != null){   // en caso de hacer update de datos
					obj(tipoSel).value = selectedOptionId;
					if(tipoSel == "idEstado"){
						fillSelect("idCiudad", selectedOptionId, selectedCiudadId, null);
					}
				}
				else{
					obj(tipoSel).options[0].selected;
				}
			}
            else{
				//alert(jsonObj.msgError);
                obj('estadoText').style.display     = "none";
                obj('estadoSelect').style.display   = "none";
                obj('ciudadText').style.display     = "none";
                obj('ciudadSelect').style.display   = "none";
            }
            //tipoSel = null;
		}
	}
	return true;
}

function validaDatos()
{
	if(obj('username').value == ""){
		alert("Favor de escribir un nombre de usuario");
		obj('username').focus();
		return false;
	}
	if(checkUser() == false){
        return false;
    }
    if(obj('password').value == ""){
		alert("Favor de escribir una contraseña");
		obj('password').focus();
		return false;
	}
	if(obj('password').value != obj('password2').value){
		alert("Las contraseñas no coinciden, favor de verificarlas");
		obj('password').focus();
		return false;
	}
	if(obj('nombre').value == ""){
		alert("Favor de escribir tu nombre");
		obj('nombre').focus();
		return false;
	}
	if(obj('email').value == ""){
		alert("Favor de escribir tu correo electrónico");
		obj('email').focus();
		return false;
	}
	if(!validaEmail(obj('email').value)){
		alert("Favor de introducir un correo electrónico válido");
		obj('email').focus();
		return false;
	}
    if(checkEmail('nuevo') == false){
        return false;
    }
    if(obj('fechaNac').value == ""){
        alert("Selecciona tu fecha de nacimiento favor");
        return false;
    }
	if(obj('captcha').value == ""){
		alert("Favor de escribir el código de seguridad.");
		obj('captcha').focus();
		return false;
	}
	if(!obj('aviso').checked){
		alert("Favor de leer y aceptar el aviso de privacidad para proseguir con el registro.");
		return false;
	}
	if(window.confirm("¿Están todos tus datos correctos?"))
		obj('datos').submit();
	else
		return false;
	
	return 0;
}

function validaDatosEditar()
{
	if(obj('username').value == ""){
		alert("Favor de escribir un nombre de usuario");
		obj('username').focus();
		return false;
	}
	if(obj('password').value == ""){
		alert("Favor de escribir una contraseña");
		obj('password').focus();
		return false;
	}
	if(obj('password').value != obj('password2').value){
		alert("Las contraseñas no coinciden, favor de verificarlas");
		obj('password').focus();
		return false;
	}
	if(obj('nombre').value == ""){
		alert("Favor de escribir tu nombre");
		obj('nombre').focus();
		return false;
	}
	if(obj('email').value == ""){
		alert("Favor de escribir tu correo electrónico");
		obj('email').focus();
		return false;
	}
	if(!validaEmail(obj('email').value)){
		alert("Correo electrónico no válido. Favor de escribirlo de nuevo.");
		obj('email').focus();
		return false;
	}
	if(checkEmail('editar') == false){
        return false;
    }
    if(obj('fechaNac').value == ""){
        alert("Selecciona tu fecha de nacimiento favor");
        return false;
    }
    
	if(window.confirm("¿Están todos tus datos correctos?"))
		obj('datos').submit();
	else
		return false;
	
	return 0;
}

function checkUser()
{
    if(loadJSON('user', "/services/validaUser.php?tipo=nuevo&username=" + obj('username').value + "&password=" + obj('password').value) == false){
        return false;
    }
    return true;
}

function checkEmail(tipo)
{
	if(tipo == 'editar') {
		if(loadJSON('email', "/services/validaEmail.php?tipo=editar&email=" + obj('email').value + "&id=" + obj('idUser').value) == false) {
			return false;
		}
	}
	else {
		if(loadJSON('email', "/services/validaEmail.php?tipo=nuevo&email=" + obj('email').value) == false){
			return false;
		}
	}
    return true;
}

/**
 * Modificada para que funcione para que revise la validación del usuario y del correo
 */
function loadJSON(tipo, url)
{
	if(window.XMLHttpRequest){		// code for Mozilla, etc.
		if(xmlhttp){
			xmlhttp.abort;
		}
		xmlhttp = new XMLHttpRequest();
	}
	else{
		if(window.ActiveXObject){	// code for IE
            try{
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
			catch(e){
                try{
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
				catch(e){
					alert("Name:\t" + e.name + "\nMessage:\t" + e.message);
				}
            }
		}
	}
    if(xmlhttp){
    	xmlhttp.open("GET",url,false);		//asynchronious false para que se detenga; false no funciona en Firefox en modo Asincrono
        xmlhttp.send(null);
        if(tipo == 'user' && xmlhttpCheckUser() == false){	
            return false;
        }
		if(tipo == 'email' && xmlhttpCheckEmail() == false){	
            return false;
        }
    }
	else{
    	alert('Giving up :( Cannot create an XMLHTTP instance');
    	return false;
	}
	return true;
}

function xmlhttpCheckUser()
{
    var jsonObj = eval("(" + xmlhttp.responseText + ")");
    if(jsonObj.msgError == "EXISTE"){
        alert("El nombre de usuario: " + obj('username').value + ", ya existe.\nFavor de elegir otro nombre de usuario");
        return false
    }
    
    return true;
}

function xmlhttpCheckEmail()
{
    var jsonObj = eval("(" + xmlhttp.responseText + ")");
    if(jsonObj.msgError == "EXISTE"){
        alert("La dirección de correo electrónico: " + obj('email').value + ", ya existe.\nFavor de verificar la dirección de correo que ingresó, o utilice el formulario para recuperar su contraseña.");
        return false
    }
    
    return true;
}

