﻿$(function () {
    // utilisation plugin custom select
    $('.custom-select').jCustomSelect();
});

// popUp img
function openPopUp(layerId) {
    var stageWidth = $(document).width();
    var stageHeight = $(document).height();
    var stageHeightBis = $(window).height();
    var scrollTop = $(window).scrollTop();
    var contW = $(layerId).width();
    var contH = $(layerId).height();
    var posContH = (stageWidth / 2) - (contW / 2);
    var posContV = (stageWidth / 2) - (contW / 2) + scrollTop - 70;
    $("#globalPopUp").css({ width: stageWidth + "px", height: stageHeight + "px", opacity: "0.8", filter: "alpha(opacity=80)" });
    $("#globalPopUp").show();
    $(layerId).css({ left: posContH + "px", top: posContV + "px" });
    $(layerId).show("fast");
}



$(document).ready(function () {
    // limiter le nombre de caractère ds un textarea
    $(function () {
        nombreCaractereMaxParChamp("#messageMail", ".limitSigne span", 250);
        nombreCaractereMaxParChamp("#msg", ".limitSigne span", 250);
    });
    function nombreCaractereMaxParChamp(selecteur, endroitSigneRestant, nombreMax) {
        $(selecteur).keyup(function () {
            var nombreCaracteresRestants = nombreMax - $(this).val().length;
            if (nombreCaracteresRestants >= 0) {
                $(this).parents("form").find(endroitSigneRestant).text(nombreCaracteresRestants);
            } else {
                var texteTape = $(this).val();
                $(this).val(texteTape.substr(0, nombreMax));
            }
        });
    }

    /* controle form */
    function initError(cible) {
        cible.find(".error").each(function () {
            $("p.error").remove();
            $(this).removeClass("error");
        });

    }
    function initErrorBis(cible) {
        cible.find(".erreur").each(function () {
            $(this).find("span").remove();
            $(this).removeClass("erreur");
        });
    }
    function initErrorForm(cible) {
        cible.find(".erreur").each(function () {
            $(this).remove();
        });
    }

    function checkChampMail(champMail, hasError) {
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        var mail = $('#layerMail ' + champMail).val();
        if (mail == '') {
            //alert ("laaaa");
            $(champMail).after('<span class="erreur">Ce champ est obligatoire</span>');
            $(champMail).parent().addClass('erreur');
            hasError = true;
        } else {
            if (!emailReg.test(mail)) {
                $(champMail).after("<span class='erreur'>Le format de ce champ n'est pas valide</span>");
                $(champMail).parent().addClass('erreur');
                hasError = true;
            }
        }
        return hasError;
    }

    function checkRegEx(champ, regEx, errorMsg, test) {
        var valChmp = $(champ).val();
        if (!regEx.test(valChmp)) {
            if ((test != null) && (test == ".checkExtension")) {
                $(champ).parent().after(errorMsg);
            } else {
                $(champ).after(errorMsg);
            }
            hasError = true;
        }
    }

    // réinitialisation des customlist après un input reset du m2r
    $("#sReset").click(function () {
        $(this).parent().find('.customList').remove();
        $(this).parent().find('.custom-select').jCustomSelect();
    });


    var vFullTxt = $(".sFullTxt").val();
    $(".sFullTxt").click(function () {
        if ($(this).val() == vFullTxt || $(this).hasClass("error")) {
            $(this).val("");
        }
        initError($("form#sFullTxt"));
    });
    $(".sFullTxt0").click(function () {
        if ($(this).hasClass("error")) {
            $(this).val("");
        }
        initError($("form"));
    });


    $("#searchAssoSpe").click(function () {
        initError($("form"));
        var hasError = false;
        var itemAsso = $("select[name=sAssoSpe] option:selected").val();
        if (itemAsso == 0) {
            hasError = true;
            $(this).before('<p class="error">Merci de sélectionner un type de production</p>');
        }
        if (hasError == false) {
            return true;
        } else {
            return false;
        }
    });
    // selection obligatoire pour les listes production, région, departement (page organisation)
    $(".checkRequire").click(function () {
        initError($("form"));
        var hasError = false;
        var itemAsso = $(this).parents("form").find("select option:selected").val();
        var nameItem = $(this).parents("form").find("select").attr("name");
        switch (nameItem) {
            case "sProd":
                var msgError = '<p class="error">Merci de sélectionner un type de production</p>';
                break;
            case "sReg":
                var msgError = '<p class="error">Merci de sélectionner une région.</p>';
                break;
            case "sDep":
                var msgError = '<p class="error">Merci de sélectionner un département.</p>';
                break;
            default:
                var msgError = '<p class="error">Merci de sélectionner une valeur.</p>';
                break;
        }
        if (itemAsso == 0) {
            hasError = true;
            $(this).parents("form").find(".blcMedR").after(msgError);
        }
        if (hasError == false) {
            return true;
        } else {
            return false;
        }
    });

    $("#searchFd").click(function () {
        initError($("form"));
        var hasError = false;
        var itemFdD = $("select[name=sFdD] option:selected").val();
        var itemFdR = $("select[name=sFdR] option:selected").val();
        if ((itemFdD != 0 && itemFdR != 0)) {
            hasError = true;
            $(this).before('<p class="error">Vous ne pouvez pas sélectionner une région et un département en même temps.</p>');
        }

        if (itemFdD == 0 && itemFdR == 0) {
            hasError = true;
            $(this).before('<p class="error">Merci de sélectionner un département ou une région.</p>');
        }
        if (hasError == false) {
            return true;
        } else {
            return false;
        }
    });


    $("#btnSearchFullT").click(function () {
        var hasError = false;
        var msgChmpOb = "Ce champ est obligatoire";
        var sFullText = $("#search").val();
        if (sFullText == vFullTxt || sFullText == '' || sFullText == msgChmpOb) {
            $("#search").addClass('error');
            $("#search").val('Ce champ est obligatoire');
            hasError = true;
        }
        if (hasError == false) {
            return true;
        } else {
            return false;
        }
    });

    $("#sSub").click(function () {
        var hasError = false;
        var msgChmpOb = "Ce champ est obligatoire";
        var sFullText = $("#sFullTxt0").val();
        if (sFullText == vFullTxt || sFullText == '' || sFullText == msgChmpOb) {
            $("#sFullTxt0").addClass('error');
            $("#sFullTxt0").val('Ce champ est obligatoire');
            hasError = true;
            window.location.hash = "#sFullTxt0";
        }
        if (hasError == false) {
            return true;
        } else {
            return false;
        }
    });


    $("#subSendMail").click(function () {
        var hasError = false;
        initErrorBis($("#layerMail"));
        hasError = checkChampMail("#mail", hasError);
        hasError = checkChampMail("#mailDest", hasError);

        var prenom = $("#prenom").val();
        if (prenom == '') {
            $("#prenom").after('<span>Ce champ est obligatoire</span>');
            $("#prenom").parent().addClass('erreur');
            hasError = true;
        }

        if (hasError == false) {
            // traitement ajax 
            var mailExp = $("#mail").val();
            var mailDest = $("#mailDest").val();
            var message = $("#messageMail").val();
            sendMail(prenom, mailExp, mailDest, message);
            return false;
        } else {
            return false;
        }
    });

    /* check form contact */
    $("#subFormContact").click(function () {
        var hasError = false;
        var errorMsg = "<span class='erreur'>Le format de ce champ n'est pas valide</span>";
        var errorMsgType = "<span class='erreur'>Le type de fichier n'est pas valide</span>";
        initErrorForm($("#formContact"));
        // controle de presence basic

        $('#formContact .require').each(function (index) {
            if (($(this).val() == '') || ($(this).val() == 0)) {
                // petit cas special pr le btn parcourir et les custom select
                if (($(this).hasClass("inputText")) || ($(this).hasClass("custom-select"))) {
                    $(this).parent().after('<span class="erreur">Ce champ est obligatoire</span>');
                } else {
                    $(this).after('<span class="erreur">Ce champ est obligatoire</span>');
                }
                hasError = true;
            } else if ($(this).hasClass("checkMail")) {
                // controle de type
                var reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
                checkRegEx(".checkMail", reg, errorMsg);
            } else if ($(this).hasClass("checkExtension")) {
                // controle extension
                var reg = /(pdf)$/i;
                checkRegEx($(this), reg, errorMsgType, ".checkExtension");
            }
        });

        // verif format tel si rempli
        if (!$(".checkTel").val() == "") {
            var regTel = /^0[1-6789]([-. ]?[0-9]{2}){4}$/;
            checkRegEx(".checkTel", regTel, errorMsg);
        }

        if ($(".zoneCandidature").is(':visible')) {
            $('#formContact .requireCand').each(function (index) {
                if (($(this).val() == '') || ($(this).val() == 0)) {
                    // petit cas special pr le btn parcourir et les custom select
                    if (($(this).hasClass("inputText")) || ($(this).hasClass("custom-select"))) {
                        $(this).parent().after('<span class="erreur">Ce champ est obligatoire</span>');
                    } else {
                        $(this).after('<span class="erreur">Ce champ est obligatoire</span>');
                    }
                    hasError = true;
                } else if ($(this).hasClass("checkMail")) {
                    // controle de type
                    var reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
                    checkRegEx(".checkMail", reg, errorMsg);
                } else if ($(this).hasClass("checkExtension")) {
                    // controle extension
                    var reg = /(pdf)$/i;
                    checkRegEx($(this), reg, errorMsgType, ".checkExtension");
                }
            });

            /* verif input radio*/
            var checkRadio = "input[name=typeJob]";
            if (!$(checkRadio).is(":checked")) {
                $(".blcRadio").after('<span class="erreur">Ce champ est obligatoire</span>');
                hasError = true;
            }
        }
        else {
            $('#formContact .requireContact').each(function (index) {
                if (($(this).val() == '') || ($(this).val() == 0)) {
                    // petit cas special pr le btn parcourir et les custom select
                    if (($(this).hasClass("inputText")) || ($(this).hasClass("custom-select"))) {
                        $(this).parent().after('<span class="erreur">Ce champ est obligatoire</span>');
                    } else {
                        $(this).after('<span class="erreur">Ce champ est obligatoire</span>');
                    }
                    hasError = true;
                } else if ($(this).hasClass("checkMail")) {
                    // controle de type
                    var reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
                    checkRegEx(".checkMail", reg, errorMsg);
                } else if ($(this).hasClass("checkExtension")) {
                    // controle extension
                    var reg = /(pdf)$/i;
                    checkRegEx($(this), reg, errorMsgType, ".checkExtension");
                }
            });
        }

        // validation final 
        if (hasError == false) {
            return true;
            //alert("ok");
        } else {
            return false;
        }

    });

    /* afficher/masquer les zones candidature ou message info du form contact */
    $(".choixZoneForm .customList ul li a").click(function () {
        var zoneSelected = $(this).parents(".cntList").find("select option:selected").val();
        openZoneForm(zoneSelected);
    });

    /* switch zone form*/
    function openZoneForm(zoneIndex) {
        $(".zoneCandidature, .zoneInfoContact").hide();
        if (zoneIndex == "candidature") {
            $(".zoneCandidature").show();
        } else {
            $(".zoneInfoContact").show();
        }
    }

    /* lancement diaporama zoom */
    $(".diapoZoom").click(function () {
        //$('#diapoZoom').stop();
        openPopUp("#popUpDiaporama");
        //$.fn.nivoSlider.defaults.startSlide=0;
        //$.fn.playpause();
        $.fn.nivoSlider.defaults.arret = false;
    });
    $("#closePopUp, #globalPopUp").click(function () {
        // on masque le global + le popup
        $("#popUpDiaporama").hide();
        $("#globalPopUp").hide();
        //$.fn.nivoSlider.defaults.arret=true;
        //$.fn.playpause();
        $.fn.nivoSlider.defaults.arret = true;

    });

    /////////////////////////////// traitement onglet ///////////////////////////////////
    // rollover
    $("#lev2 li.active").prev().find("a").css('border-right', 'none');

    $("#lev2 li").hover(
      function () {
          $(this).addClass("active");
          $(this).children().css("border", "none");
          $(this).prev().find("a").css('border', 'none');
      },
      function () {
          if (!$(this).hasClass("current")) {
              $(this).removeClass("active");
              if ($(this).next().hasClass("active")) {
                  $(this).css('border-right', 'none');
              } else {
                  if (!$(this).hasClass("last")) {
                      $(this).children().css('border-right', '1px dotted #FFFFFF');
                  }
              }
              if ($(this).prev().hasClass("active")) {

              } else {
                  $(this).prev().find("a").css('border-right', '1px dotted #FFFFFF');
              }
          }
      }

    );

    // afficher/masquer layer header
    $("#searchAsso a").click(function () {
        initError($("form"));
        var stageWidth = $(document).width();
        var stageHeight = $(document).height();
        if ($(this).parent().hasClass("active")) {
            $(".layer").slideUp(function () {
                $(this).parent().find(".active").removeClass("active");
                $("#globalPopUp").hide();
            });
        } else {
            $(this).parent().addClass("active");
            $(".layer").slideDown();
            /*$("#globalPopUp").css({width:stageWidth+"px", height:stageHeight+"px", opacity:"0.6", filter: "alpha(opacity=60)"});
            $("#globalPopUp").show();*/
        }
        return false;
    });

    // nav avec slide
    var nbThemaMax = 5;
    var nbThema = $(".cntNav.sliderSp li").length;
    var widthLi = $(".cntNav.sliderSp li").width();
    var widthSlide = nbThema * widthLi;
    var widthSlideMax = nbThemaMax * widthLi;
    var decalSlide = widthSlide - widthSlideMax;
    $(".cntNav.sliderSp #lev2").css("width", widthSlide);
    $(".cntNav.sliderSp .other span").click(function () {
        if (nbThema > nbThemaMax) {
            if (!$(this).parent().hasClass("active")) {
                $(".cntNav.sliderSp #lev2").animate(
                            { marginLeft: -decalSlide + "px" },
                            { duration: 500 }
            );
                $(".other").addClass("active");
                $(".other span").html('Thématiques<br /> précédentes');
            } else {
                $(".cntNav.sliderSp #lev2").animate(
                            { marginLeft: 0 },
                            { duration: 500 }
            );
                $(".other").removeClass("active");
                $(".other span").html('Autres<br /> thématiques');
            }
        }
    });
    // menu deroulant fil d'arianne
    // init des largeurs des li mode menu
    $("li.modeMenu ul").each(function (index) {
        var tParent = $(this).parent().width();
        if (tParent < $(this).width()) {
            $(this).parent().css("width", $(this).width())
        } else {
            $(this).css("width", tParent)
        }
    });
    // afficher/masquer le menu
    $("#lev3 li.modeMenu>a").mouseenter(function () {
        var ulVisibility = $(this).next().css("visibility");
        if (ulVisibility == "visible") {
            $(this).next().css("visibility", "hidden");
        } else {

            $(this).next().css("visibility", "visible");
        }
        return false;
    });
    $(".modeMenu").mouseenter(function () { }).mouseleave(function () {
        $(this).find("ul").css("visibility", "hidden");
        return false;
    });

    // gestion des onglets de nav article + afficher/masquer bloc du dessous (switchContent)
    $("#lev4 li").click(function () {
        if ($("#contentVueExterieure").is(":visible")) {
            $("#contentVueExterieure").hide();
            $("#contentDefaut").show();
        }
        $("#lev4 li").addClass("bgThem");
        $("#lev4 li").removeClass("active");
        $("#lev4 li").children().removeClass();

        $(this).addClass("active");
        $(this).removeClass("bgThem");
        $(this).children().addClass("cThem");

        var index = $(this).index();
        $(".switchContent").removeClass("active");
        $(".switchContent").eq(index).addClass("active");
        return false;
    });
    // Gestion du bloc "Point de vue exterieur"
    $('#contentVueExterieure').hide();
    $("#vueExterieure").click(function (e) {
        $('#contentDefaut').hide();
        $('#contentVueExterieure').show();
        e.preventDefault();
    });

    // accordeon liste questions reponses
    var liCible = $(".showHideList h3");
    liCible.click(function () {
        var cibleSecondStep = $(this).parent().find('.secondStep');
        if (!cibleSecondStep.is(":visible")) {
            $(".secondStep").slideUp(
            function () {
                $(".showHideList li h3").removeClass("cThem");
                $(".showHideList li").removeClass("active");
            });
            cibleSecondStep.slideDown(function () {
                $(this).parent().find("h3").addClass("cThem");
                $(this).parent().addClass("active");
            });

        } else {
            $(".secondStep").slideUp(function () {
                $(this).parent().find("h3").removeClass("cThem");
                $(this).parent().removeClass("active");
            });
        }
    });

    // lancer ici l'api meteo
    $(".upperHeader .customList dd a").click(function () {
        displayMeteo($("#depMeteo").find("option:selected").val());
    });

    //////////////////////////// calendrier mensuel fnsea ///////////////////////////////
    var nbMaxPrevYear = 5;
    var nbMaxNextYear = 5;

    function initYear(nbPrevYear, nbNextYear) {
        var date = new Date();
        // on stock l'année et le mois en cours
        var currentYear = date.getFullYear();
        var currentMonth = date.getMonth();
        $(".cntMonths td").removeClass("active");
        $(".cntMonths td").eq(currentMonth).addClass("active");

        var nbYear = nbPrevYear + nbNextYear;
        var firstYear = currentYear - nbPrevYear;

        /* construction de l'entete avec les années */
        var html = "<ul>";
        var activeYear = '<li class="active"><span>' + currentYear + '</span></li>';
        for (i = 1; i < nbPrevYear; i++) {
            html += "<li><span>" + (firstYear + i) + "</span></li>";
        }
        html += activeYear;
        for (i = 1; i < nbNextYear; i++) {
            html += "<li><span>" + (currentYear + i) + "</span></li>";
        }
        html += "</ul>";

        $(".caroussel").html(html);
    }

    // initialisation
    $(".event #lev4 li").eq(1).click(function () {
        indexYear = 0;
        if ($(this).hasClass("active")) {
            $(".cntMonths table td").css("border", "none"); // debug ie 7 
            initYear(nbMaxPrevYear, nbMaxNextYear);
            var widthUl = 0;
            $(".caroussel li").each(function (index) {
                widthUl += $(this).outerWidth(true);
            });
            $(".caroussel ul").css("width", widthUl);
            /* decalage du ul pour centrer la date actuelle */
            var initDecal = (widthUl / 2) - ($(".caroussel").width() / 2);
            initDecal = Math.ceil(initDecal);
            $(".caroussel ul").css("margin-left", -initDecal + "px");
        }

        /* action next prev date */
        var decal = $(".caroussel li").outerWidth(true);
        $(".btnPrev").click(function () {
            if (indexYear > -(nbMaxNextYear - 3)) {
                $(".btnNext").removeClass("disable");
            } else {
                $(this).addClass("disable");
            }
            if (indexYear > -(nbMaxPrevYear - 2)) {
                $(".caroussel ul").animate({ "margin-left": "+=" + decal + "px" }, "slow");
                indexYear--;
            }
        });
        $(".btnNext").click(function () {
            if (indexYear < nbMaxNextYear - 3) {
                $(".btnPrev").removeClass("disable");
            } else {
                $(this).addClass("disable");
            }

            if (indexYear < nbMaxNextYear - 2) {
                $(".caroussel ul").animate({ "margin-left": "-=" + decal + "px" }, "slow");
                indexYear++;
            }
        });

        /* action click année */
        $(".caroussel li").click(function () {
            $(".caroussel li").removeClass("active");
            $(this).addClass("active");

        });
        /* action click mois */
        $(".cntMonths td").click(function () {
            var month = $(this).children().text();
            var year = $(".caroussel li.active span").text();
            $(".cntMonths td").removeClass("active");
            $(this).addClass("active");
            displayEvents(month, year, $("#m_ddlRegion").find("option:selected").attr("value"));
            // fermeture du layer et suppr de la modal
            $("#layerCalendar").css("visibility", "hidden");
            $(".modalCalendar").remove();
        });

        /* ouverture depuis le bouton open calendar */
        $("#openCalendar").click(function () {
            // on crée une zone de clique derrière le layer calendar
            var modal = '<div class="modalCalendar"></div>';
            $("body").prepend(modal);
            var stageWidth = $(document).width();
            var stageHeight = $(document).height();
            $(".modalCalendar").css({ 'width': stageWidth + 'px', 'height': stageHeight + 'px', 'position': 'absolute', 'top': 0, 'left': 0, 'z-index': 50, 'background': 'white', 'opacity': 0.01 });

            // on affiche le layer et les border td(debug ie)
            $("#layerCalendar").css("visibility", "visible");
            $(".cntMonths table td").css("border", "1px solid #cecece");

            // fermeture du layer calendar quand on clique en dehors (zone modal)
            $(".modalCalendar").click(function () {
                $("#layerCalendar").css("visibility", "hidden");
                $(this).remove();
            });

        });


    });


    // afficher/masquer le layer mail
    $(".openLayerMail img").click(function () {
        $(".msgValidation").hide();
        $(".cntFormMail").show();
        $("#layerMail").show();
    });
    $(".returnFormMail").click(function () {
        $(".msgValidation").hide();
        $(".cntFormMail").show();
        return false;
    });

    $(".closeLayerMail, .annulerLayerMail").click(function () {
        initErrorBis($("#layerMail"));
        $("#layerMail").css("display", "none");
        return false;
    });

    // afficher / masquer le layer carte
    $("#m_map area").click(function (e) {
        var posX = e.pageX + 20;
        var posY = e.pageY + 20;
        if ($("#layerCarte").is(":visible")) {
            $("#layerCarte").hide();
        }
        $("#layerCarte").css({ 'top': posY + 'px', 'left': posX + 'px' });

        // ajouter ici de l'ajax pour ajouter dynamiquement les datas dans le dom
        DisplayDepartementInMap($(this).attr("id"));

        $("#layerCarte").show();
    });
    $("#m_map2 area").click(function (e) {
        var posX = e.pageX + 20;
        var posY = e.pageY + 20;
        if ($("#layerCarte").is(":visible")) {
            $("#layerCarte").hide();
        }
        $("#layerCarte").css({ 'top': posY + 'px', 'left': posX + 'px' });

        // ajouter ici de l'ajax pour ajouter dynamiquement les datas dans le dom
        if ($(this).attr("id") != null && $(this).attr("id") != '') {
            var ids = $(this).attr("id").split(',');
            DisplayRegionInMap(ids[0]);
            DisplaySecondRegionInMap(ids[1]);
            $("#layerCarte").show();
        }
    });


    $(".closeLayerCarte").click(function () {
        $("#layerCarte").hide();
    });

    /* slider en direct home */
    $(".slider").easySlider({
        auto: true,
        continuous: true,
        numeric: false
    });


    // gestion de la notation pour la page avis
    // insert du sprite de notation juste après le label comment trouvez vous ce site ???
    $(".commenttrouvezvouscesite > label").after('<div class="spNotation"><div class="zoneBtn"></div><div class="zoneBtn"></div><div class="zoneBtn"></div><div class="zoneBtn"></div><div class="zoneBtn last"></div></div><div class="clear"></div>');

    $(".spNotation .zoneBtn").each(function (index) {
        // init notation à 0
        $(".commenttrouvezvouscesite input").eq(0).attr("checked", "checked");
        var index = index;
        var indexSp = index + 1;
        var widthStar = $(this).width();
        var decalSp = widthStar * (indexSp);
        $(this).mouseenter(
        function () {
            $(this).parent().css("background-position", "0 " + (-decalSp) + "px");
            $(".commenttrouvezvouscesite input").eq(indexSp).attr("checked", "checked");
        }
        );
    });

});
