/*
 *  UseFul JavaScripts :)
 *  Vérification de formulaires
 *  Copyright (c) 2009 Informatique de France
 *  24/08/09
*/

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
// FONCTIONS GENERIQUES
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

var form = "";
var error = false;

// INPUTS
function check_input(field_name, field_size, classError, classOK, label_id) {
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var field_value = form.elements[field_name].value;
    if (field_value == '' || field_value.length < field_size) {
		form.elements[field_name].className = classError;
		document.getElementById(label_id).style.color = "#CC0000";
		error = true;
    }
	else {
		document.getElementById(label_id).style.color = "#000000";
		form.elements[field_name].className = classOK;
	}
  }
}

// RADIOS
function check_radio(field_name, message) {
	var isChecked = false;
	var label_id = 'label_'+field_name;
	if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
		var radio = form.elements[field_name];
		for (var i=0; i<radio.length; i++) {
			if (radio[i].checked == true) {
				isChecked = true;
				break;
			}
		}
		if (isChecked == false) {
			document.getElementById(label_id).style.color = "#CC0000";
			error = true;
		}
		else {
			document.getElementById(label_id).style.color = "#000000";
		}
	}
}

// SELECT
/*
function check_select(field_name, field_default, message) {
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var field_value = form.elements[field_name].value;

    if (field_value == field_default) {
      error_message = error_message + "* " + message + "\n";
      error = true;
    }
  }
}
*/

// MOTS DE PASSE
function check_password(field_name_1, field_name_2, field_size, classError, classOK) {
	if (form.elements[field_name_1] && (form.elements[field_name_1].type != "hidden")) {  
		var password_current = form.elements[field_name_1].value;
		var id_label_password_current = 'label_'+field_name_1;
		var password_confirmation = form.elements[field_name_2].value;
		var id_label_password_confirmation = 'label_'+field_name_2;	
		if (password_current == '' || password_confirmation == '' || password_current != password_confirmation) {
			form.elements[field_name_1].className = classError;
			form.elements[field_name_2].className = classError;
			document.getElementById(id_label_password_current).style.color = "#CC0000";
			document.getElementById(id_label_password_confirmation).style.color = "#CC0000";
			error = true;
		}
		else {
			document.getElementById(id_label_password_current).style.color = "#000000";
			document.getElementById(id_label_password_confirmation).style.color = "#000000";
			form.elements[field_name_1].className = classOK;
			form.elements[field_name_2].className = classOK;
		}
	}
}

// VERIFICATION EMAIL
function check_mail (field_name,classError, classOK) {
	a = document.Verif.Mail.value;
	valide1 = false;
	
	for (var j=1;j<(a.length);j++) {
		if( a.charAt(j)=='@') {
			if (j<(a.length-4)) {
				for ( var k=j; k<(a.length-2); k++){
					if ( a.charAt(k)=='.' ) valide1 = true;
				}
			}
		}
	}
	if( valide1==false ){
	alert( "Veuillez saisir une adresse email valide." );
	return valide1;
	}
}

// GESTION DE L'ESPACE DE COMMUNICATION
function update_status(text, id){
	document.getElementById(id).innerHTML = text;
}

// VERIFICATION ASYNCHRONE DU LOGIN
function handle_login(url_verif_login){
	var loginRequest = null;
	
	// Définition du connecteur en fonction du navigateur :
	if (window.XMLHttpRequest){
		loginRequest = new XMLHttpRequest();
		if (loginRequest.overrideMimeType) {
				loginRequest.overrideMimeType('text/xml');
			}
	} 
	else if (window.ActiveXObject) {
		try {
			loginRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e){
			try {
					loginRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
					alert("Impossible de communiquer avec le serveur");
			}
		}
    }

	// Réception et traitement des résultats en background :
	loginRequest.onreadystatechange = function() {
		if ( loginRequest.readyState == 4 ) {
			if ( loginRequest.status == 200 ) {
				if ( loginRequest.responseText == "0" ){
					document.getElementById('label_pseudo').style.color = "#000000";
					document.getElementById('pseudo').className = "formstyle004";
					update_status("Merci de renseigner les informations en rouge.", "warning");
					update_status("1", "pseudo_verif");
				} else {
					document.getElementById('label_pseudo').style.color = "#CC0000";
					document.getElementById('pseudo').className = "formstyle004_error";
					update_status("Ce pseudo est d&eacute;j&agrave; pris.", "warning");
					document.getElementById("warning").style.display = "block";
					update_status("0", "pseudo_verif");
				}
			}
			else {
				alert( "Une erreur est survenue : " + loginRequest.status + " " + loginRequest.statusText );
			}	
		} 
	};
	
	// Envoi de la requête en background :
	var username = document.getElementById('pseudo').value;
	loginRequest.open("GET", url_verif_login + "?username=" + username, true); 
	loginRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	loginRequest.send(null);

	if (error == true){
		document.getElementById("warning").style.display="block";
		return false;
	} else {
		return true;
	}
	
}


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
// REGLES DES FORMULAIRES
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

