$(document).ready(function() {

    // SUPPRIMER LA CLASS erreurInput
    $('input, textarea').live('keypress change',function(){
        $(this).removeClass('erreurInput');
        $('#chargement').empty();
    });

    // VALIDER LES CHAMPS SI SUBMIT AU FORMULAIRE
    $('#emailAjax').live('submit',function(){

        // nettoyer les eventuelles erreurs précédentes
        $('#chargement').empty();
        $('#message, #name, #email').removeClass('erreurInput');

        // valider le champ name
        if (validerLongitude($('#name').val(),80)){
            if (!validerCaractere($('#name').val())){
                montrerErreur('#name','<p>Specials o numerics chars are not allowed</p>');
                return false;
            }
        } else {
            montrerErreur('#name','<p>your name must contain between 1 and 80 chars</p>');
            return false;
        }

        // valider le champ email
        if (validerLongitude($('#email').val(),80)){
            if (!validerEmail($('#email').val())){
                montrerErreur('#email','<p>please enter a correct email</p>');
                return false;
            }
        } else {
                montrerErreur('#email','<p>your email must contain between 1 and 80 chars</p>');
                return false;
        }

        // valider le champ textarea
        if (!validerLongitude($('textarea').val(),1000)){ // nota: no se porque el $('#message').val() me retorna un valor Null...
            montrerErreur('#message','<p>your message must contain between 1 and 1000 chars</p>');
            return false;
        }

        enviarMail();
        return true;

    })

});

// ---- FUNCTIONS DE VALIDATION DES CHAMPS DU FORMULAIRE ---- //

function validerCaractere(champ){
	//Esta variable contiene todos loa caracteres que consideramos normales
	// OJO!!!! tiene que  contener un ESPACIO en BLANCO sino tb los elimina!!!!!!!
	var permit="aáàbcdeéèfghiíìïjklmnoóòpqrstuúùüvwxyz ";
	champ=champ.toLowerCase();
	for(pos=0;pos<=champ.length-1;pos++){ //Recorer cadena desde pos=0 hasta pos=length-1
		if(permit.indexOf(champ.charAt(pos))==-1){ //Si indexOf devuelve -1 es que no esta el caracter dentro de 'CaracterNormal' por tanto...
			return false;
		}
	}
	return true; //Devolvemos  true
}

function validerLongitude(champ, maxLength){
    if(champ.length < 1){
        return false;
    }
    if(champ.length > maxLength){
        return false;
    }
    return true;
}

function validerEmail(Cadena){
	if(Cadena=='') return true;
	//Detectar un solo @
	if(   Cadena.indexOf('@')!=Cadena.lastIndexOf('@') ) {return false;} // si no coincide es que hay mas de un @
	if(Cadena.indexOf('@')==-1) {return false;} // si no hay ningun @
	//Detectar Sufijo DNS valido // borro esto momento
//	var sufijo= Cadena.substr(Cadena.lastIndexOf('.')+1); // Extraer Sufijo DNS de Cadena.
//	var Encontrado=false; // Variable temporal para discernir despues si se ha encontrado el sufijo
////	var arraySufijos= new Array('es','com','org','cat','net','fr'); // Lista de sufijos aceptados....a ampliar.
//////	for(k=0;k<=arraySufijos.length-1;k++){ // REcorremos el Array de sufijo que creamos anteriormente
//////		if(arraySufijos[k]==sufijo){Encontrado=true;} // si el sufijo esta en el Array entonces... si que es bueno
//////	}
//////	if(!Encontrado){return false;} // Si al final resulta que NO ha sido encontrado mal!!!
	//Detectar caracteres no validos.
	var Caracteres='abcdefghijklmnopqrstuvwxyz0123456789@_-.'; //Preparamos un String de caracteres validos
	for(j=0;j<=Cadena.length-1;j++){ // recorremos cadena i buscamos caracter por caracter si se encuentra dentro del String.
		if(Caracteres.indexOf(Cadena.charAt(j))==-1){ // si no esta es que sera un caracter no valido
			return false;
		}
	}
	return true;
}

function montrerErreur(id,erreurMessage){
        $('#chargement').append(erreurMessage);
        $(id).addClass('erreurInput');
        $(id).focus();
}

// ---- FUNCTIONS ENVOI EMAIL AJAX ---- //

function nuevoAjax(){
        var xmlhttp=false;
        try{
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
                try {
                        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }catch(E){
                        xmlhttp = false;
                }
        }
        if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
                xmlhttp = new XMLHttpRequest();
        }
        return xmlhttp;
}

function enviarMail(){
       c = document.getElementById('chargement');

       //variable=documenet.nombre_del_form.nombre_del_control.value
       emis=document.enviar_email.name.value;
       dest=document.enviar_email.email.value;
       men=document.enviar_email.message.value;

       ajax=nuevoAjax();
       //c.innerHTML = '<p style="text-align:center;"><img src="esperando.gif"/></p>';
       c.innerHTML = '<p style="text-align:center;">sending...</p>';
       ajax.open("POST", "script_message.php",true);
       ajax.onreadystatechange=function() {
            $('#content').empty();
            if (ajax.readyState==4) {
                $('#content').append(ajax.responseText);
                // apres avoir montré un message de remerciement pour l'envoie du mail je veux que la fenêre se cache automatiquement'
                cacherFenetre(1); // la paramètre 1 veut dire que je veux un delay avant que la fenêtre se cache
            }
       }
       ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
       ajax.send("email="+dest+"&name="+emis+"&message="+men)
}

function borrarCampos(){
        $('#content').empty();
}
