
$(function(){

vid = 1;

function updatePartCount(delta) {
    $('#part_count').val(parseInt($('#part_count').val(), 10) + delta);
}

function deleteParticipant($el) {
    if ($('#participants-container').get(0).childNodes.length == 1) {
        alert('Vous ne pouvez pas supprimer tous les participants');
        return;
    }

    var data = $el.find('input[type!=hidden]').serializeArray();
    var haveValue = false;
    for (var i in data) {
        if (data[i].value != '') {
            haveValue = true;
            break;
        }
    }

    if (haveValue) {
        if (!confirm('Etes-vous certain de vouloir supprimer ce participant ?'))
            return ;
    }

    var vid = $el.find('.vid').val();
    $el.remove();

    $('#suivi_part_vid'+vid+', #fact_part_vid'+vid).remove();
    updatePartCount(-1);
}

function addParticipant() {
    var $parts = $('#participants-container .participant');

    var $el = $('#template_participant > div').clone(true);
    $el.find('input,select').each(function(){
        this.name = this.name.replace('\[\]', '['+vid+']');
    });
    $el.appendTo($('#participants-container'));
    $el.find('.vid').val(vid);

    // Participant suivi
    $newLine = $('<div id="suivi_part_vid'+vid+'"><label><input type="radio" name="suivi" value="part$'+vid+'" /> Le participant <span class="nom">XX</span></label></div>');
    $('#suivi_participants').append($newLine);
    $newLine.find('input').click(function(){
        $('#suivi_part').hide();
    });

    // Participant fact
    $newLine = $('<div id="fact_part_vid'+vid+'"><label><input type="radio" name="fact" value="part$'+vid+'" /> Le participant <span class="nom">XX</span></label></div>');
    $('#fact_participants').append($newLine);
    $newLine.find('input').click(function(){
        $('#fact_part').hide();
    });

    // Remplissage des données depuis le part 0
    if ($parts.length) {
        var $fromPart = $parts.eq(0);
        var fields = ['societe', 'adresse1', 'adresse2', 'adresse3', 'code_postal', 'ville', 'pays'];

        for (var i in fields) {
            var field = fields[i];
            $el.find('.'+field).val($fromPart.find('.'+field).val());
        }
    }

    updateParticipantNom($el, vid);
    updatePartCount(1);
    vid++;

    return ($el);
}

function updateParticipantNom($part, vid) {
    if (typeof vid == "undefined") {
        vid = $part.find('.vid').val();
    }
    $('#suivi_part_vid'+vid+' span.nom').html(getPartName($part));
    $('#fact_part_vid'+vid+' span.nom').html(getPartName($part));
}

function getPartName($part) {
    var text = $part.find('.civilite').val()+' '+$part.find('.nom').val()+' '+$part.find('.prenom').val();

    if ($.trim(text) == '')
        text = '<em>(nom vide)</em>';

    return (text);
}

function check_part($node, fields) {
    for (var fieldName in fields) {
        if (fieldName == 'adresse') {
            if ($.trim($node.find('.'+fieldName+'1').val()) == ''
                && $.trim($node.find('.'+fieldName+'2').val()) == ''
                && $.trim($node.find('.'+fieldName+'3').val()) == '') {
                $node.find('.'+fieldName+'1').focus();
                alert('Vous devez saisir '+ fields[fieldName]);
                return (false);
            }

            continue;
        }

        var $el = $node.find('.'+fieldName);

        if ($.trim($el.val()) == '') {
            $el.focus();
            alert('Vous devez saisir '+ fields[fieldName]);
            return (false);
        }
    }

    return (true);
}

function fillParticipant($part, data) {
    for (var name in data) {
        if (name == 'portable_sms') {
            if (data[name] == 1) {
                $part.find('.portable_sms').attr('checked', true);
            }
        } else if (name == 'convention') {
            if (data[name] == 'tripartite') {
                $part.find('.convention').attr('checked', true);
            }
        } else {
            $part.find('.' + name).val(data[name]);
        }
    }

    updateParticipantNom($part);
}


/**
 * On DomContentReady
 */

/*
$('#submit-preinscription, #submit-bulletin').click(function(){
    if ($.trim($('#nom').val()) == '') {
        $('#nom').focus();
        alert('Merci de renseigner votre nom avant de valider');
        return (false);
    }

    if ($.trim($('#email').val()) == '') {
        $('#email').focus();
        alert('Merci de renseigner votre Email avant de valider');
        return (false);
    }

    if ($.trim($('#telephone').val()) == '') {
        $('#telephone').focus();
        alert('Merci de renseigner votre numéro de téléphone avant de valider');
        return (false);
    }

    return (true);
});
*/

$('#submit-inscription').click(function(){

    // Check sessions

    var ret = true;
    $('.prse_id').each(function(){
        if (!$(this).val() || $(this).val() == '0') {
            ret = false;
        }
    });

    if (!ret) {
        alert('Veuillez sélectionner une session disponible');
        return (false);
    }

    // Check participants
    var $parts = $('#participants-container > .participant');
    var ret = true;

    $parts.each(function(){
        if (!check_part($(this), {
            civilite: 'la civilité de ce participant',
            nom: 'le nom de ce participant',
            prenom: 'le prenom de ce participant',
            societe: 'la societe de ce participant',
            fonction: 'la fonction de ce participant',
            adresse: 'l\'adresse de ce participant',
            code_postal: 'le code postal de ce participant',
            ville: 'la ville de ce participant',
            email: 'l\'email de ce participant',
            telephone: 'le téléphone de ce participant'
        }))
            ret = false;
    });

    if (!ret)
        return (ret);

    // Check SUIVI
    var $suivi = $('#suivi input[name=suivi]:checked');
    if (!$suivi.length) {
        alert("Vous devez saisir une personne en charge du dossier");
        $('#suivi input[name=suivi]').eq(0).focus();
        return (false);
    }
    if ($suivi.val() == 'other') {
        if (!check_part($('#suivi_part'), {
            civilite: 'la civilité de la personne en charge du dossier',
            nom: 'le nom de la personne en charge du dossier',
            prenom: 'le prenom de la personne en charge du dossier',
            societe: 'la societe de la personne en charge du dossier',
            fonction: 'la fonction de la personne en charge du dossier',
            email: 'l\'email de la personne en charge du dossier',
            telephone: 'le téléphone de la personne en charge du dossier'
        }))
            return (false);
    }

    // Check FACT
    var $fact = $('#fact input[name=fact]:checked');
    if (!$fact.length) {
        alert("Vous devez saisir une personne en charge de la facturation");
        $('#fact input[name=fact]').eq(0).focus();
        return (false);
    }
    if ($fact.val() == 'other') {
        if (!check_part($('#fact_part'), {
            civilite: 'la civilité de la personne en charge de la facturation',
            nom: 'le nom de la personne en charge de la facturation',
            prenom: 'le prenom de la personne en charge de la facturation',
            societe: 'la societe de la personne en charge de la facturation',
            fonction: 'la fonction de la personne en charge de la facturation',
            telephone: 'le téléphone de la personne en charge de la facturation'
        }))
            return (false);
    }

    // Check Moyen paiement
    if ($('#moyen_paiement :checked').length == 0) {
        alert('Vous devez sélectionner un moyen de paiement');
        return (false);
    }

    return (ret);
});

$('#suivi_other').click(function() {

    var $parts = $('#participants-container .participant');
    var $fromPart = $parts.eq(0);
    var fields = ['societe', 'adresse1', 'adresse2', 'adresse3', 'code_postal', 'ville'];

    for (var i in fields) {
        var field = fields[i];
        $('#suivi_part').find('.'+field).val($fromPart.find('.'+field).val());
    }

    $('#suivi_part').show();
});

$('#fact_other').click(function() {

    var $parts = $('#participants-container .participant');
    var $fromPart = $parts.eq(0);
    var fields = ['societe', 'adresse1', 'adresse2', 'adresse3', 'code_postal', 'ville'];

    for (var i in fields) {
        var field = fields[i];
        $('#fact_part').find('.'+field).val($fromPart.find('.'+field).val());
    }
    $('#fact_part').show();
});

$('.part_delete button').click(function(){
    deleteParticipant($(this).parents('.participant'))
});

$('#template_participant .nom, #template_participant .prenom').change(function(){
    var $el = $(this).parents('.participant');
    var vid = $el.find('.vid').val();
    updateParticipantNom($el, vid);
});

$('.part_add').click(function(){
    addParticipant();
});

$('.moyen_paiement tr td').click(function(){
    $(this).parents('tr').find('input').get(0).checked = true;
});

/**
 * Chargement des données déjà présentes
 */
if (typeof participants != 'undefined') {
    for (var i in participants) {
        var partData = participants[i];
        var $part = addParticipant();

        fillParticipant($part, partData);
    }

    if (typeof part_suivi_vid != 'undefined') {
        $('#suivi_part_vid'+part_suivi_vid+' input').click();
    } else {
        $('#suivi_other').click();
        fillParticipant($('#suivi_part'), part_suivi);
    }

    if (typeof part_fact_vid != 'undefined') {
        $('#fact_part_vid'+part_fact_vid+' input').click();
    } else {
        $('#fact_other').click();
        fillParticipant($('#fact_part'), part_fact);
    }
} else {
    addParticipant();
}

});


