$(window).load(function() {

    handleCustomSelect();

    // traductions

    var emptyInputMessage = "Veuillez remplir tous les champs";
    var changePassword    = "Votre mot de passe a bien été changé.";
    var passwordError     = "Les deux mots de passes ne correspondent pas.";
    var sendEmail         = "Un email a été envoyé.";
    var codeInvalid       = "Désolé, ce code n'est pas valide.";
    var vatInvalid        = "Le numéro de TVA entré n'est pas valide.";
    var placeholderSearch = "Affiner la sélection";
    var placeholderField  = "Choisir une option";

    if(lang == 'nl'){
        emptyInputMessage = "Vul alstublieft alle velden in";
        changePassword    = "Uw wachtwoord is gewijzigd";
        passwordError     = "De twee wachtwoorden komen niet overeen.";
        sendEmail         = "Er is een e-mail verzonden.";
        codeInvalid       = "Sorry, deze code is niet geldig.";
        vatInvalid        = "Het ingevoerde btw-nummer is niet geldig.";
        placeholderSearch = "Verfijn selectie ";
        placeholderField  = "Kies een optie";


    }else if(lang == 'en'){
        emptyInputMessage = "please complete all fields";
        changePassword    = "Your password has been changed.";
        passwordError     = "Passwords do not match.";
        sendEmail         = "An email has been sent.";
        codeInvalid       = "Sorry, this code is not valid.";
        vatInvalid        = "The VAT number entered is not valid.";
        placeholderSearch = "Refine product selection ";
        placeholderField  = "Choose an option";

    }else if(lang == 'de'){
        emptyInputMessage = "Bitte füllen Sie alle Felder aus";
        changePassword    = "Ihr Passwort wurde geändert.";
        passwordError     = "Die zwei Passwörter stimmen nicht überein.";
        sendEmail         = "Eine E-Mail wurde gesendet..";
        codeInvalid       = "Entschuldigung, dieser Code ist nicht gültig.";
        vatInvalid        = "Die eingegebene Umsatzsteuer-Identifikationsnummer ist ungültig.";
        placeholderSearch = "Selektion erhalten ";
        placeholderField  = "";

    }



    /* check conditions before submit order form */
    $('#checkCond').on('change',function(){
        if($(this).is(":checked")){
            $('#confirmCart').removeClass('disabled');
            //$('#confirmOrder').removeClass('disabled');
            $('#acceptCond').addClass('disabled');
        }else{
            $('#confirmCart').addClass('disabled');
            //$('#confirmOrder').addClass('disabled');
            $('#acceptCond').removeClass('disabled');
        }
    });


    /* toggle menu */
    $('#closeMenu').click(function() {
        $('#menu').fadeOut();
    });

    $('#toggle').click(function() {
        if($('#menu').css('display') == 'none'){
            $('#menu').fadeIn();
        }else{
            $('#menu').fadeOut();
        }
    });

    /* webshop : load subcategory for each categories */
    $('.subCategory').each(function(){
        vermeire.subFamily(this);
    });


    /* tags */
    $("#searchVal").tagit({placeholderText: placeholderSearch,singleFieldDelimiter:'|'});
    $("#tagInput").tagit({placeholderText: placeholderSearch,singleFieldDelimiter:'|'});


    /* webshop : load marks by categories */
    vermeire.markLogo($("#categories_prod_logo"));



    /* webshop : init select2 for filters */

    $('#client_select').select2({
    });



    $('.select2Field').each(function(){

        $(this).select2({
            placeholder: placeholderField,
            allowClear: true,
            matcher: function (params, data) {
                params.term = params.term || '';
                params.term = params.term.toUpperCase();
                var regex = new RegExp('^' + params.term);
                if (regex.test(data.text.toUpperCase())) {
                    return data;
                }
                return false;
            }
        });
    });



    /* handle more link */

    $('.cat_inside').on('click','.more',function(e){
        e.preventDefault();
        window.location.href = $(this).attr('data-ref');
    });


    /****/

    $(".dialog_close").on('click', function() {hidedialog() });
    $("#btnlostpassword").on('click', function() { showdialog("dialog_lostpassword") });
    $("#btnregister").on('click', function() { showdialog("dialog_register") });
    $("#btnsendrequestaccess").on('click', function() { vermeire.requestAccess() });
    $("#btnlogin").on('click', function() { vermeire.login() });

    cmson.loadBloc(5,"footer_content");

    $('li.blank a').attr('target','_blank');
    $('.bottom_logo a').attr('target','_blank');

	/*Voir infos sous cats*/
	$(".ic_voir_infos").on("click",function(e){
		//Récupérer zone info
		var span = $(this);
		var li = $(this).parent().parent();
		var div = $(li).children(".warp_flip_sous_cat");
        var zone_list = $(div).children(".list_sous_cat");
		var zone_infos = $(div).children(".infos_sous_cat");

		$(span).empty();

		if($(zone_list).hasClass("actif")){
			$(zone_list).removeClass("actif");
            $(zone_infos).addClass("actif");
            var i = $('<i class="fa fa-list" aria-hidden="true"/>');
            i.appendTo(span);
        }else{
            if($(zone_infos).hasClass("actif")){
                $(zone_infos).removeClass("actif");
                $(zone_list).addClass("actif");
                var i = $('<i class="fa fa-info-circle" aria-hidden="true"/>');
                i.appendTo(span);
            }
		}
    });

	/* display image for subcat */

	$('body').on('click','.ic_voir_photo',function(){});

    $('body').on('click','.closeDocVIew',function() {
        $(this).parent().fadeOut();
    });

    /* check register */

    $('body').on('click','#checkRegister',function(e){
       e.preventDefault();

       var checkRegister = function(){
           var requestObject = {
               "Nclient": $('#client').val(),
               "TitreContact": $('#title').val(),
               "NomContact": $('#lastname').val(),
               "PrenomContact": $('#firstname').val(),
               "LangueContact": lang.toUpperCase(),
               "EmailContact": $('#email').val(),
               "TelContact": "",
               "FaxContact": "",
               "GmsContact": "",
               "FonctionContact": $('#function').val(),
               "DiversContact": "",
               "Nom": $('#societe').val(),
               "Adresse": "",
               "CPostal": "",
               "Localite": "",
               "Pays": "",
               "NTel": "",
               "Fax": "",
               "Email": "",
               "NTva": $('#society-tva-full').val(),
               "RSociale":"",
               "TypeActiv": "",
               "SiteWeb": "",
               "Password": "",
               "TypeRequest": "CHECK"
           };


           var error = 0;
           $('.firstForm .required').each(function(){
               if($(this).val() == ''){
                   error++;
               }
           });
           if(error ==  0){
               vermeire.register(requestObject);
           }else{
               $('#errorForm').html(emptyInputMessage);
               $('#errorForm').fadeIn();
               focusError(true);
               setTimeout(function(){
                   $('#errorForm').fadeOut();
               },3000);
           }

       };



        if($('#society-tva-full').val() != ""){
            vermeire.valideVat($('#society-tva-full').val(),function(result){
                if(result.format_valid){
                    checkRegister();
                }else{
                    $('#errorForm').html(vatInvalid);
                    $('#errorForm').fadeIn();
                    focusError(true);
                    setTimeout(function(){
                        $('#errorForm').fadeOut();
                    },3000);
                }
            });
        }else{
            checkRegister();
        }

    });


    $('body').on('click','#checkRegisterComplete',function(e){
        e.preventDefault();

        var action        = ($(this).attr('data-action') == 'AUTO')?$(this).attr('data-action'):'MANUEL';
        var code          = ($(this).attr('data-code') != '')?$(this).attr('data-code'):$('#client').val();

        var password      = generatePassword(10);

        var requestObject = {
            "Nclient"           : code,
            "TitreContact"      : $('#title').val(),
            "NomContact"        : $('#lastname').val(),
            "PrenomContact"     : $('#firstname').val(),
            "LangueContact"     : lang.toUpperCase(),
            "EmailContact"      : $('#email').val(),
            "TelContact"        : $('#phone').val(),
            "FaxContact"        : $('#fax').val(),
            "GmsContact"        : $('#gsm').val(),
            "FonctionContact"   : $('#function').val(),
            "DiversContact"     : "",
            "Nom"               : $('#societe').val(),
            "Adresse"           : $('#address').val(),
            "CPostal"           : $('#cp').val(),
            "Localite"          : $('#locality').val(),
            "Pays"              : $('#country').val(),
            "NTel"              : $('#society-phone').val(),
            "Fax"               : $('#society-fax').val(),
            "Email"             : $('#society-mail').val(),
            "NTva"              : $('#society-tva-full').val(),
            "TypeActiv"         : $('#society-activity').val(),
            "SiteWeb"           :"",
            "RSociale"          : $('#raison').val(),
            "Password"          : password,
            "TypeRequest"       : action
        };


        if(!$('#isVat').prop('checked')){
            requestObject['NTva'] = '';
        }

        var error = 0;
        $('.required').each(function(){
            if($(this).val() == ''){
                error++;
            }
        });

        if(error ==  0){
            vermeire.register(requestObject);
        }else{
            $('#errorForm').html(emptyInputMessage);
            $('#errorForm').fadeIn();

            focusError();
            setTimeout(function(){
                $('#errorForm').fadeOut();
            },3000);
        }

    });



    /* ask code verification */

    $('body').on('click','#askCode',function(){
        $('#lockPass').children('.text').animate({opacity:0},function(){
            $(this).html(sendEmail);
            $(this).animate({opacity:1});
        });
        vermeire.requestChangePassword();
    });


    /* unlock verification */
    $('body').on('click','#unlock',function(){

        var content = $('#lockPass').html();

        var code = $("#codePass").val();

        vermeire.checkCode(code).then(function(data){
            if(data){
                $('#lockPass').fadeOut(function(){
                    $('#changepassword').fadeIn();
                });
            }else{
                $('#lockPass').html(content);
                $('#lockPass').children('.text').animate({opacity:0},function(){
                    $(this).html('<span class="error">'+codeInvalid+'</span>');
                    $(this).animate({opacity:1});
                });
            }
        });
    });



    $('body').on('click','#validatePassword',function(){

        var password = $('#newPasword').val();
        var confirm  = $('#verifPasword').val();
        var code     = $('#code').val();

        if(password == confirm){
            vermeire.sendPassword(password,code).then(function(resolve){
                var result = JSON.parse(resolve.datas);
                    $('#changepassword').animate({opacity:0},function(){
                        $(this).html('<span class="success">'+changePassword+'</span>');
                        $(this).animate({opacity:1});
                    });
            });

        }else{
         $('#changepassword').append('<span class="error">'+passwordError+'</span>');
        }

    });

    $('body').on('click','#lostPasswordBtn',function(){

        var email = $('#lostEmail').val();

            vermeire.checkEmail(email).then(function(resolve){
                var result = JSON.parse(resolve.datas);
                $('#changepassword').animate({opacity:0},function(){
                    $(this).html('<span class="success">'+changePassword+'</span>');
                    $(this).animate({opacity:1});
                });
            });


    });


    /* breadcrumb steps cart */

    var steps = $('#cartSteps').find('li');
    steps.each(function(){
       $(this).on('click',function(){
           $(this).addClass('selected');

           var ref = $(this).attr('data-ref');
           var step = $(this).attr('data-step');

           $('.show').fadeOut(function(){
               $(this).removeClass('show');
               $(ref).fadeIn(function(){
                  $(this).addClass('show');
               });
           });

           steps.each(function(){
                if($(this).attr('data-step') > step){
                    $(this).removeClass('selected');
                }
           });


       });
    });


    $('#goOrder,#goCart').on('click',function(e){
        e.preventDefault();
        $('body').find('#firstLiv').trigger('click');
        var ref = $(this).attr('data-ref');
        $(ref).click();
        $('#footer').fadeOut();

        setTimeout(function(){
            fixFooter();
        },600);
    });

    /* change session */

    $('#client_select').on('change',function(e){
        var optionSelected = $("option:selected", this);

        var cltno = optionSelected.attr('data-cltno');
        var email = optionSelected.attr('data-email');

        $('#selectedCltno').val(cltno);
        $('#selectedEmail').val(email);

    });


    /* change contact form sollicitation */

    $('.radioContact').on('change',function(){
        if( $('#showSollicitation').is(':checked')){
            $('#sollicitationBox').fadeIn();
        }else{
            $('#sollicitationBox').fadeOut();
        }
    });

    /* ajout articles form contact */

    $('#addArticle').on('click',function(e){
        e.preventDefault();
        var item = $("#articles").children('ul').children('li').first().clone();
        item.find('input').val("");
        $("#articles").children('ul').append(item[0]);
    });


    /* submit contact form */

    $('#sendButton').on('click',function(e){
        e.preventDefault();

        var souhait = '';
        $('.radioContact').each(function(){
            if($(this).is(':checked')){
                souhait = $(this).val();
           }
        });

        var articles = [];
        $('#articles').children('ul').children('li').each(function(){

            var item = {
                "code" : $(this).children('.code').val(),
                "qty"  : $(this).children('.qty').val()
            };
           articles.push(item);
        });

        var object = {
            "souhait"           : souhait,
            "message"           : $('#message').val(),
            "sollicitation"     : {
                "isSollicitate"     : $('#showSollicitation').is(':checked')?true:false,
                "refClient"         : $('#refCli').val(),
                "numBord"           : $('#numBord').val(),
                "dateBord"          : $('#dateBord').val(),
                "numFact"           : $('#numFact').val(),
                "motif"             : $('#motif').val(),
                "justification"     : $('#justification').val(),
                "articles"          : articles
            },
            "company"           :{
                "name"              : $('#societe').val(),
                "numclient"         : $('#numclient').val(),
                "adresse"           : $('#adresse').val(),
                "adresse2"           : $('#adresse2').val(),
                "pays"              : $('#pays').val(),
                "phone"             : $('#telephone').val(),
                "fax"               : $('#fax').val(),
                "email"             : $('#email_societe').val(),
                "activity"          : $('#activity').val(),
                "website"           : $('#website').val()
            },
            "user"              :{
                "name"              : $('#nom').val(),
                "firstname"         : $('#prenom').val(),
                "function"          : $('#fonction').val(),
                "email"             : $('#email').val(),
                "phone"             : $('#telephone_pers').val()
            }
        };


        // handle empty fields
            if(
                object.souhait != "" &&
                object.message != "" &&

                object.company.name != "" &&
                object.company.adresse != "" &&

                object.user.name != "" &&
                object.user.firstname != ""

            ){

                if(
                    (
                    object.sollicitation.isSollicitate &&
                    object.sollicitation.refClient != '' &&
                    object.sollicitation.numBord != '' &&
                    object.sollicitation.dateBord != '' &&
                    object.sollicitation.numFact != '' &&
                    object.sollicitation.justification != ''
                    )
                    ||
                        !object.sollicitation.isSollicitate
                ){
                    vermeire.sendContactForm(object);
                }else{
                    $('#messageinfo').html('Veuillez remplir tous les champs relatifs à votre commande');
                    $('#messageinfo').addClass('error');
                    $('#messageinfo').fadeIn();
                    focusError(true);
                    setTimeout(function(){
                        $('#messageinfo').fadeOut(function(){
                            $('#messageinfo').removeClass('error');
                        });
                    },3000);
                }
            }else{
                $('#messageinfo').html('Veuillez remplir tous les champs');
                $('#messageinfo').addClass('error');
                $('#messageinfo').fadeIn();
                focusError(true);
                setTimeout(function(){
                    $('#messageinfo').fadeOut(function(){
                        $('#messageinfo').removeClass('error');
                    });
                },3000);
            }
    })

    $('.tooltip').tooltipster({
        theme: 'tooltipster-noir'
    });


    /* handle Fixed menu */

    //resizeHeader();

    $(window).on('scroll',function(){
        //resizeHeader();
    });

    function resizeHeader(){
        if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 100) {
            $('#header').addClass('min');
        } else {
            $('#header').removeClass('min');
        }
    }


    /* handle vatlayer */

    $('#society-tva-full').on('keyup',function(){
        $(this).val($(this).val().toUpperCase());

        var newVATNumber = checkVATNumber ($(this).val());

        if (newVATNumber) {
            $(this).val(newVATNumber);
            $(this).removeClass('wrongFormat');
            $(this).addClass('goodFormat');
        }else{
            $(this).addClass('wrongFormat');
            $(this).removeClass('goodFormat');
        }
    });


    /* handle showVatLayer */

    $('#isVat').on('click',function(){
        var element = this;
        if($(element).prop('checked')){
            $('#vatNumber').addClass('show');
        }else{
            $('#vatNumber').removeClass('show');
        }
    });


    /* init hom slider */

    var initFlexslider = function(element,params){
        $(element).removeData("flexslider");
        $(element).flexslider(params);
    };


    // home slider
    initFlexslider('.flexslider',{
        animation: "slide",
        slideshowSpeed:6000,
        prevText : '<i class="fa fa-angle-left" aria-hidden="true"></i>',
        nextText : '<i class="fa fa-angle-right" aria-hidden="true"></i>'
    });


    var newsWidth = $('.news_flexslider').width()/3-20;

    if(window.innerWidth < 768){
        newsWidth = $('.news_flexslider').width();
    }
    //news slider
    initFlexslider('.news_flexslider',
        {
            animation: "slide",
            slideshowSpeed:10000,
            itemWidth: newsWidth,
            itemMargin: 30
        });

    /* toggle langBar */

    $('#langbar .current').on('click',function(){
        $(this).next().toggleClass('deploy');
    });

    /* switch news tabs */

    $('.tab').on('click',function(){
       if(!$(this).hasClass('current')){
           $('.tab.current').removeClass('current');
           $('.content_actu.current').removeClass('current');
           $(this).addClass('current');
           $('#'+$(this).attr('data-ref')).addClass('current');
       }
    });



    /* handle min menu */


    $('#nav_menu').on('click',function(){
       $(this).toggleClass('open');
       $("#collapse_menu").toggleClass('open');
    });


    /* handle filters */

    $('#toggleFilters,#toggleFiltersAlt').on('click',function(){
        $('#productContainer').toggleClass('open');

        var altText = $('#toggleFilters').html();
        $('#toggleFilters').html($('#toggleFilters').attr('data-open'));
        $('#toggleFilters').attr('data-open',altText);

    });





    /* check footer position */

    fixFooter();
    $(window).resize(function(){
        fixFooter();
    });

});

