var blank_pattern = /^\s*$/i;
var email_pattern = /^[^@\s]+@([a-z0-9][a-z0-9\-]*\.)+[a-z]{2,10}$/i;
var date_pattern = /^([0-9]{2}\/){2}[0-9]{4}$/i;
var time_pattern = /^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])$/i;
var phone_pattern = "^0[1-9][-./\]?[1-9][-./\]?[0-9]{2}[-./\]?[0-9]{2}[-./\]?[0-9]{2}[-./\]?";
var gsm_pattern = "^04[1-9]{2}[-./\]?[0-9]{2}[-./\]?[0-9]{2}[-./\]?[0-9]{2}[-./\]?";


var crash = 0;
var errors = 0;
//FLAGS
var fl_phone; 
var fl_gsm;
var fl_zip = 0;
var fl_login=0;
//END FLAGS

//MH Function qui ajoute un slashes devant les simple et double quotes en js
function addslashes2 (str) {
    // Escapes single quote, double quotes and backslash characters in a string with backslashes  
    // 
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/addslashes    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   improved by: marrtins
    // +   improved by: Nate
    // +   improved by: Onno Marsman    // +   input by: Denny Wardhana
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Oskar Larsson Högfeldt (http://oskar-lh.name/)
    // *     example 1: addslashes("kevin's birthday");
    // *     returns 1: 'kevin\'s birthday'   
	return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}

//MH Function qui remplace les simple et double quotes en js
function addslashes3 (str) {
    // Escapes single quote, double quotes and backslash characters in a string with backslashes  
    // 
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/addslashes    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   improved by: marrtins
    // +   improved by: Nate
    // +   improved by: Onno Marsman    // +   input by: Denny Wardhana
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Oskar Larsson Högfeldt (http://oskar-lh.name/)
    // *     example 1: addslashes("kevin's birthday");
    // *     returns 1: 'kevin\'s birthday'   
	return (str + '').replace(/[']/g, ' ').replace(/["]/g, ' ').replace(/[//]/g, ' ').replace(/[\\]/g, ' ');
}




// Fonction qui affiche le message d'erreur et donne le focus au champ concerné
function fct_message(fld,msg) {
	alert("Une erreur a été détectée: \n" + msg);
	fld.focus();
}

// Fonction de vérification du format d'un email
function fct_is_email(fld) {
    reg = new RegExp(email_pattern);
    if(reg.test(fld.value,"g")) {
    	crash = 0;
    	fld.style.background="#A1F587";
    	return true;
    } else {
    	crash = 1;
    	fld.style.background="#ff7755";
    	return false;
    }
}

// Fonction de vérification du format email INSCRIPTION COACH/ELEVE
/*
function fct_is_email(fld) {
    reg = new RegExp(email_pattern);
    if(reg.test(fld.value,"g")) {
    	document.getElementById(frm_id).style.background="#A1F587";
    	return true;
    } else {
    	document.getElementById(frm_id).style.background="#ff7755";
    	return false;
    }
}

*/
// Fonction de vérification d'un nombre
function fct_is_number(fld) {
    if(isNaN(fld.value) == true) {
    	return false;
    } else {
    	return true;
    }
}

// Fonction de vérification du format de l'heure
function fct_is_time(fld) {
    reg = new RegExp(time_pattern);
    if(reg.test(fld.value,"g")) {
    	return true;
    } else {
    	return false;
    }
}

// Fonction de vérification de la sélection d'une valeur dans une liste simple
function fct_is_not_default(fld) {
    if(fld.value == 0) {
    	return false;
    } else {
    	return true;
    }
}

// Fonction de vérification de la présence d'une valeur
function fct_is_not_empty(fld) {
    reg = new RegExp(blank_pattern);
    if(reg.test(fld.value,"g")) {
    	fld.style.background="#ff7755";
    	return false;
    } else {
    	fld.style.background="#A1F587";
    	return true;
    }
}

function fct_is_not_empty_login(fld) {
    reg = new RegExp(blank_pattern);
    if(reg.test(fld.value,"g")) {
    	return false;
    } else {
    	return true;
    }
}

// Fonction de vérification de la longueur minimum d'une chaîne
function fct_min_length(fld,limit) {
    if(fld.value.length < limit) {
        return false;
    } else {
        return true;
    }
}

// Fonction de vérification des dates
function fct_is_date(fld) {
    reg = new RegExp(date_pattern);
    if(reg.test(fld.value,"g")) {
    	fld.style.background="#A1F587";
    	return true;
    } else {
    	fld.style.background="#ff7755";
    	return false;
    }
}

// Fonction de vérification de la correspondance des valeurs dans 2 champs
function fct_is_equal(fld1,fld2) {
    if(fld1.value == fld2.value) {
    	return true;
    } else {
    	return false;
    }
}

// Verification du ZIP - AJAX
function testZip (frm_id) {
		fl_zip = 0;
        function chkZip(ajax) {      	
        if (ajax.readyState == 4) {
                err = ajax.responseText;      
                if (err == 'ok')
                {
                	document.getElementById(frm_id).style.background="#A1F587";
                	fl_zip = 1;                	
                }
                else
                {
                	document.getElementById(frm_id).style.background="#ff7755";
                	fl_zip = 0;  	
                }
            	
                }
        }

        var zip = document.getElementById(frm_id).value;
        var xhr_object = null;
        if (window.XMLHttpRequest) { // FIREFOX
                xhr_object = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) { // IE
                xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else
                return (false);

        if(document.getElementById(frm_id).value.length == '4')
        {
	        xhr_object.open("GET", "modules/front/pages/_checkZip.php5?zip="+zip, false);
	        xhr_object.send(null);
	        xhr_object.onreadystatechange = chkZip(xhr_object);
        }
        else
        {
        	document.getElementById(frm_id).style.background="#ff7755";
        	fl_zip = 0;
        }
        	
}

// Verification du login
function checkLogin(frm_id)
{
	function chkLogin(ajax) {  
        if (ajax.readyState == 4) {
                err = ajax.responseText;      
                if (err == 'ok')
                {
                	document.getElementById(frm_id).style.background="#A1F587";
                	fl_login = 1;
                }
                else
                {
                	document.getElementById(frm_id).style.background="#ff7755";
                	fl_login = 2;
                }
            	
                }
        }

        var log = document.getElementById(frm_id).value;
        
        var xhr_object = null;
        if (window.XMLHttpRequest) { // FIREFOX
                xhr_object = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) { // IE
                xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else
                return (false);


        	
        xhr_object.open("GET", "modules/admin/students/_checkLogin.php5?login="+log, false);
        xhr_object.send(null);
        xhr_object.onreadystatechange = chkLogin(xhr_object);
}


// Verification par RegExp du numéro de téléphone
function fct_is_phone(fld)
{
	//alert("fct_is_phone");
	regtel = new RegExp(phone_pattern);
	reggsm = new RegExp(gsm_pattern);
	//alert(document.getElementById("frmtel").value);
	if(regtel.test(document.getElementById("frmtel").value) && (document.getElementById("frmtel").value.length==9))
	{
		fl_gsm = 0;
		fl_phone = 1;
		return true;
	}
	else if(reggsm.test(document.getElementById("frmtel").value) && (document.getElementById("frmtel").value.length==10))
	{
		fl_phone = 0;
		fl_gsm = 1;
		return true;
	}
	else
		return false;
}

// Check du numéro
function chkNum(frm)
{
	//alert("validate");
	arr_errors = new Array();
	//alert("validate2");
	
	if(!fct_is_phone("frm_tel"))
	{
	//	alert("!fct_is_phone");
		crash = 1;
		document.getElementById("frmtel").style.background="#ff7755";
		
		//arr_errors[arr_errors.length] = "phone";
	}
	else
	{
		crash = 0;
		document.getElementById("frmtel").style.background="#A1F587";
		//document.getElementById("frmtel").disabled = true;
	}		
}

// Validation du formulaire de CallBack
function validate(lang)
{
	errors = 0;

	if(crash == 1 || fl_zip == 0 || document.getElementById("frmtel").value.length==0 || document.getElementById("frmzip").value.length<4)
	{
		errors++;
		if(lang=="fr")
			document.getElementById("appendCallBack").innerHTML = "Erreur. Veuillez contrôler vos informations (Le numéro de téléphone et le code postal ne doivent contenir que des chiffres.) ou utiliser notre <a href=\"index.php5?fuseaction=front.contacts&lang=fr\">formulaire de contact</a>.";
		if(lang=="nl")
			document.getElementById("appendCallBack").innerHTML = "Fout. Dank u om uw informatie te controleren (Telefoonnummer en postcode moet alleen cijfers bevatten.) of gebruik ons  <a href=\"index.php5?fuseaction=front.contacts&lang=nl\">contact formulier</a>.";
		if(lang=="en")
			document.getElementById("appendCallBack").innerHTML = "Error. Please check your information or use our <a href=\"index.php5?fuseaction=front.contacts&lang=fr\">contact form</a>.";
	}

	if(errors>0)	return false;	
	else	return true;

}

function contact_validate(fld, lang)
{
	var c_errors;
	
	//si le champs frm_nom est vide
	if(fld.frm_nom.value.length==0)
	{
		c_errors++;
	}
	
	//si un des champs est vide
	if(fld.frm_nom.value.length==0 || fld.email.value.length==0 || fld.inputzip.value.length==0 || fld.sujet.value.length==0 || fld.message.value.length==0 || crash==1)
	{
		if(lang=="fr")
		alert("Le mail n'a pas été envoyé, certains champs sont incomplets.");
		if(lang=="nl")
			alert("De mail werd niet verzonden, sommige velden zijn onvolledig.");
		if(lang=="en")
			alert("The mail was not sent, the fields are incomplete");

		return false;
	}
	
	//sinon si le zip est == à 9999 ou 10000 (journaliste/autre) -> envoi du formulaire
	else if(fl_zip==0 && fld.inputzip.value == 9999 || fld.inputzip.value == 10000) { 
		fld.form.submit();
	}
	
	else if(fl_zip == 0)
	{	
		if(lang=="fr")
		alert("Le mail n'a pas été envoyé, le code postal est incorrect.");
		if(lang=="nl")
			alert("De mail werd niet verzonden, de postcode is onjuist.");
		if(lang=="en")
			alert("The mail was not sent, the postal code is incorrect");
		return false;
	}
	
	else
	{
		fld.form.submit();
	}
	
	
}

// Traitement des erreurs
function fct_show_errors() {
    // Rétablissement du style des libellés
    for(i=0; i<arr_lst_fld.length; i++) {
        document.getElementById(arr_lst_fld[i]).style.color = "black";
        document.getElementById(arr_lst_fld[i]).style.fontWeight = "normal";
    }

    // Mise en évidence des champs fautifs
    for(i=0; i<arr_errors.length; i++) {
    	
        document.getElementById(arr_errors[i]).style.color = "red";
        document.getElementById(arr_errors[i]).style.fontWeight = "bold";
    }
    
    alert(message);

}
