Skip to content
Snippets Groups Projects
script.js 9.47 KiB
Newer Older
nicrausaz's avatar
nicrausaz committed
$(document).ready(function () {
    initButtonsAction();
    if (location.pathname.split("/").slice(-1)[0] == "form.php") {
        initJobChange();
        initButtonsAction();
        initAddChildButtons();
        initAddRadioButtonEvent();
        initDateChecker();
        initDatepicker();
        clearFiles();
        checkRequired();
    }
});

function checkDate() {
    var birthdate = moment(document.getElementById("birthApp").value, "DD/MM/YYYY")._d;
    var cur = new Date();
    var diff = cur - birthdate; // This is the difference in milliseconds
    var age = Math.floor(diff / 31536000000); // Divide by 1000*60*60*24*365

    if (age <= 12 || birthdate.getFullYear() < 1910 || age > 60) {
        document.getElementById('errorMsg').innerHTML = '<p class ="errorMsgs">Date invalide';
    }
    else {
        document.getElementById('errorMsg').innerHTML = '';
    }
}

function initDateChecker() {
    $("#birthApp").change(function () {
        checkDate();
    });

    $("#dejaCandAnnee").change(function () {
        checkYearDate("#dejaCandAnnee", "#dejaCandError", 0);
    });
    $("#anneeFin").change(function () {
        checkYearDate("#anneeFin", "#anneeFinError", 1);
    });
}

function addChildren(parentId, maxItems, childTemplate, addButtonId) {
    var i = $(parentId + ' > tbody').children().size() + 1;
    if (i < maxItems) {
        var fullTemplate = childTemplate.replace(/\{(.*?)\}/g, i);
        $(parentId).append(fullTemplate);
        if (i == maxItems - 1) {
            $(addButtonId).hide(750);
        }
    }
}

function changeTitleFile(objFile) {
    objFile.parentNode.setAttribute('title', objFile.value.replace(/^.*[\\/]/, ''));
    checkFileFormat(objFile);
}

function checkFileFormat(obj) {
    var errorSection = obj.parentElement.nextElementSibling.nextElementSibling.nextElementSibling;
    var fileExtension = ['pdf', 'jpeg', 'png', 'jpg'];

    if (fileExtension.indexOf(obj.value.split('.').pop().toLowerCase()) == -1) {
nicrausaz's avatar
nicrausaz committed
        // extension invalide
nicrausaz's avatar
nicrausaz committed
        errorSection.innerHTML = '<p class ="errorMsgs">Format invalide</p>';
        clearFileInput(obj);
    } else {
nicrausaz's avatar
nicrausaz committed
        // extension valide
nicrausaz's avatar
nicrausaz committed
        errorSection.innerHTML = '';
    }
}

function checkYearDate(toCheckValue, errorZone, coefficiantYear) {
    var inputYear = $(toCheckValue).val();
    var currentYear = (new Date).getFullYear() + coefficiantYear;

    if ((inputYear != parseInt(inputYear, 10)) || (currentYear < inputYear) || (inputYear.length != 4)) {
        $(errorZone).html('<p class ="errorMsgs">Date invalide');
    } else {
        $(errorZone).html("");
    }
}

function initButtonsAction() {
    $('#createAc').click(function () {
        window.open("https://guests.epfl.ch/selfaddform", '_blank');
    });
    $('#connectB').click(function () {
        document.location.href = "form.php";
    });
    $('#infoFilieres').click(function () {
        window.open("https://www.ict-berufsbildung.ch/fr/formation-professionnelle/formation-initiale-ict/", '_blank');
    });
    $('#infoMpt').click(function () {
        window.open("https://orientation.ch/dyn/show/3309", '_blank');
    });
    $('#retourHome').click(function () {
        document.location.href = "http://apprentis.epfl.ch/";
nicrausaz's avatar
nicrausaz committed
        // TODO: logout Tequila
nicrausaz's avatar
nicrausaz committed
    });
    $('#retourFormulaire').click(function () {
        history.go(-1);
    });
}

function initAddChildButtons() {
    $('#addSch').click(function () {
        var template = '<tr><td><label for="ecole{i}">Ecole:</label><input type="text" name="ecole{i}" id="ecole{i}" placeholder="Ecole"/></td><td><label for="lieuEcole{i}">Lieu:</label><input type="text" name="lieuEcole{i}" id="lieuEcole{i}" placeholder="Lieu"/></td><td><label for="niveauEcole{i}">Niveau:</label><input type="text" name="niveauEcole{i}" id="niveauEcole{i}" placeholder="Niveau"/></td><td><label for="anneesEcole{i}">Années:</label><input type="text" name="anneesEcole{i}" id="name="anneesEcole{i}" placeholder="de-à"/></td></tr>';
        addChildren('#scolaire', 6, template, '#addSch');
    });

    $('#addPro').click(function () {
        var template = '<tr><td><label for="employeurPro{i}">Employeur:</label><input type="text" name="employeurPro{i}" id="employeurPro{i}" placeholder="Employeur"/></td><td><label for="lieuPro{i}">Lieu:</label><input type="text" name="lieuPro{i}" id="lieuPro{i}" placeholder="Lieu"/></td><td><label for="activitePro{i}">Activité:</label><input type="text" name="activitePro{i}" id="activitePro{i}" placeholder="Activité"/></td><td><label for="anneesPro{i}">Années:</label><input type="text" name="anneesPro{i}" id="anneesPro{i}" placeholder="de-à"/></td></tr>';
        addChildren('#activites', 4, template, '#addPro');
    });

    $('#addStage').click(function () {
        var template = '<tr><td><label for="activiteStage{i}">Métier:</label><input type="text" name="activiteStage{i}" id="activiteStage{i}" placeholder="Métier"></td><td><label for="entrepriseStage{i}">Entreprise:</label><input type="text" name="entrepriseStage{i}" id="entrepriseStage{i}" placeholder="Entreprise"></td></tr>';
        addChildren('#stages', 5, template, '#addStage');
    });

    $('#addInputFile').click(function () {
        var nextIndex = $('#newCertifZone > tbody').children().size() + 1;
        var zoneId = nextIndex + 7;
        if (nextIndex < 10) {
            $('#newCertifZone').append('<tr><td><div class="tooltip"><label class="file" title="" id="certifLabel' + nextIndex
                + '"><input type="file" name="certifs' + nextIndex
                + '" id="certifs' + nextIndex
                + '" onchange="changeTitleFile(this)" /></label><span class="tooltiptext tooltip-right">Formats autorisés: pdf-jpg-jpeg-png</span><p></p><section id="formatErrorZone' + zoneId
                + '"></section></div></td></tr>');
            if (nextIndex == 9) {
                $('#addInputFile').hide(750);
            }
        }
    });
}

