$(document).ready(function() {
	$("#preinscriptionErrorDialog").jqm({
		modal: true,
		closeClass: "dialogClose"}
	);
	
	$("#antiSpamPbDialog").jqm({
		modal: true,
		closeClass: "dialogClose"}
	);
	
	$("#inscriptionErrorDialog").jqm({
		modal: true,
		closeClass: "dialogClose"}
	);
	
	$("#inscriptionOkDialog").jqm({
		modal: true,
		closeClass: "dialogClose"}
	);
	
	// Widget date
	$("#dateNaissance").datepicker({
		showOn: "focus",
		dateFormat: "dd/mm/yy",
		firstDay: 1,
		yearRange: "-90:+0",
		monthNamesShort: ["Jan","Fév","Mars","Avril","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],
		dayNamesMin: ["Di","Lu","Ma","Me","Je","Ve","Sa"],
		changeMonth: true,
		changeYear: true
		});
	
	// Formulaire posté en ajax
	var options = {
			beforeSubmit: inscriptionValidation,
			success: inscriptionOk,
			error: inscriptionError,
			dataType: "json"
		};
	$("#inscription").ajaxForm(options);
});

function inscriptionValidation(formData, jqForm, options) {
	$("#inscription").block({
		message: "<img src='img/waitSmall.gif'/>&nbsp;&nbsp;Veuillez patienter...",
		css: {
			backgroundColor: "#fbfbfb",
			border: "solid 2px #f9912b",
			"-moz-border-radius": "5px",
			padding: "10px",
			color: "#414141",
			"font-weight": "bold",
			"font-size": "13px"
		},
		overlayCSS: {
			backgroundColor: "#000",
			opacity: 0.25
		}
	});
	
	var form = jqForm[0];
	var isError = false;
    
    // Pseudo
    var pseudo = form.pseudoIns.value;
    if (pseudo == "") {
    	$("#pseudoIns").addClass("error");
    	isError = true;
    } else {
    	var pseudoRegExp = /^[a-z][a-z0-9\._-]{2,13}$/;
        if (!pseudo.match(pseudoRegExp)) {
        	$("#pseudoIns").addClass("error");
        	isError = true;
        } else {
        	$("#pseudoIns").removeClass("error");
        }
    }
    
    // Password
    var password = form.passwordIns.value;
    if (password == "") {
    	$("#passwordIns").addClass("error");
    	isError = true;
    } else {
    	var passwordRegExp = /^.{6,}$/;
        if (!password.match(passwordRegExp)) {
        	$("#passwordIns").addClass("error");
        	isError = true;
        } else {
        	$("#passwordIns").removeClass("error");
        }
    }
    
    // Mail
    var mail = form.mail.value;
    if (mail == "") {
    	$("#mail").addClass("error");
    	isError = true;
    } else {
    	var mailRegExp = /^[a-zA-Z][a-zA-Z0-9\._-]+@[a-zA-Z][a-zA-Z0-9\._-]+$/;
        if (!mail.match(mailRegExp)) {
        	$("#mail").addClass("error");
        	isError = true;
        } else {
        	$("#mail").removeClass("error");
        }
    }
    
    // Password et confirmation identiques
    var passwordConfirm = form.passwordConfirm.value;
    if (passwordConfirm == "") {
    	$("#passwordConfirm").addClass("error");
    	isError = true;
    } else {
    	if (!password == passwordConfirm) {
        	$("#passwordConfirm").addClass("error");
        	isError = true;
        } else {
        	$("#passwordConfirm").removeClass("error");
        }
    }
    
    // S'il y a une ou plusieurs erreurs, on ouvre la dialog d'erreur et on
    // retourne false
    if (isError) {
    	openPopup($("#preinscriptionErrorDialog"));
    	$("#inscription").unblock();
    	return false;
    }
    return true;
}

function inscriptionOk(data) {
	if (data.returnedValue == "ok") {
		openPopup($("#inscriptionOkDialog"));
		$("#inscription").resetForm();
	} else {
		if (data.antiSpamPb) {
			openPopup($("#antiSpamPbDialog"));
			Recaptcha.reload();
		} else {
			openPopup($("#inscriptionErrorDialog"));
			$("#codeAntiSpam").removeClass("error");
		}
	}
	$("#inscription").unblock();
}

function inscriptionError() {
	openPopup($("#inscriptionErrorDialog"));
	$("#inscription").unblock();
}

function pseudoExistTest() {
	var pseudoToTest = $("#pseudoIns").fieldValue();
	var options = {
			url: "ajaxRequest.php",
			data: {
				target: "pseudoExist.php",
				pseudo: pseudoToTest[0]
			},
			dataType: "json",
			success: pseudoExistTestOk,
			error: pseudoExistTestError
		}
	$.ajax(options);
}

function pseudoExistTestOk(data) {
	if (data.returnedValue == "ko") {
		$("#pseudoExistResu").removeClass("pseudoExists pseudoAvailable");
		$("#pseudoExistResu").addClass("pseudoAvailable");
		$("#pseudoExistResu").html("Disponible");
		$("#pseudoIns").removeClass("error");
	} else if (data.returnedValue == "ok") {
		$("#pseudoExistResu").removeClass("pseudoExists pseudoAvailable");
		$("#pseudoExistResu").addClass("pseudoExists");
		$("#pseudoExistResu").html("Non disponible, veuillez choisir un autre pseudo.");
		$("#pseudoIns").addClass("error");
	} else {
		$("#pseudoExistResu").removeClass("pseudoExists pseudoAvailable");
		$("#pseudoExistResu").addClass("pseudoExists");
		$("#pseudoExistResu").html("Une erreur est survenue.");
		$("#pseudoIns").removeClass("error");
	}
}

function pseudoExistTestError() {
	$("#pseudoExistResu").removeClass("pseudoExists pseudoAvailable");
	$("#pseudoExistResu").addClass("pseudoExists");
	$("#pseudoExistResu").html("Une erreur est survenue.");
}
