{% extends '@ajax-layout/layout.twig' %}

{% block body %}
<style>
table #input_ajoutSignataire
{
    position: absolute;
    margin-top: -18px;
    width: 200px;
}
table #input_ajoutSignataireG
{
    position: absolute;
    margin-top: -18px;
    width: 200px;
}
</style>

    <div id="message_erreur_popup" class="error displayNone clearfix" ></div>
        <form method="post" name="form_choix_validation" id="form_choix_validation">
            <div class="form" id="divSignataires">
                <input type="hidden" id="lastIdSignataire" value="" />
                {% include '@popup-erreur/_signatories_table.twig' %}
                {% if droits.ajoutSignataire %}
                    {% if listeChoix %}
                        <div class="">
                            <table>
                                <tr>
                                    <td>
                                        <span class =" first" style="width : 100%">
                                        {{ inputSelect('', 'listeChoix', listeChoix, '', '', '', '', true, 'changeSignat', '[$("#input_listeChoix").val() ]' , '', false, 'Choisir dans la liste' | trad) }}</span>
                                        
                                    </td>
                                    <td class="secondaryZone" style="display:none;width: 200px;padding-top: 1px;">
                                        <span  class="" style="display:none"  id ="collapseSignataireSimple" >{{ inputSelect('', 'ajoutSignataire', listeSignataire, '', '', '', '', true, '', '', ' ', false, 'Choisir dans la liste' | trad) }}</span>
                                        <span class="" style="display:none"  id ="collapseSignataireGroupe" >{{ inputSelect('', 'ajoutSignataireG', listeSignataireGroupe, '', '', '', '', true, '', '', '', false, 'Choisir dans la liste' | trad) }}</span>
                                    </td>
                            
                                    
                                </tr>
                            </table>
                        </div>  
                    {% endif %}          
                    {% if listeChoix %}
                        <button type="button" class="button principal button_right" style="margin-top: -28px;" name="ajouterSignataire" id="ajouterSignataire">{{ 'Ajouter' | trad }}</button>		   
                    {% else %}
                        <div style="width:100%; height:60px;">
                            <div class="colonne2">
                                <div class="row">
                                    <input type="hidden" name="listeChoix" id="input_listeChoix" value="S" />
                                    {{ inputSelect('Signataires' | trad, 'ajoutSignataire', listeSignataires, '', '', '', '', true, '', '', '', false, ('Choisir dans la liste' | trad)) }}
                                </div>
                            </div>
                            <div class="colonne2 last">
                                <button type="button" class="button principal button_right" name="ajouterSignataire" id="ajouterSignataire">{{ 'Ajouter' | trad }}</button>
                            </div>
                        </div>    
                    {% endif %} 
                {% endif %}
            </div>
        </form>
    </div>
        {% if messageInformatif %}
            <div style="font-style: italic;">
                {{ messageInformatif }}
            </div>
        {% endif %}
    {% if withoutFooter %}       
    {% else %}
        <div class="modal-footer">
            {% if ErreurValid.Statut=="B" %}
                <button type="button" class="button secondaire button_right" data-dismiss="modal">{{ 'Annuler' | trad}}</button>
            {% else %}
                {# si delayRecording === true alors on ne souhaite pas enregistrer immédiatement les changements apportés #}
                {% if delayRecording ?? false %}
                    <button type="button" class="button secondaire button_right" data-dismiss="modal" onClick='desactivePopup();'>
                        {{'Continuer' | trad }}
                    </button>		
                {% else %}
                    <a type="button" class="button principal button_right" form="form_fournisseur" onClick="signataireXML('{{ pathValidation }}');">
                        {{ 'Enregistrer' | trad }}
                    </a>			
                    {% if pathAnnuler %}
                        <a type="button" class="button secondaire button_right" form="modal" 
                            onClick="activeLoader();redirectJSWithPost('{{pathAnnuler}}');">
                            {{ 'Annuler' | trad }}
                        </a>
                    {% else %}
                        <button type="button" class="button secondaire button_right" data-dismiss="modal" onClick='desactivePopup();'>
                            {{'Annuler' | trad }}
                        </button>
                    {% endif %}
                {% endif %}
            {% endif %}
        </div>        
    {% endif %}
</div>

<script>

    {% if pathAnnuler %}
        $('.modal-close').click(function(){
            activeLoader();
            redirectJSWithPost('{{pathAnnuler}}');
        });
    {% endif %}

function changeSignat(val)
{
    if(val == '')
    {
        $('#ajouterSignataire').prop("disabled", true);
        $('.secondaryZone').hide();
    } else {
        $('#ajouterSignataire').prop("disabled", false);
        $('.secondaryZone').show();
    }

    if(val == 'GS')
    {
        $('#collapseSignataireGroupe').show();
        $('#collapseSignataireSimple').hide();

    }
    else
    {
        $('#collapseSignataireGroupe').hide();
        $('#collapseSignataireSimple').show();
    }
}


$("#modal-title").html("{{ 'Sélection des signataires' | trad }}{% if complementTitle %} : {{ complementTitle }}{% endif %}");

{% if pathAsync %}
function signataireXML(path){
    activeLoader();
    $.ajax({
        url : path ,
        dataType : 'JSON',
        type: 'POST',
        data: $('#form_choix_validation').serialize(),
        success: function (data) {  
            if(data.statut == 'wsdlEnAsync'){
                asyncBackground(wsdlEnAsync, data);
            }
            else if(data.statut == 'erreur'){
                desactiveLoader();
                $('#message_erreur_popup').text(data.message).show();
            }
            else if(data.statut == 'waiting'){
            	activeLoader();
            }
            else{
                desactiveLoader();
                $("#modal-body").html(data);
            }
        },
        error: function (data){
            //si retour json code 443 erreur alors redirection
            var data = jQuery.parseJSON(data.responseText);
            if(data.postGestion){
                redirectJSWithPost(data.path, data.postGestion);
            }
            else{
                window.location.href = data.path;
            }
        }
    });
};

function wsdlEnAsync(requestData, dataRetourWsdl) {
    $.ajax({
        dataType : 'JSON',
        url: '{{ pathAsync }}',
        data: {
            dataAsync: JSON.stringify(requestData),
            dataRetourWsdl: JSON.stringify(dataRetourWsdl),
        },
        type: 'POST', // la méthode indiquée dans le formulaire (get ou post)
        success: function(data) { // je récupère la réponse du fichier PHP 
            if (data.statut == 'wsdlEnAsync') {
                asyncBackground(wsdlEnAsync, data);
                return;
            }
            
			if(data.statut == 'waiting'){
            	activeLoader();
            	return;
            }
            
            if (data.postGestion) {
                redirectJSWithPost(data.path, data.postGestion);
                return;
            }
            
            window.location.href = data.path;
        }, 
        error: function (data){
            desactiveLoader();
            $("#modal-content").addClass("modal_small");
            $("#modal-body").html(data.responseText);
            activePopup();
        } 
    }); 
}
{% else %}
    function signataireXML(path){
    activeLoader();
    $.ajax({
        url : path ,
        type: 'POST',
        data: $('#form_choix_validation').serialize(),
        success: function (data) {            
            desactiveLoader();
            $("#modal-body").html(data);
        },
        error: function (data){
            //si retour json code 443 erreur alors redirection
            var data = jQuery.parseJSON(data.responseText);
            if (data.closePopup) {
                desactivePopup();
                desactiveLoader();
            } else if (data.divRefresh) {
                refrechDiv(window.location.pathname, data.divRefresh, data.formRefresh);
                desactivePopup();
            } else if(data.postGestion){
                redirectJSWithPost(data.path, data.postGestion);
            }
            else{
                window.location.href = data.path;
            }
        }
    });
};
{% endif %}

$('#input_ajoutSignataire option').each(function(){
    elementOption = $(this);
    valueOption = $(this).attr('value');
    $('[name$="_3"]').each(function() {
        if($(this).val() == valueOption){
            elementOption.attr({'disabled':'disabled'});
        }
    })
});

$('#input_ajoutSignataireG option').each(function(){
    elementOption = $(this);
    valueOption = $(this).attr('value');
    $('[name$="_3"]').each(function() {
        if($(this).val() == valueOption){
            elementOption.attr({'disabled':'disabled'});
        }
    })
});

$('#lastIdSignataire').val({{ idSignataire }})
$('#tableauSignataires tbody tr:last').find('.moveDown').hide();

function supprSignataire(id){
    codeSignataire = $('[name="'+id+'_3"]').val();
    tblRang2Suppr = $('#'+id).attr('class').split("_");
    oldRang2Suppr = tblRang2Suppr[1];
    $('#'+id).remove();	

    $('#input_ajoutSignataire option').each(function(){
        if($(this).attr('value') == codeSignataire){
            $(this).removeAttr('disabled');
        }
    });
    $('#input_ajoutSignataireG option').each(function(){
        if($(this).attr('value') == codeSignataire){
            $(this).removeAttr('disabled');
        }
    });

    $('#tableauSignataires tbody tr:last-child .moveDown').hide();
}

function moveDown(id2move){
    // on récupere le rang du TR suivant
    id2move_NEXT = $('#'+id2move).next().attr('id');
    tblRang2move_NEXT = $('#'+id2move_NEXT).attr('class').split("_");
    newRang_NEXT = oldRang_NEXT = tblRang2move_NEXT[1];
    
    // on récupere le rang du TR cliqué
    tblRang2move = $('#'+id2move).attr('class').split("_");
    oldRang = tblRang2move[1];

    if(parseFloat(Math.round(oldRang_NEXT)) === parseFloat(oldRang_NEXT)){
        // si le rang précédent en .0, on ajoute 0.5 au rang cliqué
        newRang = (parseFloat(oldRang_NEXT) + parseFloat(0.5)).toFixed(1);
    }
    else if(parseFloat(oldRang_NEXT) != parseFloat(oldRang)){
        // si le rang précédent en .5, on ajoute 1 au rang cliqué
        newRang = (parseFloat(oldRang) + parseFloat(1)).toFixed(1);
        newRang_NEXT = (parseFloat(oldRang_NEXT) - parseFloat(1)).toFixed(1);
    }

    // on donne les valeurs calculés
    // tr cliqué
    $('#'+id2move).removeClass('rang_'+oldRang).addClass('rang_'+newRang);
    $('#'+id2move+' td:first').find('span').html(newRang);
    $('#'+id2move).find('[name='+id2move+'_0]').val(newRang);
    // tr suivant
    $('#'+id2move_NEXT).removeClass('rang_'+oldRang_NEXT).addClass('rang_'+newRang_NEXT);
    $('#'+id2move_NEXT+' td:first').find('span').html(newRang_NEXT);
    $('#'+id2move_NEXT).find('[name='+id2move_NEXT+'_0]').val(newRang_NEXT);
    

    /*On regarde si une fois déplacé le TR sera le dernier de la liste */
    /* si c'est pas le cas on l'insère et on affiche la flèche UP si elle n'était pas déjà affichée */
    if(typeof $('#'+id2move).next().next().attr('id') !== 'undefined')
    {
        $('#'+id2move).detach().insertAfter($('#'+id2move_NEXT));
        $('[class="rang_'+newRang+'"] .actions .moveUp').show();
    }
    // si le tr est le dernier affiché, on active si ce n'est pas deja le cas la flèche DOWN
    else{
        lastIdTr = $('#tableauSignataires tbody tr:last-child').attr('id');
        if(lastIdTr!=id2move){
            $('#'+id2move).detach().insertAfter($('#tableauSignataires tbody tr:last-child'));
        }
        $('#'+lastIdTr+' .actions .moveDown').show();
    }

    /* on réattribut les fleches pour le 1er et le dernier de la liste */
    if($('#tableauSignataires tbody tr:first-child').attr('id')==id2move){
        $('#'+id2move+' .actions .moveUp').hide();
    }    		
    $('#tableauSignataires tbody tr:last-child .moveDown').hide();
    $('#tableauSignataires tbody tr:last-child .moveUp').show();
    $('#tableauSignataires tbody tr:first-child .moveUp').hide();
}

function moveUp(id2move)
{
    // on récupere le rang du TR précédent
    id2move_PREV = $('#'+id2move).prev().attr('id');
    id2move_PREV_PREV = $('#'+id2move_PREV).prev().attr('id');
    tblRang2move_PREV = $('#'+id2move_PREV).attr('class').split("_");
    newRang_PREV = oldRang_PREV = tblRang2move_PREV[1];
    
    // on récupere le rang du TR cliqué
    tblRang2move = $('#'+id2move).attr('class').split("_");
    oldRang = tblRang2move[1];

    if(parseFloat(oldRang_PREV) != parseFloat(oldRang)){
        if(parseFloat(Math.round(oldRang_PREV)) === parseFloat(oldRang_PREV) && parseFloat(Math.round(oldRang)) != parseFloat(oldRang)){
            // si le rang précédent est en .0 et que le rang cliqué est en .5, on retire 0.5 en partant du rang précédent
            newRang = (parseFloat(oldRang_PREV) - parseFloat(0.5)).toFixed(1);
        }else{
            // on retire 1 au rang cliqué
            newRang = (parseFloat(oldRang) - parseFloat(1)).toFixed(1);
            newRang_PREV = (parseFloat(oldRang_PREV) + parseFloat(1)).toFixed(1);
        }
    }

    // on vérifie que l'id précédent n'est pas celui du premier signataire possible (on ne peut pas aller au-dessus si le sélectionné est informé)
    idTopSignatory = $('#firstSignatoryId').attr('value');
    if (idTopSignatory == id2move_PREV_PREV) {
        if ($('#input_' + id2move + '_5').val() == 'O') {
            $('[id="' + id2move + '"] .actions .moveUp').hide();
        }
    }

    
    // on donne les valeurs calculés
    // tr cliqué
    $('#'+id2move).removeClass('rang_'+oldRang).addClass('rang_'+newRang);
    $('#'+id2move+' td:first').find('span').html(newRang);
    $('#'+id2move).find('[name='+id2move+'_0]').val(newRang);
    // tr précédent
    $('#'+id2move_PREV).removeClass('rang_'+oldRang_PREV).addClass('rang_'+newRang_PREV);
    $('#'+id2move_PREV+' td:first').find('span').html(newRang_PREV);
    $('#'+id2move_PREV).find('[name='+id2move_PREV+'_0]').val(newRang_PREV);
    

    /* On regarde si une fois déplacé le TR sera le premier de la liste */
    /* si c'est pas le cas on l'insère et on affiche la flèche DOWN si elle n'était pas déjà affichée */
    if(typeof $('#'+id2move).prev().prev().attr('id') !== 'undefined')
    {
        $('#'+id2move).detach().insertBefore($('#'+id2move_PREV));
        $('[class="rang_'+newRang+'"] .actions .moveDown').show();
    }	
    else
    {
        firstIdTr = $('#tableauSignataires tbody tr:first-child').attr('id');
        if(firstIdTr!=id2move){
            $('#'+id2move).detach().insertBefore($('#tableauSignataires tbody tr:first-child'));
        }
        $('#'+firstIdTr+' .actions .moveUp').show();
    }
    
    $('#tableauSignataires tbody tr:last-child .moveDown').hide();
    $('#tableauSignataires tbody tr:last-child .moveUp').show();
    $('#tableauSignataires tbody tr:first-child .moveUp').hide();
    $('[class="rang_0.5"] .actions .moveDown').show();
    $('[class="rang_0.5"] .actions .moveUp').hide();
}

$("#ajouterSignataire").click(function(e) {

    if(($('#input_ajoutSignataire').val()!='' && $('#input_ajoutSignataire option[value="'+$('#input_ajoutSignataire').val()+'"]').not(':disabled').length>0) || ($('#input_ajoutSignataireG').val()!='' && $('#input_ajoutSignataireG option[value="'+$('#input_ajoutSignataireG').val()+'"]').not(':disabled').length>0)) {
        if($('#input_ajoutSignataire').val() != '' && $('#input_listeChoix').val() ==  'S')
        {
            signataire = $('#input_ajoutSignataire').val(); 
        }
        if($('#input_ajoutSignataireG').val() != '' && $('#input_listeChoix').val() == 'GS')
        {
            signataire = $('#input_ajoutSignataireG').val(); 
        }
 
        lastId = ($('#tableauSignataires tr').length)-1;
        if(lastId=='0'){
            newRangSignataire = parseFloat(0.5);
            newIdSignataire = parseFloat(1);
        }
        else{
            rangLastSignataire = $('#tableauSignataires tbody tr:last').attr('class').substr(5);
            if(parseFloat(Math.round(rangLastSignataire)) === parseFloat(rangLastSignataire))
                addValue = '0.5';
            else
                addValue = '1.0';
            
            rangLastSignataire = newRangSignataire = parseFloat(rangLastSignataire) + parseFloat(addValue);                    
            newIdSignataire = parseFloat(lastId) + parseFloat(1);
            $('#tableauSignataires tbody tr:last-child .moveDown').show();
        }
        $.ajax({
            url : '{{ path('Ajax.Erreur.ajaxAjoutSignataire' ) }}',
            type: 'POST',
            dataType : 'HTML',
            data: {'id' : newIdSignataire, 'rang': newRangSignataire, 'signataire': signataire, 'choixType': $('#input_listeChoix').val(),
                'delayRecording' : '{{ delayRecording ?? false }}'},
            success: function (html) {   
                $('#tableauSignataires tbody tr:last-child .moveDown').show(); 
                $('#tableauSignataires tbody').append(html);
                $('#'+newIdSignataire+' .moveDown').hide();
                if(lastId=='0'){
                    $('#'+newIdSignataire+' .moveUp').hide();
                }
                $('#input_ajoutSignataire').find('option:selected').attr({'disabled':'disabled'});
                $('#lastIdSignataire').val(newIdSignataire);          
            }
        });
        
    }
});

</script>
{% endblock %}