function setMajState() {
    $('#maj1')[0].checked ? $("#representants").show(1000) : $("#representants").hide(1000);
}

function setDejaCandState() {
    if ($('#dejaCand1')[0].checked) {
        $("#dejaCandAnnee").hide(750);
        $("#dejaCandAnnee").val("");
        $("#dejaCandError").html("");
    } else {
        $("#dejaCandAnnee").show(750);
    }
}

function setLieuState() {
    if ($('#lieuLausanne')[0].checked) {
        $("#jbLausanne").show(0);
        $("#jbSion").hide(0);
    }
    else if ($('#lieuSion')[0].checked) {
        $("#jbSion").show(0);
        $("#jbLausanne").hide(0);
    }
}

function initAddRadioButtonEvent() {
    $('#maj1').change(setMajState);
    $('#maj2').change(setMajState);
    setMajState();

    $("#dejaCand1").change(setDejaCandState);
    $("#dejaCand2").change(setDejaCandState);
    setDejaCandState();

    $('#lieuLausanne').change(setLieuState);
    $('#lieuSion').change(setLieuState);
}

function clearRepresentants() {
    for (i = 1; i <= 2; i++) {
        $("#genreRep" + i + " :nth-child(1)").prop('selected', true);
        $("#nameRep" + i).val("");
        $("#surnameRep" + i).val("");
        $("#adrRep" + i).val("");
        $("#NPARep" + i).val("");
        $("#telRep" + i).val("");
    }
}

function initDatepicker() {
    $.datepicker.setDefaults($.datepicker.regional["fr"]);
    $("#birthApp").datepicker({ minDate: '-60y', maxDate: '-13y', dateFormat: "dd/mm/yy" });
}

function getFormation() {
    if ($('#lieuLausanne').is(":checked")) {
        return $("#jbLausanne option:selected")[0].value;
    }
    else {
        return $("#jbSion option:selected")[0].value;
    }
}

function initJobChange() {
    $(".jobSelectors").change(function () {
        var selectedFormation = getFormation();
        showPolyAndInfoDivs(selectedFormation);
    });
    $("#lieux").change(function () {
        var selectedFormation = getFormation();
        showPolyAndInfoDivs(selectedFormation);
    });
}

function showOnFormReturn(lieu) {
    if (lieu == 'Lausanne') {
        var selectedFormation = $("#jbLausanne option:selected")[0].value;
    }
    else if (lieu == 'Sion') {
        var selectedFormation = $("#jbSion option:selected")[0].value;
    }
    showListJob(lieu)
    showPolyAndInfoDivs(selectedFormation);
}
function showListJob(lieu) {
    if (lieu == 'Lausanne') {
        $("#jbSion").hide();
        $("#jbLausanne").show();
    }
    else if (lieu == 'Sion') {
        $("#jbSion").show();
        $("#jbLausanne").hide();
    }
}
function showPolyAndInfoDivs(selectedFormation) {
    if (selectedFormation != "menu") {
        $("#all").show(1000);
        selectedFormation == "informaticien" ? $("#infoOnly").show(1000) : $("#infoOnly").hide(500);
        selectedFormation == "informaticien" ? $("#griTest").show(1000) : $("#griTest").hide(500);
        selectedFormation == "polyMecanicien" ? $("#polyOnly").show(1000) : $("#polyOnly").hide(500);
    }
}
function clearFileInput(fileInput) {
    $(fileInput).wrap('<form>').closest('form').get(0).reset();
    $(fileInput).unwrap();
}

function clearFileLabel(fileInputLabel) {
    $(fileInputLabel)[0].title = "Aucun fichier choisi";
}

function clearFiles() {
    $("#files input").each(function (input) {
        clearFileInput(this);
    });

    $("#files label").each(function (input) {
        clearFileLabel(this);
    });
}

function checkRequired() {
    $("form").submit(function (e) {

        $($(this).find("[data-required]")).each(function () {
            if ($(this).val() == '') {
                alert("Certains champs requis n'ont pas été remplis.");
                e.preventDefault();
                return false;
            }
        });
        return true;
    });
}