function check_form_inscription_1(){
	error = false;
	form = document.form_inscription_1;
	
	check_input("nom_enfant", 2, "formstyle_error", "formstyle", "label_nom_enfant");
	check_input("prenom_enfant", 2, "formstyle_error", "formstyle", "label_prenom_enfant");
	check_input("pseudo", 2, "formstyle004_error", "formstyle004", "label_pseudo");
	
	if (document.getElementById("pseudo_verif").innerHTML == "0"){
		form.elements["pseudo"].className = "formstyle004_error";
		document.getElementById("label_pseudo").style.color = "#CC0000";
		error = true;
	}
	else {
		form.elements["pseudo"].className = "formstyle004";
		document.getElementById("label_pseudo").style.color = "#000000";
	}
	
	check_password("code_secret", "code_secret_verif", 7, "formstyle004_error", "formstyle004");
	check_input("jour_naissance", 1, "form003left001_error", "form003left001", "label_naissance_enfant");
	check_input("mois_naissance", 1, "form003left001_error", "form003left001", "label_naissance_enfant");
	check_input("annee_naissance", 4, "form003left003_error", "form003left003", "label_naissance_enfant");
	check_radio("genre_enfant");
	
	if (error == true){
		document.getElementById("warning").style.display="block";
		return false;
	} else {
		return true;
	}
}

function check_form_inscription_2(){
	error = false;
	form = document.form_inscription_2;	
	
	check_input("nom_parent", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_nom_parent");
	check_input("prenom_parent", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_prenom_parent");
	check_input("email_parent", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_email_parent");
	check_radio("infos_promos");
	check_radio("offres_partenaires");
	//check_input("adresse_postale", 2, "bluebigbotformstylesecond_error", "bluebigbotformstylesecond", "label_adresse_postale");
	//check_input("cp", 5, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_code_postal");
	//check_input("ville", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_ville");
	//check_input("telephone", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_telephone");

	if (error == true) {
		document.getElementById("warning").style.display="block";
		return false;
	} else {
		return true;
	}
}

function check_form_inscription_3(){
	error = false;
	form = document.form_modification_3;
	
	check_input("nom_enfant", 2, "formstyle_error", "formstyle", "label_nom_enfant");
	check_input("prenom_enfant", 2, "formstyle_error", "formstyle", "label_prenom_enfant");
	check_password("code_secret", "code_secret_verif", 7, "formstyle004_error", "formstyle004");
	check_input("jour_naissance", 1, "form003left001_error", "form003left001", "label_naissance_enfant");
	check_input("mois_naissance", 1, "form003left001_error", "form003left001", "label_naissance_enfant");
	check_input("annee_naissance", 4, "form003left003_error", "form003left003", "label_naissance_enfant");
	check_radio("genre_enfant");
	check_input("nom_parent", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_nom_parent");
	check_input("prenom_parent", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_prenom_parent");
	check_input("email_parent", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_email_parent"); 
	check_radio("infos_promos");
	check_radio("offres_partenaires");
	check_input("adresse_postale", 2, "bluebigbotformstylesecond_error", "bluebigbotformstylesecond", "label_adresse_postale");
	check_input("cp", 5, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_code_postal");
	check_input("ville", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_ville");
	check_input("telephone", 2, "bluebigbotformstyle_error", "bluebigbotformstyle", "label_telephone");
	
	if (error == true) {
		document.getElementById("warning").style.display="block";
		return false;
	} else {
		return true;
	}
}