// @author paf

$(document).ready(function(){

    $('.control-ca').on('click',function (event) {
        var tableProductCategory = $('.ca-product-family-input');
        var flag = true;
        var context = this;
        $.each(tableProductCategory, function(key, value){
            // check if row is not hidden
            if($(value).closest('.product-family').css('display') != 'none'){
                if($(value).val() != ''){
                    flag = false;
                }
            }

        });

        if(flag){
            $.fn.jAlert({
                'message': 'Attention, aucun produit n\'a été ventillé.',
                'btn': [
                    {'label':'Ok', 'closeOnClick': true }
                ],
                'size': 'small'
            });
        } else if($('.delta-ca').length > 0){
            $.fn.jAlert({
                'message': 'Attention, pour information le total des données saisies présente un écart de plus de 10% avec la donnée agrégée saisie page précédente.',
                'btn': [
                    {'label':'Ok', 'closeOnClick': true }
                ],
                'onClose': function(){
                    window.location.href = $(context).attr("href");//console.log('It closed right up!');
                },
                'size': 'small'
            });
        } else if ($('.delta-ca').length == 0 && !flag) {
            return true;
        }
        event.preventDefault();
        return false;
    });

    // relaunch ajax call if cursor is focus on a cell while user go next step, step back or validate form
    $('.control-value').on('click', function (event) {
        // check if a request is launched
        if ($('.xhr').length) {
            event.preventDefault();
            setTimeout(function () {
                $(event.target).trigger('click');
            }, 1500);
        }
    });

    // listener modify field when field is filled
    // display value as text
    // on click edit value in an input
    $('.toggle-input-text-field').on('click', function(){

        toggleTextInput($(this));
        return false;

    });

    // listener control consistency input values
    $('.control-value').on('click', function(){

        // init flag test true control consistency input values
        flag = false;

        // consistency control from Panel data
        controlCAConsistency(this);
        if(flag === true){
            return false;
        }

    });

    // listener control form final validation
    $('.valid-form-final').on('click', function(event){

        // check if a request is launched
        if ($('.xhr').length) {
            event.preventDefault();
            setTimeout(function () {
                $(event.target).trigger('click');
            }, 1500);
        }

        $("p.error").remove();
        // init flag test true control consistency input values
        flag = false;

        // consistency control from Panel data
        controlCAConsistency(this);

        if(isNaN(parseInt($('.input-orders-ctrl-n-1').val())) && $("#TabCAFamily").is(':visible')){
            $('.target-tooltip-control-orders-1').append('<p style="color: red;" class="error">Attention, le nombre de commandes Internet ne peut être vide</p>'); //+= n.msg+"\n\n";//alertMessageToolTip($(n.output), n.msg, n.position);
            flag = true;
        }

        if(isNaN(parseInt($('.input-orders-ctrl-n-3').val())) && $("#TabCAFamily").is(':visible')){
            $('.target-tooltip-control-orders-3').append('<p style="color: red;" class="error">Attention, le nombre de commandes total VAD ne peut pas être vide</p>'); //+= n.msg+"\n\n";//alertMessageToolTip($(n.output), n.msg, n.position);
            flag = true;
        }

        // [DL] Accept negative values
        // if(parseInt($('.input-orders-ctrl-n-1').val()) < 1 && $("#TabCAFamily").is(':visible')){
        //     $('.target-tooltip-control-orders-1').append('<p style="color: red;" class="error">Attention, le nombre de commandes Internet ne peut être nul</p>'); //+= n.msg+"\n\n";//alertMessageToolTip($(n.output), n.msg, n.position);
        //     flag = true;
        // }

        // [DL] Accept negative values
        // if(parseInt($('.input-orders-ctrl-n-3').val()) < 1 && $("#TabCAFamily").is(':visible')){
        //     $('.target-tooltip-control-orders-3').append('<p style="color: red;" class="error">Attention, le nombre de commandes total VAD ne peut pas être nul</p>'); //+= n.msg+"\n\n";//alertMessageToolTip($(n.output), n.msg, n.position);
        //     flag = true;
        // }

        if(flag === true){
            return false;
        }

        if(confirm('Attention, aprés validation vous ne serez plus en mesure de revenir sur ce formulaire et de modifier les montants saisis.\nVoulez vous vraiment valider le questionnaire ?')){
            window.location = this.href;
        }else{
            return false;
        }

    });

    // Headers table fixed
    $('.table-fixed-header').fixedHeader({topOffset: 0});
});

// FUNCTIONS

