$(document)
    .ready( function() {
	
        //global vars
        var validationform = $("#validationForm");
        var form = $("#coordForm");
        var nom_fac = $("#nom_fac");
        var prenom_fac = $("#prenom_fac");
        var nom_facInfo = $("#nom_facInfo");
        var adresse_fac = $("#adresse_fac");
        var adresse_facInfo = $("#adresse_facInfo");
        var cp_fac = $("#cp_fac");
        var cp_facInfo = $("#cp_facInfo");
        var ville_fac = $("#ville_fac");
        var ville_facInfo = $("#ville_facInfo");
        var pays_fac = $("#pays_fac");
        var pays_facInfo = $("#pays_facInfo");
        var tel_fac = $("#tel_fac");
        var tel_facInfo = $("#tel_facInfo");
        var mail_fac = $("#mail_fac");
        var mail_facInfo = $("#mail_facInfo");
        var confirmemail_fac = $("#confirmemail_fac");
        var confirmemail_facInfo = $("#confirmemail_facInfo");

        var nom_liv = $("#nom_liv");
        var prenom_liv = $("#prenom_liv");
        var nom_livInfo = $("#nom_livInfo");
        var adresse_liv = $("#adresse_liv");
        var adresse_livInfo = $("#adresse_livInfo");
        var cp_liv = $("#cp_liv");
        var cp_livInfo = $("#cp_livInfo");
        var ville_liv = $("#ville_liv");
        var ville_livInfo = $("#ville_livInfo");
        var pays_liv = $("#pays_liv");
        var pays_livInfo = $("#pays_livInfo");
        var tel_liv = $("#tel_liv");
        var tel_livInfo = $("#tel_livInfo");
        var mail_liv = $("#confirmemail_liv");
        var mail_livInfo = $("#confirmemail_livInfo");
        var confirmemail_liv = $("#confirmemail_liv");
        var confirmemail_livInfo = $("#confirmemail_livInfo");

        var cgv = $("#cgv");
        var cgvInfo = $("#cgvInfo");

        var message = $("#message");
        var messageInfo = $("#messageInfo");
    
        /***** target blank *******/
        $('a.blank').click( function() {
            window.open($(this).attr('href'));
            return false;
        });
        $('area.blank').click( function() {
            window.open($(this).attr('href'));
            return false;
        });
	
        /****** formulaires commandes***********/

        $("#add_liv").toggle();
        $("#diff_fac").click( function() {
            $("#add_liv").toggle();
        });
        // On blur
        nom_fac.blur(validateChampRequis);
        prenom_fac.blur(validateChampRequis);
        adresse_fac.blur(validateChampRequis);
        cp_fac.blur(validateChampRequis);
        ville_fac.blur(validateChampRequis);
        pays_fac.blur(validateChampRequis);
        tel_fac.blur(validateTelRequis);
        mail_fac.blur(validateEmail);
        confirmemail_fac.blur(validateConfirmEmail);
        message.blur(validateMessage);

        confirmemail_fac.change(validateConfirmEmail);
        // On key press
        nom_fac.keyup(validateChampRequis);
        prenom_fac.keyup(validateChampRequis);
        adresse_fac.keyup(validateChampRequis);
        cp_fac.keyup(validateChampRequis);
        ville_fac.keyup(validateChampRequis);
        pays_fac.keyup(validateChampRequis);
        tel_fac.keyup(validateTelRequis);
        mail_fac.keyup(validateEmail);
        confirmemail_fac.keyup(validateConfirmEmail);
        message.keyup(validateMessage);
        // On blur
        nom_liv.blur(validateChampRequis);
        prenom_liv.blur(validateChampRequis);
        adresse_liv.blur(validateChampRequis);
        cp_liv.blur(validateChampRequis);
        ville_liv.blur(validateChampRequis);
        pays_liv.blur(validateChampRequis);
        tel_liv.blur(validateTelRequis);
        mail_liv.blur(validateEmail);
        confirmemail_liv.blur(validateConfirmEmail);

        // On key press
        nom_liv.keyup(validateChampRequis);
        prenom_liv.keyup(validateChampRequis);
        adresse_liv.keyup(validateChampRequis);
        cp_liv.keyup(validateChampRequis);
        ville_liv.keyup(validateChampRequis);
        pays_liv.keyup(validateChampRequis);
        tel_liv.keyup(validateTelRequis);
        mail_liv.blur(validateEmail);
        confirmemail_liv.blur(validateConfirmEmail);

        cgv.click(validateCGV);

        // On Submitting
        $("#coordForm").submit( function() {

            if (validateEmail() & validateConfirmEmail()
                & validateRequis() & validateMessage()){
                return true;
            }
            else{
                return false;
            }
        });

        validationform.submit( function() {

            if (validateCGV())
                return true;
            else
                return false;
        });
        // function de validation des cgv
        function validateCGV() {
            if ('on' == $("#cgv:checked").val()) {
                cgvInfo.html("Merci.");
                cgvInfo.removeClass("error");
                return true;
            } else {
                cgvInfo
                .html("vous devez cocher cette case &darr;&nbsp;");
                cgvInfo.addClass("error");
                return false;
            }
        }
        // validation fonctions
        function validateEmail() {
            var a = $("#mail_fac").val();
            var b = $("#confirmemail_fac").val();
            var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
            // mail invalide
            if (filter.test(a)) {
                mail_fac.removeClass("error");
                mail_facInfo
                .text("Un e-mail valide est nécessaire au traitement de la commande.");
                mail_facInfo.removeClass("error");
                validateConfirmEmail();
                return true;
            } else {
                mail_fac.addClass("error");
                mail_facInfo.text("Adresse mail non valide !");
                mail_facInfo.addClass("error");
                return false;
            }
        }
        function validateConfirmEmail() {
            var a = $("#mail_fac").val();
            var b = $("#confirmemail_fac").val();
            var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
            // mail invalide
            if ((mail_fac.val() != confirmemail_fac.val())||(''==mail_fac.val())) {
                confirmemail_fac.addClass("error");
                confirmemail_facInfo
                .text("Adresses E-mail différentes ou non valides !");
                confirmemail_facInfo.addClass("error");
                return false;
            } else {
                confirmemail_fac.removeClass("error");
                confirmemail_facInfo
                .text("Vous avez confirmé votre adresse mail.");
                confirmemail_facInfo.removeClass("error");

                return true;
            }
        }
        function validateMessage() {
            var a = $("#message").val();
            var illegalChars = /[?\/.;:<>$+="&*\\]+/;
            if (illegalChars.test(a)) {
                message.addClass("error");
                messageInfo
                .text("Ce message contient des caratères illégaux.");
                message.Info.addClass("error");
                return false;

            } else {

                message.removeClass("error");
                messageInfo.text("Valide");
                messageInfo.removeClass("error");
                return true;

            }
        }
        function validateChampRequis() {
            var illegalChars = /[?\/.;:<>$+="&*\\]+/;
            if (($(this).val().length < 2)
                || (illegalChars.test($(this).val()))) {
                $(this).addClass("error");
                $(this)
                .next('span')
                .text(
                    "Ce champ doit être rempli et/ou contient des caratères illégaux.");
                $(this).next('span').addClass("error");
                return false;
            } else {
                $(this).removeClass("error");
                $(this).next('span').text("Valide");
                $(this).next('span').removeClass("error");
                return true;
            }
        }
        function validateTelRequis() {
            var filter = /^[0-9]{8,14}$/;
            if (filter.test($(this).val())) {
                $(this).removeClass("error");
                $(this).next('span').text("Valide");
                $(this).next('span').removeClass("error");
                return true;

            } else {
                $(this).addClass("error");
                $(this)
                .next('span')
                .text(
                    "Ce champ ne peut être vide et n'accepte que les chiffres.");
                return false;

            }
        }
        function validateRequis() {
            var valide = true;
            if ('block' == $("#add_liv").css("display")) {
                var req = [ nom_fac, prenom_fac, adresse_fac, cp_fac,
                ville_fac, pays_fac, prenom_liv, adresse_liv,
                cp_liv, ville_liv, pays_liv ];
                var reqTel = [ tel_fac, tel_liv ];
            } else {
                var req = [ nom_fac, prenom_fac, adresse_fac, cp_fac,
                ville_fac, pays_fac ];
                var reqTel = [ tel_fac ];

            }
            for ( var i = 0; i < req.length; i++) {
                var illegalChars = /[?\/.;:<>$+="&*\\]+/;
                if ((req[i].val().length < 2)
                    || (illegalChars.test(req[i].val()))) {
                    req[i].addClass("error");
                    req[i]
                    .next('span')
                    .text(
                        "Ce champ doit être rempli et/ou contient des caratères illégaux.");
                    req[i].next('span').addClass("error");
                    valide = false;
                }
            }
            for ( var i = 0; i < reqTel.length; i++) {
                var illegalChars = /[?\/.;:<>$+="&*\\]+/;
                var filter = /^[0-9]{8,14}$/;
                if (false == filter.test(reqTel[i].val())) {
                    reqTel[i].addClass("error");
                    reqTel[i]
                    .next('span')
                    .text(
                        "Ce champ ne peut être vide et n'accepte que les chiffres.");
                    reqTel[i].next('span').addClass("error");
                    valide = false;

                }
            }
            return valide;
        }


        $('#contenu #mosaique .vignetteScene img').mouseover(function(){

            $(this).next("span").addClass('visible');

        });
        $('#contenu  #mosaique .vignetteScene img').mouseout(function(){
            $(this).next("span").removeClass('visible');

        });
        $('#contenu  #mosaique .vignetteScene span').mouseover(function(){
            $(this).addClass('visible');

        });
        $('#contenu #mosaique .vignetteScene span').mouseout(function(){
            $(this).removeClass('visible');

        });
        


    });