function fixFooter(){
    if( $(document).height() <= $(window).height() ){
        $("#footer").addClass("fixed");
    }else{
        $("#footer").removeClass("fixed");
    }

    $("#footer").fadeIn();
}

function hidedialog() {
   $(".dialog_wrapper").hide();
   $(".dialog_content").hide();
}

function showdialog(dialog_id) {

  $(".dialog_wrapper").show();
  $("#"+dialog_id).show();
}

function generatePassword (length) {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for (var i = 0; i < length; i++)
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
}

function focusError(first){
    var isFocus = false;
    var element = $('#login');
    if(first){
        element = $('.firstForm');
    }
    element.find('.required').each(function(){
        if($(this).val() == ''){
            if(!isFocus){
                $(this).focus();
                isFocus = true;
            }
            $(this).css('border','solid 1px red');
        }
    });
}

function handleCustomSelect(){

        $('#advancedSearch select.dropdown').each(function() {

            if(!$(this).hasClass('loaded')){
                var dropdown = $('<div />').addClass('dropdown selectDropdown');

                $(this).wrap(dropdown);

                var label = $('<span />').text($(this).attr('placeholder')).insertAfter($(this));
                var list = $('<ul />');

                $(this).find('option').each(function() {
                    list.append($('<li />').append($('<a />').text($(this).text())));
                });

                list.insertAfter($(this));

                if($(this).find('option:selected').length) {
                    label.text($(this).find('option:selected').text());
                    list.find('li:contains(' + $(this).find('option:selected').text() + ')').addClass('active');
                    $(this).parent().addClass('filled');
                }
            }


        });

        $(document).on('click touch', '.selectDropdown ul li a', function(e) {
            e.preventDefault();
            var dropdown = $(this).parent().parent().parent();
            var active = $(this).parent().hasClass('active');
            var label = active ? dropdown.find('select').attr('placeholder') : $(this).text();

            dropdown.find('option').prop('selected', false);
            dropdown.find('ul li').removeClass('active');

            dropdown.toggleClass('filled', !active);
            dropdown.children('span').text(label);

            if(!active) {
                dropdown.find('option:contains(' + $(this).text() + ')').prop('selected', true);
                $(this).parent().addClass('active');
            }

            dropdown.removeClass('open');
        });

        $('.dropdown > span').on('click touch', function(e) {
            var self = $(this).parent();
            self.toggleClass('open');
        });

        $(document).on('click touch', function(e) {
            var dropdown = $('.dropdown');
            if(dropdown !== e.target && !dropdown.has(e.target).length) {
                dropdown.removeClass('open');
            }
        });

}