// toggle texte/input field with anchor as trigger
// selector : (jQuery obj) anchor selector
function toggleTextInput(selector){

    // get elements
    var text = selector.prev();

    // get input
    var input = selector.next();

    // do toggle action
    text.hide();
    input.show();
    selector.remove();

}
// consistency control from Panel data
// selector : (jQuery obj) current selector
function controlCAConsistency(selector){

    $("p.error").remove();

    var inputSearch = {
        // control if CA Internet mobil is superior to CA Internet
        ctrl1: {
            n: {
                inputA: '.input-ctrl-n-1',
                inputB: '.input-ctrl-n-2',
                output: '.target-tooltip-control-2',
                outputbis: '.target-tooltip-control-1',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au montant total du CA Internet hors Market Place</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au montant total du CA internet mobile hors market place</p>',
                position: 'top'
            },
            n1: {
                inputA: '.input-ctrl-n-1-1',
                inputB: '.input-ctrl-n-2-1',
                output: '.target-tooltip-control-2-1',
                outputbis: '.target-tooltip-control-1-1',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au montant total du CA Internet hors Market Place</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au montant total du CA internet mobile hors market place</p>',
                position: 'bottom'
            }
        },
        // control if CA Internet is superior to CA VAD
        ctrl2: {
            n: {
                inputA: '.input-ctrl-n-3',
                inputB: '.input-ctrl-n-1',
                output: '.target-tooltip-control-1',
                outputbis: '.target-tooltip-control-3',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au montant total du CA VAD</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au montant total du CA Internet hors Market Place</p>',
                position: 'top'
            },
            n1: {
                inputA: '.input-ctrl-n-3-1',
                inputB: '.input-ctrl-n-1-1',
                output: '.target-tooltip-control-1-1',
                outputbis: '.target-tooltip-control-3-1',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au montant total du CA VAD</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au montant total du CA Internet hors Market Place</p>',
                position: 'bottom'
            }
        },
        // control if commandes mobiles is superior to commandes Internet
        ctrl3: {
            n: {
                inputA: '.input-orders-ctrl-n-1',
                inputB: '.input-orders-ctrl-n-2',
                output: '.target-tooltip-control-orders-2',
                outputbis: '.target-tooltip-control-orders-1',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au nombre total des commandes Internet hors Market Place</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au nombre total des commandes Internet mobile </p>',
                position: 'top'
            },
            n1: {
                inputA: '.input-orders-ctrl-n-1-1',
                inputB: '.input-orders-ctrl-n-2-1',
                output: '.target-tooltip-control-orders-2-1',
                outputbis: '.target-tooltip-control-orders-1-1',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au nombre total des commandes Internet hors Market Place</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au nombre total des commandes Internet mobile</p>',
                position: 'bottom'
            }
        },
        // control if commandes VAD is superior to commandes Internet
        ctrl4: {
            n: {
                inputA: '.input-orders-ctrl-n-3',
                inputB: '.input-orders-ctrl-n-1',
                output: '.target-tooltip-control-orders-1',
                outputbis: '.target-tooltip-control-orders-3',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au nombre total des commandes VAD</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au nombre total des commandes Internet hors Market Place</p>',
                position: 'top'
            },
            n1: {
                inputA: '.input-orders-ctrl-n-3-1',
                inputB: '.input-orders-ctrl-n-1-1',
                output: '.target-tooltip-control-orders-1-1',
                outputbis: '.target-tooltip-control-orders-3-1',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au nombre total des commandes VAD</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au nombre total des commandes Internet hors Market Place</p>',
                position: 'bottom'
            }
        },
        // control if volume d'affaires Market Place is superior to CA lié à la market place
        ctrl5: {
            n: {
                inputA: '.input-ctrl-n-4',
                inputB: '.input-ctrl-n-5',
                output: '.target-tooltip-control-5',
                outputbis: '.target-tooltip-control-4',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au montant du volume d\'affaires de la market place France</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au montant du CA lié à la market place France</p>',
                position: 'top'
            },
            n1: {
                inputA: '.input-ctrl-n-4-1',
                inputB: '.input-ctrl-n-5-1',
                output: '.target-tooltip-control-5-1',
                outputbis: '.target-tooltip-control-4-1',
                msg: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être supérieure au montant du volume d\'affaires de la market place France</p>',
                msgbis: '<p style="color: red;" class="error">Attention, la donnée que vous avez saisie ne peut être inférieure au montant du CA lié à la market place France</p>',
                position: 'bottom'
            }
        }
    };

    $.each(inputSearch,function(key, ctrl){
        $.each(ctrl,function(key,n){

            var TotalSup = parseInt($(n.inputA).val());
            var TotalInf = parseInt($(n.inputB).val());
            $(n.output+' p.error').remove();
            $(n.outputbis+' p.error').remove();



            if(!isNaN(TotalInf) && !isNaN(TotalSup)){

                // [DL] Accept nagetive values
                // if(TotalInf < TotalSup){
                if ((TotalSup > 0 && TotalInf > TotalSup) || (TotalSup < 0 && TotalInf < TotalSup)) {
                    $(n.output).append(n.msg); //+= n.msg+"\n\n";//alertMessageToolTip($(n.output), n.msg, n.position);
                    $(n.outputbis).append(n.msgbis); //+= n.msg+"\n\n";//alertMessageToolTip($(n.output), n.msg, n.position);
                    flag = true;
                }

            } else if (!isNaN(TotalInf) && TotalInf != 0 && isNaN(TotalSup) && $(n.inputA).is(':visible')) {
                $(n.output).append(n.msg); //+= n.msg+"\n\n";//alertMessageToolTip($(n.output), n.msg, n.position);
                $(n.outputbis).append(n.msgbis); //+= n.msg+"\n\n";//alertMessageToolTip($(n.output), n.msg, n.position);
                flag = true;
            }

        });
    });

    if($('.input-ctrl-n-3').length > 0 && isNaN(parseInt($('.input-ctrl-n-3').val()))){
        $('.target-tooltip-control-3').append('<p style="color: red;" class="error">Attention, le CA VAD ne peut pas être vide</p>');
        flag = true;
        if ($('.input-ctrl-n-3').is(':hidden')) {
            $('.target-tooltip-control-1').append('<p style="color: red;" class="error">Attention, le CA Internet ne peut pas être vide</p>');
        }
    }
}

// control product family form have not empty value
function productFamilyFormNotEmpty(){
    var tableProductCategory = $('.ca-product-family-input');
    var flag = true;
    $.each(tableProductCategory, function(key, value){
        // check if row is not hidden
        if($(value).closest('.product-family').css('display') != 'none'){
            if($(value).val() == ''){
                flag = false;
            }
        }

    });

    return flag;
}
