var storage_exists;
if (typeof (Storage) !== "undefined") {
    storage_exists = true;
} else {
    storage_exists = false;
}
//Átvételi módok
PURCHASE_DELIVERY_MODE_HOME = 1; /* Házhozszállítás */
PURCHASE_DELIVERY_MODE_LOCAL_PICKUP = 2; /* helyi átvétel */
PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING = 10; /* helyi átvétel + szerelés */

//Fizetési módok
PURCHASE_PAYMENT_COD = "01"; /* Cash On Delivery = Utánvét */
PURCHASE_PAYMENT_PREPAY = "02"; /* ELŐRE fizetés */
PURCHASE_PAYMENT_BANK_CARD = "03"; /* Bankkártyás fizetés */

//Megrendelő személy
PURCHASE_PERSON_TYPE_PRIVATE = 'private'; /* magánszemély */
PURCHASE_PERSON_TYPE_LEGAL = 'legal'; /* Jogi személy */
PURCHASE_PERSON_TYPE_SKCZ = 'sk_cz'; /* Személy SK, CZ */

//Autó típus kódok
CARTYPE_CODE_CAR = 'SZ'; //Személyautó
CARTYPE_CODE_VAN = 'KT'; //Kisteher
CARTYPE_CODE_OFF = 'OFF'; //Terepjáró

//Keresési típusok listája
SEARCH_TYPE_KEYWORD = 'keyword'; /* kulcsszó alapján keresés */
SEARCH_TYPE_WHEEL_BY_CARTYPE = 'wheel_by_cartype'; /* Felni, autó típus alapján */
SEARCH_TYPE_TYRE_BY_CARTYPE = 'tyre_by_cartype'; /* Gumi, autó típus alapján */
SEARCH_TYPE_TYRE_BY_SIZE = 'tyre_by_size'; /* Gumi, méret alapján */




$(document).on('mouseout','#p_inv_taxnum',function (){
    console.log('ide');
    let tax_num = $(this).val();

    $.ajax({
        url: '/ajaxLoader.php?module=Cart&type=taxValidation',
        data: {
            tax_number: tax_num,
        },
        dataType: 'json',
        type: 'post',
        success: function (data) {
            if (data.valid === false){
                $('#p_inv_taxnum').addClass('error-tax-border');
                $('.error_tax_num').attr('hidden',false);
                $('#send-order-btn').attr('disabled',true);
            }else{
                $('#p_inv_taxnum').removeClass('error-tax-border');
                $('.error_tax_num').attr('hidden',true);
                $('#send-order-btn').attr('disabled',false);
            }
        },
    });
});

$(document).ready(function (){

    var url = new URL(window.location.href);
    var orderby = url.searchParams.get("order_by");

    
  $('.product_list__filter_btn').on('click', function() {
    $('.product_list__filter').toggleClass('on');  
  });

    $('[name="sort_list"] option[value="' + orderby + '"]').prop('selected', true);

    $('.car-img-main-box').mouseover(function (){
        $(this).children('.car-img-layer').hide();
    });
    $('.car-img-main-box').mouseout(function (){
        $(this).children('.car-img-layer').show();
    });
    const  AJAX_URL = "/ajaxLoader.php?module=HandleCarDatas";
    car_logo = '';
 

    $(document).on('click','#search-by-auto-tab',function (){
        loadBrands()
    });

    $(document).on('change','select[name="car_brand_choose"]',function (){
        let url = '';
        car_logo = $('select[name="car_brand_choose"] option:selected').data('logo');
        url = '/'+app.getLang('b_search_tire_by_car_type')+'/'+
            $('select[name="car_brand_choose"] option:selected').val()+'/'

        window.location.replace(url);
    });

    if ($('select[name="car_year_choose"]').length != 0){
        let car_brand = window.location.pathname.split('/')[2];
        $.ajax({
            url: AJAX_URL,
            data: {
                command:  "get-car-datas-years",
                param: car_brand
            },
            dataType: 'json',
            type: 'get',
            success: function (data) {
                option_years = '';
                $(data.return).each(function (i,v){
                    option_years += '<option value="'+v+'" data-brand="'+car_brand+'">'+v+'</option>';
                });
                $('select[name="car_year_choose"]').append(option_years);
            },
        });
    }
    $(document).on('change','select[name="car_year_choose"]',function (){
        $.ajax({
            url: AJAX_URL,
            data: {
                command:  "get-car-datas-models",
                param: {
                    'brand': $('select[name="car_year_choose"] option:selected').data('brand'),
                    'year' : $('select[name="car_year_choose"]').val()
                }
            },
            dataType: 'json',
            type: 'get',
            success: function (data) {
                option_models = '';
                $(data.return).each(function (i,v){
                    option_models += '<option value="'+v.seo+'" data-brand="'+ $('select[name="car_year_choose"] option:selected').data('brand')+'" data-year="'+$('select[name="car_year_choose"]').val()+'">'+v.model+'</option>';
                });
                $('select[name="car_model_choose"]').append(option_models);
            },
        });
    });

    $(document).on('change','select[name="car_model_choose"]',function (){
        $.ajax({
            url: AJAX_URL,
            data: {
                command:  "get-car-datas-modifications",
                param: {
                    'brand': $('select[name="car_model_choose"] option:selected').data('brand'),
                    'year' : $('select[name="car_model_choose"] option:selected').data('year'),
                    'model': $('select[name="car_model_choose"]').val()
                }
            },
            dataType: 'json',
            type: 'get',
            success: function (data) {
                option_modifications = '';
                $(data.return).each(function (i,v){
                    option_modifications += '<option value="'+v.seo+'" ' +
                        'data-brand="'+ $('select[name="car_model_choose"] option:selected').data('brand')+'" ' +
                        'data-year="'+$('select[name="car_model_choose"] option:selected').data('year')+'" ' +
                        'data-model="'+$('select[name="car_model_choose"]').val()+'">'+v.modification+'</option>';
                });
                $('select[name="car_modifications_choose"]').append(option_modifications);
            },
        });
    });

    $(document).on('change','select[name="car_modifications_choose"]',function (){
        let url = '';
        url = '/'+app.getLang('b_search_tire_by_car_type')+'/'+
            $('select[name="car_modifications_choose"] option:selected').data('brand')+'/'+
            $('select[name="car_modifications_choose"] option:selected').data('model')+'/'+
            $('select[name="car_modifications_choose"] option:selected').data('year')+'?modification='+$(this).val()+ '#' + $(this).val();
        $('#search_tire_by_car_datas').attr('href',url);
        $('#search_tire_by_car_datas').attr('disabled',false);
    });
});

function createURIFromSearchParams( searchParams ){
	var out = [];
	for (var key in searchParams) {
       
	    if (searchParams.hasOwnProperty(key) && searchParams[key] != '') {
            if(key == 'cikktip'){ 
                out.push('category' + '=' + encodeURIComponent(searchParams[key]));
            }else{
                out.push(key + '=' + encodeURIComponent(searchParams[key]));
            }
	       
	    }
	}
    
	return '?'+out.join('&');
}

function loadBrands(){
    const  AJAX_URL = "/ajaxLoader.php?module=HandleCarDatas";
    option_brands = '';
    img_brands = ''

    $.ajax({
        url: AJAX_URL,
        data: {
            command:  "get-car-datas-brands"
        },
        dataType: 'json',
        type: 'get',
        success: function (data) {
            $(data.return).each(function (i,v){
                option_brands += '<option value="'+v.seo+'" data-logo="'+v.logo+'">'+v.brand+'</option>';
                img_brands += '<div class="col-md-2 col-xs-12"> <div class="brand-logo-box"><a href="'+'/'+app.getLang('b_search_tire_by_car_type')+'/'+ v.seo+'/'+'" title="'+v.brand+'"><img width="120" src="'+v.logo+'" alt="'+v.brand+'"><h5>'+v.brand+'</h5></a></div></div>';
            });
            $('select[name="car_brand_choose"]').append(option_brands);
            $('.brand-content').html(img_brands);
        },
    });
}

function createCookie(name, value, days) {
    var expires;
    var host = window.location.hostname;
    /*
    var isIpAddress = /[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}/.test(host);
    if ( !isIpAddress ) {
        //var parts = host.split('.');
        //www. eltüntetése
        host = host.replace(/^www\./, '');
        //hátha kell pont az elejére...
        host = '.'+host.replace(/^\./, '');
    }
    */

    if (days) {
        var date = new Date();
        /* date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); */
        date.setTime(date.getTime() + (days * 86400000));
        expires = "; expires=" + date.toGMTString();
    } else {
        expires = "";
    }
    value = encodeURIComponent(value);
    //value = escape(value);
    //console.log('createCookie', host);
    // document.cookie = encodeURIComponent(name) + "=" + value + expires + "; path=/";
    //document.cookie = encodeURIComponent(name) + "=" + value + expires + ';domain=' + host + ';path=/';
//console.log('createCookie', name + "=" + value + expires + ';domain=' + host + ';path=/' );
    document.cookie = name + "=" + value + expires + ';domain=' + host + ';path=/';
}



function eraseCookie(name) {
    createCookie(name, "", -1);
}

function readCookie(name) {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        var c = ARRcookies[i];
        //console.log('c'+i, c);
        x = c.substr(0, c.indexOf("="));
        y = c.substr(c.indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        //console.log(i, x, '=', unescape(y));
        if (x == name) {
            //console.log('readCookie', name, y );
            //console.log('readCookie', name, unescape(y) );
            return unescape(y);
            //return decodeURIComponent(y);
        }
    }
    return null;
    /*
    var nameEQ = encodeURIComponent(name) + "=";
    //console.log(document.cookie);
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        console.log(c);
        while (c.charAt(0) === ' ')
            c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) === 0)
            return decodeURIComponent(c.substring(nameEQ.length, c.length));
    }
    return null;
    */
}

function getHandling() {
    var method = 'js';
    if (route.indexOf('sending') != -1) {
        createCookie('method', 'sending', 7);
    }
    if (readCookie('method') == 'sending') { method = 'sending'; }
    if (!route) {
        eraseCookie('method');
        method = 'js';
    }
    return method;
}

var app = (function () {


    $(document).on("click", "[class^='datebooking-site-picker-']", function() {

        var class_ = $(this).attr("class");
        var classlist = class_.split(" ");
        var class1 = classlist[0];
        var class_parts = class1.split("-");
        var selected_mode = class_parts[3];

        var containers = document.querySelectorAll("[id^='datebooking-'][id$='-select']");
        for(var i = 0; i < containers.length; i++) {
            containers[i].style.display = "none";
        }

        $("[class^='datebooking-site-picker-']").removeClass("active");
        $(this).addClass("active");

        $("[id='datebooking-" + selected_mode + "-select']").show();
    });

    var active_elem = $("#datebooking-site-picker .active");
    if(active_elem.length > 0) {
        var class_ = active_elem.attr("class");
        var classlist = class_.split(" ");
        var class1 = classlist[0];
        var class_parts = class1.split("-");
        var selected_mode = class_parts[3];

        $("[id='datebooking-" + selected_mode + "-select']").show();
    } 
    
    /*
    gumi.hu/#idopontfoglalas

    legörgetés és kinyitás
    2020.12.21
    */
    var url = window.location.href;
    if(url.indexOf("#idopontfoglalas") > -1) {
        document.querySelector('.js--toggle-button').scrollIntoView({ behavior: 'smooth' });
        $(".js--toggle-button").click();

        $(".datebooking-section").removeClass("closed").addClass("open");
    }


    $(document).on("click", ".btn.main-sign-up-mounting", function() {
        $('.js--toggle-button.main-sign-up-mounting').click();
    })

    $(document).on("click", ".js--toggle-button", function() {
        if($(this).hasClass('main-sign-up-mounting')){
            if(!datebooking_section_open) {
                $(".datebooking-section").removeClass("closed").addClass("open");
                datebooking_section_open = true;
            } else {
                datebooking_section_open = false;
                $(".datebooking-section").removeClass("open").addClass("closed");
            }
        }

    });

    /**
     * 2021.02.05
     *
     * márkák főoldalon
     */
    $("a.show-all-brands").click(function(event) {

        $('.highlighted-brands').toggleClass('open') ;
        $(this).toggleClass('open') ;
        event.preventDefault();
    });


    /* GTM promo betöltés */

    var services = [];
    var brands = [];

    $(".main_page__services .box.js--promotion").each(function(key, elem) {

        var service_name = $("input", this).attr("name");
        var service_creative = $("img", this).attr("src");
        var service_position = key + 1;

        var temp_obj = {};
        temp_obj.id = service_name;
        temp_obj.name = "Home page service recommender";
        temp_obj.creative = service_creative;
        temp_obj.position = service_position;

        services.push(temp_obj);
    });



    dLayer.promotionView(services);

    $(".js--brands-list .js--promotion").each(function(key, elem) {

        var brand_name = $(elem).data('id');

        var brand_creative = "";
        if($("img.js--promotion-image", this).length > 0) {
            brand_creative = $("img.js--promotion-image", this).attr("src");
        }

        var brand_position = key + 1;

        var temp_obj = {};
        temp_obj.id = brand_name;
        temp_obj.name = "Home page brands";
        temp_obj.creative = brand_creative;
        temp_obj.position = brand_position;

        brands.push(temp_obj);
    });

    dLayer.promotionView(brands);


    /* GTM promo kattintás */

    $(".js--brands-list.box.js--promotion").click(function(event) {

        var brand_name = $(elem).data('id');

        var brand_creative = "";
        if($("img.js--promotion-image", this).length > 0) {
            brand_creative = $("img.js--promotion-image", this).attr("src");
        }



        var temp_obj = {};
        temp_obj.id = brand_name;
        temp_obj.name = "Home page brands";
        temp_obj.creative = brand_creative;

        dLayer.promotionClick([
            temp_obj
        ])
    });

    //console.log(gtm_brands);
    //addGTMDataLayer(gtm_services, DL_LOG);
    //addGTMDataLayer(gtm_brands, DL_LOG);

    $(".slick.offers").on("init", function(event, slick) {

        var promotions = [];

        var temp_ids = [];

        $(".slick.offers a.js--promotion").each(function(key, elem) {

            var promo_id = $(this).data("id");
            var promo_name = $("input.js--promotion-name", this).attr("value");
            var promo_img = $("img.js--promotion-image", this).attr("src");
            //console.log(promo_img);

            if($.inArray(promo_id, temp_ids) > -1) {
                return;
            }

            var img_src = promo_img.split("banners/");
            var promo_creative = img_src[1];
            //var promo_position = $(this).data("pos");
            var promo_position = key + 1;

            var temp_obj = {};
            temp_obj.id = promo_name;
            temp_obj.name = "Home page carousel";
            temp_obj.creative = promo_creative;
            temp_obj.position = promo_position;

            promotions.push(temp_obj);

            temp_ids.push(promo_id);
        }); 
       
        //console.log('gtm_promo', gtm_promo);
        dLayer.promotionView(promotions);
        //addGTMDataLayer(gtm_promo, DL_LOG);
    });


    /* GTM promo kattintás */

    $(".home_offers a.js--promotion").click(function(event) {

    
        
        var promo_name = $("input.js--promotion-name", this).attr("value");
        var promo_img = $("img.js--promotion-image", this).attr("src");
      

        var img_src = promo_img.split("banners/");
        var promo_creative = img_src[1];
       
        

        var temp_obj = {};
        temp_obj.id = promo_name;
        temp_obj.name = "Home page carousel";
        temp_obj.creative = promo_creative;
        temp_obj.position = $(this).data('pos');
       
        dLayer.promotionClick([
            temp_obj
        ])
 
    });

    $(".main_page__services .box.js--promotion").click(function(event) {

        var service_name = $(this).data("id");
        var service_creative = $("img", this).attr("src");
        var service_position = parseInt($(this).data("pos"), 10) + 1;

        dLayer.promotionClick([
            {
                'id': service_name,
                'name': "Home page service recommender",
                'creative': service_creative,
                'position': service_position
            }
        ])
    });



    $(".js--brands-list .js--promotion").click(function() {

        var brand_name = $("span.js--promotion-name", this).text();

        var brand_creative = "";
        //console.log($("img.js--promotion-image", this));
        if($("img.js--promotion-image", this).length > 0) {
            brand_creative = $("img.js--promotion-image", this).attr("src");
        }

        var brand_position = parseInt($(this).data("pos"), 10) + 1;

        dLayer.promotionClick([
            {
                'id': "Home page brands",
                'name': "Home page brands",
                'creative': brand_creative,
                'position': brand_position
            }
        ])
    });

    var promotions = [];

    $(".slick.offers a.js--promotion").click(function(event) {

        var promo_id = $(this).data("id");
        var promo_name = $("input.js--promotion-name", this).val();
        var promo_img = $("img.js--promotion-image", this).attr("src");
        //console.log(promo_name);

        var img_src = promo_img.split("banners/");
        var promo_creative = img_src[1];

        var promo_position = 0;

        var _id = $(this).data("id");

        $(".slick.offers a.js--promotion").each(function(key, elem) {
            if($(this).data("slick-index") > -1) {
                if($(this).data("id") == _id) {
                    promo_position = parseInt($(this).data("slick-index"), 10) + 1;
                    return false;
                }
            }
        });

        dLayer.promotionClick([
            {
                'id': promo_name,
                'name': app.getLang('main_page_carousel'),
                'creative': promo_creative,
                'position': promo_position
            }
        ])

    });

    $(document).on('click', '.popular-order-btn', function (e) {
        //console.log('add_to_cart::static');
        e.preventDefault();


        var id = $(this).children('.product-number').data("id");

        $.post("/ajaxLoader.php?module=AllParams&type=get_products", {list: [id]}, function(data) {

            var object = {};
            for(var kod in data) {
                object = data[kod];
                break;
            }
            data = object;

            app.cart().saveToCart(data,$('[name="product-number-'+id+'"]').val());

        }, 'json');
    });

    $(document).on('click', '.popular-order-btn', function (e) {
        //console.log('add_to_cart::static');
        e.preventDefault();


        var id = $(this).parents('.popular-row').data("id");

        $.post("/ajaxLoader.php?module=AllParams&type=get_products", {list: [id]}, function(data) {

            var object = {};
            for(var kod in data) {
                object = data[kod];
                break;
            }
            data = object;

            app.cart().saveToCart(data,$('[name="product-number-'+id+'"]').val());

        }, 'json');
    });


    $(document).on('click', '.order-btn', function (e) {
        //console.log('add_to_cart::static');
        e.preventDefault();


        var id = $(this).parents('.product_list__item').data("id");
        console.log($(this).parents('.product_list__item'));
        $.post("/ajaxLoader.php?module=AllParams&type=get_products", {list: [id]}, function(data) {

            var object = {};
            for(var kod in data) {
                object = data[kod];
                break;
            }
            data = object;

            //dLayer.checkoutSteps([data],$("#product-number").val(),1);
            app.cart().saveToCart(data,$("#product-number").val());

        }, 'json');
    });

    /*o---> basic loader <---o*/
    //var domain = window.location.hostname.substring(window.location.hostname.length - 2); /* És ha 3 kari? */
    var domainArr = (window.location.hostname).split('.');
    var domain = domainArr[ domainArr.length - 1 ];
    if (window.location.hostname.indexOf('1pneu.eu') > -1) { domain = 'cz'; }
    else if (window.location.hostname.indexOf('gumy.eu') > -1) { domain = 'sk'; }
    var fraction = (domain == 'hu' || domain == 'cz' ? 0 : 2);
    var purchase = null;
    var static = true;
    var URI = window.location.pathname.substring(1); /* Paraméterek nélküli url string */
    /*o---> The path of th webpage <---o*/
    var aData, adData = null; /* Advert */
    var uData, sData, seData, tData, lData, laData, pData, cData;
    var userData, searchElements, searchData, templateData, locationsData, couponData;
//var exSrvLoader;
    var lang = null;
    var mess_template = null;
    var messages = null;
    var settingsData = null;
    var mData;
    var cart = null;
    var messagesInitialized = false;
    var cartInitialized = false;
    //var messageData;
    popupData = [];
    var modal_original_width = $('.modal__content').css('max-width');
    var location_modal_width = "70rem";

    var routes = {
        /*o---> Starting APi by router lines <---o*/
        /*o---> Routes <---o*/
        '': 'showMain',
        '/': 'showMain',
        'indexpage': 'showMain',
        'felni': 'showMain',
        'gumi': 'showMain',
        'anvelope': 'showMain',
        'jenti': 'showMain',
        'pneumatika': 'showMain',
        'disk': 'showMain',
        'aludisky': 'showMain',
        'felgen': 'showMain',
        'reifen': 'showMain',
        'sending': 'showMain',
        'pnevmatika': 'showMain',
        'platisce':'showMain',
        'auto-reifen/': 'searchList',
        'autogumi/': 'searchList',
        //'teli-gumi': 'searchList', //winter_url
        //'nyari-gumi': 'searchList', //winter_url
        'anvelopeauto/': 'searchList',
        'pneumatiky/': 'searchList',
        'pneumatika/': 'searchList',
        'pnevmatika':'searchList',
        'BlackFriday/all': 'searchList',
        'BlackFriday/tires': 'searchList',
        'BlackFriday/wheels': 'searchList',
        'products/search/': 'searchList',
        'products/item/': 'productProfile',
        'termek': 'productProfile',
        'produs': 'productProfile',
        'produkt': 'productProfile',
        'height': 'productProfile',
        'izdelek':'productProfile',
        'cart': 'showCart',
        'purchase': 'Purchase',
        'Pages': 'showPage',
        'Pages/locations': 'Locations',
        'telephelyek': 'Locations',
        'szerviz': 'Locations',
        'pneuservis': 'Locations',
        'autoszerviz-online': null,
    };
    var storage_exists = function () {
        if (typeof (Storage) !== "undefined") {
            return true;
        }
        return false;
    };
    var fb_ok = false;
    var base_params = {
        'width': '',
        'height': '',
        'diameter': '',
        'cikktip': 'A',
        'cicsop': '',
        'cartype': [ 'SZ' ], /* SZ||KT||OFF||SK||SUVC||UT */
        'season': '',
        'car_brand': '',
        'car_model': '',
        'car_year': '',
        'car_make': ''
    };
    /* Ez nincs használva!!! */
    //var base_cartype_params = {};
    var init = function () { 
      
       
        /*o---> the basic settings   and loadings <---o*/
        refreshFraction();
        //var p = routes;
        //var routesCopy = routes;
        $(".preloader").removeClass('on');

        $(document).on("ajaxloader-done", function ( e, obj ) {
         
            //console.log("ajaxloader-done", obj);
            if (
                !messagesInitialized &&
                lang !== null && mess_template !== null && messages !== null
            ) { /* Minden nyelvi adat le van töltve */
//console.log('All language datas downloaded', Date.now());
                var message = messages.actual;
                var err_messages = messages.actual_more; /* További üzenetek kulcsai */
                //console.log('messages', messages);
                //console.log('err_messages', err_messages);
                var errorMessageObjects = {};
                if ( typeof err_messages === 'string' && err_messages ) {
                    err_messages = [ err_messages ];
                }
                if ( typeof err_messages === 'object' ) {
                    for (var o in err_messages) {
                        var mRow = err_messages[o];
                        if ( typeof messages[mRow] !== 'undefined' ) {
                            errorMessageObjects[o] = messages[mRow];
                        } else {
                            errorMessageObjects[o] = {
                                'id': 0,
                                'mess_type': 3,
                                'name': 'default_message',
                                'string': getLang(mRow),
                                'type': 1
                            };
                        }
                    }
                }
                //console.log('errorMessageObjects', errorMessageObjects);
                handleMultipleMessages(errorMessageObjects, mess_template, '.success');
                if ( message ) {
                    if ( typeof messages[message] !== 'undefined' ) {
                        //var show = messages[message].mess_type == 2 ? '.success' : (( message == 'registration_error' || message == 'user_exists' || message == 'bad_data' || message == 'bad_captcha') ? '.registration_error' : '.error' || message == 'cart_sent');
                        //handleMessages(messages[message], mess_template, show);
                        handleMessages(messages[message], mess_template);
                    } else { /* Egyéni üzenet */
                        //console.log('missing message: ', message);
                        var tmp = {
                            'id': 0,
                            'mess_type': 2,
                            'name': 'default_success_message',
                            'string': getLang(message),
                            'type': 1
                        };
                        handleMessages(tmp, mess_template);
                        /*
                        $.fn.alert(
                            app.getLang('label_alert'),
                            message,
                            'OK',
                            null,
                            null,
                            null
                        );
                        */
                    }
                }
                messagesInitialized = true;
            }

            if ( !cartInitialized && messagesInitialized && settingsData !== null ) { /* Ha a nyelvi adatok már be vannak töltve és az alap beállítások is lejöttek */
                //console.log('Cart initialized', Date.now());
                cart = Cart(parseFloat(settingsData['vat_' + app.domain() ]));
                cart.getCart();
                //cart.cartAutoRefresh();
                Compare().handleComparingBar();
                cartInitialized = true;

				// nyelvesített URL kitöltése nyari-gumi és teli-gumi URI-kra
				routes[getLang('winter_url')] = 'searchList';
				routes[getLang('summer_url')] = 'searchList';
				routes[getLang('all_seasons_url')] = 'searchList';

				routes[getLang('search_by_sizes_url')] = 'searchList';
				 
                var moduleName = null;
                var module = null;
                $.each(routes, function (k, o) {
                    //console.log(URI , ' ? ', k, ' ? ' , o);
                    if (URI == k || (k && k != "/" && URI.indexOf(k) !== -1)) {
                        if (static && URI && URI != "/" && URI != 'felgen' &&   URI != 'reifen' && URI != 'gumi' && URI != 'felni' && URI != 'anvelope' && URI != 'jenti' && URI != 'disk'  && URI != 'aludisky' && URI != 'platisce') {
                            moduleName = routes[k] + "Static";
                        } else {
                            moduleName = routes[k];
                           
                        }
                        //MSG+ATTN!!!: Nem szabad megállni az első találat után!!!
                    }
                });

                if(moduleName == 'searchListStatic'){
                    var urlParamsForProductID = new URLSearchParams(window.location.search);
                    var productID = urlParamsForProductID.get('id');
                    
                    if(typeof productID !='undefined' && productID!=null){

                        moduleName = 'productProfileStatic';
                    }
                }

                if ( moduleName ) {
                    try {
                        module = eval(moduleName);
                    } catch (e) {
                        console.log(e.message);
                    }
                }
                if (module) {
                    module().show();
                }
                if (URI.indexOf('sending') != -1) {
                    static = true;
                }
            }

        });

        /* Aktuális ország alap üzenetei */
        mData = $.getJSON('/ajaxLoader.php?module=AllParams&type=messages'); /* 5 */
        mData.done(function (e) {
            //console.log('setMessages1', e);
            messages = e;
            //messageData = e;
            $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'messages'} ]);
        });

        /* Extra szolgáltatások lekérése */
        /*
exSrvLoader = $.getJSON('/ajaxLoader.php?module=AllParams&type=extra_services');
exSrvLoader.done(function (e) {
    console.log('extra_services', e);
    $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'extra_services'} ]);
});
*/
        $.getJSON("/ajaxLoader.php?module=LoadTemplates&method=messages", function (data, o, b) {
            if ( typeof data['message'] !== 'undefined' ) {
                mess_template = data['message'];
            } else {
                console.log('setMessages ERROR', data, o, b );
            }
            $(document).trigger("ajaxloader-done", [ { module: 'LoadTemplates', method: 'messages'} ]);
        }).fail(function (e) {
            console.log("error" + JSON.stringify(e));
        });
        
        seData = $.getJSON("/ajaxLoader.php?module=AllParams&type=searchData"); /* 3 */
        seData.done(function (e) {
//console.log('searchData', e);
            searchData = e;
            //Itt is vannak nyelvi adatok
            //if ( typeof e.lang !== 'undefined' ) { lang = e.lang; }
            $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'searchData'} ]);
        });

        laData = $.getJSON("/ajaxLoader.php?module=AllParams&type=languageData"); /* 6 */
        laData.done(function (e) { 
            lang = e;
            JS_LANG = e
            $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'languageData'} ]);
        });

        uData = $.getJSON('/ajaxLoader.php?module=AllParams&type=userData'); /* 1 */
        uData.done(function (e) {
//console.log('userData', e);
            userData = e;
            $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'userData'} ]);
        });

        sData = $.getJSON('/ajaxLoader.php?module=AllParams&type=settingsData'); /* settingsData */
        sData.done(function (e) {
//MSG: Alap beállítások letöltése
//console.log('settingsData', e);
            settingsData = e;
            if ( typeof e['country_code'] !== 'undefined' ) {
                domain = e['country_code'];
                refreshFraction();
            }
//console.log('domain', domain, fraction, app.domain);
            base_params.width = e.base_width;
            base_params.height = e.base_height;
            base_params.height = '';
            base_params.diameter = e.base_diameter;
            base_params.cikktip = e.base_cikktip;
            if ( typeof e.base_cartype === 'string' ) {
                settingsData.cartype = [ ];
                if ( e.base_cartype ) { settingsData.cartype.push( e.base_cartype ); }
                base_params.cartype = settingsData.cartype;
            } else if ( typeof e.base_cartype === 'object' && Array.isArray( e.base_cartype ) ) {
                base_params.cartype = e.base_cartype;
            }
            base_params.season = e.base_season;

            setTimeout(function () {
                try {
                    var cart_data            = app.cart().cart_content();
                    var checkoutForm         = $('#checkout-form');
                    var checkoutFormPurchase = $('#send_order');
                    if ( checkoutForm.length > 0 || checkoutFormPurchase.length > 0) {
                       
                        //dLayer.checkoutSteps(cart_data,1,'  ');
                        dLayer.checkout(cart_data); 
                    }  
                } catch (error) {
                    
                }
               
            }, 1000)
//console.log(base_params);
//MSG: innen kiszedtem a nyelvi adatokat
            /*
            cart = Cart(parseFloat(settingsData['vat_' + app.domain() ]));
            cart.getCart();
            //cart.cartAutoRefresh();
            Compare().handleComparingBar();
            */
            $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'settingsData'} ]);
        });

        $(window).bind('focus', function(ev){ /* Ha ablakok között váltogat a user akkor mindenhol frissíti a kosarat! */
            //console.log('window::focus');
            if ( cart !== null ) {
                cart.getCart();
            }
        });

        tData = $.getJSON("/ajaxLoader.php?module=LoadTemplates&method=main", function (data) {
            //console.log('templateData', data);
            templateData = data;
            $(document).trigger("ajaxloader-done", [ { module: 'LoadTemplates', method: 'main'} ]);
        }).fail(function (e) {
            console.log("error loading tempaltes. function: main | " + JSON.stringify(e));
        });

        cData = $.getJSON("/ajaxLoader.php?module=AllParams&type=couponData"); /* 10 */
        cData.done(function (data) {
            couponData = data;
            //console.log('couponData', couponData);
            $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'couponData'} ]);
        }).fail(function (e) {
            console.log("error" + JSON.stringify(e));
        });

        lData = $.getJSON('/ajaxLoader.php?module=AllParams&type=getPickupPoints'); /* 4 */
        lData.done(function (e) {
            //console.log('locationsData', e);
            locationsData = e;
            $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'getPickupPoints'} ]);
        });

        aData = $.getJSON('/ajaxLoader.php?module=AdView');
        aData.done(function (e) {
            //console.log('AdView', e);
            adData = e;
            $(document).trigger("ajaxloader-done", [ { module: 'AdView' } ]);
        });

        pData = $.getJSON('/ajaxLoader.php?module=AllParams&type=popups'); /* 7 */
        pData.done(function (e) {
            if (e.length) {
                var viewedMessages = readCookie('viewed_messages');
                //console.log('viewedMessages', viewedMessages);
                var readed = viewedMessages ? JSON.parse(viewedMessages) : {};
                //console.log('readed', readed);
                var alertContainer = [];
                var line_b = "";
                $.each(e, function (k, o) {
                    //Ha az aktuális üzi még nem olvasott
                    var actMsgIsReaded = false;
                    /* Az aktuális üzi már olvasott */
                    if ( Object.keys(readed).length && typeof readed[o.id] !== 'undefined' ) { actMsgIsReaded = true; }
                    if ( !actMsgIsReaded || o.further > 0 ) { /* Ha az üzi nem olvasott vagy further azaz állandóan láthatónak kell lennie */
                        //console.log(k, o, actMsgIsReaded, o.further);
                        popupData.push(o);
                        var innerData = '<div id="popup_' + o.id + '" >';
                        if ( o.urlname ) {
                            innerData += '<a href="/Pages/' + o.urlname + '" >' + o.short_description + '</a>';
                        } else {
                            innerData += o.short_description;
                        }
                        innerData += '</div>';
                        alertContainer.push(innerData);
                    }
                });
                /*
                for (var i = 0; i<20; i++) {
                    var innerData = '<div id="debug_'+i+'">Hello World!</div>';
                    alertContainer.push(innerData);
                }
                */
                if ( alertContainer.length && popupData.length ) {
                    //$(".alert .alert__container").append( alertContainer.join('<br/><hr style="color:black;"><br/>') );
                    $(".alert .alert__container").append( alertContainer );
                    $(".alert").addClass("on");
                }
            }
            $(document).trigger("ajaxloader-done", [ { module: 'AllParams', type: 'popups'} ]);
        });

        /* Facebook */
        window.fbAsyncInit = function() {
            //console.log('FB is loaded');
            FB.init({
                appId  : '322298685685685',
                status : true, // check login status
                cookie : true, // enable cookies to allow the server to access the session
                xfbml  : true  // parse XFBML
            });
        };

        (function (d, s, id) {
            var js,
                fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id))
                return;
            js = d.createElement(s);
            js.id = id;
            js.src = "//connect.facebook.net/hu_HU/all.js";
            fjs.parentNode.insertBefore(js, fjs);
        }
        (document, 'script', 'facebook-jssdk'));

        /* Eltárolom a BODY-n hogy a historyban van-e előzmény! */
        //console.log('document.referrer', document.referrer);
        //console.log('history.length', history.length);
        if ( document.referrer && history.length > 1 ) {
            $('body').addClass('has-referrer');
        }

        //var segments = URI.split("/");
        //var uri = segments.length <= 1 ? segments[0] : segments[0] + "/" + segments[1];
        //2020.04.03 alábbi kommentelt részt át tettem kosár init után...
        /*
        console.log('routesCopy', routesCopy);
        var moduleName = null;
        var module = null;
        $.each(routesCopy, function (k, o) {
            //console.log(URI , ' ? ', k, ' ? ' , o);
            if (URI == k || (k && k != "/" && URI.indexOf(k) !== -1)) {
                if (static && URI && URI != "/" && URI != 'gumi' && URI != 'felni' && URI != 'anvelope' && URI != 'jenti' && URI != 'pneumatika' && URI != 'disk'  && URI != 'aludisky') {
                    moduleName = routesCopy[k] + "Static";
                } else {
                    moduleName = routesCopy[k];
                }
                //MSG+ATTN!!!: Nem szabad megállni az első találat után!!!
            }
        });
        if ( moduleName ) {
            try {
                module = eval(moduleName);
            } catch (e) {
                console.log(e.message);
            }
        }
        if (!module) {
            //location = "/";
            return false;
        } else {
            module().show();
        }
        if (URI.indexOf('sending') != -1) {
            static = true;
        }
        */
        /* BLACK FRIDAY visszaszámlálás indul. Csak init után kéne ilyenekkel fogl.  */
        /* BLACK FRIDAY visszaszámlálás indul. Csak init után kéne ilyenekkel fogl.  */
        /* BLACK FRIDAY visszaszámlálás indul. Csak init után kéne ilyenekkel fogl.  */
        if ( false && domain == 'hu' ) {
            //blackFriday(".message_bar", 2020, 05, 03);
            //blackFriday(".black_friday_bar", 2020, 05, 03);
            blackFriday(".black_friday_bar", 2020, 11, 27);
            //blackFriday(".black_friday_bar", 2021, 11, 26);
            //blackFriday(".black_friday_bar", 2022, 11, 25);
        }

//setTimeout(function () { console.log(app); }, 2000); //Debug
    };

    /* Teszt környezet? */
    var isDevelopment = function () {
        if ( typeof settingsData['development'] !== 'undefined' ) { return settingsData['development']; }
        return null;
    }
    /* Éles környezet? */
    var isProduction = function () {
        if ( typeof settingsData['production'] !== 'undefined' ) { return settingsData['production']; }
        return null;
    }
    /* kerekítés beállítása domain alapján. TODO: Pénznemhez kellene kötni */
    var refreshFraction = function () {
        fraction = (domain == 'hu' || domain == 'cz' ? 0 : 2);
        return fraction;
    }

    var openModal = function (t) {
        t.preventDefault();
        var o = $(this);
        var dataModal = o.attr("data-modal");
        if ( typeof dataModal !== 'undefined' && dataModal ) {
            var isAdvert = (dataModal.indexOf("ad_") > -1? true:false);
            var firstModal = $(".modal").first();
            var contentDiv = firstModal.find(".modal__content > div").first();
            contentDiv.html('<div class="box"><span class="fa fa-2x fa-spinner fa-spin"></span></div>');
            if ( isAdvert ) { /* Hirdetés */
                var tmp = dataModal.split('_');
                var advertId = tmp[1];
                if ( adData !== null && typeof adData[advertId] !== 'undefined' ) {
                    var data = adData[advertId];
                    //console.log(advertId, data);
                    var d_html = '<div class="row box no_padding">\n\
                    <a href="' + (data.external === '0' ? '/ajanlatok/' : "") + data.seo + '">\n\
                    <img style="width: 100%;" src="' + (data.image.indexOf('http') !== -1 ? app.http2https(data.image) : '/assets/media/images/banners/' + data.image) + '" alt="advert" />\n\
                    <div class="col-xxs-12" style="padding: 0.25rem 0.5rem;">' + data.short_description + '</div>\n\
                    </a></div>';
                    contentDiv.html(d_html);
                } else {
                    contentDiv.html('<div class="box">Please try again later</div>');
                    console.log('Missing advert ' , advertId);
                }
            } else {
                //console.log('dataModal', dataModal);
                //console.log(dataModal, app.templates()[dataModal]);
                var templateContent = app.getTemplate(dataModal, false);
                if ( templateContent ) {
                    //console.log('templateContent', templateContent);
                    contentDiv.html( templateContent );
                } else {
                    contentDiv.html('<div class="box">'+dataModal+' template is missing!</div>');
                }
                if (app.domain() !== 'hu') {
                    /* Külföldi oldalakon nincs facebook */
                    $(".fb-link, .login-or").hide();
                }

                if ( dataModal == 'cart' ) { /* Kosár gombra klikkeltek */
                    cart.cartData();
                }
            }

            $("body").addClass("modal_is_open");
            firstModal.addClass("on");
        }
        return false;
        var o = $(this).attr("data-modal");
        /*
console.log('openModal::', o);
var cbic = $('.cart_button .cart_button__item_counter').text();
console.log('items: ', cbic);
*/
        t.preventDefault();

        if ( o.indexOf("type=8") == -1 ) {
            $(".modal__content > div").children().remove();

            if ( o.indexOf("ad_") > -1 ) {
                aData.done(function (e) {
                    //adData
                    var data = e[o.replace("ad_", "")];
                    var d_html = "";
                    d_html += '<a href="' + (data.external === '0' ? '/ajanlatok/' : "") + data.seo + '">';
                    d_html += '<img width="100%" src="' + (data.image.indexOf('http') !== -1 ? app.http2https(data.image) : '/assets/media/images/banners/' + data.image) + '" />';
                    //d_html += '<button class="modal__arrow prev" data-modal="ad_"><span class="icon icon--arrow-2-left"></span></button><button class="modal__arrow next" data-modal="/gumi.hu/hu/modals/offer?offer_modals=3"><span class="icon icon--arrow-2-right"></span></button>'
                    d_html += '<div class="box">' + data.short_description + ' </div>';
                    d_html += '</a>';
                    $(".modal__content > div").html(d_html);

                }).fail(function (e) {
                    console.log("Error:" + e);
                });

            } else {
                //console.log(app.templates());
                /*
                var templateContent = app.getTemplate(o, false);
                if ( templateContent ) {
                    $(".modal__content > div").html( templateContent );
                }
                */
                $(".modal__content > div").html(eval('app.templates().' + o));
                if (app.domain() !== 'hu') {
                    $(".fb-link, .login-or").hide();
                }
            }

            if ( o == 'cart' ) { /* Kosár gombra klikkeltek */
                cart.cartData();
            }
        } else {
            /* TODO: Ezt átnézni, lehet halott kód */
            console.log('DEAD CODE, type=8');
            /*
            $('.modal__content').css('max-width', location_modal_width);
            $('.modal__content').css('background-color', 'white');
            $.get(o, function (e) {

                $(".modal__content > div").html(e.replace("http://telephely.akh.hu/telephely/templates/default/index.css", "/css/sites.css"));
            }).fail(function (e) {
                console.log(e, 'fail');
            });
            */
        }
        $("body").addClass("modal_is_open");
        $(".modal").addClass("on");
        return false;
    };

    var closeModal = function () {
        $('.modal__content').css('max-width', modal_original_width),
            $("body").removeClass("modal_is_open"),
            $(".modal").removeClass("on");
    };

    var closeModalEsc = function (t) {
        if (27 === t.keyCode) {
            $('.modal__content').css('max-width', modal_original_width)
            $("body").removeClass("modal_is_open"),
                $(".modal").removeClass("on")
        }
    };

    var search_promise = function (sform_data) {
        /* Termék keresés */
        sform_data+= '&uri='+app.URI;
        return $.post("/ajaxLoader.php?module=Search", sform_data, null, 'json');
    };

    var search_products = function (productList) {
        /* Termék keresés */

        var sendData = {'list': null};
        if ( typeof productList === 'object' && Array.isArray(productList) ) {
            sendData['list'] = productList;
        }
        return $.post("/ajaxLoader.php?module=AllParams&type=get_products", sendData, null, 'json');
    };

    /**
     * Fizetési oldal megjelenítése template alapján...
     * @param {type} e
     * @returns {undefined}
     */
    var purchaseClick = function (e) {
//console.log('purchaseClick');
        e.preventDefault();
        e.stopPropagation();
        $("body").removeClass("modal_is_open"),
            $(".modal").removeClass("on");
        var ww = $(this);
        route = 'purchase';
        //$(".content_div").fadeOut('fast', function () {
        $(".preloader").addClass('on');
        $("html, body").animate({
            scrollTop: 0
        }, "fast");
        //$(".content_div").html(app.templates()['purchase']);
        $(".content_div").html( app.getTemplate( 'purchase', false ) );
        //$(this).fadeIn('fast', function () {
        //Purchase().showPurchase();

        var p = Purchase();
        app.setPurchase(p);
        p.showPurchase();
        $(".preloader").removeClass('on');

        history.pushState({}, null, "/purchase");
        //});

        //})

    };

    var fillLogin = function () {
        $(".login-form h2").html(app.getLang('login') );
        $(".fb-link .facebook").html(app.getLang('login_facebook') );
        $(".fb-link .facebook").html(app.getLang('login_facebook') );
        $(".login-or").html(app.getLang('or_word') );
        $(".login-user-label").html(app.getLang('username_email') );
        $(".login-password-label").html(app.getLang('password') );
        $(".forgot-password").html(app.getLang('forgot_password') );
        $(".remember-me").append(app.getLang('remember_me') );
        $("#login-btn").val(app.getLang('login') );
    };

    /**
     * Kicsit kipofoztam, hogy dinamikusabb legyen...
     * @param e
     */
    var blackFriday = function (e, startYear, startMonth, startDay) {
        if ( typeof startYear === 'undefined' ) { startYear = 2020; }
        else { startYear = parseInt(startYear); }
        if ( typeof startMonth === 'undefined' ) { startMonth = 11; }
        else { startMonth = parseInt(startMonth); }
        if ( typeof startDay === 'undefined' ) { startDay = 27; } /* Vélhetően pénteki nap */
        else { startDay = parseInt(startDay); }
        var endDay = startDay + 2; /* Kezdés plusz 2 nap az 3 nap */
        var date = new Date();
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var day = date.getDate();
        if (
            year == startYear &&
            month == startMonth &&
            day <= endDay
        ) {
            var startDate = startYear + '/' + ('0'+startMonth).substr(-2) + '/' + ('0'+startDay).substr(-2) + ' 00:00:00';
            var endDate = startYear + '/' + ('0'+startMonth).substr(-2) + '/' + ('0'+endDay).substr(-2) + ' 23:59:59';
            var eo = $(e);
//console.log('blackFriday' , day, startDay, startDate, endDate);
            var cdObj = $('head script[type="text/javascript"][src$="jquery.countdown.min.js"]');
            if ( cdObj.length == 0 ) {
                /* https://hilios.github.io/jQuery.countdown/documentation.html */
                var s = document.createElement("script");
                s.type = "text/javascript";
                s.src = "/js/counter/jquery.countdown.min.js";
                $("head").append(s);
            }
            eo.css({
                'background-color': '#333',
                'color': '#ffd814',
                'font-size': '1.3em',
                'font-weight': 'bold',
                'padding': '10px 25px 10px 25px',
                'margin-bottom': '5px',
                'text-align': 'center'
            });
            if ( day < startDay ) {
                /* TODO: Ha túl sok nappal vagyunk előtte az sem jó... */
                eo.countdown( startDate, function (event) {
                    //eo.css({'background-color': 'black', 'color': 'yellow', 'font-size': '160%' });
                    $(this).text(
                        event.strftime('BLACK FRIDAY INDUL: %-n nap %H:%M:%S ')
                        //event.strftime( app.getLang('black_friday_remaining_start') + ': %-n nap %H:%M:%S ')
                    );
                });
            } else {
                eo.countdown( endDate, function (event) {
                    //eo.css({'background-color': 'black', 'color': 'yellow', 'font-size': '160%' });
                    $(this).text(
                        event.strftime('Siess! Az akciós vásárlás már csak eddig tart: %-n nap %H:%M:%S')
                        //event.strftime( app.getLang('black_friday_remaining_end') + ': %-n nap %H:%M:%S')
                    );
                });
            }
        }
    };

    /* Megjelenő oldalain bekategórizálása kliens oldalról */
    var parsePageType = function (url) {

        var pageType = 'unknown';
        var urlData = parseURL(url);
        //console.log('urlData', urlData);
        var urlParams = {};
        var urlBlocks = [];
        if ( typeof urlData['params'] === 'object' ) { urlParams = urlData['params']; }
        if ( typeof urlData['url_blocks'] === 'object' && Array.isArray(urlData['url_blocks']) ) { urlBlocks = urlData['url_blocks']; }
        /* *** */
        var productPageHelper = [ 'termek' ];
        var contentPageHelper = [ 'ad', 'szerviz' ];
        var checkoutPageHelper = [ 'purchase', 'checkout' ];
        var contactPageHelper = [ 'kapcsolat', 'contact' ];
        var mainPageHelper = [ '', 'gumi', 'felni'];
        var searchBySizeHelper = [ 'autogumi' ]; //, pneumatiky,
        var tmp = getLang('search_by_sizes_url');
        if ( searchBySizeHelper.indexOf(tmp) < 0 ) { searchBySizeHelper.push(tmp); }
        /* *** */
        // var tmp = getLang('tyre');
        // if ( mainPageHelper.indexOf(tmp) < 0 ) { mainPageHelper.push(tmp); }
        // var tmp = getLang('wheel');
        // if ( mainPageHelper.indexOf(tmp) < 0 ) { mainPageHelper.push(tmp); }
        /* *** */
        var tmp = getLang('product_url');
        if ( productPageHelper.indexOf(tmp) < 0 ) { productPageHelper.push(tmp); }
        //console.log('mainPageHelper', mainPageHelper);
        //console.log('searchBySizeHelper', searchBySizeHelper);
        var searchType = null;
        var firstBlock = null;
        var secondBlock = null;
        var thirdBlock = null;
        var fourthBlock = null;
        if ( urlBlocks.length > 0 ) {
            for ( var bi in urlBlocks ) {
                var b = urlBlocks[bi];
                var bLow = (b).toLowerCase();
                if ( bi == 0 ) { firstBlock = bLow; }
                else if ( bi == 1 ) { secondBlock = bLow; }
                else if ( bi == 2 ) { thirdBlock = bLow; }
                else if ( bi == 3 ) { fourthBlock = b; }
            }
            if ( mainPageHelper.indexOf(firstBlock) > -1 ) {
                
                pageType = 'main';
            } else if ( searchBySizeHelper.indexOf(firstBlock) > -1 ) {
                pageType = 'search';
                searchType = SEARCH_TYPE_TYRE_BY_SIZE;
            } else if ( firstBlock == 'products' && secondBlock == 'search' ) {
                pageType = 'search';
                if ( thirdBlock == 'keyword' ) {
                    searchType = SEARCH_TYPE_KEYWORD;
                } else if ( thirdBlock == 'car_type' ) {
                    if ( fourthBlock == getLang('tyre_url') || fourthBlock == getLang('tyre') ) {
                        searchType = SEARCH_TYPE_TYRE_BY_CARTYPE;
                    } else if ( fourthBlock == getLang('wheel_url') ) {
                        searchType = SEARCH_TYPE_WHEEL_BY_CARTYPE;
                    }
                }
            } else if ( firstBlock == 'products' && secondBlock == 'item' ) {
                pageType = 'product';
            } else if ( productPageHelper.indexOf(firstBlock) > -1 ) {
                pageType = 'product';
            } else if ( firstBlock === 'error' ) {
                pageType = 'error';
            } else if ( contentPageHelper.indexOf(firstBlock) > -1 ) {
                pageType = 'content';
            } else if ( firstBlock === 'registration' ) {
                pageType = 'signup';
            } else if ( checkoutPageHelper.indexOf(firstBlock) > -1 ) {
                pageType = 'checkout';
            } else if ( contactPageHelper.indexOf(firstBlock) > -1 ) {
                pageType = 'contact';
            } else if ( firstBlock === 'pages' ) {
                if ( checkoutPageHelper.indexOf(secondBlock) > -1 ) {
                    pageType = 'checkout';
                } else if ( contactPageHelper.indexOf(secondBlock) > -1 ) {
                    pageType = 'contact';
                } else {
                    pageType = 'content';
                }
            }
        } else { pageType = 'main'; }
        return { 'pageType': pageType, 'urlBlocks': urlBlocks, 'urlParams': urlParams, 'searchType': searchType };
    };

    /* Egy URL tökéletes felboncolása... */
    var parseURL = function (url) {
        if ( typeof url === 'undefined' || !url ) { url = window.location.href; }
        //console.log('url', url);
        var domain = '';
        var protocol = '';
        var isAbsolute = false;
        if ( (url).match(/^https?:\/\/.*$/gi) ) {
            isAbsolute = true;
            var p = url.indexOf('://');
            protocol = url.substr(0, p);
            url = url.substr(p+3);
        }
        var tmp = url.split("?");
        url = tmp[0];
        var paramsStr = (tmp.length > 1? tmp[1]:'');
        var tmp = paramsStr.split("#");
        paramsStr = tmp[0];
        var hash = (tmp.length > 1? tmp[1]:'');
        var urlBlocks = (url?url.split('/'):[]);
        //console.log('urlBlocks', urlBlocks);
        if ( isAbsolute && urlBlocks.length ) { domain = urlBlocks.shift(); }
        if ( urlBlocks.length == 1 && urlBlocks[0] == "" ) { tmp = urlBlocks.shift(); }
        var paramsArr = ( paramsStr? paramsStr.split('&'): [] );
        //console.log('paramsArr', paramsArr);
        var paramsObj = {};
        for ( var i in paramsArr ) {
            var tmp = paramsArr[i].split('=');
            paramsObj[ tmp[0] ] = (tmp.length > 1? tmp[1]:'');
        }
        return { 'protocol': protocol, 'domain': domain, 'url_blocks': urlBlocks, 'params': paramsObj, 'hash': hash };
    };

    var query_string = function (q) {
        if ( typeof q === 'undefined'|| !q ) { q = window.location.href; }
        var q_s = q.split("?");
        var query_string = [];
        if ( q_s.length == 2 ) {
            var tmp = q_s[1].split("#");
            query_string = tmp[0].split("&");
        }
        var qsJSON = {};
        for (var i = 0; i < query_string.length; i++) {
            var elems = query_string[i].split("=");
            //console.log(query_string[i]);
            qsJSON[elems[0]] = elems[1];
        }
        return qsJSON;
    };

    /* Normálisan lehet az url paramétereket variálni... */
    /*
    window.location.href = http://example.hu/index.php?page=1
    window.location.pathname = /index.php
    window.location.search = ?page=1
    */
    var add_url_param = function (url, paramName, paramValue) {
        if ( typeof url === 'undefined' || !url ) { url = window.location.href; }
        if (
            typeof url !== 'undefined' && url &&
            typeof paramName !== 'undefined' && paramName
        ) {
            var hMarkArr = url.split("#");
            var hash = '';
            var paramsStr = '';
            if ( hMarkArr.length > 1 ) {
                url = hMarkArr[0];
                hash = '#' + hMarkArr[1];
            }
            var qMark = url.split('?');
            var paramsArr = [];
            var paramsObj = {};
            var hasParam = false;
            if ( qMark.length > 1 ) {
                url = qMark[0];
                paramsArr = qMark[1].split("&");
                for ( var i in paramsArr ) {
                    var p = paramsArr[i];
                    var eqArr = p.split("=");
                    if ( eqArr.length == 2 && eqArr[0] ) {
                        if ( eqArr[0] == paramName ) {
                            if ( typeof paramValue !== 'undefined' && paramValue !== null ) {
                                paramsObj[eqArr[0]] = paramValue;
                                hasParam = true;
                            }
                        } else {
                            paramsObj[eqArr[0]] = eqArr[1];
                        }
                    }
                }
            }
            if ( !hasParam && typeof paramValue !== 'undefined' && paramValue !== null ) {
                paramsObj[ paramName ] = paramValue;
                hasParam = true;
            }
            paramsArr = [];
            for ( var i in paramsObj ) { paramsArr.push( i + '=' + paramsObj[i] ); }
            if ( paramsArr.length ) { paramsStr = '?' + paramsArr.join('&'); }
            if ( paramsStr ) { url += paramsStr; }
            if ( hash ) { url += hash; }
        }
        return url;
    };

    var BackToList = function (e) {
        if (typeof e === 'undefined' ) { e = null; }
        history.back(1);
        return false;
    };

    var events = function () {
//console.log('events');
        $("#contact-form").submit(function () {
            //MSG: HU-n más form van!!!

            try{
                dLayer.eventTracker( {
                    'eventCategory': 'contact_form',
                    'eventAction': 'submit',
                    'evenLabel': ''
                })
            }catch(e){}

        });

        $(document).on('submit', '#keyword_form', function (e) {
            var o = $(this);
            var targetInput = o.find('input[type="text"]').first();
            if ( targetInput.val().length < 3 ) {
                //app.handleMessages(app.messages()['min_three_chars'], app.mess_template(), '');
                app.handleMessages(app.getMessage('min_three_chars'), app.mess_template(), '');
                return false;
            } else {
                var searchObj = {
                    'type': SEARCH_TYPE_KEYWORD,
                    'data': targetInput.val(),
                    'form_id': 'keyword_form',
                    'form_data': $('#keyword_form').serialize()
                };
                eraseCookie('last_search');
                createCookie('last_search', JSON.stringify(searchObj), 1);
                //var lastSearch = JSON.parse(readCookie('last_search'));
                //console.log('lastSearch', lastSearch);
                //return false;
                /*

                 try{
                dLayer.eventTracker( {
                     'eventCategory': 'search',
                        'eventAction': 'by_keyword',
                        'eventLabel': targetInput.val()
                    })
                }catch(e){}
                */
            }
        });

        $(document).on("click", "[data-modal]", openModal);
        $(document).on("click", ".registration_error,.success,.add_cart_continue,.modal, .btn--close_modal ,.modal__close_button", closeModal).on("keyup", closeModalEsc);
        $(document).on("click", ".modal__content", function (t) {
            t.stopPropagation();
        });

        $(".toggle").on("click", function () {
            var o = $(this);
            var target = o.attr("data-toggle");
            
            //console.log(target);
            o.toggleClass("on");

            if(o.hasClass('on')){
                o.find('input[type=checkbox]').attr('checked', true);
            }else{
                o.find('input[type=checkbox]').attr('checked', false);
            }

            o.find('input[type=checkbox]').trigger('change')

            var targetEl = $("." + target);
            targetEl.removeClass('on');
            //targetEl.toggleClass("on");
            if ( o.hasClass('on') ) { targetEl.addClass('on'); }
        });

        $(document).on('click', '.purchase-btn', purchaseClick);

        var t, o = 0, n = $(".navbar").height();
        $(window).on("scroll", function () {
            t = $(this).scrollTop(), t > n && t > o ? $(".navbar,.navbar-container").addClass("hidden") : $(".navbar,.navbar-container").removeClass("hidden"), o = t
        }), $(".navbar__menu_button").on("click", function (e) {
            e.preventDefault();
            $(".navbar__menu").toggleClass("on");
            e.stopPropagation();
        });

        $(document).on('click','.navbar__menu_user_button',function (e){
            e.preventDefault();
            console.log('IDE')
            $(".profile_menu_list_dd").toggleClass("on");
        });
        /*
        $(document).on('click', '#form_auto_by_size input[name="season"][type="radio"].season', function (e) {
            var o = $(this);
            console.log( o.val() );
        });
        */
        /* FORM-on belül valami változott, elkészítem app.base_params-t és mehet a refresh */
        $(document).on('change', '#form_auto_by_size input, #form_auto_by_size select', function (e) {
            //console.log('form input change');
            searchBySizesModule.carSizesChange(e, this);
        });
        //$(document).on('change', '#form_auto_by_size input, #form_auto_by_size select', searchBySizesModule.carSizesChange);

        /* ALAPHELYZET */
        $(document).on('click', '#form_auto_by_size input[type="reset"]', function (e) {
            //console.log(e);
            var o = $(this);
            var f = o.closest('form');
            e.preventDefault();
            f[0].reset();

            //A FORM reset minden input mezőt kinulláz, uh a base_params-t is hozzá igazítom
            app.base_params = {
                'width': '',
                'height': '',
                'diameter': '',
                'cikktip': '', /* engedett */
                'cartype': [ ], /* engedett */
                'season': '', /* engedett */
                'season': '',
                'brand': '',
                'li': '',
                'si': '',
                'fuel': '',
                'wet': '',
                'noise_code': '',
                'xlfr': '',
                'runflat': '',
                'electric': ''
            };
            /*
            var appSettings = app.getSettingsData();
            //console.log(appSettings);
            if ( typeof appSettings.base_cartype === 'string' ) {
                app.base_params.cartype.push( appSettings.base_cartype );
            } else if ( typeof appSettings.base_cartype === 'object' && Array.isArray(appSettings.base_cartype) ) {
                app.base_params.cartype = appSettings.base_cartype;
            }
            app.base_params.season = appSettings.base_season;
            app.base_params.cikktip = appSettings.base_cikktip;
            */

            //var appBaseParams = app.getBaseParams();
            //console.log('getBaseParams', app.getBaseParams());
            //MSG: Csak az alábbi 3 szűrőt szabad defaultba beállítani
            if ( typeof base_params.cartype === 'string' ) {
                app.base_params.cartype.push( base_params.cartype );
            } else if ( typeof base_params.cartype === 'object' && Array.isArray(base_params.cartype) ) {
                app.base_params.cartype = base_params.cartype;
            }
            app.base_params.season = base_params.season;
            app.base_params.cikktip = base_params.cikktip;
//MSG+ATTN!: Nem szabad reset esetén egyéb default mezőket kitölteni mert szűkíti a lehetőségeket

//Teszt, ha a H/HRD-t is megadom
            /*
if ( app.isDevelopment() ) {
    app.base_params.width = base_params.width;
    app.base_params.height = base_params.height;
    app.base_params.diameter = base_params.diameter;
}
*/
//console.log('base_params', base_params);
//console.log('app.base_params', app.base_params);

            //MSG+ATTN: Ha reset után is szeretnénk megjelölni bizonyos dolgokat akkor azt itt lehet

//console.log('RESET', app.base_params);
            //A base_params-ban mégis beállított dolgokat most az inputmezőkön is beállítom
            setTimeout(function () {
                
                for ( var i in app.base_params.cartype ) {
                    var ct = app.base_params.cartype[i];
                    $('#cartype_' + ct).prop('checked', true);
                }

                if ( app.base_params.season ) {
                    $('#season_' + app.base_params.season).prop('checked', true);
                }
//TODO:         
                //searchBySizesModule.setCarSizesHTML(searchBySizesModule.all_data(), app.base_params);                console.log("app", app);
                searchBySizesModule.setCarSizesHTML(null, app.base_params);
                /* Ha a kereső már oldalt van, szal nem főoldalon vagyunk */
                var widthA = $('#width_A');
                if ( widthA.hasClass('side_search') ) { /* Keresés gomb */

                    searchBySizesModule.carSizesChange(e, widthA);
                }

            }, 100);

        });
	
	

		

        $(document).on('click', '#search_auto_by_size_btn', function (e) {
			console.log( app.base_params );
			console.log('URI: ' + createURIFromSearchParams( app.base_params ) );
            //$("#search_auto_by_size_btn").click(function (e) {
            // if ( searchBySizesModule.searchFiltersReady() ) {
	
          
            //app.URI = app.getLang('search_by_sizes_url') + "/" + searchBySizesModule.saveSelData(app.base_params.cikktip);
			app.URI = app.getLang('search_by_sizes_url') + "" + createURIFromSearchParams( app.base_params );
			 
            //TODO: DEPRECATED
            //console.log(app.URI);
            var labelBlocks = [];
            //1. blokk
            var tireSize = 'na';
            if ( app.base_params.width || app.base_params.height || app.base_params.diameter) {
                var tireSize = (app.base_params.width?app.base_params.width:'na') + '/' + (app.base_params.height?app.base_params.height:'na') + 'R' + (app.base_params.diameter?app.base_params.diameter:'na');
            }
            labelBlocks.push(tireSize);

            //2. blokk
            var cartype = 'na';
            var carTypesArr = [];
            if ( typeof app.base_params.cartype !== 'undefined' ) {
                if (
                    Array.isArray( app.base_params.cartype ) &&
                    app.base_params.cartype.length
                ) {
                    if ( app.base_params.cartype.indexOf('SZ') > -1 ) { carTypesArr.push('Személyautó'); }
                    if ( app.base_params.cartype.indexOf('KT') > -1 ) { carTypesArr.push('Teherautó'); }
                    if ( app.base_params.cartype.indexOf('OFF') > -1 ) { carTypesArr.push('Terepjáró'); }
                } else {
                    if ( app.base_params.cartype == 'SZ' ) { carTypesArr.push('Személyautó'); }
                    if ( app.base_params.cartype == 'KT' ) { carTypesArr.push('Teherautó'); }
                    if ( app.base_params.cartype == 'OFF' ) { carTypesArr.push('Terepjáró'); }
                }
            }
            if ( carTypesArr.length ) { cartype = carTypesArr.join(','); }
            labelBlocks.push(cartype);
            //3. blokk
            var season = 'na';
            if (app.base_params.season == 'N') {
                season = 'Nyárigumi';
            } else if (app.base_params.season == 'T') {
                season = 'Téligumi';
            } else if (app.base_params.season == 'NEGY') {
                season = 'Négyévszakos';
            }
            labelBlocks.push(season);
            //4. blokk
            var brand = 'na';
            if (app.base_params.brand) { brand = app.base_params.brand; }
            labelBlocks.push(brand);

            //5. blokk
            var li = 'na';
            if (app.base_params.li) { li = app.base_params.li; }
            labelBlocks.push(li);

            //6. blokk
            var si = 'na';
            if (app.base_params.si) { si = app.base_params.si; }
            labelBlocks.push(si);

            //7. blokk
            var fuel = 'na';
            if (app.base_params.fuel) { fuel = app.base_params.fuel; }
            labelBlocks.push(fuel);
            //8. blokk
            var wet = 'na';
            if (app.base_params.wet) { wet = app.base_params.wet; }
            labelBlocks.push(wet);
            //9. blokk
            var noise = 'na';
            if (app.base_params.noise) { noise = app.base_params.noise; }
            labelBlocks.push(noise);
            //10. blokk
            var xlfr = 'na';
            if (app.base_params.xlfr) { xlfr = 'Erősített kivitel'; }
            labelBlocks.push(xlfr);
            //11. blokk
            var runflat = 'na';
            if (app.base_params.runflat) { runflat = 'Defekttűrő'; }
            labelBlocks.push(runflat);

            var electric = 'na';
            if (app.base_params.electric) { electric = 'Elektromos'; }
            labelBlocks.push(electric);

            
            //var label = app.base_params.width + '/' + app.base_params.height + 'R' + app.base_params.diameter + "|" + cartype + "|" + season + brand + li + si + fuel + wet + noise + xlfr + runflat;
            var label = labelBlocks.join('|');

            app.URI = app.getLang('search_by_sizes_url') + "" + createURIFromSearchParams( app.base_params );

            try{
                dLayer.eventTracker( {
                    'eventCategory': 'Search',
                    'eventAction': 'tyre_by_size',
                    'eventLabel': label,
                    'eventValue': undefined,
                    'eventNIflag': false
                })
            }catch(e){}
//TODO: label megszüntetése...
            static = false;

            var formData = $('#form_auto_by_size').serialize();


            var searchObj = {
                'type': SEARCH_TYPE_TYRE_BY_SIZE,
                'data': null,
                'form_id': 'form_auto_by_size',
                'form_data': formData
            };
            eraseCookie('last_search');
            createCookie('last_search', JSON.stringify(searchObj), 1);
            //var lastSearch = JSON.parse(readCookie('last_search'));
            //console.log('lastSearch', lastSearch);  
            $('body').addClass(('productlist_body_'+new Date().toJSON().slice(0, 10).replace('T', ' ')))

            //return true;
            if( searchBySizesModule.searchFiltersReady() ) {
               
                history.pushState({
                    title: 'searchList',
                    method: "show",
                    url: app.URI,
                    params: {title: {form: '#form_auto_by_size', data: formData }, method: {}}
                }, null, "/" + app.URI);
                searchList('#form_auto_by_size').show();
            }else{
                window.location.href  =   window.location.protocol + '//' + window.location.hostname + '/'  + app.URI;
                searchList('#form_auto_by_size').show();
            }

            // }
        });

        $(document).on("mouseenter", ".eu_rating_filter label", function () {
            var o = $(this);
            var p = o.closest('.eu_rating_filter');
            p.find('> label').removeClass('active inactive');
            if (o.hasClass("exists")) {
                o.prevAll(".exists").addClass("active");
                o.addClass("active");
                o.nextAll().addClass("inactive");
            }
        }).on("mouseleave", ".eu_rating_filter label", function () {
            var o = $(this);
            var p = o.closest('.eu_rating_filter');
            p.find('> label').removeClass('active inactive');
            /*
            if ( o.hasClass("exists")) {
                o.prevAll().removeClass("active");
                o.removeClass("active");
                o.nextAll().removeClass("inactive");
            }
            */
        }).on("click", ".eu_rating_filter label", searchBySizesModule.carAdditionalSizesChange);

        $(window).on('popstate', function (e) {
//TODO: Ezt megjavítani...history-ban lépegetünk
//TODO: Ezt megjavítani...history-ban lépegetünk
//TODO: Ezt megjavítani...history-ban lépegetünk
            /*
            var reloadPages = [
                '/' + app.getLang('wheel'),
                '/' + app.getLang('tyre'),
                '/szerviz',
                '/purchase'
            ];
            var isReloadPage = (reloadPages.indexOf(location.pathname) > -1 ? true: false);
            */
//console.log('popstate: ' + location.pathname, 'isReloadPage: ' + isReloadPage,  e.originalEvent.state);
//console.log('app.URI', app.URI);
//console.log('window.location.href', window.location.href);
            if (
                //( e.originalEvent.state !== null || app.URI == '/' ) && !isReloadPage
                typeof e.originalEvent.state === 'object' &&
                e.originalEvent.state !== null
            ) {
                app.setStatic(false);
                var state = e.originalEvent.state;
//console.log('popstate', state);
                var titleParams = "";
                var methodParams = "";
                if ( typeof state.params === 'object' ) {
                    if ( typeof state.params.title === 'object' ) {
                        var titleArr = [];
                        for (var ti in state.params.title ) {
                            //var row = state.params.title[ti];
                            titleArr.push('state.params.title.' + ti );
                        }
                        if ( titleArr.length ) {
                            titleParams = titleArr.join(', ');
                        }
                    }
                    if ( typeof state.params.method === 'object' ) {
                        var methodArr = [];
                        for (var mi in state.params.method ) {
                            //var row = state.params.method[mi];
                            methodArr.push('state.params.method.' + mi );
                        }
                        if ( methodArr.length ) {
                            methodParams = methodArr.join(', ');
                        }
                    }
                }
                /*
                var quote = "";
                $.each(state.params.title, function (k, o) {
                    var name = 'k';
                    titleParams += quote + "state.params.title." + eval(name);
                    quote = ",";
                });
                quote = "";
                $.each(state.params.method, function (k, o) {
                    var name = 'k';
                    methodParams += quote + "state.params.method." + eval(name);
                    quote = ",";
                });
                */
                var method = (state.method ? state.method + "(" + methodParams + ")" : "");
                var evalStr = ( state.title ? state.title + "(" + titleParams + ")." + method : "");
                if ( evalStr ) {
//console.log('evalStr', evalStr);
                    eval(evalStr);
                } else {
                    location.reload();
                }
//evalStr searchList(state.params.title.form,state.params.title.data).show()
//evalStr searchList().paginateClick(state.params.method.form,state.params.method.data)
            } else {
                //location = location.pathname;
                location.reload();
            }
            //if ( isReloadPage ) { location = location.pathname; }
        });

        $(document).on("change keydown", "#product-number,.product-number", function (e) {
            // Allow: backspace, delete, tab, escape, enter and .
            if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110]) !== -1 ||
                // Allow: Ctrl+A, Command+A
                (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||
                // Allow: home, end, left, right, down, up
                (e.keyCode >= 35 && e.keyCode <= 40) 
            ) {
                // let it happen, don't do anything
                prev = $(this).val();
                return;
            }
            // Ensure that it is a number and stop the keypress
            if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
                e.preventDefault();
            }
        });

        $(document).on("change keyup", "#product-number,.product-number", function () {
            var thisObj = $(this);

            var vatMulti = 1 + parseFloat(settingsData['vat_' + app.domain() ]);


            var kitPrice = $(".kit_price").first().attr('data-price');
            if (typeof kitPrice === 'undefined') { kitPrice = 0; }
            else {  /* Formázva is bekerülhet adat */
                kitPrice = kitPrice.replace(' ', '');
                kitPrice = parseFloat(kitPrice);
            }
            var kitQuantity = 0;
            if (app.base_params.cikktip == 'C' && thisObj.attr('data-category') == 'CMOM') {
                //kitQuantity = setWheelQuantity(thisObj);
                kitQuantity = getKITquantity(thisObj);
            }
            //console.log(kitQuantity, ' x ' , kitPrice);

            var prodPrice = thisObj.attr("data-price");
            if (typeof prodPrice === 'undefined') { prodPrice = 0; }
            prodPrice = parseFloat(prodPrice);

            var prodQty = thisObj.val();
            prodQty = parseFloat( prodQty.replace(',', '.') );
            //var currency = app.getSettingData( 'currency_' + app.domain() );
            var prodGrossPrice = prodPrice * vatMulti;
//TODO: Itt számolom ki a kerekített bruttó egységárat
//TODO: Itt számolom ki a kerekített bruttó egységárat
//TODO: Itt számolom ki a kerekített bruttó egységárat
            prodGrossPrice = parseFloat((prodGrossPrice).toFixed( app.fraction() ));
            var sumGrossPrice = 0;
            if ( prodQty > 0 ) {
                sumGrossPrice = (kitPrice * kitQuantity) + (prodGrossPrice * prodQty);
            }
            /*
            var formattedGrossPrice = parseFloat(sumGrossPrice).toLocaleString('fr-FR', {
                minimumFractionDigits: app.fraction(),
                maximumFractionDigits: app.fraction()
            }).replace(',', '.') + " " + app.getSettingData( 'currency_' + app.domain() );
            */
            var formattedGrossPrice = app.getFormattedPrice(sumGrossPrice);

            thisObj.next(".product-total,#product-total").html(formattedGrossPrice);
        });

        $(document).on("click", ".overlay", function () {
            $("body").removeClass("comparing");
            Compare().handleComparingBar();
        });

        $(document).on("click", ".btn--reset_comparing", function () {
            $(".product_list__item input").prop("checked", !1);
            eraseCookie('compare_items');
            Compare().handleComparingBar();
            $(".comparing__actions__item_counter span").html(0);
        });

        $(document).on("click", ".product_list__compare_btn", function () {
            $("body").addClass("comparing");
            Compare().checkFromCookie();
            $(".comparing__actions__item_counter span").html(Compare().handleCookie());
        });

        $(document).on("click", ".fb-link", function (e) {
            e.preventDefault();
            var nl = $("#newsletter").prop("checked") ? "/1" : "";
            var go = $(this).attr('href') + nl;
            handleFB(go).check();
        });

        $(document).on("click", ".fb-login", function (e) {
            e.preventDefault();
            var nl = $("#newsletter").prop("checked") ? "/1" : "";
            var go = $(this).attr('href') + nl;
            //console.log(handleFB);
            handleFB(go).login();
        });

//$(".alert").addClass("on");
        $(".alert__close_btn").on("click", function () {
            var o = $(this);
            var p = o.closest('.alert');
            p.removeClass('on');
            //$(this).parent().parent().removeClass("on");

            $.each(popupData, function (k, o) {
                showPageStatic().saveCookie(o.id, o.urlname);
            });
        });

        $(document).on('change', "#sort_list", function () {
            /* TODO: sort_list */
            var url = window.location.pathname + window.location.search;
            url = app.add_url_param(url, 'order_by', $(this).val());
            //console.log(window.location, url);
            location = url;
            //var query = app.query_string().query !== undefined ? "query=" + app.query_string().query + "&" : "";
            //location = "/" + app.URI + (app.URI.indexOf("?") == -1 ? "?" : "&") + query + "order_by=" + $(this).val()
        });

        $(document).off('click', '#back-to-auto-list').on('click', '#back-to-auto-list', BackToList);

        $(document).on('click', '.navbar__dropdown_menu a,.message_button', function (e) {
            if ($(this).attr('data-modal') == 'log_in') {
                fillLogin();
            }
        });

        $(document).on('click', '.forgot-password', function (e) {
            $('.forgot_email-form h2').html(app.getLang('forgot_password') );
            $("#fp-btn").val(app.getLang('new_password_send') );
            return false;
        });

        /*
        $(document).off('change', "#location_address,#location_city").on("change", '#location_address,#location_city', function (e) {
            var o = $(this);
            var oVal = o.val();
            var oValLo = oVal.toLowerCase();
            if ( oVal.length > 2 && oValLo != 'budapest' && oValLo != 'bratislava' && oVal != '20000' ) {
                $(".cash_on_delivery").hide();
                $(".bank_card_info").hide();
                $('.payment_method[value="'+ PURCHASE_PAYMENT_BANK_CARD + '"]').prop('checked', true);
            } else {
                $(".cash_on_delivery").show();
            }
        });
        */

    };

    /* KIT mennyiség kalkulálás, 4 db-onként jár 1 kit */
    var getKITquantity = function (el) {
        var itemQuantity = 0;
        if ( typeof el === 'object' ) {
            el = ( el instanceof jQuery? el:$(el));
            itemQuantity = parseFloat(el.val());
        } else {
            itemQuantity = parseFloat(el);
        }
        if ( isNaN(itemQuantity) ) { itemQuantity = 0; }
        itemQuantity = Math.max(itemQuantity, 0);
        return Math.floor(itemQuantity / 4); /* Minden 4 db-hoz jár 1 db kit */
        //return Math.ceil(itemQuantity / 4); /* Minden megkezdett 4 db-hoz jár 1 db kit */
    };

    /* deprecated */
    var setWheelQuantity = function (element) {
        element = ( element instanceof jQuery? element:$(element));
        var val = parseInt(element.val());
        if ( isNaN(val) ) { val = 0; }
        val = Math.abs(val);
        /* Minimum 4 db kell. Ha több mint 4 db van megadva akkor a 4-es csoportokon felüli maradékot levágjuk */
        //var m = Math.floor(val / 4);
        var m = Math.ceil(val / 4);
        //if ( m == 0 ) { m = 1; }
//element.val(m*4);
//console.log('setWheelQuantity', m);
        return m;
        /*
        if (val < 4) {
            element.val(4);
        } else if (val > 4 && val % 4 !== 0) {
            element.val(Math.floor(val / 4) * 4);
        }
        val = parseInt(element.val());
        return Math.floor(val / 4);
        */
    };

    var loadPage = function (p) {
        if (typeof p !== 'object')
            p = showMain();
        p.show();
    };

    var handleMultipleMessages = function (keys, templ, button) {
//console.log('handleMultipleMessages', keys);
        if ( keys && Object.keys(keys).length ) {
            $(".modal__content > div").children().remove(),
                $(".modal__content > div").html(templ),
                $("body").addClass("modal_is_open"),
                $(".modal").addClass("on")
            $('.message_button').hide();
            $(button).show();
            var color;
            var type;
            color = "red";
            //type = "Hiba";
            type = getLang('label_error'); //"Hiba";
            var messages = [];
            for ( var k in keys ) {
                var row = keys[k];
                messages.push( row.string );
            }
            $(".mess_type").css('color', color);
            $(".mess_type").html(type);
            $(".mess_string").html(messages.join('<br/>') );
        }
    };

    var getLang = function (key, defaultValue) {
        var out = '';
        if ( typeof key !== 'undefined' ) {
            out = key;
            if ( lang !== null && typeof lang === 'object' && typeof lang[key] !== 'undefined' ) { out = lang[key]; }
            else {
                if ( typeof defaultValue === 'string' ) { out = defaultValue; }
                console.log('Missing getLang key: ', key);
            }
        }
        return out;
    };

    var handleMessages = function (mess, templ, button) {
//console.log('handleMessages', mess);
        $(".modal__content > div").children().remove(),
            $(".modal__content > div").html(templ),
            $("body").addClass("modal_is_open"),
            $(".modal").addClass("on")
        $('.message_button').hide();
        var color;
        var type;
        /* Ha már minden köté szakad, akkor egy sehol sem létező de globális hibaüzi azért legyen! */
        if ( !mess || typeof mess !== 'object' ) { mess = {}; }
        if ( typeof mess['id'] === 'undefined' ) { mess['id'] = 0; }
        if ( typeof mess['mess_type'] === 'undefined' ) { mess['mess_type'] = 1; }
        if ( typeof mess['type'] === 'undefined' ) { mess['type'] = 1; }
        if ( typeof mess['name'] === 'undefined' ) { mess['name'] = 'unknown_error_occured'; }
        if ( typeof mess['string'] === 'undefined' ) { mess['string'] = 'Unknown error occurred'; }
//Van olyan, hogy túl korán hívódik meg és nem lesz lefordítva

        var dataLayerOb = {
            'event': 'eventTracker',
            'eventCategory': 'message',
            'eventAction': mess.name,
            'eventLabel': mess.string
        };

        var regErrorKeys = [ 'registration_error', 'user_exists_fb', 'bad_captcha', 'fb_no_repsponse_registration', 'passwords_differ', 'password_needed', 'captcha_error', 'bad_data_registration', 'bad_password_length', 'required fields_missing', 'username_needed' ];
        if (mess.mess_type == 1) {
            dataLayerOb['eventCategory'] = 'message_error';
            color = "red";
            type = getLang('label_error'); //"Hiba";
            if ( typeof button === 'undefined' || !button ) {
                if ( regErrorKeys.indexOf( mess.name ) == -1 ) {
                    button = '.error';
                } else {
                    button = '.registration_error';
                }
            }
        } else if (mess.mess_type == 2) {
            dataLayerOb['eventCategory'] = 'message_success';
            color = "green";
            type = getLang('label_success'); //"Siker";
            if ( typeof button === 'undefined' || !button ) { button = '.success'; }
        } else if (mess.mess_type == 3) {
            color = "black";
            type = getLang('label_message'); //"Üzenet";
        }
        if ( typeof button !== 'undefined' && button ) {
            $(button).show();
        }
//var show = messages[message].mess_type == 2 ? '.success' : (( message == 'registration_error' || message == 'user_exists' || message == 'bad_data' || message == 'bad_captcha') ? '.registration_error' : '.error' || message == 'cart_sent');
//MSG: Most akkor vissza kell kapcsolni vagy sem???
//MSG: Most akkor vissza kell kapcsolni vagy sem???
//MSG: Most akkor vissza kell kapcsolni vagy sem???

        try{
            dLayer.eventTracker( dataLayerOb)
        }catch(e){}

        $(".mess_type").css('color', color).html(type);
        $(".mess_string").html(mess.string);
    };

    /* TEMPLATE filenév alapján vissza adja a template kulcs nevét ami tul képpen a fájl kiterjesztés nélkül */
    var getTemplateName =  function (templateFileName) {
        if ( typeof templateFileName === 'string' && (templateFileName.substr(-5)).toLowerCase() == '.html' ) {
            return templateFileName.substr(0, templateFileName.length - 5);
        }
        return false;
    };

    /*
var couponBrandMatch = function (brandCheck) {
    //console.log('couponData', couponData);
    var out = false;
    if (
        typeof brandCheck === 'string' &&
        typeof couponData !== 'undefined' &&
        Object.keys(couponData).length &&
        typeof couponData['data'] !== 'undefined'
    ) {
        brandCheck = brandCheck.toLowerCase();
        if ( Array.isArray( couponData['data'] ) ) {
            if ( couponData['data'].indexOf('all') > -1 || couponData['data'].indexOf(brandCheck) > -1 ) { out = true; }
        } else {
            if ( couponData['data'] == 'all' || couponData['data'] == brandCheck ) { out = true; }
        }
    }
    return out;
};
*/
    /*
var couponSeasonMatch = function (seasonCheck) {
    //console.log('couponData', couponData);
    var out = false;
    if (
        typeof seasonCheck === 'string' &&
        typeof couponData !== 'undefined' &&
        Object.keys(couponData).length &&
        typeof couponData['season_codes'] !== 'undefined'
    ) {
        seasonCheck = seasonCheck.toUpperCase();
        if ( Array.isArray( couponData['season_codes'] ) ) {
            if ( couponData['season_codes'].indexOf('ALL') > -1 || couponData['season_codes'].indexOf(seasonCheck) > -1 ) { out = true; }
        } else {
            if ( couponData['season_codes'] == 'ALL' || couponData['season_codes'] == seasonCheck ) { out = true; }
        }
    }
    return out;
};
*/
    var couponMatch = function (brandCheck, seasonCheck, quantityCheck) {
        if (
            typeof brandCheck === 'string' && brandCheck &&
            typeof seasonCheck === 'string' && seasonCheck &&
            typeof quantityCheck !== 'undefined' &&
            typeof couponData !== 'undefined' &&
            Object.keys(couponData).length
        ) {
            brandCheck = $.trim(brandCheck).toLowerCase();
            seasonCheck = $.trim(seasonCheck).toUpperCase();
            quantityCheck = parseInt(quantityCheck);
            if ( isNaN(quantityCheck) ) { quantityCheck = 0; }
            for (var couponTitle in couponData ) {
                var c = couponData[ couponTitle ];
                var brandOk = false;
                var seasonOk = false;
                var qtyOk = false;
                if (
                    typeof c['brands'] !== 'undefined' &&
                    (
                        typeof c['brands'][ 'all' ] !== 'undefined' ||
                        typeof c['brands'][ brandCheck ] !== 'undefined'
                    )
                ) { brandOk = true; }
                if (
                    typeof c['seasons'] !== 'undefined' &&
                    (
                        typeof c['seasons'][ 'ALL' ] !== 'undefined' ||
                        typeof c['seasons'][ seasonCheck ] !== 'undefined'
                    )
                ) { seasonOk = true; }
                if ( typeof c['min_quantity'] !== 'undefined' && c['min_quantity'] <= quantityCheck ) {
                    qtyOk = true;
                }
                if ( brandOk && seasonOk && qtyOk ) { return c; }
            }
        }
        return false;
    };

    /* 2020.03.18: Márkánként más url-t ad vissza... */
    var couponBrandUrl = function(brand) {
        //var out = { 'target': '_blank', 'href': '//gumi.hu/autogumi/teli-gumi-akcio-2000-ft-szervizkupon/' };
        var out = { 'target': '_self', 'href': 'javascript: void(0);' };
        return out;
        if ( typeof brand === 'string' ) {
            brand = brand.toLowerCase();
            var KFTN = [ 'kumho','falken','toyo','nexen' ];
            var CoBaSe = [ 'continental', 'barum','semperit' ];
            var BriFir = [ 'bridgestone', 'firestone' ];
            if ( KFTN.indexOf(brand) > -1 ) { out['href'] = '//gumi.hu/autogumi/nyari-gumi-akcio-2020-gumi-hu/'; out['target'] = '_blank'; }
            else if ( CoBaSe.indexOf(brand) > -1 ) { out['href'] = '//gumi.hu/autogumi/nyari-gumi-akcio-2020/'; out['target'] = '_blank'; }
            else if ( BriFir.indexOf(brand) > -1 ) { out['href'] = '//gumi.hu/autogumi/nyari-gumi-akcio-2020-bridgestone/'; out['target'] = '_blank'; }
        }
        return out;
    };

    var http2https = function(url) {
        if ( typeof url === 'string' && url && url.substr(0, 7) == 'http://' ) {
            url = url.replace('http://', 'https://');
        }
        return url;
    };

    return {
        domain: function () { return domain; },
        fraction: function () { return fraction; },
        getLang: getLang,
        http2https: http2https,
        isDevelopment: isDevelopment,
        isProduction: isProduction,
        //lang: lang,
        init: init,
        loadPage: loadPage,
        getUserData: function () {
            return userData;
        },
        userPromise: uData,
        getSearchData: function () {
            return searchData;
        },
        templatePromise: function () {
            return tData;
        },
        /* Összes template */
        templates: function () {
            return templateData;
        },
        /* Konkrét template létezésének ellenőrzése */
        hasTemplate: function(template, isFileName) {
            if ( typeof template !== 'undefined' && template ) {
                if ( typeof isFileName !== 'undefined' && isFileName ) { /* Megpróbálom levágni a kiterjesztést */
                    var tmp = getTemplateName(template);
                    if ( tmp ) { template = tmp; }
                }
                if (
                    typeof templateData !== 'undefined' && templateData &&
                    typeof templateData[ template ] !== 'undefined'
                ) { return true; }
                console.log('Missing template: ', template );
            }
            return false;
        },
        getTemplateName: getTemplateName,
        /* Konkrét template lekérése */
        getTemplate: function(template, isFileName) {
            if ( typeof template !== 'undefined' && template ) {
                if ( typeof isFileName !== 'undefined' && isFileName ) { /* Megpróbálom levágni a kiterjesztést */
                    var tmp = getTemplateName(template);
                    if ( tmp ) { template = tmp; }
                }
                if (
                    typeof templateData !== 'undefined' && templateData &&
                    typeof templateData[ template ] !== 'undefined'
                ) { return templateData[ template ]; }
                console.log('Missing template: ', template );
            }
            return null;
        },
        locationsPromise: function () {
            return lData;
        },

        getLocationData: function (location, addressId ) {
            if (
                typeof location !== 'undefined' &&
                location &&
                typeof locationsData[location]
            ) {
                if ( typeof addressId !== 'undefined' && addressId ) {
                    for ( var i in locationsData[location] ) {
                        var row = locationsData[location][i];
                        if ( addressId == row['id'] ) {
                            return row;
                            break;
                        }
                    }
                } else {
                    return locationsData[location];
                }
            }
            return null;
        },
        locations: function () {
            return locationsData;
        },
        searchPromise: function () {
            return seData;
        },
        getSettingData: function (settingKey) {
            if (
                typeof settingKey !== 'undefined' && settingKey &&
                typeof settingsData !== 'undefined' && settingsData &&
                typeof settingsData[ settingKey ] !== 'undefined'
            ) { return settingsData[ settingKey ]; }
            return null;
        },
        getSettingsData: function () {
            return settingsData;
        },
        settingsPromise: function () {
            return sData;
        },
        /*
            getMessageData: function () {
                return messageData;
            },
            */
        getCouponData: function () {
            return couponData;
        },
        //couponSeasonMatch: couponSeasonMatch,
        couponMatch: couponMatch,
        couponBrandUrl: couponBrandUrl,

        couponPromise: function () {
            return cData;
        },

        messagePromise: function () {
            return mData;
        },
        removePopup: function (id) {
            //console.log('removePopup', id);
            if ( typeof id !== 'undefined' && id ) {
                //console.log( popupData );
                for ( var i in popupData ) {
                    var p = popupData[i];
                    if ( p.id == id ) {
                        popupData.splice(i, 1);
                    }
                }
                //console.log( popupData.length );
                $('#popup_' + id).remove();
                if ( !popupData.length ) { $(".alert").removeClass("on"); }
            }
        },
        popups: function () {
            return popupData;
        },
        popupPromise: function () {
            return pData;
        },
        getMessage: function (key) {
            if ( messages !== null && typeof key === 'string' && typeof messages === 'object' && typeof messages[key] !== 'undefined' ) {
                return messages[key];
            } else {
                console.log('Missing getMessage key: ' , key);
            }
            return null;
        },
        messages: function () {
            console.log('messages: ', messages);
            return messages;
        },
        mess_template: function () {
            return mess_template;
        },
        base_params: base_params,
        getBaseParams: function () {
            return base_params;
        },
        storage_exists: storage_exists,
        URI: URI,
        cart: function () {
            return cart;
        },

        //2020.02.20.
        purchase: function () {
            if ( !purchase ) { purchase = Purchase(); }
            return purchase;
        },
        setPurchase: function (p) {
            //console.log('setPurchase', typeof p,  p);
            if ( typeof p !== 'undefined' && p ) {
                purchase = p;
            }
        },

        handleMessages: handleMessages,
        getStatic: function () {
            return static;
        },
        setStatic: function (s) {
            if ( typeof s === 'undefined') { s = true; }
            static = s;
        }, events: events,
        search_promise: search_promise,
        search_products: search_products,
        parsePageType: parsePageType,
        query_string: query_string,
        add_url_param: add_url_param,
        /*
var slick_rand = function (element) {
    var total = $(element).length;
    return Math.floor(Math.random() * total);
}
*/
        slick: function () {
            var t = '<button type="button" class="slick-prev"><span class="icon icon--arrow-2-left"></span></button>',
                o = '<button type="button" class="slick-next"><span class="icon icon--arrow-2-right"></span></button>';
            $(".slick.main").slick({
                autoplay: true,
                autoplaySpeed: 5000,
                dots: !0,
                arrows: false,
                // prevArrow: t,
                // nextArrow: o
                initialSlide: 0
            }).css({height: 'auto', 'overflow': 'inherit', 'opacity': 1});

            $(".slick.offers").slick({
                autoplay: true,
                autoplaySpeed: 3000,
                mobileFirst: !0,
                dots: !0,
                infinite: !0,
                //prevArrow: t,
                //nextArrow: o,
                arrows: false,
                initialSlide: 0,
                responsive: [{
                    breakpoint: 640,
                    settings: {
                        slidesToShow: 3,
                        slidesToScroll: 3
                    }
                }]
            }).css({ height: 'auto', 'overflow': 'inherit', 'opacity': 1});
            //.show('size', {}, 300)
            //.css({height: 'auto', 'overflow': 'inherit'}); //.fadeOut(200);
        },
        BackToList: BackToList,
        //setWheelQuantity: setWheelQuantity,
        getKITquantity: getKITquantity,
        invertArray: function (array, json) {
            /* MSG Ismert bug: ha az érték többször szerepel különböző kulccsal */
            if ( typeof json === 'undefined') { json = false; }
            var newArray = json ? {} : [];
            $.each(array, function (i, obj) {
                //console.log('invertArray', i, obj);
                newArray[obj] = i;
            });
            //console.log(newArray);
            return newArray;
        },

        /* Valamilyen összeget formázva vissza adja */
        getFormattedPrice: function (price, needCurrency) {
            altCurr = {
                HUF : 'Ft',
            } 

            if(domain == 'local')
                domain = 'hu';
 
            price = parseFloat(price);
            if ( isNaN(price) ) { price = 0; }
            price = parseFloat(price.toFixed(fraction));
            var out = price.toLocaleString('fr-FR', {
                minimumFractionDigits: fraction,
                maximumFractionDigits: fraction
            }).replace(',', '.');
            try {
                if (
                    typeof needCurrency === 'undefined' ||
                    ( typeof needCurrency !== 'undefined' && needCurrency )
                ) {
                    var actCurr = (typeof settingsData['currency_' + domain] !== 'undefined'? settingsData['currency_' + domain]:'');
    
                    actCurr =  (typeof altCurr[actCurr] !== 'undefined'? altCurr[actCurr]:actCurr)
                    out += ' ' +actCurr;
                }
            } catch (error) {
                
            }
          
            return out;
        },

        /* Az adott ország tizedeseinek mennyiségéig a float-ot adja vissza */
        getPrice: function (price, needGross) {
            price = parseFloat(price);
            if ( isNaN(price) ) { price = 0; }
            if (
                typeof needGross === 'undefined' ||
                ( typeof needGross !== 'undefined' && needGross )
            ) {
                var vatMulti = 1 + parseFloat(settingsData['vat_' + domain ]);
                price = price * vatMulti;
            }
            price = parseFloat(price.toFixed(fraction));
            return price;
        }

    };
})();
//console.log('app.domain:', app.domain() );

/* o---> Search engine <---o */

var searchBySizesModule = (function () {
    /* A kereső mezők össze állítása után ezzel rakom össze a linket */
    var searchFilter = 'union'; /* únió */
    var all_data = null;
    var params = null;
    var structurized = [];
    var saveSelectedData = function (cikktip) {
        var s_data = app.getSearchData().search_keys;

        //Autó típis mezők jelöltsége
        var cartype = []; //SZ||KT||OFF
        var carTypeO = {};
        $('#form_auto_by_size input[type="checkbox"].car_type').each(function (k, obj) {
            var o = $(this);
            if ( (o.val()).length > 0 ) {
                if ( typeof carTypeO[ o.val() ] === 'undefined' ) { carTypeO[ o.val() ] = {}; }
                carTypeO[ o.val() ]['disabled'] = o.is(':disabled');
                carTypeO[ o.val() ]['checked'] = o.is(':checked');
            }
        });
        for ( var ctIdx in carTypeO ) {
            var ctRow = carTypeO[ctIdx];
            if ( !ctRow['disabled'] && ctRow['checked'] ) { cartype.push(ctIdx); }
        }
        //Ojjektumok lekérése CSAK 1x
        var sel_data = {};
        var neededSelects = { /* ID: key */
            'width_A': 'width',
            'height_A': 'height',
            'diameter_A': 'diameter',
            'brand': 'brand',
            'li': 'li',
            'si': 'si',
            'noise': 'noise',
            'wet': 'wet',
            'fuel': 'fuel'
        };
        for ( var id in neededSelects ) {
            var idO = $('#'+id);
            if ( idO.length ) {
                var key = neededSelects[id];
                sel_data[ key ] = (idO.val() == app.getLang('all_url') ? "" : idO.val());
            } else {
                console.log('Missing ID: #'+id);
            }
        }
        var xlfrO = $('#xlfr');
        var runflatO = $('#runflat');
        var eletcricO = $('#electric');
        var checkedSeason = $('input[type="radio"][name="season"].season:checked');
        sel_data['season'] = ( checkedSeason.length? checkedSeason.val(): '' );
        sel_data['cartype'] = cartype;
        sel_data['xlfr'] = ( !xlfrO.is(':disabled') && xlfrO.is(':checked')? xlfrO.val() : '' );
        sel_data['runflat'] = ( !runflatO.is(':disabled') && runflatO.is(':checked')? runflatO.val() : '' );
        sel_data['electric'] = ( !eletcricO.is(':disabled') && eletcricO.is(':checked')? eletcricO.val() : '' );
        sel_data['cikktip'] = cikktip;
        var qsTMP = app.query_string();
        if ( typeof qsTMP['order_by'] !== 'undefined' && qsTMP['order_by'] ) {
            $("#order_by").val( qsTMP['order_by'] );
        }
        //console.log('sel_data', sel_data);

        app.base_params = sel_data;
        //first_click = true;
        return buildURL(sel_data);
    };

    /* Keresési feltételek alapján itt teszem össze a (2 kezem) keresési URL-t */
    var buildURL = function (data) {
        var s_data = app.getSearchData().search_keys;
        var rest_of_data = "";
        var urlBlocks = [];

        //console.log( 'buildURL: ',  data );

        //Kellenek url paraméterek amiket a data-ból nyerek ki...
        var neededURLParams = {
            //'brand': { 'param': 'brand', 'type': 'lower_string' },
            'fuel': { 'param': 'fuel', 'type': 'string' },
            'wet': { 'param': 'wet', 'type': 'string' },
            'noise': { 'param': 'noise', 'type': 'string' },
            'runflat': { 'param': 'runflat', 'type': 'boolean' },
            'xlfr': { 'param': 'reinforced', 'type': 'boolean' },
            'electric': { 'param': 'electric', 'type': 'boolean' }
        };
        var urlParams = [];
        for (var i in neededURLParams ) {
            var paramData = neededURLParams[i];
            var urlParamName = paramData['param'];
            if ( typeof data[i] !== 'undefined' && data[i] ) { /* boolean esetén csak igazágban teszem el */
                var urlParamVal = null;
                if ( paramData['type'] == 'boolean' ) {
                    urlParamVal = ( data[i] ? 'true': 'false');
                } else if ( paramData['type'] == 'lower_string' ) {
                    urlParamVal = (data[i]).toLowerCase();
                } else if ( paramData['type'] == 'upper_string' ) {
                    urlParamVal = (data[i]).toUpperCase();
                } else if ( paramData['type'] == 'string' ) {
                    urlParamVal = data[i];
                } else if ( paramData['type'] == 'integer' ) {
                    urlParamVal = parseInt(data[i]);
                } else if ( paramData['type'] == 'float' ) {
                    urlParamVal = parseFloat(data[i]);
                }
                if ( urlParamVal !== null ) {
                    urlParams.push( urlParamName + '=' + urlParamVal);
                }
            }
        }
        var qsTMP = app.query_string();
        if ( typeof qsTMP['order_by'] !== 'undefined' && qsTMP['order_by'] ) {
            urlParams.push( 'order_by=' + qsTMP['order_by']  );
        }
		
        //1. BLOKK (autotipus)
        var cartype = '';
        var carTypesArr = [];
        if (
            typeof s_data['cartype'] !== 'undefined' &&
            typeof data['cartype'] !== 'undefined' &&
            Array.isArray( data['cartype'] ) &&
            data.cartype.length
        ) {
            for ( var i in data['cartype'] ) {
                var ctKey = data['cartype'][i];
                if ( typeof s_data['cartype'][ ctKey ] !== 'undefined' ) {
                    carTypesArr.push( s_data['cartype'][ ctKey ] );
                }
            }
        } else { cartype = app.getLang('all_url'); }
        if ( carTypesArr.length > 0 ) { cartype = carTypesArr.join(','); }
        else { cartype = app.getLang('all_url'); }
        urlBlocks.push(cartype);

        //2. BLOKK
        if (typeof data['width'] !== 'undefined' && data['width'] ) {
            urlBlocks.push(data['width']);
        } else {
            urlBlocks.push( app.getLang('all_url') );
        }
        //3. BLOKK
        var heightDiameter = app.getLang('all_url'); //Default
        var hdArr = [];
		var heightNdiameter = [];
        if ( typeof data['height'] !== 'undefined' && data['height'] ) { hdArr.push( data['height'] ); heightNdiameter['height'] = data['height']; }
        if ( typeof data['diameter'] !== 'diameter' && data['diameter'] ) { hdArr.push( 'r' + data['diameter'].toLowerCase() ); heightNdiameter['diameter'] = data['diameter'].toLowerCase(); }
        if ( hdArr.length ) { heightDiameter = hdArr.join(''); }


//TODO: Ezt nem biztos, hogy ide kellene tenni...
        var liSiArr = [];
        if ( typeof data['li'] !== 'undefined' && data['li'] ) {
            //liSiArr.push( data['li'] );
            urlParams.push( 'li=' + data['li'] );
        }
        if ( typeof data['si'] !== 'undefined' && data['si'] ) {
            //liSiArr.push( data['si'] );
            urlParams.push( 'si=' + data['si'] );
        }
        urlBlocks.push( heightDiameter + (liSiArr.length? ' ' + liSiArr.join(''):'') );

        //4. BLOKK
        var season = null;
        if (
            typeof s_data.season !== 'undefined' &&
            typeof data['season'] !== 'undefined' && data['season'] &&
            typeof s_data.season[ data['season'] ] !== 'undefined'
        ) { season = s_data.season[ data['season'] ]; }
        urlBlocks.push( (season!==null? season: 'undefined') );

        //5. BLOKK (OPCIONÁLIS)
        if ( typeof data['brand'] !== 'undefined' && data['brand'] ) {
			urlBlocks[0]=data['brand'].toLowerCase();
            //urlBlocks.push( data['brand'].toLowerCase() );
        }

        if ( urlParams.length ) { rest_of_data += '?' + urlParams.join('&'); }
		
		//Új SEO URL params order
		var helperArr = [];
			/*
			helperArr['category']	=urlBlocks[3];
			helperArr['brand']		=urlBlocks[0];
			helperArr['width']		=urlBlocks[1];
			helperArr['height']		=heightNdiameter['height'];
			helperArr['diameter']	=heightNdiameter['diameter'];
			*/
			//helperArr['height']=urlBlocks[2];
			
			helperArr.push(urlBlocks[3]);
			helperArr.push(urlBlocks[0]);
			helperArr.push(urlBlocks[1]);
			helperArr.push(urlBlocks[2]);
		
        //var uri = helperArr.join('/') + rest_of_data;
        //console.log('buildURL: ', uri, urlBlocks);
		
		var uri = createURIFromSearchParams(app.base_params);
		if(urlParams.length) uri + '&' + urlParams.join('&');
 
        return uri;
    };

    /* A data input tétel adatokból cartype (SZ||KT||OFF) és a params (keresési paraméterek) alapján kiválogat minden választható tulajdonságot */
    var structurize = function (data, cartype) {
        var struct = {
            'width': [],
            'height': [],
            'diameter': [],
            'cartype': [],
            'season': [],
            'season_name': [],
            'brand': [],
            'li': [],
            'li_name': [],
            'si': [],
            'fuel': [],
            'wet': [],
            'noise': [],
            //'zajszint': [], /* DEPRECATED */
            'xlfr': null,
            'runflat': null,
            'electric': null
        };
        if ( typeof cartype !== 'undefined' && cartype ) { /* Kötelező paraméter, mert eszerint válogatom szét!!! (SZ||KT||OFF) */
            for (var key in data) {
                var obj = data[key];
                //if ( true ) {
                if (setWidth(obj, struct.width, cartype) && obj.width) { struct.width.push(obj.width); }
                if (setHeight(obj, struct.height, cartype) && obj.height) { struct.height.push(obj.height); }
                if (setDiameter(obj, struct.diameter, cartype) && obj.diameter) { struct.diameter.push(obj.diameter); }
                if (setCartype(obj, struct.cartype, cartype) && obj.cartype) { struct.cartype.push(obj.cartype); }
                if (setSeason(obj, struct.season, cartype) && obj.season_code) {
                    //struct.season.push(obj.season_code, cartype); //Szerintem ez bug
                    struct.season.push(obj.season_code);
                    if ( obj.season && struct.season_name.indexOf( obj.season ) <= -1 ) { struct.season_name.push(obj.season); }
                }
                if (setBrand(obj, struct.brand, cartype) && obj.brand) { struct.brand.push(obj.brand); }
                if (setLi(obj, struct.li, cartype) && obj.li) { struct.li.push(obj.li + "_" + obj.li_name); }
                //if (setSi(obj, struct.si && obj.si, cartype)) { /* BUG */
                if (setSi(obj, struct.si, cartype) && obj.si) {
                    //struct.si.push(obj.si_name.substring(2, 5) + "_" + obj.si);
                    var tmp = (obj.si_name).split('=');
                    if ( tmp.length >= 2 ) {
                        var tmp2 = ( tmp[1] ).split(' ');
                        struct.si.push( tmp2[0] + "_" + obj.si);
                    }
                }
                if (setFuel(obj, struct.fuel, cartype) && obj.fuel) { struct.fuel.push(obj.fuel); }
                if (setWet(obj, struct.wet, cartype) && obj.wet) { struct.wet.push(obj.wet); }
                if (setNoise(obj, struct.noise, cartype) && obj.noise_code) { struct.noise.push(obj.noise_code); }
                if (setXlfr(obj, struct.xlfr, cartype) && obj.xlfr) { struct.xlfr = obj.xlfr; }
                if (setRunflat(obj, struct.runflat, cartype) && obj.runflat) { struct.runflat = obj.runflat; }
                if (setElectric(obj, struct.electric, cartype) && obj.electric) { struct.electric = obj.electric; }
                //}
            }
        }
        return struct;
    };

    var structurizeAll = function (data) {
//console.log('structurizeAll: ',  data);
//console.log('structurizeAll: ',  params);
        /* MSG+ATTN!: Elfogadott autótípusok. [] esetén mindent elfogad */
        var acceptedCarTypes = [ 'SZ', 'KT', 'OFF', 'UT', 'SUVC' ]; //SK-t S.János kivetette
        /* MSG+ATTN!: Ha acceptedCarTypes = [] akkor ez lép életbe! TILOS változtatni rajta */
        var fallbackCarTypes = [ 'SZ', 'KT', 'OFF' ];
        /* MSG+ATTN!: Ha van olyan NEM (SZ,KT,OFF) cartype ami valamelyik másiknak vagy többnek megfeleltethető akkor azt itt kell */
        var carTypeReplacer = { 'SUVC': [ 'SZ', 'OFF' ], 'SK': 'SZ', 'UT': 'KT' };

        var structEtalon = {
            'width': [],
            'height': [],
            'diameter': [],
            'cartype': [], /* Ez itt feleslegessé válik? */
            'season': [],
            'season_name': [],
            'brand': [],
            'li': [],
            'li_name': [],
            'si': [],
            'fuel': [],
            'wet': [],
            'noise': [],
            'xlfr': null,
            'runflat': null,
            'electric': null
        };
        //Kimeneti objektum elkészítése
        var out = {};
        if ( acceptedCarTypes.length > 0 ) {
            for (var i in acceptedCarTypes) {
                var cartype = acceptedCarTypes[i];
                if ( typeof out[cartype] === 'undefined' ) {
                    var struct = $.extend(true, {}, structEtalon); /* új üres struktúra minta ojjektum */
                    out[cartype] = struct;
                }
            }
        } else {
            for (var i in fallbackCarTypes) {
                var cartype = fallbackCarTypes[i];
                if ( typeof out[cartype] === 'undefined' ) {
                    var struct = $.extend(true, {}, structEtalon); /* új üres struktúra minta ojjektum */
                    out[cartype] = struct;
                }
            }
        }
        /* Szűrőmezők használatának levizsgálása 1x */
        var usedFilterCount = 0; /* (cartype és cikktip)-en kívüli használt szűrők számossága */
        var hasFilterParams = {
            'width': false,
            'height': false,
            'diameter': false,
            'season': false, /* season */
            'brand': false, /* lower */
            'li': false, /* li_name */
            'si': false, /* si_name */
            'fuel': false,
            'wet': false,
            'noise': false, /* noise */
            'xlfr': false, /* XL||FR||XLFR */
            'runflat': false /* I */,
            'electric':false
        };
        var allParamsCountOf = Object.keys(hasFilterParams).length; /* 12 */
        for ( var pKey in hasFilterParams ) {
            hasFilterParams[pKey] = false;
            if ( typeof params[pKey] !== 'undefined' && params[pKey] ) { //Van szűrő beállítva az adott paraméterre, uh fontos!!!
                hasFilterParams[pKey] = true;
                usedFilterCount++;
            }
        }
//console.log('structurizeAll: ',  params, hasFilterParams, usedFilterCount + ' / ' + allParamsCountOf);
        var filterResultsCount = 0; /* A szűrésnek megfelelően a várható tételek mennyisége */
//var showCnt = 0;             //DEBUG
        for (var key in data) {
            var obj = data[key];
            //TODO: cartype szerint alapból szét lehetne válogatni és akkor nem kéne 3szor végigmenni a több ezres listán!!!
            //A szűrők között ÉS kapcsolat van, uh csak azon tételek értékei kerülhetnek az ömlesztett adathalomba ahol minden megadott paraméter stimmel!
//Autótipus alapján VAGY az összes többi között és kapcs van.
//A VAGY csoportokat hoz létre melyekben a többi megadott szűrő között és van...
//( AND1 && AND2 && ... ANDn && OR1 ) || ( AND1 && AND2 && ... ANDn && OR2 )  || ... ( AND1 && AND2 && ... ANDn && ORn )
            /* ATTN: 2020.03.27: Egyéb és Távolkeleti márka kiszedve */
//if ( obj.brand_code == 'AEGY' || obj.brand_code == 'KINA' ) { continue; }
//if ( obj.brand_code == 'DOUS' ) { console.log(obj); }
            var cartype = null;
            var oKey = 'cartype';
            if (
                typeof obj[ oKey ] !== 'undefined' &&
                obj[ oKey ] &&
                (
                    acceptedCarTypes.indexOf(obj[ oKey ]) > -1 ||
                    acceptedCarTypes.length == 0
                )
            ) { /* Autótipus meghatározás kötelező */
                /* MSG: Van autótípus csere */
                //var carTypeTemp = obj[ oKey ]; /* Ez még kellhet */
                var carTypeCheck = [];
                if ( typeof carTypeReplacer[ obj[ oKey ] ] === 'string' ) {
                    carTypeCheck.push( carTypeReplacer[ obj[ oKey ] ] );
                    //console.log('carTypeCheck', obj[ oKey ], carTypeCheck);
                } else if (
                    typeof carTypeReplacer[ obj[ oKey ] ] === 'object' &&
                    Array.isArray( carTypeReplacer[ obj[ oKey ] ] ) &&
                    carTypeReplacer[ obj[ oKey ] ].length > 0
                ) {
                    carTypeCheck = carTypeReplacer[ obj[ oKey ] ];
                    //console.log('carTypeCheck', obj[ oKey ], carTypeCheck);
                } else { /* DEFAULT */
                    carTypeCheck.push( obj[ oKey ] );
                }
                var pKey = 'cartype';
                if ( typeof params[pKey] !== 'undefined' && params[pKey] ) { //Van szűrő beállítva az adott paraméterre, uh fontos!!!
                    //console.log(params[pKey]);
                    if ( Array.isArray( params[pKey] ) ) {
                        if ( params[pKey].length > 0 ) {
                            /* MSG: aktuális autótipus többnek is megfeleltethető */
                            for (var ctc in carTypeCheck ) {
                                var ct = carTypeCheck[ctc];
                                if ( params[pKey].indexOf( ct ) > -1 ) {
                                    cartype = obj[ oKey ];
                                    break;
                                }
                            }
                        } else { /* Ez elvileg soha nem fog lefutni */
                            cartype = obj[ oKey ];
                        }
                    } else if ( carTypeCheck.indexOf( params[pKey] ) > -1 ) { /* Ilyen elvileg nem lehetne */
                        cartype = obj[ oKey ];
                    }
                } else { /* Nincs szűrő szóval gondolkodás nélkül mehet! */
                    cartype = obj[ oKey ];
                }
            }
            if ( cartype !== null ) { /* Mehet a tárolás és megvan a fő kulcs! */
                if ( typeof out[cartype] === 'undefined' ) { /* Csak biztonságból... */
                    var struct = $.extend(true, {}, structEtalon); /* új üres struktúra minta ojjektum */
                    out[cartype] = struct;
                }
                var M = out[cartype];
                /* Le vizsgálom, hogy mely paraméterek felelnek meg a szűrőnek */
                var paramsString = {
                    'width': { 'obj_key': 'width', 'success': false },
                    'height': { 'obj_key': 'height', 'success': false },
                    'diameter': { 'obj_key': 'diameter', 'success': false },
                    'brand': { 'obj_key': 'brand', 'success': false }, /* lower */
                    'li': { 'obj_key': 'li', 'success': false }, /* li_name */
                    'si': { 'obj_key': 'si', 'success': false }, /* si_name */
                    'noise': { 'obj_key': 'noise_code', 'success': false }, /* noise */
                    'wet': { 'obj_key': 'wet', 'success': false },
                    'fuel': { 'obj_key': 'fuel', 'success': false },
                    'season': { 'obj_key': 'season_code', 'success': false }, /* season */
                    'xlfr': { 'obj_key': 'xlfr', 'success': false }, /* XL||FR||XLFR */
                    'runflat': { 'obj_key': 'runflat', 'success': false }, /* I */
                    'electric': { 'obj_key': 'electric', 'success': false } /* I */
                    //,'cikktip': { 'obj_key': 'cikktip', 'success': false } /* Erre nem kell vizsgálni...Csak ilyen tételek vannak... */
                };
                //var allParamsCountOf = Object.keys(paramsString).length;
//Szűrés eredmény (width = X AND height = Y AND diameter = Z ) AND ( autótipus=SZ OR autótipus=KT )
                var allSuccess = true; /* Ha az összes paramra siker van... */
                var successParamsCountOf = 0; /* Az összes param között a sikeresek */
                var failedParamsCountOf = 0; /* Az összes param között a sikertelenek */
                var successFilterCountOf = 0; /* Sikeres szűrők száma */
                var failedFilterCountOf = 0; /* Sikertelen szűrők száma */
                for ( var pKey in paramsString ) {
                    var pRow = paramsString[pKey];
                    pRow['success'] = false; /* Alapból nega */
                    if ( usedFilterCount > 0 ) { /* Van legalább 1 szűrő beállítva */
                        if ( typeof hasFilterParams[ pKey ] !== 'undefined' && hasFilterParams[pKey] ) {
                            /* Van szűrő erre a tulajdonságra */
                            if (
                                typeof obj[ pRow['obj_key'] ] !== 'undefined' &&
                                obj[ pRow['obj_key'] ]
                            ) { //Kis és nagybetű különbségek kiszűrése!!!
                                if ( Array.isArray( params[pKey] ) ) { /* Ha a paraméter egy TÖMB, elvileg ez az ág nem fut le soha */
                                    if ( params[pKey].length > 0 ) {
                                        if ( params[pKey].indexOf( obj[ pRow['obj_key'] ] ) > -1 ) {
                                            pRow['success'] = true;
                                        }
                                    } else { /* Üres param tömb is azt jelenti, hogy nincs szűrés!!! */
                                        pRow['success'] = true;
                                    }
                                } else { /* Stringként kezelem. Elvileg csak ilyen van! */
                                    if ( pKey == 'xlfr' || pKey == 'runflat' || pKey == 'electric') { /* Nem kell egyeznie a stringnek, elég ha nem üres!!! */
                                        pRow['success'] = true;
                                    } else {
                                        if ( (obj[ pRow['obj_key'] ]).toLowerCase() == (params[pKey]).toLowerCase() ) {
                                            pRow['success'] = true;
                                        }
                                    }
                                }
                            }
                            if ( pRow['success'] ) {
                                successFilterCountOf++;
                            } else {
                                failedFilterCountOf++;
                            }
                        } else {
                            pRow['success'] = true;
                        }
                    } else { /* Nincs szűrő esetén mindent tárolunk! */
                        pRow['success'] = true;
                    }
                    if ( pRow['success'] ) {
                        successParamsCountOf++;
                    } else {
                        failedParamsCountOf++;
                        //allSuccess = false;
                    }
                }
                /* Minden beállított szűrő stimmel-e */
                var allFilterSuccess = (usedFilterCount <= successFilterCountOf?true:false);
                /* Minden szűrő stimmel-e */
                var allSuccess = (allParamsCountOf <= successParamsCountOf? true:false );
                if ( allSuccess ) { filterResultsCount++; }
//Nincs szűrő esetén mindent tárolok!
//205/55R16 Barum szűrés esetén:
//205/55R16 Barum tételnél, minden szűrő stimm. Minden tulajdonságot tárolok ami a tételhez tartozik
//195/50R15 Kumho tételnél, semmi szűrő stimm nincs. Semmit nem tárolok!
//Ha legalább 1 szűrő megegyezik:
                //A szűrővel megegyező tulajdonságo(ka)t fel kell venni. Triviális
                //A szűrőben használt de a szűrővelvel nem megegyező tulajdonságo(ka)t IS fel kell venni, hogy alternatívaként szolgálhasson
//
//205/55R16 Kumho tételnél, márkahiba van,
//a tétel azon tulajdonság értékeit tárolom, ahol szűrés egyezés van
//
//205/55R15 Barum tételnél, átmérő hiba van, itt is minden szűrő tul mehet
//205/50R15 Barum tételnél, profilarány és átmérő hiba van,
//abrakadabra
                if ( successParamsCountOf > 0 ) { /* Ha van legalább 1valami ami stimmel */
                    for ( var pKey in paramsString ) {
                        var pRow = paramsString[pKey];
                        var addition = false;
                        if ( allSuccess ) { /* Az összes szűrőre stimmel a tétel */
                            addition = true;
                        } else { /* Volt szűrő találat, de nem mind jó */
                            if (
                                failedFilterCountOf == 1 &&
                                typeof hasFilterParams[ pKey ] !== 'undefined' &&
                                hasFilterParams[pKey]
                            ) {
                                //console.log(pKey, hasFilterParams[pKey], obj);
                                addition = true;
                            }
                        }

                        if ( addition ) {
                            //filterResultsCount++;
                            //console.log(obj);
                            /*
                                    if ( false && showCnt < 10 ) {
                                        if ( failedParamsCountOf == 0 ) {
                                            console.log(pKey, 'ALL');
                                        } else if ( failedParamsCountOf == 1 && !pRow['success'] ) {
                                            console.log(pKey, 'THIS');
                                        }
                                    }
                                    */
                            var oKey = pRow['obj_key'];
                            if ( pKey == 'width' || pKey == 'height' || pKey == 'diameter' || pKey == 'brand' || pKey == 'noise' || pKey == 'wet' || pKey == 'fuel' ) {
                                if ( obj[ oKey ] && M[ pKey ].indexOf( obj[ oKey ] ) <= -1 ) { M[ pKey ].push( obj[ oKey ] ); }
                            } else if ( pKey == 'li' ) {
                                if ( obj[ oKey ] ) {
                                    var liVal = obj[ oKey ] + "_" + obj.li_name;
                                    if ( M[ pKey ].indexOf( liVal ) <= -1 ) { M[ pKey ].push(liVal); }
                                }
                                //if ( obj.li_name && structF['li_name'].indexOf( obj.li_name ) <= -1 ) { structF.li_name.push(obj.li_name); }
                            } else if ( pKey == 'si' ) {
                                if ( obj[ oKey ] ) {
                                    var siVal = null;
                                    var tmp = (obj.si_name).split('=');
                                    if ( tmp.length >= 2 ) {
                                        var tmp2 = ( tmp[1] ).split(' ');
                                        siVal = tmp2[0] + "_" + obj[ oKey ];
                                    }
                                    if ( siVal !== null && M[ pKey ].indexOf( siVal ) <= -1 ) {
                                        M[ pKey ].push( siVal );
                                    }
                                }
                            } else if ( pKey == 'season' ) {
                                if ( obj[ oKey ] && M[ pKey ].indexOf( obj[ oKey ] ) <= -1 ) { M[ pKey ].push( obj[ oKey ] ); }
                                if ( obj['season'] && M['season_name'].indexOf( obj['season'] ) <= -1 ) { M['season_name'].push(obj['season']); }
                            } else if ( pKey == 'xlfr' || pKey == 'runflat' || pKey == 'electric') {
                                if ( obj[ oKey ] ) { M[ pKey ] = obj[ oKey ]; }
                            }
                        }
                    }
                }


            } /* cartype OK */

            //Autótipus állandó eltárolása, hogy mindenképp választható legyen!
            if (
                obj['cartype'] &&
                typeof out[ obj['cartype'] ] !== 'undefined'
            ) {
                var M = out[ obj['cartype'] ];
                if ( M['cartype'].indexOf( obj['cartype'] ) <= -1 ) {
                    M.cartype.push( obj['cartype'] );
                }
            }

        }

        if ( filterResultsCount <= 0 ) { /* Ha nem volt eredmény! */
            //console.log('NEED RESET', out);
            //return false;
        }
//console.log('out: ', out);
        return out;
    };

    var setCarSizesHTML = function (data, prms) {
//TODO: BUG: Van, beállítva keresési szűrő, majd a következő beállítá kiütne olyat ami meg volt jelölve...ilyenkor újra kellene kerestetni...
        /* Most állítom be a paramétereket és a forrás adatokat */
//console.log('setCarSizesHTML', prms);
        if ( typeof prms !== 'undefined' && prms !== null ) { params = prms; }
        if ( typeof data !== 'undefined' && data !== null ) { all_data = data; }
        if ( !all_data ) {
            var appSrcData = app.getSearchData();
            if (
                typeof appSrcData !== 'undefined' &&
                typeof appSrcData['all_sizes'] !== 'undefined' &&
                typeof appSrcData['all_sizes']['A'] !== 'undefined'
            ) {
                all_data = appSrcData['all_sizes']['A'];
            }
          //  console.log('setCarSizesHTML missing all_data. Try auto determine', all_data);
        }
        if ( !params ) { console.log('setCarSizesHTML missing params'); }
 
        //$("#search_auto_by_size_btn").hide();
        //Ha nincs kiválasztva semmi, akkor mindent lekérek, egyéb esetben pedig amit kiválasztott...
        if ( searchFilter == 'intersect' ) {
            structurized['SZ'] = [];
            structurized['KT'] = [];
            structurized['OFF'] = [];
            var usedCarTypes = [];
            if (
                typeof params.cartype !== 'undefined' &&
                Array.isArray( params.cartype ) &&
                params.cartype.length
            ) {
                for ( var i in params.cartype ) {
                    var ctKey = params.cartype[i];
                    if ( typeof structurized[ ctKey ] !== 'undefined' ) {
                        usedCarTypes.push(ctKey);
                        structurized[ ctKey ] = structurize(all_data, ctKey);
                    }
                }
            }
            //console.log('usedCarTypes: ', usedCarTypes);
            if ( usedCarTypes.length == 0 ) {
                for (var ctKey in structurized) {
                    structurized[ ctKey ] = structurize(all_data, ctKey);
                }
            }
            //structurized['SZ'] = !params.cartype.length || !params.cartype || (params.cartype && params.cartype.indexOf('SZ') !== -1) ? structurize(data, 'SZ') : [];
            //structurized['KT'] = !params.cartype.length || !params.cartype || (params.cartype && params.cartype.indexOf('KT') !== -1) ? structurize(data, 'KT') : [];
            //structurized['OFF'] = !params.cartype.length || !params.cartype || (params.cartype && params.cartype.indexOf('OFF') !== -1) ? structurize(data, 'OFF') : [];
        } else if ( searchFilter == 'union' ) {
            structurized = structurizeAll(all_data);
//console.log('structurized', structurized);
            if (!structurized) { /* Nem volt eredmény a kérésre... */
                $('#form_auto_by_size input[type="reset"]').first().trigger('click');
                return false;
            }
        }
//console.log('structurized: ', searchFilter, structurized);
        $('input[name="fuel"]').val(null);
        $('input[name="wet"]').val(null);
        $('input[name="noise"]').val(null);
        /* A form összes select-jét kiürítem */
        $("#form_auto_by_size select").empty();
        $("#form_auto_by_size select").append('<option value="' + app.getLang('all_url') + '" >' + app.getLang('all') + '</option>');
        //$('#form_auto_by_size input[type="radio"], #form_auto_by_size input[type="checkbox"]:not(.car_type)').prop('disabled', true).prop('checked', false);
        $('#form_auto_by_size input[type="radio"]').prop('disabled', true).prop('checked', false);
        //$('#form_auto_by_size input[type="checkbox"]:not(.car_type)').prop('disabled', true).prop('checked', false);
        $('#form_auto_by_size input[type="checkbox"]').prop('disabled', true).prop('checked', false);
        //$("#form_auto_by_size input:radio, #form_auto_by_size input:checkbox").prop('disabled', false).prop('checked', false);
        $(".product-compare-label").html(app.getLang('btn_comparing') );

            
        //$("#form_auto_by_size .eu_rating_filter > label").removeClass('exists');
        /* FORM mezők kitöltése */
        setWidthHTML();
        setHeightHTML();
        setDiametertHTML();
        setCartypeHTML();
        //setSeasonHTML(structurized.season, structurized.season_name); //err
        setSeasonHTML();
        //setBrandHTML(structurized.brand, structurized.brand_name); //err
        setBrandHTML();
        setLiHTML();
        setSiHTML();
        setFuelHTML();
        setWetHTML();
        setNoiseHTML();
        setXlfrHTML(); /* TODO */
        setRunflatHTML(); /* TODO */
        setElectricHTML(); /* TODO */

        var SABSB = $("#search_auto_by_size_btn"); /* Keresés gomb */
        if ( SABSB.length ) {
            //if (!($("#width_A").val() ==  app.getLang('all_url') || $("#height_A").val() ==  app.getLang('all_url') || $("#diameter_A").val() ==  app.getLang('all_url') ) || $('#brand').val() !==  app.getLang('all_url') ) {
            /* if ( searchFiltersReady() ) {
                    SABSB.removeClass('steel_gray_3 outlined');
                    SABSB.addClass('yellow');
                    SABSB.prop('disabled', false);
                    SABSB.val(app.getLang('search'));
                } else {
                    SABSB.removeClass('yellow');
                    SABSB.addClass('btn steel_gray_3 outlined');
                    SABSB.prop('disabled', true);
                    SABSB.val(app.getLang('width_height_diameter_or_brand_must_be_selected') );
                }
                */
            SABSB.removeClass('steel_gray_3 outlined');
            SABSB.addClass('yellow');
            SABSB.prop('disabled', false);
            SABSB.val(app.getLang('search'));
        }
    };

    //var haveAllCarTypes = function () { };

    /* Metszet vagy únió módban működik */
    var intersectOrUnion = function (type) {
        if ( searchFilter == 'intersect' ) {
            return intersect(type);
        } else if ( searchFilter == 'union' ) { /* Ez a menő */
            return union(type);
        }
        return [];
    };

    var intersect = function (type) {
        //return union(type);
        /* paraméterben megadott típus értékeinek metszetét kell kiválogatni SZ,KT,OFF részekből! */
        /* A kommentelt rész sok hibát tartalmazott...pl: redundáns adatok! */
        //console.log('intersect type: ', type);
//console.log('intersect type: ', type, structurized);
        var array_data = [];
        for ( var ct in structurized ) {
            if ( typeof structurized[ ct ][ type ] !== 'undefined' ) {
                if ( structurized[ ct ][type] && structurized[ ct ][type].length > 0 ) {
                    array_data.push( structurized[ ct ][type] );
                }
            }
        }
        /*
            if (structurized['SZ'][type] !== undefined && structurized['SZ'][type].length) {
                array_data.push(structurized['SZ'][type]);
            }

            if (structurized['KT'][type] !== undefined && structurized['KT'][type].length) {
                array_data.push(structurized['KT'][type]);
            }

            if (structurized['OFF'][type] !== undefined && structurized['OFF'][type].length) {
                array_data.push(structurized['OFF'][type]);
            }
            */
//console.log('intersect, type: ', type,  ', array_data: ', array_data);
//console.log('intersect, type: ', type,  ', structurized: ', structurized);
        var iArr = [];
        //var w = [];
        if (array_data.length) {
            if ( Array.isArray(array_data[0]) ) {
                for ( var i in array_data[0] ) {
                    var row = array_data[0][i];
                    if ( iArr.indexOf(row) <= -1 ) { //Még nincs eltárolva!
                        var exist = true;
                        for ( var j=1; j < array_data.length; j++) {
                            if ( array_data[j].indexOf(row) <= -1 ) { //Nincs
                                exist = false;
                                break;
                            }
                        }
                        //Minden tömbben szerepel, uh tárolható!
                        if ( exist ) { iArr.push(row); }
                    }
                }
            } else {
                var sameAll = true;
                for ( var j=1; j < array_data.length; j++) {
                    if ( array_data[j] != array_data[0] ) {
                        sameAll = false;
                        break;
                    }
                }
                if ( sameAll ) { iArr.push(array_data[0]); }
            }
            iArr.sort();
            /*
                w = array_data.shift().filter(function (v) {
                    return array_data.every(function (a) {
                        return a.indexOf(v) !== -1;
                    });
                });
                w.sort();
                */
        }
        //console.log( 'w:', w );
//console.log( 'iArr:', iArr );
        return iArr; //w;
    };

    var union = function (type) {
        /* paraméterben megadott típus értékeinek únióját kell kiválogatni SZ,KT,OFF részekből! */
        /* A kommentelt rész sok hibát tartalmazott...pl: redundáns adatok! */
        //console.log('union type: ', type);
        var array_data = [];
        for ( var ct in structurized ) {
            if ( typeof structurized[ ct ][ type ] !== 'undefined' ) {
                if ( structurized[ ct ][type] && structurized[ ct ][type].length > 0 ) {
                    array_data.push( structurized[ ct ][type] );
                }
            }
        }
//console.log('union, type: ', type,  ', array_data: ', array_data);
        var uArr = [];
        if (array_data.length) {
            if ( Array.isArray(array_data[0]) ) {
                for ( var i=0; i < array_data.length; i++) {
                    for ( var j in array_data[i] ) {
                        var row = array_data[i][j];
                        if ( uArr.indexOf(row) <= -1 ) { //Még nincs eltárolva!
                            uArr.push(row);
                        }
                    }
                }
            } else {
                for ( var j=0; j < array_data.length; j++) {
                    var row = array_data[j];
                    if ( uArr.indexOf(row) <= -1 ) { //Még nincs eltárolva!
                        uArr.push(row);
                    }
                }
            }
            uArr.sort();
        }

//console.log( 'uArr:', uArr );
        return uArr;
    };

    /* Le lehet csekkolni, hogy a kereséshez elegendő feltétel van-e bepipálva */
    var searchFiltersReady = function () {
        return true;
        var widthA = $("#width_A");
        var heightA = $("#height_A");
        var diameterA = $("#diameter_A");
        var brand = $("#brand");
        if ( widthA.length && heightA.length && diameterA.length && brand.length ) {
            if (!(widthA.val() == app.getLang('all_url') || heightA.val() == app.getLang('all_url') || diameterA.val() == app.getLang('all_url') ) || brand.val() !== app.getLang('all_url') ) {
                //console.log('searchFiltersReady');
                return true;
            }
        }
        return false;
    };

    var setWidth = function (obj, w, cartype) {
//console.log(obj, w, cartype);
        if ($.inArray(obj.width, w) === -1
            //  && (params.cikktip == obj.cikktip || !params.cikktip)
            && (params.height == obj.height || !params.height)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setWidthHTML = function () {
        //var w = intersect('width');
        var w = intersectOrUnion('width'); 
        var widthA = $('#width_A');
        for (var i in w) {
            var obj = w[i];
            //var formattedWidth = ('00' + obj).substr(-3);
            var sel = (obj === params.width ? " selected " : "");
            widthA.append('<option ' + sel + ' value="' + obj + '">' + obj + '</option>');
        }
    };

    var setHeight = function (obj, h, cartype) {
        if ($.inArray(obj.height, h) === -1
            && (params.width == obj.width || !params.width)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setHeightHTML = function () {
        //var h = intersect('height');
        var h = intersectOrUnion('height');
        var heightA = $('#height_A');
        for (var i in h) {
            var obj = h[i];
            var sel = obj === params.height ? " selected " : "";
            //$('#height_A').append("<option " + sel + " value=\"" + obj + "\">" + obj + "</option>");
            heightA.append('<option ' + sel + ' value="' + obj + '">' + obj + '</option>');
        }
    };

    var setDiameter = function (obj, d, cartype) {
        if ($.inArray(obj.diameter, d) === -1
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (params.season == obj.season_code || !params.season)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setDiametertHTML = function () {
        //var d = intersect('diameter');
        var d = intersectOrUnion('diameter');
        var diameterA = $('#diameter_A');
        for (var i in d) {
            var obj = d[i];
            var sel = obj.toUpperCase() === params.diameter.toUpperCase()  ? " selected " : "";
            //$('#diameter_A').append("<option " + sel + " value=\"" + obj + "\">" + obj + "</option>");
            diameterA.append( '<option ' + sel + ' value="' + obj + '">' + obj + '</option>');
        }
    };

    var setCartype = function (obj, c, cartype) {
        if ($.inArray(obj.cartype, c) === -1
            //&& (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (params.season == obj.season_code || !params.season)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setCartypeHTML = function () {
        //var c = intersect('cartype');
        var c = intersectOrUnion('cartype');
        //console.log('setCartypeHTML', c);
        for ( var i in c ) {
            var obj = c[i];
            // if (params.cartype.indexOf(obj) !== -1) {
            $("#cartype_" + obj).prop('disabled', false);
            if (params.cartype.indexOf(obj) !== -1) {
                $("#cartype_" + obj).prop('checked', true);
            }
            //}
        }
    };
//if (setSeason(obj, struct.season, cartype) && obj.season_code) {

    var setSeason = function (obj, s, cartype) {
        if ($.inArray(obj.season_code, s) === -1
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setSeasonHTML = function () {
        /* 1-et kötelező lenne megjelölni */
        //var s = intersect('season');
        var s = intersectOrUnion('season');
        //console.log("s", s);
 

        switch(params.season){
            case app.getLang('summer_url'):
                params.season = 'N';
            break;
            case app.getLang('winter_url'):
                params.season = 'T';
            break;
            case app.getLang('all_seasons_url'):
                params.season = 'NEGY';
            break;
                
        }

        if (window.location.pathname.includes(app.getLang('summer_url')))
            params.season = 'N';

        if (window.location.pathname.includes(app.getLang('winter_url')))
            params.season = 'T';

        if (window.location.pathname.includes(app.getLang('all_seasons_url')))
            params.season = 'NEGY';

            
        for ( var i in s ) {
            var obj = s[i];
            $("#season_" + obj).prop('disabled', false);
            
            if (obj === params.season) {
                $("#season_" + obj).prop('checked', true);
            }
        }
    };

    var setBrand = function (obj, b, cartype) {
        if ($.inArray(obj.brand, b) === -1
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setBrandHTML = function () {
        //var b = intersect('brand');
        var b = intersectOrUnion('brand');
        var brandO = $('#brand');
        //   console.log( 'setBrandHTML', params.brand.toLowerCase() );
        $('.product_list__form' ).removeClass('mute-highlight');
        var paramsBrandLower = '';
        if ( typeof params.brand !== 'undefined' && params.brand ) {
            paramsBrandLower = params.brand.toLowerCase();
            $('.product_list__form' ).addClass('mute-highlight');

        }
        //TODO: brand_category beépítése...
        for (var i in b) {
            var obj = b[i];
            var sel = (obj.toLowerCase() === paramsBrandLower ? " selected " : "");
            //brandO.append("<option " + sel + " value=\"" + obj + "\">" + obj + "</option>");
            brandO.append('<option ' + sel + ' value="' + obj + '">' + obj + '</option>');
        }
    };

    var setLi = function (obj, l, cartype) {
        if ($.inArray(obj.li + "_" + obj.li_name, l) === -1
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.si == obj.si || !params.si)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    }

    var setLiHTML = function () {
        //var l = intersect('li');
        var l = intersectOrUnion('li');
        var liO = $('#li');
        for (var i in l) {
            var obj = l[i];
            var li_data = obj.split('_');
            var sel = li_data[0] === params.li ? " selected " : "";
            //liO.append("<option " + sel + " value=\"" + li_data[0] + "\">" + li_data[0] + " (" + li_data[1] + ")</option>");
            liO.append('<option ' + sel + ' value="' + li_data[0] + '">' + li_data[0] + ' (' + li_data[1] + ')</option>');
        }
    };

    var setSi = function (obj, s, cartype) {
        var siKey = null;
        var tmp = (obj.si_name).split('=');
        if ( tmp.length >= 2 ) {
            var tmp2 = ( tmp[1] ).split(' ');
            siKey = tmp2[0] + "_" + obj.si;
        }
        //if ( $.inArray(obj.si_name.substring(2, 5) + "_" + obj.si, s) === -1
        if ( siKey !== null && $.inArray(siKey, s) === -1
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setSiHTML = function () {
        //var s = intersect('si');
        var s = intersectOrUnion('si');
        var siO = $('#si'); /* Nem a gyümölcslé. Ciklusban ne kelljen már mindig ezt létrehozni... */
        var siMem = {};
        /* MSG: Vannak redundás adatok, nesze itt egy gyorspatch */
        for (var i in s) {
            var obj = s[i];
            var si_data = obj.split('_');
            //var sel = si_data[1] === params.si ? " selected " : "";
            //siO.append("<option " + sel + " value=\"" + si_data[1] + "\">" + si_data[1] + " = " + si_data[0] + " km/h </option>");
            if ( si_data.length >= 2 ) {
                var siIdx = (si_data[1]).toUpperCase();
                if ( typeof siMem[ siIdx ] === 'undefined' ) { siMem[siIdx] = { 'speed': si_data[0], 'index': siIdx }; }
            }
        }
        for (var siIdx in siMem ) {
            var siRow = siMem[siIdx];
            var sel = ( siIdx === params.si? " selected " : "");
            siO.append('<option ' + sel + ' value="' + siIdx + '" >' + siIdx + ' = ' + siRow['speed'] + ' km/h </option>');
        }
    };

    var setFuel = function (obj, f, cartype) {
        if ($.inArray(obj.fuel, f) === -1
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.wet == obj.wet || !params.wet)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setFuelHTML = function () {
        //var f = intersect('fuel');
        var f = intersectOrUnion('fuel');
        var fuel = $('#fuel');
        var last = false;
//console.log('setFuelHTML', f);
        for (var i in f) {
            var obj = f[i];
            if (obj) {
                if ( !fuel.hasClass("side_search")) {
                    var sel = "";
                    if (obj === params.fuel) { sel = " selected "; }
                    var fuelDescription = app.getLang('fuel_' + obj, '');
                    var fuelTitle = (fuelDescription? ' (' +fuelDescription+ ')':'');

                    $('#fuel').append( '<option ' + sel + ' value="' + obj + '" >' + obj + fuelTitle+ '</option>');
                } else {
                    if (obj === params.fuel) { $("#fuel").val(obj); }
                    last = additional(obj, 'fuel', last);
                }
            }
        }
    };

    var setWet = function (obj, w, cartype) {
        if ($.inArray(obj.wet, w) === -1
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setWetHTML = function () {
        //var w = intersect('wet');
        var w = intersectOrUnion('wet');
        var last = false;
        var last_val;
        var wetO = $('#wet');
        for (var i in w) {
            var obj = w[i];
            if (obj) {
                if (!wetO.hasClass("side_search")) {
                    var sel = obj === params.wet ? " selected " : "";
                    var wetDescription = app.getLang('wet_' + obj, '');
                    var wetTitle = (wetDescription? ' (' +wetDescription+ ')':'');

                    wetO.append('<option ' + sel + ' value="' + obj + '">' + obj + wetTitle + '</option>');
                } else {
                    if (obj === params.wet) { wetO.val(obj); }
                    last = additional(obj, 'wet', last);
                }
            }
        }
    };

    var setNoise = function (obj, n, cartype) {
        if ($.inArray(obj.noise_code, n) === -1
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.wet == obj.wet || !params.wet)
            && (params.fuel == obj.fuel || !params.fuel)
            && (obj.xlfr || !params.xflr)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setNoiseHTML = function () {
        //var n = intersect('noise');
        var n = intersectOrUnion('noise');
//console.log('setNoiseHTML', n);
        var last = false;
        var noiseO = $('#noise');
        var noiseHelper = {
            '1': app.getLang('noise_code_quiet', ''),
            '2': app.getLang('noise_code_moderate', ''),
            '3': app.getLang('noise_code_noisy', ''),
            'A': app.getLang('noise_code_quiet', ''),
            'B': app.getLang('noise_code_moderate', ''),
            'C': app.getLang('noise_code_noisy', '')
        };

        var noiseHelperReverse = { 
             'A' : '1' ,
             'B' : '2' ,
             'C' : '3',
        }; 


        n =  n.map(item => {
            return noiseHelperReverse[item]
        }).filter(item => typeof item  != 'undefined');
 
       
        for (var i in n) {
            var obj = n[i];
            if (obj) {
                if ( !noiseO.hasClass("side_search")) {
                    var sel = obj === params.noise ? " selected " : "";
                    var noiseTitle = (typeof noiseHelper[obj] !== 'undefined' && noiseHelper[obj]? ' ('+ noiseHelper[obj]+')':'' ) ;
                    noiseO.append('<option ' + sel + ' value="' + obj + '">' + obj + noiseTitle + '</option>');
                } else {
                    if (obj === params.noise) { noiseO.val(obj); }
                    last = additional(obj, 'noise', last);
                }
            }
        }
    };


    var setXlfr = function (obj, x, cartype) {
//console.log(obj, x, cartype);
        if (!x && obj.xlfr
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.wet == obj.wet || !params.wet)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.runflat || !params.runflat)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setXlfrHTML = function () {
        var xlfrO = $("#xlfr");
        var hasXLFR = false;
        var x = intersectOrUnion('xlfr');
        if ( Array.isArray(x) && x.join('') ) { hasXLFR = true; }
//console.log('setXlfrHTML: ', hasXLFR);
        //x = (structurized.SZ.xlfr !== undefined && structurized.SZ.xlfr) || (structurized.KT.xlfr !== undefined && structurized.KT.xlfr) || (structurized.OFF.xlfr !== undefined && structurized.OFF.xlfr) ? 1 : 0;
        /*
            for ( var ct in structurized ) {
                if ( typeof structurized[ct]['xlfr'] !== 'undefined' && structurized[ct]['xlfr'] ) { hasXLFR = true; break; }
            }
            */
        if ( hasXLFR ) {
            xlfrO.prop('disabled', false);
            xlfrO.prop("checked", app.base_params.xlfr);
        } else {
            xlfrO.prop('disabled', true);
            xlfrO.prop("checked", false);
        }
    };

    var setRunflat = function (obj, r, cartype) {
        if (!r && obj.runflat
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.wet == obj.wet || !params.wet)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xlfr)
            && (obj.electric || !params.electric)
        ) { return true; }
        return false;
    };

    var setRunflatHTML = function () {
        var runflatO = $("#runflat");
        var hasRunflat = false;
        var r = intersectOrUnion('runflat');
        if ( Array.isArray(r) && r.join('') ) { hasRunflat = true; }
//console.log('setRunflatHTML: ', r, hasRunflat);
        //r = (structurized.SZ.runflat !== undefined && structurized.SZ.runflat) || (structurized.KT.runflat !== undefined && structurized.KT.runflat) || (structurized.OFF.runflat !== undefined && structurized.OFF.runflat) ? 1 : 0;
        /*
            for ( var ct in structurized ) {
                if ( typeof structurized[ct]['runflat'] !== 'undefined' && structurized[ct]['runflat'] ) { hasRunflat = true; break; }
            }
            */
        if ( hasRunflat ) {
            runflatO.prop('disabled', false);
            runflatO.prop("checked", app.base_params.runflat);
        } else {
            runflatO.prop('disabled', true);
            runflatO.prop("checked", false);
        }
        /*
            r = (structurized.SZ.runflat !== undefined && structurized.SZ.runflat) || (structurized.KT.runflat !== undefined && structurized.KT.runflat) || (structurized.OFF.runflat !== undefined && structurized.OFF.runflat) ? 1 : 0;
            var runflatO = $("#runflat");
            if (r)
                runflatO.prop('disabled', false);
            else {
                runflatO.prop('disabled', true);
                runflatO.prop("checked", false);
            }
            runflatO.prop("checked", app.base_params.runflat);
            */
    };

    var setElectric = function (obj, r, cartype) {
        if (!r && obj.electric
            && (params.width == obj.width || !params.width)
            && (params.height == obj.height || !params.height)
            && (cartype == obj.cartype || !params.cartype || params.cartype.length == 0)
            && (params.diameter == obj.diameter || !params.diameter)
            && (params.season == obj.season_code || !params.season)
            && (params.brand.toLowerCase() == obj.brand.toLowerCase() || !params.brand)
            && (params.li == obj.li || !params.li)
            && (params.si == obj.si || !params.si)
            && (params.wet == obj.wet || !params.wet)
            && (params.fuel == obj.fuel || !params.fuel)
            && (params.noise == obj.noise_code || !params.noise)
            && (obj.xlfr || !params.xlfr)
            && (obj.runflat || !params.runflat)
        ) { return true; }
        return false;
    };

    var setElectricHTML = function () {
        var electricO = $("#electric");
        var hasElectric = false;
        var r = intersectOrUnion('electric');
        if ( Array.isArray(r) && r.join('') ) { hasElectric = true; }
//console.log('setRunflatHTML: ', r, hasRunflat);
        //r = (structurized.SZ.runflat !== undefined && structurized.SZ.runflat) || (structurized.KT.runflat !== undefined && structurized.KT.runflat) || (structurized.OFF.runflat !== undefined && structurized.OFF.runflat) ? 1 : 0;
        /*
            for ( var ct in structurized ) {
                if ( typeof structurized[ct]['runflat'] !== 'undefined' && structurized[ct]['runflat'] ) { hasRunflat = true; break; }
            }
            */
        if ( hasElectric ) {
            electricO.prop('disabled', false);
            electricO.prop("checked", app.base_params.electric);
        } else {
            electricO.prop('disabled', true);
            electricO.prop("checked", false);
        }
        /*
            r = (structurized.SZ.runflat !== undefined && structurized.SZ.runflat) || (structurized.KT.runflat !== undefined && structurized.KT.runflat) || (structurized.OFF.runflat !== undefined && structurized.OFF.runflat) ? 1 : 0;
            var runflatO = $("#runflat");
            if (r)
                runflatO.prop('disabled', false);
            else {
                runflatO.prop('disabled', true);
                runflatO.prop("checked", false);
            }
            runflatO.prop("checked", app.base_params.runflat);
            */
    };

    var additional = function (obj, name, last) {
//console.log('additional: ', obj, ', name: ', name, ', last: ', last);
        var aKey = obj.toLowerCase() + "_" + name;
        var aO = $('#'+aKey);
        if (!last) {
            aO.prop('checked', true).prop('disabled', false);
        }
        //aO.parent("label").addClass('exists');
        aO.closest("label").addClass('exists');
        if (obj === app.base_params[name]) { last = true; }
        return last;
    };
	
    return {
        searchFiltersReady: searchFiltersReady,
        saveSelData: saveSelectedData,
        setCarSizesHTML: setCarSizesHTML,
        carSizesChange: function (event, el) {
            var jel = $(this);
            if ( typeof el !== 'undefined' ) {
                if ( el instanceof jQuery ) { jel = el; }
                else { jel = $(el); }
            }

            app.URI = app.getLang('search_by_sizes_url') + "/" + searchBySizesModule.saveSelData(app.base_params.cikktip); 
			app.URI = app.getLang('search_by_sizes_url') + "" + createURIFromSearchParams( app.base_params );
            
			 

            setCarSizesHTML(null, app.base_params); /* MSG: Itt nincs új all_data, szóval nem értem miért adjuk át neki mindig!!! */
            if ( jel.hasClass("side_search") ) {

                var formData = $('#form_auto_by_size').serialize();
                var searchObj = {
                    'type': SEARCH_TYPE_TYRE_BY_SIZE,
                    'data': null,
                    'form_id': 'form_auto_by_size',
                    'form_data': formData
                };
                eraseCookie('last_search');
                createCookie('last_search', JSON.stringify(searchObj), 1);

                history.pushState({
                    title: 'searchList',
                    method: "show",
                    url: app.URI,
                    params: {
                        title: {form: '#form_auto_by_size', data: formData },
                        method: {}
                    }
                }, null, "/" + app.URI);
                searchList('#form_auto_by_size').show();
                // }
            }
        },

        /* LABEL: WET && FUEL && NOISE */
        carAdditionalSizesChange: function (event) {
            var o = $(this);
            //var t = "#" + o.parent(".eu_rating_filter").attr("id");
            var t = "#" + o.closest(".eu_rating_filter").attr("id");
            var tO = $(t);
            var dHidden = tO.attr('data-hidden');
            var firstInputId = o.find('input').first().attr('id');
            if ( dHidden && firstInputId ) {
                var inp = $("#" + dHidden);
                var valArr = firstInputId.split('_');
                valArr[0] = valArr[0].toUpperCase();
                event.stopPropagation();
                event.preventDefault();
                event.stopImmediatePropagation();
                if (
                    inp.length &&
                    o.hasClass("exists") &&
                    dHidden == valArr[1]
                ) {
                    inp.val( valArr[0] );
                    $(t + " label.active input").prop("checked", !0);
                    $(t + " label.inactive input").prop("checked", !1);
                    // var field = inp.attr('name');
                    // app.base_params[field] = inp.val();
//console.log('carAdditionalSizesChange', t, valArr);
                    app.URI = app.getLang('search_by_sizes_url') + "/" + searchBySizesModule.saveSelData(app.base_params.cikktip);                    
					app.URI = app.getLang('search_by_sizes_url') + "" + createURIFromSearchParams( app.base_params );
                    
                    //setCarSizesHTML(all_data, app.base_params);
                    setCarSizesHTML(null, app.base_params);
                    if ( searchFiltersReady() ) {
                        history.pushState({
                            title: 'searchList',
                            method: "show",
                            url: app.URI,
                            params: {title: {form: '#form_auto_by_size', data: $('#form_auto_by_size').serialize()}, method: {}}
                        }, null, "/" + app.URI);
                        searchList('#form_auto_by_size').show();
                    }
                }
            }
        },
        all_data: function () {
            return all_data;
        },
        buildURL: buildURL,
        baseSizes: function (cikktip, data) {
            $("#width_" + cikktip).val(data.settings.base_width);
            $("#height_" + cikktip).val(data.settings.base_height);
            $("#diameter_" + cikktip).val(data.settings.base_diameter);
            $("#search_auto_by_size_btn").removeClass('steel_gray_3 outlined');
            $("#search_auto_by_size_btn").addClass('yellow');
            $("#search_auto_by_size_btn").prop('disabled', false);
            $("#search_auto_by_size_btn").val( app.getLang('search') );
        }

    };
})();


var searchByCarTypeModule = function () {
    var cartype_url = '/cartypes';
    var s_data = app.getSearchData().search_keys;
    var last_search = {};

    /* Tabon ki lett választva autótipus szerinti */
    var setCarSizes = function (data) {
        //form[id="form_auto_by_cartype_tyre"] select[id="car_brand_tyre"]
        //form[id="form_auto_by_cartype_wheel"] select[id="car_brand_wheel"]
        var cb = $(".car_brand");
        cb.each(function () {
            var o = $(this);
            //var p = o.parent().parent();
            var p = o.closest('form');
            var oId = o.attr('id');
            if ( !o.val() ) {
                o.empty();
                o.append('<option value="">...</option>');
                $.each(data, function (key, val) {
                    if (val == 'TARTALÉK' && langCode == 'ro') {
                        val = app.getLang('reserve_option')
                    }
                    if (val == 'EGYÉB' && langCode == 'ro') {
                        val = app.getLang('other_option')
                    }
                    o.append('<option value="' + key + '">' + val + '</option>');
                });
                var carModel = p.find(".car_model").first();
                cartype( '#' + carModel.attr('id') );
            }
//console.log('setCarSizes', oId, carModel.attr('id') );
        });
//console.log('setCarSizes', cb.val(), data);
    };

    /* Gyártó kiválasztva, model feltöltése */
    var cartype = function (element) {
        var langCode = app.getSettingData('lang_code');
        var jEl = $(element);
        //var p = jEl.parent().parent();
        var p = jEl.closest('form');
        var selectedCarBrand = p.find('.car_brand').val();
//console.log('cartype', element, jEl, selectedCarBrand);
        var carModel = p.find(".car_model");
        carModel.empty().append('<option value="">...</option>').prop("disabled", true);;
        p.find(".car_year").empty().append('<option value="">...</option>').prop("disabled", true);;
        p.find(".car_make").empty().append('<option value="">...</option>').prop("disabled", true);;
        p.find(".search_car_sizes").empty();
        if ( selectedCarBrand ) {
            carModel.prop("disabled", false);
            $.getJSON(cartype_url + "/" + selectedCarBrand, function (d) {

                if (langCode == 'ro') {
                    d[selectedCarBrand.charAt(0).toUpperCase() + selectedCarBrand.slice(1).toLowerCase()] = app.getLang(selectedCarBrand+'_option')
                }
         
                $.each(d, function (k, v) {
                    carModel.append('<option value="' + k + '">' + v + '</option>');
                });
            });
        } /* else { console.log('cartype error: select brand'); } */
    };

    var caryear = function (element) {
        var langCode = app.getSettingData('lang_code');
        var jEl = $(element);
        //var p = jEl.parent().parent();
        var p = jEl.closest('form');
        var selectedCarBrand = p.find('.car_brand').val();
        var selectedCarModel = jEl.val();
//console.log('caryear', element, selectedCarBrand, selectedCarModel);
        var carYear = p.find(".car_year");
        carYear.empty().append('<option value="">...</option>').prop("disabled", true);;
        p.find(".car_make").empty().append('<option value="">...</option>').prop("disabled", true);;
        p.find(".search_car_sizes").empty();
        if ( selectedCarBrand && selectedCarModel ) {
            carYear.prop("disabled", false);
            $.getJSON(cartype_url + "/" + selectedCarBrand + "/" + selectedCarModel, function (d) {
                $.each(d, function (k, v) {
                    if (langCode == 'ro') {
                        d[selectedCarBrand.charAt(0).toUpperCase() + selectedCarBrand.slice(1).toLowerCase()] = app.getLang(selectedCarBrand+'_option')
                    }
             
                    $.each(d, function (k, v) {
                        carYear.append('<option value="' + k + '">' + v + '</option>');
                    });
                });
            });
        } else { console.log('caryear error: select brand, model'); }
    };

    var carmake = function (element) {
        var langCode = app.getSettingData('lang_code');
        var jEl = $(element);
        //var p = jEl.parent().parent();
        var p = jEl.closest('form');
        var selectedCarBrand = p.find('.car_brand').val();
        var selectedCarModel = p.find('.car_model').val();
        var selectedCarYear = jEl.val();
//console.log('caryear', element, selectedCarBrand, selectedCarModel, selectedCarYear);
        var carMake = p.find(".car_make");
        carMake.empty().append('<option value="">...</option>').prop("disabled", true);;
        p.find(".search_car_sizes").empty();
        if ( selectedCarBrand && selectedCarModel && selectedCarYear ) {
            $.getJSON(cartype_url + "/" + selectedCarBrand + "/" + selectedCarModel + "/" + selectedCarYear, function (d) {
                carMake.prop("disabled", false);
                $.each(d, function (k, v) {
                    if (langCode == 'ro') {
                        if (selectedCarBrand != 'EGYÉB') {
                            d[selectedCarBrand.charAt(0).toUpperCase() + selectedCarBrand.slice(1).toLowerCase()] = app.getLang(selectedCarBrand+'_option')
                        }else{
                            d['A-rendszám-megjegyzésébe-írd-be-a-típust'] = app.getLang('platenumber_match_text')
                        }
                    }
             
                    $.each(d, function (k, v) {
                        carMake.append('<option value="' + k + '">' + v + '</option>');
                    });
                });
            });
        } else { console.log('carmake error'); }
    };

    var carsizes = function (element) {
        var jEl = $(element);
        //var par = jEl.parent().parent();
        var par = jEl.closest('form');
        var all_data = '';
        var carBrand = par.find('select.car_brand').first().val();
        var carModel = par.find('select.car_model').first().val();
        var carYear = par.find('select.car_year').first().val();
        var carMake = par.find('select.car_make').first().val();
//console.log('carsizes', carBrand, carModel, carYear, carMake);
        var cikktip = par.find('input[name="item_type"]').val();
        app.base_params.cikktip = cikktip;
        par.find(".search_car_sizes").empty();
        var searchBtn = par.find('.search_btn-cartype');
        //Tiltom a kereső gombot
        searchBtn.removeClass('yellow');
        searchBtn.addClass('steel_gray_3 outlined');
        if (
            carBrand &&
            carModel &&
            carYear &&
            carMake
        ) {

            $.getJSON(cartype_url + "/" + carBrand + "/" + carModel + "/" + carYear + "/" + carMake, function (d) {
                all_data += "<h4>" + app.getLang('sizes') + ":</h4>";
                all_data += '<ul class="nude btn steel_gray_1 shadow">';
//console.log(app.domain() , d);
                var sizesCountOf = 0;
                var autoIncId = 0;
                $.each(d, function (k, v) {
                    var sizes = null;
                    if (app.domain() == 'sk' || app.domain() == 'cz') { /* SK || CZ */
                        if ((cikktip == 'C' && v.lemez) || (cikktip == 'A' && v.meretek)) {
                            sizes = (cikktip == 'C' ? v.lemez.replace('|', ',') : v.meretek);
                            sizesCountOf++;
                        }
                    } else { /* HU || RO */
                        if ((cikktip == 'C' && (v.felni_kod || v.lemez)) || (cikktip == 'A' && v.meretek)) {
                            sizes = (cikktip == 'C' ? v.felni_kod + (v.felni_kod && v.lemez ? "," : "") + v.lemez.replace('|', ',') : v.meretek);
                            sizesCountOf++;
                        }
                    }
                    if ( sizes ) {
                        var radId = 'car_sizes_rad_' + v.col + '_' + autoIncId;
                        //all_data += '<span data-style="white-space: nowrap;"><input data-autoid="' + v.autoid + '" data-string="' + v.col + '" data-sizes="' + v.meretek + '" name="car_sizes" type="radio" value="' + sizes + '" />' + v.col + (v.meretek ? '&quot;, (' + v.meretek + ')' : '') + '</span><br/>';
                        all_data += '<li class="txt-left m-4-b" style="display: block;">\n\
                        <input class="fa" id="'+radId+'" data-autoid="' + v.autoid + '" data-string="' + v.col + '" data-sizes="' + v.meretek + '" name="car_sizes_'+jEl.attr('id')+'" type="radio" value="' + sizes + '" />\n\
                        <label for="'+radId+'">' + v.col + "&quot;" + (v.meretek ? ', (' + v.meretek + ')' : '') + '</label>\n\
                        </li>';
                        autoIncId++;
                    }
                });
                all_data += "</ul>";
//sizesCountOf = 0; //Debug
                if ( sizesCountOf == 0 ) {
                    all_data = '<div class="box btn red"><h4>' + app.getLang('empty_list') +'</h4></div>';
                } else { /* Gomb előhozása */
                    searchBtn.addClass('yellow');
                    searchBtn.removeClass('steel_gray_3 outlined');
                }
                par.find(".search_car_sizes").html( all_data );
            });
        } else { console.log('carsizes error'); }
    };

    var lastSearch = function (type) {
        if (typeof type === 'undefined') { type = 'tyre'; }
        last_search.car_brand = $("#car_brand_" + type).val();
        last_search.car_model = $("#car_model_" + type).val();
        last_search.car_year = $("#car_year_" + type).val();
        last_search.car_make = $("#car_make_" + type).val();
        last_search.car_inch = $("#carsize_val").val();
        $.extend(app.base_params, last_search);
    };
    return {

        buildURL: function (data, type) {
//console.log('searchByCarTypeModule::buildURL', data, type, s_data);
//products/search/car_type/...
            var urlBlocks = [];
            var urlParams = [];
            var urlParamsStr = '';
            urlBlocks.push(s_data.item_type[data.item_type]);
            urlBlocks.push(data.col);
            urlBlocks.push( $("#car_brand_" + type + " option:selected").val().replace(" ", "_") );
            urlBlocks.push( $("#car_model_" + type + " option:selected").val() );
            urlBlocks.push( $("#car_year_" + type + " option:selected").val() );
            urlBlocks.push( $("#car_make_" + type + " option:selected").val() );
            if ( typeof data['autoid'] !== 'undefined' ) {
                urlParams.push('autoid='+data['autoid']);
            }
            if ( urlParams.length ) {
                urlParamsStr = '?' + urlParams.join('&');
            }
            return urlBlocks.join('/') + urlParamsStr;
            //return s_data.item_type[data.item_type] + "/" + data.col + "/" + $("#car_brand_" + type + " option:selected").val().replace(" ", "_") + "/" + $("#car_model_" + type + " option:selected").val() + "/" + $("#car_year_" + type + " option:selected").val() + "/" + $("#car_make_" + type + " option:selected").val()
        },
        setCarSizes: setCarSizes,
        carsizes: carsizes,
        carmake: carmake,
        caryear: caryear,
        cartype: cartype,
        lastSearch: lastSearch,
        last_search: last_search
    }
}

/* INICIALIZÁLÁS INDUL!!! */
$(app.init(), app.events());

/*o---> Modules by Pages <---o*/

function showMain() { /*o---> Main Page <---o*/
    var handleUpperBannners = function () {
        //MSG: CSS-ben megoldva...
        /*
        $(".upper-banner").each(function (k, ob) {
            var oo = $(this);
            if ( typeof oo.attr('data-ref') !== 'undefined') {
                oo.css('cursor', 'pointer');
            }
        });
        */
    }

    $(document).off('click', ".upper-banner").on('click', ".upper-banner", function (e) {
        var o = $(this);
        var dRef = o.attr('data-ref');
        if ( typeof o.attr('data-ref') !== 'undefined' ) {
            if ( o.attr('data-external') === '1') {
                location = dRef;
            } else {
                location = "/ajanlatok/" + dRef;
            }
        }
    });
    /*
var slick_rand = function (element) {
    var total = $(element).length;
    return Math.floor(Math.random() * total);
}
*/

    return {
        show: function () {
//console.log('showMain');
            handleUpperBannners();

            var search_sizes;
            var cikktip = 'A';

            app.searchPromise().done(function (data) {
                var appBaseParams = app.getBaseParams();
                //console.log('appBaseParams', appBaseParams);
                //var appSettings = app.getSettingsData();
                //console.log('appSettings', appSettings);
//console.log('showMain/show/searchPromise', data);
                app.base_params = {
                    'width': '',
                    'height': '',
                    'diameter': '',
                    'cikktip': '',
                    'cartype': [ ],
                    'season': '',
                    'brand': '',
                    'li': '',
                    'si': '',
                    'fuel': '',
                    'wet': '',
                    'noise_code': '',
                    'xlfr': '',
                    'runflat': '',
                    'electric': ''
                };
                /*
                app.base_params['season'] = data.settings.base_season;
                app.base_params['cikktip'] = data.settings.base_cikktip;
                cikktip = data.settings.base_cikktip;
                if ( typeof data.settings.base_cartype === 'string' ) {
                    app.base_params['cartype'].push( data.settings.base_cartype );
                } else if ( typeof data.settings.base_cartype === 'object' && Array.isArray(data.settings.base_cartype) ) {
                    app.base_params['cartype'] = data.settings.base_cartype;
                }
                */
                app.base_params['season'] = appBaseParams.season;
                app.base_params['cikktip'] = appBaseParams.cikktip;
                cikktip = appBaseParams.cikktip;
                if ( typeof appBaseParams.cartype === 'string' ) {
                    app.base_params['cartype'].push( appBaseParams.cartype );
                } else if ( typeof appBaseParams.cartype === 'object' && Array.isArray(appBaseParams.cartype) ) {
                    app.base_params['cartype'] = appBaseParams.cartype;
                }

                /*
if ( app.isDevelopment() ) {
    app.base_params.width = appBaseParams.width;
    app.base_params.height = appBaseParams.height;
    app.base_params.diameter = appBaseParams.diameter;
}
*/
//console.log('app.base_params', app.base_params);

                searchBySizesModule.setCarSizesHTML(data.all_sizes[cikktip], app.base_params);
                //cikktip = data.settings.base_cikktip;
                //searchBySizesModule.baseSizes(cikktip,data);
                /* Gumi vagy Acél és alufelni */
                $(".product_filter__level_1 .tabs a").off("click").on("click", function (t) {
                    var o = $(this);
                    //var p = o.parent();
                    var p = o.closest('li');
                    //wheels or tyres
                    var layerObj = $();
                    var layername = o.attr("data-load");
                    if ( typeof layername !== 'undefined' && layername ) { var layerObj = $("#" + layername); }
                    t.preventDefault();
//console.log('click', layername);
                    /* Menü elemek frissítése */
                    $(".product_filter__level_1 .tabs li").removeClass("active");
                    p.addClass("active");
                    /*
                    $(".product_search").hide();
                    $(".product_filter__level_2 ul li").removeClass("active");
                    $(".product_filter__level_2 ul li:first").addClass("active");
                    $(".product_filter__level_3 > div").show();
                    $("#search-by_cartype").hide();
                    layerObj.slideToggle('slow');
                    */
                    var closeObjects = $(".product_search");
                    var closeObjCount = closeObjects.length;
                    var closeObjLoop = 0;
                    closeObjects.slideUp(500, function () {
                        closeObjLoop++;
                        //console.log('Closed', closeObjLoop, 'Max', closeObjCount  );
                        if ( closeObjLoop >= closeObjCount ) {
                            layerObj.slideDown(500);
                            cikktip = layerObj.attr('data-ptype');
                            app.base_params.cikktip = cikktip;
                            if ( layername == 'wheel_search' ) { /* acél és alufelni */
                                searchByCarTypeModule().setCarSizes(data.cars);
                            }
                        }
                    });
                });

                /* Méret szerint vagy Autó szerint */
                $(".product_filter__level_2 .tabs a").off("click").on("click", function (t) {
                    if(typeof $(this).attr('href') != 'undefined')
                        return true;
                    var o = $(this);
                    //var p = o.parent();
                    var p = o.closest('li');
                    var layerObj = $();
                    var layername = o.attr("data-load");
                    if ( typeof layername !== 'undefined' && layername ) { var layerObj = $("#" + layername); }
                    t.preventDefault();

//console.log('click', layername);
                    //$(".product_filter .toggle").removeClass("on"); /* Ezt mi a fenéért kapcsolom ki??? */
                    $(".product_filter__level_2 .tabs li").removeClass("active");
                    p.addClass("active");
                    //$(".product_filter__level_3 > div").hide();
                    //layerObj.show();

                    var closeObjects = $(".product_filter__level_3 > div");
                    var closeObjCount = closeObjects.length;
                    var closeObjLoop = 0;
                    console.log(closeObjects)

                    closeObjects.fadeOut(150, function () {
                        closeObjLoop++;
                        //console.log('Closed', closeObjLoop, 'Max', closeObjCount  );
                        if ( closeObjLoop >= closeObjCount ) {
                            layerObj.fadeIn(200);
                            if ( layername == "search-by_size" ) { /* Méret szerinti */
                                $(".toggle").fadeIn(100); /* Részletes keresés */
                            } else { /* search-by_cartype: Autó szerinti */
                                $(".toggle").fadeOut(100);
                                searchByCarTypeModule().setCarSizes(data.cars);
                            }
                        }
                    });
                });
                
                var hash = $(location).attr('hash').replace('#', '');
                $('[data-load="'+hash+'"]').click();

                if (app.URI === app.getLang('wheel') ) {
                    searchByCarTypeModule().setCarSizes(data.cars);
                }

                $(".car_brand").off("change").on("change", function (e) {
                    searchByCarTypeModule().cartype("#" + $(this).attr('id'));
                });

                $(".car_model").off("change").on("change", function (e) {
                    searchByCarTypeModule().caryear("#" + $(this).attr('id'));
                });

                $(".car_year").off("change").on("change", function (e) {
                    searchByCarTypeModule().carmake("#" + $(this).attr('id'));
                });

                $(".car_make").off("change").on("change", function (e) {
                    searchByCarTypeModule().carsizes("#" + $(this).attr('id'));
                });

                /* Autó szerinti keresés */
                $(".search_btn-cartype").off("click").on("click", function (e) {
                    e.preventDefault();
                    var o = $(this);

                    o.attr('id');
                    var p = o.closest('form');
                    cikktip = o.attr("data-ptype");

                    $("#item_type").val(cikktip);
                    var colObj = p.find('.search_car_sizes input[type="radio"]:checked');
                    if ( colObj.length == 1 ) {
                        var colId = colObj.val();
                        var autoId = colObj.attr('data-autoid');
                        var col = colObj.attr('data-string');
                        //$("#item_sizes").val( colObj.attr('data-sizes') );
                        p.find('input[name="item_sizes"]').val( colObj.attr('data-sizes') );
                        //$("#autoid").val( autoId );
                        p.find('input[name="autoid"]').val( autoId );
                        $("#carsize_val").val( colObj.attr('data-string') );

                        var data_sizes = colObj.attr('data-sizes');
                        var size_info = data_sizes.split("/");
                        var size_info2 = size_info[1].split("R");

                        //----- 2020.12.09
                        app.base_params.season = "";
                        app.base_params.width = size_info[0];
                        app.base_params.height = size_info2[0];
                        app.base_params.diameter = size_info2[1];
                        //-----

                        app.base_params.col = colId;
                        app.base_params.cikktip = cikktip;
                        var type = (cikktip == 'C' ? 'wheel' : 'tyre');
                        // $(".content_div").fadeOut('slow', function () {
                        $(".preloader").addClass('on');
                        $("html, body").animate({
                            scrollTop: 0
                        }, "fast");
                        var uri = searchByCarTypeModule().buildURL({
                            'item_type': cikktip,
                            'col': colId,
                            'autoid': autoId
                        }, type); /* (cikktip == 'C' ? 'wheel' : 'tyre') */
                        //var uriA = uri.replace(/\//g, '|').replace('gumi|', '');
                        app.URI = 'products/search/car_type/' + uri;
//console.log('app.URI', app.URI);




                        try{
                            dLayer.eventTracker( {

                                'eventCategory': 'Search',
                                'eventAction': ( cikktip == 'A' ? 'tyre_by_car' : 'tyre_by_wheel' ),
                                'eventLabel': uri.substring(uri.indexOf('|') + 1) + "|" + col,
                                'eventValue': undefined,
                                'eventNIflag': false
                            })
                        }catch(e){}
                        var formId = 'form_auto_by_cartype_' + type;
                        var formData = $('#' + formId).serialize();
                        var searchObj = {
                            //'type': type + '_by_cartype',
                            'type': ( cikktip == 'A' ? SEARCH_TYPE_TYRE_BY_CARTYPE : SEARCH_TYPE_WHEEL_BY_CARTYPE ),
                            'data': null,
                            'form_id': formId,
                            'form_data': formData
                        };
                        eraseCookie('last_search');
                        createCookie('last_search', JSON.stringify(searchObj), 1);
                        //var lastSearch = JSON.parse(readCookie('last_search'));
                        //console.log('lastSearch', lastSearch);


                        app.setStatic(false);
                        //var type = (cikktip == 'C' ? 'wheel' : 'tyre');
                        searchByCarTypeModule().lastSearch(type);
                        document.title = app.URI.indexOf('car_type') === -1 ? app.base_params.width + "/" + app.base_params.height + "R" + app.base_params.diameter : app.base_params.car_brand + " " + app.base_params.car_model + " " + app.base_params.car_year + " " + app.base_params.car_make + " " + app.base_params.car_inch + "\"";

                        /*  history.pushState({
                                title: 'searchList',
                                method: "show",
                                url: app.URI,
                                params: {
                                    title: {
                                        form: '#' + formId,
                                        data: formData,
                                        type: cikktip
                                    }, method: {}
                                }
                            }, null, "/" + app.URI); */
                        window.location =  "/" + app.URI;
                        //searchList('#' + formId, null, cikktip).show();
                    } else {
                        /* TODO: alert */
                        $.fn.alert(
                            app.getLang('label_alert'),
                            app.getLang('please_fill_in_all_details'),
                            'OK',
                            null,
                            null,
                            null
                        );
                    }
                    return false;
                });
            }).fail(function (e) {
                console.log("error" + JSON.stringify(e));
                $(".preloader").removeClass('on');
            });

//SLIDEREK INITIAIZÁLÁSA
            app.slick();
            /*
            var t = '<button type="button" class="slick-prev"><span class="icon icon--arrow-2-left"></span></button>',
            o = '<button type="button" class="slick-next"><span class="icon icon--arrow-2-right"></span></button>';
            $(".slick.main").slick({
                autoplay: true,
                autoplaySpeed: 5000,
                dots: !0,
                //prevArrow: t,
                //nextArrow: o
                arrows: false,
                //initialSlide: slick_rand(".upper-banner")
                initialSlide: 0
            }).css({height: 'auto', 'overflow': 'inherit', 'opacity': 1});

            $(".slick.offers").slick({
                autoplay: true,
                autoplaySpeed: 8000,
                mobileFirst: !0,
                dots: !0,
                infinite: !0,
                //prevArrow: t,
                //nextArrow: o,
                arrows: false,
                //initialSlide: Math.floor(slick_rand(".slick-track img") / 3),
                initialSlide: 0,
                responsive: [{
                    breakpoint: 640,
                    settings: {
                        slidesToShow: 3,
                        slidesToScroll: 3
                    }
                }]
            }).css({ height: 'auto', 'overflow': 'inherit', 'opacity': 1});
            //.show('size', {}, 300)
            //.css({height: 'auto', 'overflow': 'inherit'}); //.fadeOut(200);
            */
        }
    };
}

function searchList(form_element, fields, cikktip) {
    if ( typeof fields === 'undefined' ) { fields = null; }
    if ( typeof cikktip === 'undefined' ) { cikktip = 'A'; }
    //var sform_data = !fields ? $(form_element).serialize() : fields;
    var sform_data = (fields ? fields : $(form_element).serialize() );
//console.log('searchList', sform_data);
    var qsTMP = app.query_string('?'+decodeURIComponent(sform_data));
//console.log('qsTMP', qsTMP);
    var mainAutoId = (typeof qsTMP['autoid'] !== 'undefined' && qsTMP['autoid']? qsTMP['autoid']:'');
//console.log('mainAutoId', mainAutoId);
    var search_data = null;
    var data_type;
    var VAT = null;
    var items_per_page = 12;



    var searchResponse = function () {
        VAT = parseFloat( app.getSettingData( 'vat_' + app.domain() ) );
        var search_res = $(".search_results_div");
        app.search_promise(sform_data).done(function (data) {
            //console.log('search_promise', data);
            search_data = data;
            listData(data);
            $('.content_div').fadeIn('slow', function () {
                $(".preloader").removeClass('on');
            });

            $('.pagination').first().removeClass('link');
            var count = null;
            if(typeof data.count != 'undefined' && parseInt(data.count)>0){

                count = parseInt(data.count);

                $('.pagination').first().addClass('link');
            }

            paginateEvents(data,count);

            // search


            if(typeof data.data != 'undefined'){
                $('.product_list__actions').first().before(
                    `<div class='product_list__header'>
                        <h1>${data.meta.title}</h1>  
                    </div>`
                )

                if(data.meta.content.top!=null){
                    $('.product_list__header').append(`<p>${data.meta.content.top?.description}</p>`);
                }


                if(data.meta.content.bottom!=null){
                    $('.paginate').after(
                        ` <div id="bottom_desc">
                                <h3>${data.meta.content.bottom.name}</h3>  
                                <p>${data.meta.content.bottom.description}</p>
                            </div>`
                    )
                }

                document.title = data.meta.title;
            }



            $(document).off("click", ".btn--submit_comparing").on("click", ".btn--submit_comparing", function (e) {
                //app.URI = 'products/compare/list';
                history.pushState({
                    title: 'Compare',
                    method: "showList",
                    url: app.URI,
                    params: {title: {data: null, type: null}, method: {}}
                }, null, "/" + app.URI);

                Compare().showItems(e, data, data_type);
            });

            $(document).off('click', '.product_list__item .product_list_image, .product_list__item .product_list__item__details')
                .on('click', ".product_list__item .product_list_image,   .product_list__item .product_list__item__details", function (e) {
                    var o = $(this).closest('.product_list__item');
                    var productId = o.attr('data-id');
                    var autoId = o.attr('data-autoid');

                    e.preventDefault();


                    if(typeof search_data.data != 'undefined')
                        search_data = search_data.data;


                    var sKey = '_' + ( typeof productId !== 'undefined' && productId? productId:'');
                    if ($("body").hasClass("comparing")) {
                        Compare().checkItems(e, this, data);
                    } else if (
                        typeof productId !== 'undefined' && productId &&
                        typeof search_data[ sKey ] !== 'undefined'
                    ) {
                        var selected_data = search_data[ sKey ];
                        //var selected_position = $.fn.getObjectKeyIndex(search_data, productId) % items_per_page;
                        var selected_position = $.fn.getObjectKeyIndex(search_data, sKey) % items_per_page;

                        //  $(".content_div").fadeOut('fast', function () {
                        $("html, body").animate({
                            scrollTop: 0
                        }, "fast");
                        //$(this).fadeIn('fast', function () {
                        $(".preloader").addClass('on');
                        var keys = app.getSearchData().search_keys;
                        var urlParams = [ 'id=' + selected_data['KOD'] ]; /* Ez mindig kell */
                        var urlBlocks = [ app.getLang('product_url') ]; /* mindig ezzel kezdünk */

                        if ( data_type == 'wheel' ) {
                            urlBlocks.push( app.getLang('wheel') );
                            urlBlocks.push( ( selected_data['brand'] ).replace(/\s/g, "_") + "-" + (selected_data.name).replace(/\s/g, "_") );
                            if ( autoId ) {
                                urlParams.push('autoid='+autoId);
                            }
                        } else {
                            urlBlocks.push( app.getLang('tyre_url') );
                            urlBlocks.push( selected_data['brand'].toLowerCase() );
                            urlBlocks.push( selected_data['pattern'].replace(/\s/g, "").toLowerCase() );
                            urlBlocks.push( selected_data["width"] );
                            urlBlocks.push( selected_data["height"] + "R" + selected_data["diameter"] + " " + selected_data['li'] + selected_data['si'] );
                            urlBlocks.push( keys['season'][ selected_data['season_code'] ] );
                        }

                        //app.URI = app.getLang('product_url') + '/' + (data_type == 'wheel' ? app.getLang('wheel') +"/" + selected_data.brand + "-" + selected_data.name + "/" + "?id=" + selected_data['KOD'] + "&autoid=" + productId : app.getLang('tyre_url') + "/" + selected_data['brand'].toLowerCase() + '/' + selected_data['pattern'].replace(" ", '').toLowerCase() + "/" + selected_data["width"] + "/" + selected_data["height"] + "R" + selected_data["diameter"] + "  " + selected_data['li'] + selected_data['si'] + "/" + keys['season'][ selected_data['season_code'] ] + "/?id=" + selected_data['KOD']);
                        //app.URI = app.getLang('product_url') + '/' + (data_type == 'wheel' ? app.getLang('wheel') +"/" + selected_data.brand + "-" + selected_data.name + "/" + "?id=" + selected_data['KOD'] + "&autoid=" + autoId : app.getLang('tyre_url') + "/" + selected_data['brand'].toLowerCase() + '/' + selected_data['pattern'].replace(" ", '').toLowerCase() + "/" + selected_data["width"] + "/" + selected_data["height"] + "R" + selected_data["diameter"] + "  " + selected_data['li'] + selected_data['si'] + "/" + keys['season'][ selected_data['season_code'] ] + "/?id=" + selected_data['KOD']);
                        //  app.URI = urlBlocks.join("/") + "/?" + urlParams.join('&');
                        app.URI = selected_data.url;


                        var searchType = '';
                        var searchData = '';
                        var lastSearch = JSON.parse(readCookie('last_search'));
                        //console.log('lastSearch', lastSearch);
                        if (
                            typeof lastSearch === 'object' && lastSearch
                        ) {
                            if ( typeof lastSearch['type'] !== 'undefined' && lastSearch['type'] ) { searchType = lastSearch['type']; }
                            if ( typeof lastSearch['form_data'] !== 'undefined' && lastSearch['form_data'] ) {
                                searchData = lastSearch['form_data'];
                                /* MSG+ATTN: car_sizes paramot elhagyni */
                                searchData = (app.add_url_param('?'+searchData, 'car_sizes', null)).substr(1);
                            }
                        }


                        try{
                            dLayer.productClick(selected_data,{'actionField': {
                                    'list': (searchType?searchType:'undefined'),
                                    'searchData': (searchData?searchData:'undefined')
                                }});
                        }catch(e){

                        }


                        window.location.href    = app.URI;
                        return true;

                        history.pushState({
                            title: 'productProfile',
                            method: "show",
                            url: app.URI,
                            params: {title: {data: selected_data, type: data_type}, method: {}}
                        }, null,   app.URI);

                        productProfile(selected_data, data_type).show();

                        // });
                        // });
                    }
                });
            $("#product_list__filter_btn").html( app.getLang('change_filter') );
            $(".product_list__filter h3").append( app.getLang('change_filter') );
        }).fail(function (e) {
            console.log("error" + JSON.stringify(e));
            $(".preloader").removeClass('on');
        });
    };

    var paginateEvents = function (data, count = null) {
        /* TODO: Ismert probléma, ha lapozunk majd terméket vagy fizetést kiválasztunk és vissza mennénk, nem működik a paginateClick mert más template van betöltve */
        $(document).off("click", '.page_number a').on('click', '.page_number a', function (e) {
            e.preventDefault();
            var o = $(this);
            //var prevPageNum = 1;
            var pgNum = parseInt(o.text());
            if ( isNaN(pgNum) ) { pgNum = 1; }
            pgNum = Math.max(pgNum, 1);
            //var urlParams = app.query_string(app.URI);
            //if ( typeof urlParams['page'] !== 'undefined' ) { prevPageNum = parseInt(urlParams['page']); }
            var url = app.add_url_param(app.URI, 'page', pgNum);
            app.URI = url;
//console.log('paginateEvents::click', app.URI);
            /*
            history.pushState({
                title: 'searchList',
                method: "paginateClick",
                url: app.URI,
                params: {title: {}, method: {form: pgNum, data: data, load: 0}}
                //params: {title: {}, method: {form: prevPageNum, data: data, load: 0}}
            }, null, "/" + app.URI);
            */
            history.pushState({}, null, "/" + app.URI);

            paginateClick(pgNum, data, 0);
            return false;
        });

        $(document).off("click", '.page_arrow_left').on('click', '.page_arrow_left', function (e) {
            e.preventDefault();
            paginateClickArrowLeft($(this), data, 0);
            return false;
        });

        $(document).off("click", '.page_arrow_right').on('click', '.page_arrow_right', function (e) {
            e.preventDefault();
            paginateClickArrowRight($(this), data, 0);
            return false;
        });
    };

    var paginate = function (data, load, page_no,count) {

        if(typeof data.data != 'undefined')
            data = data.data;

        /* adat elemek betöltése */
        if ( typeof load === 'undefined') { load = 1; }
        if ( typeof page_no === 'undefined') { page_no = 1; }
        else {
            page_no = parseInt(page_no);
            if ( isNaN(page_no) ) { page_no = 1; }
        }
//console.log('paginate', data, load, page_no);
        //var items_page = 10; /* items per pages */
        var items_count = Object.keys(data).length;

        if ( count> 0) { items_count = count;     }

        var real_pages_count = Math.ceil(items_count / items_per_page); /* Max valódi oldalszám */
        page_no = Math.max(page_no, 1); /* 1-nél nem lehet kisebb */
        page_no = Math.min(page_no, real_pages_count); /* max-nál nem lehet nagyobb */
        var pages_count = 5; /* megjelenített oldalszámok mennyisége */
        var pages_count_middle = Math.ceil(pages_count / 2); /* bal és jobb gomb megjelenítéséhez használható korlátoknak kell */
        var pages_count_max = Math.min(pages_count, real_pages_count); /* Max ennyi látható oldalszám lehet */
        var pages_lo_limit = real_pages_count; //extrém érték. Ha a page_no ennél nagyobb akkor balra megjelenítés
        var pages_hi_limit = 1; //extrém érték. Ha a page_no ennél kissebb akkor a jobbra megjelenítése
        if ( pages_count < real_pages_count ) { /* Több oldal van mint amennyi egyszere megjeleníthető */
            pages_lo_limit = pages_count_middle;
            pages_hi_limit = Math.max(real_pages_count - pages_count_middle + 1, 1);
        }
        /* Kezdem balról az igazítást */
        var pages_no_from = Math.max((page_no - pages_count_middle + 1), 1);
        var pages_no_to = (pages_no_from + pages_count_max - 1);
        if ( pages_no_to > real_pages_count ) { /* Túlléptünk egy határt */
            pages_no_from = Math.max(real_pages_count - pages_count_max + 1, 1);
        }



        if (load) { /* Lista elemek betöltése */
            var search_res = $(".search_results_div");
            //search_res.html(app.templates()['search_result_frame']);
            search_res.html( app.getTemplate('search_result_frame', false) );
            
            /* Rendezés */
            $("#span_order").html(app.getLang('order_by') );
            $('#sort_list').empty();
            var qsTMP = app.query_string();
            var defOrderBy = (typeof qsTMP['order_by'] !== 'undefined' && qsTMP['order_by']? qsTMP['order_by']:'price_asc' );
            $('#sort_list').append( $('<option value="price_asc">'+app.getLang('asc_price')+'</option>') );
            $('#sort_list').append( $('<option value="price_desc">'+app.getLang('desc_price')+'</option>') );
            $('#sort_list').append( $('<option value="name_asc">'+app.getLang('asc_name')+'</option>') );
            $('#sort_list').append( $('<option value="name_desc">'+app.getLang('desc_name')+'</option>') );
            $('#sort_list').val(defOrderBy);
            /* *** */
            if (cikktip == 'A') {
                listTires(data, page_no);
            } else if (cikktip == 'C') {
                listWheel(data, page_no);
            }
        }
        var productListItem = $(".product_list__item");
        if (items_count <= items_per_page) {
            $(".paginate").hide();
        } else {
            var left_arrow = $(".page_arrow_left.icon--arrow-2-left").parent();
            var right_arrow = $(".page_arrow_right.icon--arrow-2-right").parent();

            if ( page_no > pages_lo_limit ) { /* Balra gomb megjelenítése */
                left_arrow.show();
            } else {
                left_arrow.hide();
            }
            if ( page_no < pages_hi_limit ) { /* Jobbra gomb megjelenítése */
                right_arrow.show();
            } else {
                right_arrow.hide();
            }
            var pagesHTML = '';
            for (var i = 0; i < pages_count_max; i++) {
                var actPage = pages_no_from + i;
                pagesHTML += '<li class="page_number' + (page_no == actPage ? ' active' : '') + '"><a href="javascript: void(0);">' + actPage + '</a></li>';
            }
            left_arrow.after(pagesHTML);
        }

        var searchType = '';
        var searchData = '';
        var lastSearch = JSON.parse(readCookie('last_search'));
        //console.log('lastSearch', lastSearch);
        if (
            typeof lastSearch === 'object' && lastSearch
        ) {
            if ( typeof lastSearch['type'] !== 'undefined' && lastSearch['type'] ) { searchType = lastSearch['type']; }
            if ( typeof lastSearch['form_data'] !== 'undefined' && lastSearch['form_data'] ) {
                searchData = lastSearch['form_data'];
                /* MSG+ATTN: car_sizes paramot elhagyni */
                searchData = (app.add_url_param('?'+searchData, 'car_sizes', null)).substr(1);
            }
        }

        /* GTM START */

        var actCurrency = app.getSettingData( 'currency_' + app.domain() );

        if(typeof data.data != 'undefined'){
            data =  data.data;
        }

        dLayer.productImpression(data,dLayer.objPaginator(Object.keys(data),page_no,items_per_page).data,searchType,searchData,page_no);
        /* Összes termék elem eltüntetése */
        productListItem.hide();
        //$(".product_list__item").hide();
        /* Aktuális oldal elemeinek megjelenítése */
        var itemOrder = 0;
        for (var i = (page_no - 1) * items_per_page; i < (page_no * items_per_page); i++) {
            //var productItem = $(".product_list__item").eq(i);
            var productItem = productListItem.eq(i);
            if ( productItem.length ) {
                itemOrder++;
                var productCode = productItem.attr('data-id');
                var pKey = '_' + (typeof productCode !== 'undefined' && productCode ? productCode:'');
                //console.log(productCode, data);
                //console.log(i , itemOrder, page_no , productCode);


                /* productItem.show(); */
                productItem.fadeIn(500); 
            }
        }


    };

    var listData = function (data) {

        count = Object.keys(data.data).length;
        if(typeof data.count != 'undefined' && parseInt(data.count)>0)
            count = parseInt(data.count);


        var selected_data = app.base_params;
        if (data) {
            paginate(data, 'undefined', 'undefined',count);
            //  $(".product_list__item__price").prepend( app.getLang('in_stock') + ": ");
            $('.result-count').html(count);
            //getSizes(sizes, base_cikktip, selected_data['season'], selected_data['car_type'], selected_data['width'], selected_data['height'], selected_data['diameter']);
            //searchBySizesModule.setCarSizesHTML(searchBySizesModule.all_data(), app.base_params);
//TODO
            searchBySizesModule.setCarSizesHTML(null, app.base_params);
        } else {
            search_res.html(app.getLang('empty_list'));
        }
    };

    var listTires = function (data, page_no) {
        if (typeof page_no === 'undefined') { page_no = 1; }
        else {
            page_no = parseInt(page_no);
            if ( isNaN(page_no) ) { page_no = 1; }
        }
        //var vatMulti = 1 + parseFloat(app.getSettingData( 'vat_' + app.domain() ));
        var vatMulti = 1 + VAT;

        var uspFeat = app.getLang('usp_featured', 'feat.');
        var uspProd = app.getLang('usp_product', 'product');
        var uspBrand = app.getLang('usp_brand', 'brand');

        data_type = 'tyre';

        products =  data;
        if(typeof data.data != 'undefined'){
            products =  data.data;


        }


        var i = 0;
        var listItemTemplate = app.getTemplate( 'list_item', false );
        var searchResults = $(".search_results");
        $.each(products, function (key, val) {
//console.log('val', val);
            var item_no = val.stock >= 4 ? '4+' : val.stock;
            var cart_max = val.stock >= 8 ? '8' : val.stock;
            //$(".search_results").append( app.getTemplate( 'list_item', false ) );
            searchResults.append( listItemTemplate );
            var productListItem = searchResults.find('.product_list__item').eq(i);
            productListItem.addClass('tire');

            var highlight_class = "";
            if (val.noise_tag == 1 && val.grip_tag == 1 && val.fuel_tag == 1 && val.fuel == "A" && val.wet == "A" && (val.noise_code == "1" || val.noise_code == "A" )) {
                highlight_class = 'highlight-grip';
            } else if (val.noise_tag == 1 && val.grip_tag == 1 && val.wet == "A" && (val.noise_code == "1" || val.noise_code == "A" )) {
                highlight_class = 'highlight-grip';
            } else if (val.grip_tag == 1 && val.fuel_tag == 1 && val.fuel == "A" && val.wet == "A" ) {
                highlight_class = 'highlight-grip';
            } else if (val.noise_tag == 1 && val.fuel_tag == 1 && val.fuel == "A" && (val.noise_code == "1" || val.noise_code == "A" )) {
                highlight_class = 'highlight-fuel';
            } else if (val.noise_tag == 1 && (val.noise_code == "1" || val.noise_code == "A" )) {
                highlight_class = 'highlight-noise';
            } else if (val.grip_tag == 1 && val.wet == "A") {
                highlight_class = 'highlight-grip';
            } else if (val.fuel_tag == 1 && val.fuel == "A") {
                highlight_class = 'highlight-fuel';
            }


            var productListItemDetails = productListItem.find(".product_list__item__details");
            var productListImage = productListItem.find(".product_list_image");
 
            var spanElem = "";
            if (val.noise_tag == 1 && val.grip_tag == 1 && val.fuel_tag == 1 && val.fuel == "A" && val.wet == "A" && (val.noise_code == "1" || val.noise_code == "A" )) {
                //spanElem = '<span class="highlight-all-info">' +app.getLang('best_noise_level_rating') +' / ' + app.getLang('best_wet_grip') + ' / ' + app.getLang('best_fuel_consumption') + '</span>';
                spanElem = '<span class="highlight-info">' + app.getLang('best_wet_grip') + '</span>';
            } else if (val.noise_tag == 1 && val.grip_tag == 1 && val.wet == "A" && (val.noise_code == "1" || val.noise_code == "A" )) {
                //spanElem = '<span class="highlight-grip-noise-info">' + app.getLang('best_wet_grip') + ' / ' +app.getLang('best_noise_level_rating') +'</span>';
                spanElem = '<span class="highlight-info">' + app.getLang('best_wet_grip') + '</span>';
            } else if (val.grip_tag == 1 && val.fuel_tag == 1 && val.fuel == "A" && val.wet == "A" ) {
                //spanElem = '<span class="highlight-grip-fuel-info">' + app.getLang('best_wet_grip') + ' / ' + app.getLang('best_fuel_consumption') + '</span>';
                spanElem = '<span class="highlight-info">' + app.getLang('best_wet_grip') + '</span>';
            } else if (val.noise_tag == 1 && val.fuel_tag == 1 && val.fuel == "A" && (val.noise_code == "1" || val.noise_code == "A" )) {
                spanElem = '<span class="highlight-info">' + app.getLang('best_fuel_consumption') + '</span>';
            } else if (val.noise_tag == 1 && (val.noise_code == "1" || val.noise_code == "A" )) {
                spanElem = '<span class="highlight-info">' +app.getLang('best_noise_level_rating') +'</span>';
            } else if (val.grip_tag == 1 && val.wet == "A") {
                spanElem = '<span class="highlight-info">' + app.getLang('best_wet_grip') + '</span>';
            } else if (val.fuel_tag == 1 && val.fuel == "A") {
                spanElem = '<span class="highlight-info">' + app.getLang('best_fuel_consumption') + '</span>';
            }
            if(val.color!=null){
                highlight_class = 'highlight-brand';
                spanElem = `<span class="highlight-info">${val.top_label}</span>`;
            }

            productListItem.addClass(highlight_class);
            productListItem.prepend(spanElem);

            /*
            if (1 === 2) {
                $(".product_list__item__checker").after('<div class="product_list__item__label">' + app.getLang('best_price') + '</div>');
            }
            */
            if ( productListItem.length == 1 ) {
                var carType = '';
                if ( val.cartype == 'SZ' ) {
                    carType = '<i class="fa fa-car" aria-hidden="true"></i>';
                } else if ( val.cartype == 'KT' || val.cartype == 'UT' ) {
                    carType = '<i class="fa fa-truck" aria-hidden="true"></i>';
                } else if ( val.cartype == 'OFF' ) {
                    carType = '<i class="fa fa-ship" aria-hidden="true"></i>';
                } else if ( val.cartype == 'SUVC' ) {
                    carType = app.getLang('suv');
                }

                productListItem.attr('data-id', val.KOD);
                if (val.black_friday == 1) {
                    productListImage.prepend('<div class="highlited-link-100"><img class="highlighted-badge child-badge bf-badge"  src="/assets/media/images/gumi_hu_bfd_2020_200p.png" ></div>');
                }

                productListItem.find('input[type="checkbox"][name="product[]"]').val(val.KOD);
                //productListItem.find(".product_list_image").append('<img src="' + app.http2https(val.image_url) + '" />');
                var productListImage = productListItem.find(".product_list_image");

                //var uri = "/" + val.product_url + "/" + val.tyre_url + "/" + val.brand + "/" + $.trim(val.pattern) + "/" + val.width + "/" + val.height + "R" + val.diameter + val.li + val.si + "/" + val.season + "/?id=" + val.KOD;
                productLink = $("<a></a>");


                //productLink.attr("href", "");
                productListImage.append(productLink)
                if(val.image_url!='')
                    productLink.append('<div class="product-img-list__wrapper"><img class="product-img-list" src="' + app.http2https(val.image_url) + '" alt="'+val.name+'" /></div>');
                //productListImage.append('<img src="' + app.http2https(val.image_url) + '" alt="'+val.name+'" />');

                if(val.coupon_image !=''){ 

                    if(val.template == '')
                        val.template = val.url;

                    productListItem.find('.thumbnail.product_list_image').append('<a href="'+val.template+'" ><img class="productlist-sale-ribbon" alt="'+val.coupon_title+'" src="/assets/media/images/'+val.coupon_image+'" align="right" /></a>');

                }

                var date_temp = new Date();
                var date_temp2 = new Date("2021-06-01 00:00:00");


             



                /* USP product */
                if ( typeof val['priority'] !== 'undefined' && parseInt(val['priority']) > 0 ) {
                    productListItem.find('.product_list__item__tag__image').attr('src', '/svg?file=tag2line.svg&border=f33&line1='+uspFeat+'&line2='+ ( parseInt(val['priority']) > 50? uspProd : uspBrand ) ).attr('data-priority', val['priority']);
                }

                /* Contisafe */
                if ( false && app.domain() == 'hu' && ['continental', 'barum', 'semperit'].indexOf( (val.brand).toLowerCase() ) > -1 ) {
                    productListImage.append('<img src="/assets/media/images/contisafe.png" alt="contisafe" />');
                }

                /* COUPON */
                var coupon = app.couponMatch(val.brand, val.season_code, val.stock);
                if ( coupon !== false ) {
                    productListImage.append('<img  class="productlist-sale-' + coupon['type'] + '" src="/assets/media/images/' + coupon['image'] + '" alt="coupon_image" />');
                }

                var badges = '';

                if (val.badges != "" && typeof val.badges != "undefined" && val.badges != null) {

                    val.badges.forEach((element, key) => {
                        badges += '<div class="highlited-link-'+key+'"><a href="'+element.url+'" target="_blank"><img class="highlighted-badge" src="/assets/media/images/badges/' + element.badge + '" width="42px" height="42px"></a></div>';
                    });

                    productListImage.prepend(badges);
                }
                /* Valami FALKEN-es bedrótozás */
                /*
                if ( app.domain() == 'hu' && val.KOD == '22545R17YFK510X' ) {
                    productListImage.append('<img style="position:absolute; left:0;top:initial;right:initial;bottom: 0" src="/assets/media/images/falken_sommerreifentest_2019_hu_gunmihu_64x127.png">');
                }
                */
                //productListItem.find('.product_list_name').html(val.brand + " " + val.pattern + " " + " " + app.getLang('tyre') );

                //var uri = "/" + val.product_url + "/" + val.tyre_url + "/" + val.brand + "/" + $.trim(val.pattern) + "/" + val.width + "/" + val.height + "R" + val.diameter + val.li + val.si + "/" + val.season + "/?id=" + val.KOD;
                productLink = $("<a></a>");
                //productLink.attr("href", "#");
                //console.log(productLink);
                //console.log(productListItemDetails.find(".box"));
                // var linkElem = productListItemDetails.find(".box").prepend(productLink);
                productListItemDetails.find('.product_list_name').text(val.pattern)
                // var productName = productListItemDetails.find('.product_list_name').text(val.pattern);
                $("<span class='size not-important'>" + val.size + " ("+val.li+") "+val.si+" </span>").insertAfter(productListItem.find('.product_list_name'));

                productLink.prepend( productName );

                try {
                    productListItem.find(".brand-logo").css("backgroundImage", "url(/assets/media/images/brands/" + val.brand.toLowerCase() + ".webp)");
                } catch (error) {
                    
                }
                //productListItem.find('.product_list_name').html(val.brand + " " + val.name + " " + " " + app.getLang('tyre') );
                /* productListItem.find('.product_list_params').html(
                    "<div>" + carType + "</div>" +
                    "<div><i class='fa fa-thermometer-full' aria-hidden='true'></i>" + val.fuel + "</div>" +
                    "<div><i class='fa fa-handshake-o' aria-hidden='true'></i>" + val.wet + "</div>" +
                    "<div>" + (val.noise? "<i class='fa fa-volume-up' aria-hidden='true'></i>" + val.noise + " dB": "") + "</div>" +
                    "<div><i class='fa fa-warning' aria-hidden='true'></i> " + val.li + " (" +val.li_name+ ")" + "</div>" +
                    "<div><i class='fa fa-tachometer' aria-hidden='true'></i> " + val.si + " (" +val.si_name+ ")" + "</div>"
                );
                */
                productListItem.find('.product_list_param').html(
                    `<span> <i class="params-icon fuel"> </i> <i class="params-circle fuel-${val.fuel}"> ${val.fuel}</i> </span>
                    <span> <i class="params-icon wet" > </i> <i class="params-circle wet-${val.wet}">${val.wet}</i></span>
                    <span> <i class="params-icon noise"> </i> <i class="params-noise"> ${val.noise}</i></span>`
                );


                productListItem.find('.item_no').html(item_no);
                productListItem.find('.product_list__item__price p').html( app.getFormattedPrice( val.price * vatMulti, true ) );
                productListItem.find('.product_list_label').html('<img src="' + app.http2https(val.badge) + '" alt="product_label" />');
                productListItem.find('.product_list__item__season').removeClass('season-T season-N season-NEGY').addClass('season-'+val.season_code);
                
                
                if (val.is_electric) {
                    productListItem.find('.product_list__item__electric').addClass('electric-badge');
                }

                var productListItemActions = productListItem.find('.product_list__item__actions');
                var productListItemActionsQtyO = productListItemActions.find('input.product-number');

                productListItemActionsQtyO
                    .data('category', val.cicsop)
                    .data('pid', val.KOD)
                    .data('price', val.price)
                    .attr('max', cart_max)
                    .attr('value', ((cart_max < 4) ? cart_max : 4)  )
                    .after(' ' + app.getLang("b_pcs"));

                    if(parseInt(val.stock) <= 0){
            
                        productListItem.find('.product_list__item__price').css('color','white');
                        productListItem.find('.in_stock').addClass('hidden')
                        productListItem.find('.out_of_stock').removeClass('hidden')
                    }
                    

                    

                productListItemActions.find("button span").after("&nbsp;" + app.getLang("in_the_cart"));


                var productListItemCompareBox = productListItemActions.find('input.product-compare');

                productListItemCompareBox
                    .attr('data-compare-id', val.KOD)
                    .attr('value', val.KOD  );

                if (val.compared) {
                    productListItemCompareBox.prop('checked', true);
                }

                if(app.domain() == 'ro'){
                    $('.add_to_cart').find('.fa-cart-plus').removeClass('fa-2x')
                    $('.add_to_cart').find('.fa-cart-plus').css('font-size','20px')
                }
                /*
                productListItem.find('.product_list_description').html(
                    '<span class="txt-capital">'+app.getLang('features') + '</span>: ' + val.pattern + "<br/><br/>"
                    + val.brand_tags.replace(/\|/g, "<br/>") + '<br/><br/><br/>'
                    + '<span class="txt-capital">' + app.getLang('brand') + '</span>: ' + val.brand + "<br/><br/>"
                    + ( val.brand_desc? '&rdquo;' + val.brand_desc.substring(0, 200) + '...&rdquo; <span class="txt-capital">' + app.getLang('more') + '</span>' : '')
                );
                */
                i++;

            }

            $(document).off('click', '.order-btn');
            $(document).on('click', '.order-btn', function (e) {
                console.log('add_to_cart::static',e,val);
                e.preventDefault();

                var id = $(this).parents('.product_list__item').data("id");
                $.post("/ajaxLoader.php?module=AllParams&type=get_products", {list: [id]}, function(data) {

                    var object = {};
                    for(var kod in data) {
                        object = data[kod];
                        break;
                    }



                    data = {...data,...{'quantity': $("#product-number").val()}}

                    //console.log(dLayer);
                    data = object;

                    app.cart().saveToCart(data);


                    //addGTMDataLayer(dataLayerObj, DL_LOG);
                }, 'json');

                return false;
            });
        });
        $(".product_list__item__btn--more_info").show();
        $(".product_list__compare_btn").show();

        //addGTMDataLayer(dataLayerObj, DL_LOG);
    };

    /* TODO+ATTN: ÁTNÉZNI */
    /* TODO+ATTN: ÁTNÉZNI */
    /* TODO+ATTN: ÁTNÉZNI */
    var listWheel = function (data, page_no) {
        if (typeof page_no === 'undefined') { page_no = 1; }
        else {
            page_no = parseInt(page_no);
            if ( isNaN(page_no) ) { page_no = 1; }
        }
        //var vatMulti = 1 + parseFloat(app.getSettingData( 'vat_' + app.domain() ));
        var vatMulti = 1 + VAT;

        /* GTM START */
        /*
        var actCurrency = app.getSettingData( 'currency_' + app.domain() );
        var dataLayerObj = {
            'event': 'productImpression',
            'ecommerce': {
                'currencyCode': actCurrency,
                'impressions': []
            },
            'listPage': page_no
        };
        */

        var uspFeat = app.getLang('usp_featured', 'feat.');
        var uspProd = app.getLang('usp_product', 'product');
        var uspBrand = app.getLang('usp_brand', 'brand');

        data_type = 'wheel';
        var i = 0;
        var listItemTemplate = app.getTemplate( 'list_item', false );
        var searchResults = $(".search_results");

        products =  data;
        if(typeof data.data != 'undefined'){
            products =  data.data;

        }


        $.each(products, function (key, val) {

            //var val = v;

            var item_no = val.stock >= 4 ? '4+' : val.stock;
            //$(".search_results").append( app.getTemplate( 'list_item', false ) );
            searchResults.append( listItemTemplate );
            var productListItem = searchResults.find('.product_list__item').eq(i);
            productListItem.addClass('wheel');
            /*
            if (1 === 2) {
                $(".product_list__item__checker").after('<div class="product_list__item__label">' + app.getLang('best_price') + '!</div>');
            }
            */
            var productListItemActionsQtyO = productListItem.find('input.product-number');

            productListItemActionsQtyO
                .data('category', val.cicsop)
                .data('pid', val.KOD)
                .data('price', val.price)
                .attr('max', 8)
                .after(' ' + app.getLang("b_pcs"));

            productListItem.find(".pcs-text").html(app.getLang("b_pcs"));

            $(".add_to_cart").html(`<span class="fa fa-cart-plus fa-2x"></span>&nbsp; <span class="text">${app.getLang('in_the_cart')}</span>`);
            productListItem.find(".brand-logo").css("backgroundImage", "url(/assets/media/images/brands/" + val.brand.toLowerCase() + ".webp)");
            if ( productListItem.length == 1 ) {
                productListItem.attr('data-id', val.KOD);
                if ( mainAutoId ) {
                    productListItem.attr('data-autoid', mainAutoId);
                }

                if (val.black_friday == '1') {
                    productListItem.find('.padding--md').prepend('<img src="/assets/media/images/bf_badge.png" align="right" />');
                }
                productListItem.find('input[type="checkbox"][name="product[]"]').val(val.KOD);
                //productListItem.find(".product_list_image").append('<img src="' + app.http2https(val.image_url) + '" />');
                var productListImage = productListItem.find(".product_list_image");
                productListImage.append('<img src="' + app.http2https(val.image_url) + '" alt="'+val.name+'" />');

                /* USP product */
                if ( typeof val['priority'] !== 'undefined' && parseInt(val['priority']) > 0 ) {
                    productListItem.find('.product_list__item__tag__image').attr('src', '/svg?file=tag2line.svg&border=f33&line1='+uspFeat+'&line2='+ ( parseInt(val['priority']) > 50? uspProd : uspBrand ) ).attr('data-priority', val['priority']);
                }

                productListItem.find('.product_list_name').html(val.brand);

                $("<small class='not-important txt-capital'>"+  (val.type == 'steel' ? app.getLang('steel_wheel') : app.getLang('alloy_wheel') ) +"</small>").insertAfter(productListItem.find('.product_list_name'));
                $("<span class='size not-important txt-capital'>"+val.name+"</span>").insertAfter(productListItem.find('.product_list_name'));
                // $("<span class='size not-important txt-capital'>"+  val.wheel_sizes +"</span>").insertAfter(productListItem.find('.product_list_name'));
                productListItem.find('.product_list__item__season').removeClass('season-T season-N season-NEGY');
                productListItem.find('.product_list_params').html(
                    '<span class="txt-capital">' + (val.type == 'steel' ? app.getLang('steel_wheel') : app.getLang('alloy_wheel') ) + "</span>"

                );
                //  productListItem.find('.item_no').html(item_no);
                productListItem.find('.product_list__item__price p').html( app.getFormattedPrice( val.price * vatMulti, true ) );
                //  $('.product_list_label').eq(i).html('<img src="' + val.cimke + '">');
                //  $('.product_list_description').eq(i).html('Tulajdonságok: ' + val.pattern + "<br><br>" + val.brand_tags_hu.replace(/\|/g, "<br>") + '<br><br><br>Márkáról: ' + val.brand + "<br><br>" + val.brand_desc_hu.substring(0, 200) + "... TÄ‚Â¶bb");
                i++;

            }
        });
        /* TODO: nem bizti, hogy ezeket el kell tüntetni */
        $(".product_list__item__btn--more_info").hide();
        $(".product_list__compare_btn").hide();

        //addGTMDataLayer(dataLayerObj, DL_LOG);

    };

    var paginateClick = function (th, data, load) {

        var pagiPari = $('.pagination');


        if(pagiPari.hasClass('link')){
            var url = app.add_url_param(app.URI, 'page', th);
            app.URI = url;
            window.location = "/" + app.URI;
        }else{
            $('.page_number').remove();
            paginate(data, load, th);
            $("html, body").animate({
                scrollTop: 0
            }, "fast");
        }

    };

    var paginateClickArrowLeft = function (th, data, load) {
        var page = null;
        var pagiPari = th.closest('.pagination');
        if ( pagiPari.length ) {
            var activePageO = pagiPari.find('.active a');
            var activePage = parseInt(activePageO.text());
            if ( isNaN(activePage) ) { activePage = 1; }
            page = Math.max(activePage - 1, 1);
        }

        var url = app.add_url_param(app.URI, 'page', page);
        app.URI = url;

        if(pagiPari.hasClass('link')){
            window.location = "/" + app.URI;
        }else{
            app.URI = url;
            history.pushState({
                title: 'searchList',
                method: "paginateClick",
                url: app.URI,
                params: {title: {}, method: {form: page, data: data, 'load': load}}
            }, null, "/" + app.URI);

            $("html, body").animate({
                scrollTop: 0
            }, "fast");

            $('.page_number').remove();
            paginate(data, load, page);
        }

    };

    var paginateClickArrowRight = function (th, data, load) {
        var page = null;
        var pagiPari = th.closest('.pagination');
        if ( pagiPari.length ) {
            var activePageO = pagiPari.find('.active a');
            var activePage = parseInt(activePageO.text());
            if ( isNaN(activePage) ) { activePage = 1; }
            page = Math.max(activePage + 1, 1);
        }

        var url = app.add_url_param(app.URI, 'page', page);
        app.URI = url;

        if(pagiPari.hasClass('link')){
            window.location = "/" + app.URI;
        }else{
            app.URI = url;
            history.pushState({
                title: 'searchList',
                method: "paginateClick",
                url: app.URI,
                params: {title: {}, method: {form: page, data: data, 'load': load}}
            }, null, "/" + app.URI);

            $("html, body").animate({
                scrollTop: 0
            }, "fast");

            $('.page_number').remove();
            paginate(data, load, page);
        }


        return false;
    };

    return {
        show: function () {
//console.log('searchList::show()');
//console.log(app.getStatic());


            if (app.getStatic()) {
                $('#form_auto_by_size').submit();
            } else {

                // $(".content_div").fadeOut('slow', function () {
                $(".preloader").addClass('on');
                $("html, body").animate({
                    scrollTop: 0
                }, "fast");
                //$(".content_div").html(app.templates()['product_list']);
                $(".content_div").html( app.getTemplate( 'product_list', false ) );

                $(".product_list__filter p").append( app.getLang('pcs') + " " + app.getLang('results') );
                $(".label_width").html(app.getLang('width') );
                $(".label_height").html(app.getLang('height'));
                $(".label_diameter").html(app.getLang('diameter') );
                $(".label_cartype").html(" " + app.getLang('car_type'));
                //$("#cartype_SZ").prop('checked', true);
                $('label[for="cartype_SZ"]').append(" " + app.getLang('car'));
                //$('label[for="cartype_SUVC"]').closest('label').append(" " + app.getLang('suv'));
                $('label[for="cartype_OFF"]').append(" " + app.getLang('offroad'));
                $('label[for="cartype_KT"]').append(" " + app.getLang('van'));

                $('label[for="season_N"]').append(" " + app.getLang('summer_tyre'));
                $('label[for="season_T"]').append(" " + app.getLang('winter_tyre'));
                $('label[for="season_NEGY"]').append(" " + app.getLang('all_seasons') );

                $(".label_brand").html(app.getLang('brand') );
                $(".label_li").html(app.getLang('load_index') );

                $(".label_si").html(app.getLang('speed_index') );
                $(".label_fuel").html(app.getLang('fuel_efficiency') );
                $(".label_wet").html(app.getLang('stop_on_wet_road') );
                $(".label_noise").html(app.getLang('moving_noise') );

                $('label[for="xlfr"]').append(" " + app.getLang('xlfr') );
                $('label[for="runflat"]').append(" " + app.getLang('runflat') );
                $('label[for="electric"]').append(" " + app.getLang('electric') );

            
                $(".btn_reset").val(app.getLang('btn_cancel') );
                searchResponse(sform_data);
                Compare().handleComparingBar();
                $(".product_list__compare_btn").html(app.getLang('btn_comparing'));
            }

        },
        paginateEvents: paginateEvents,
        listData: listData,
        paginateClick: paginateClick

    };
}

/* Ha linkről jövünk */
function searchListStatic() {

    return {
        show: function () {
//console.log('searchListStatic/show');
            var data = null;
            var staticProductDatas = null;
            var searchData = window.location.href;
            var searchType = '';

            app.setStatic(false);
            app.searchPromise().done(function (data) {
//console.log('searchListStatic/show/searchPromise', data );
//console.log('all_sizes', data.all_sizes );
//TODO: keyword, wheel_by_cartype esetén az első találati termék adatait felhasználni...
                var appBaseParams = app.getBaseParams();
                //console.log('appBaseParams', appBaseParams);
                var myBaseParams = {
                    'width': '',//appBaseParams.width,
                    'height': '',//appBaseParams.height,
                    'diameter': '',//appBaseParams.diameter,
                    //'cikktip': appBaseParams.cikktip,
                    'cikktip': 'A',
                    'cartype': [],
                    'season': appBaseParams.season,
                    'brand': "",
                    'li': '',
                    'si': '',
                    'fuel': '',
                    'wet': '',
                    'noise_code': '',
                    'xlfr': '',
                    'runflat': '',
                    'electric': ''
                };
                
                if ( typeof appBaseParams.cartype === 'string' ) {
                    if ( appBaseParams.cartype ) {
                        myBaseParams['cartype'].push( appBaseParams.cartype );
                    }
                } else if ( typeof appBaseParams.cartype === 'object' && Array.isArray(appBaseParams.cartype) ) {
                    myBaseParams['cartype'] = appBaseParams.cartype;
                }
                /* *** */
                var searchCikktip = null; /* Keresésből származó cikktipus */
                var pageData = app.parsePageType();
//console.log( 'pageData', pageData ); 

                if (
                    typeof pageData === 'object' &&
                    typeof pageData['pageType'] === 'string' &&  pageData['pageType'] == 'search'
                ) {
                    if ( typeof pageData['searchType'] !== 'undefined' && pageData['searchType'] ) {
                        searchType = pageData['searchType'];
                    }
                    
                    if ( searchType == SEARCH_TYPE_KEYWORD ) {
                        if (
                            //typeof pageData === 'object' &&
                            typeof pageData['urlParams'] !== 'undefined' &&
                            typeof pageData['urlParams']['query'] !== 'undefined' && pageData['urlParams']['query']
                        ) {
                            //searchData = unescape(pageData['urlParams']['query']);
                            searchData = decodeURIComponent(pageData['urlParams']['query']);
                            searchData = searchData.replace(/\+/g,' ');
                            //console.log('searchData', searchData);
                        }
                    } else if ( searchType == SEARCH_TYPE_WHEEL_BY_CARTYPE ) {
                        //Felni keresés autótipus szerint
                        searchCikktip = 'C';
                    } else if ( searchType == SEARCH_TYPE_TYRE_BY_CARTYPE ) {
                        //Gumi keresés autótipus szerint
                        searchCikktip = 'A';
                        if ( typeof pageData['urlBlocks'] !== 'undefined' ) {

                            /* width */
                            if (
                                typeof pageData['urlBlocks'][4] !== 'undefined' &&
                                pageData['urlBlocks'][4] && pageData['urlBlocks'][4]
                            ) {
                                myBaseParams['width'] = pageData['urlBlocks'][4];
                            }

                            /* height R diameter */
//TODO: BUG vessző is lehet


                            if (
                                typeof pageData['urlBlocks'][5] !== 'undefined' &&
                                pageData['urlBlocks'][5] && pageData['urlBlocks'][5]
                            ) {
                                //var tmp = unescape(pageData['urlBlocks'][5]);
                                var tmp = decodeURIComponent(pageData['urlBlocks'][5]);
                                var tmpArr = tmp.split(',');
                                //var tmpArr = tmpArr[0].split(' ');
                                if ( tmpArr[0] ) { /* 70R15 || 70 || R15 */
                                    if ( tmpArr[0].toLowerCase().indexOf('r') > -1 ) { /* 70R15 || R15 */
                                        var hdArr = tmpArr[0].toLowerCase().split('r');
                                        if ( hdArr[0] ) { myBaseParams['height'] = hdArr[0]; }
                                        if ( hdArr[1] ) { myBaseParams['diameter'] = hdArr[1].toUpperCase(); }
                                    } else { /* 70 */
                                        myBaseParams['height'] = tmpArr[0];
                                    }
                                }
                            }
                        }
                    } else if ( searchType == SEARCH_TYPE_TYRE_BY_SIZE ) {
						app.base_params.width ='';
						app.base_params.height ='';
						app.base_params.diameter ='';
                        
                        //Gumi keresés méret szerint
                        searchCikktip = 'A';
                        if ( typeof pageData['urlBlocks'] !== 'undefined' ) {
                            /* autótípus */
                            if (
                                typeof pageData['urlBlocks'][1] !== 'undefined' &&
                                pageData['urlBlocks'][1] && pageData['urlBlocks'][1] !== app.getLang('all_url')
                            ) {
                                var carTypes = [];
                                var ctUsed = [];
                                carTypes = pageData['urlBlocks'][1].split(',');
                                if ( carTypes.length ) { /* A kigyűjtött auto típuSok/Kevés */
                                    var carTypeHelper = app.invertArray(data.search_keys.cartype);
                                    //console.log('carTypeHelper', carTypeHelper);
                                    for ( var ci in carTypes ) {
                                        var ct = carTypes[ci];
                                        if ( typeof carTypeHelper[ct] !== 'undefined' ) { ctUsed.push( carTypeHelper[ct] ); }
                                    }
                                }
                                myBaseParams['cartype'] = ctUsed;
                            }
							
							var paramsIndexSlider = 0;
                            
                            var urlBlockLength = pageData['urlBlocks'].length;


                            var urBlockIndexes={
                                'brand': null,
                                'width': null,
                                'height_diameter': null, 
                                'season':null,
                            };

                            switch(urlBlockLength){
                                case (1): 
                                urBlockIndexes={
                                    'brand': null,
                                    'width': null,
                                    'height_diameter': null, 
                                    'season':0,
                                };
                                break;
                                case (2): 
                                urBlockIndexes={
                                    'brand': null,
                                    'width': null,
                                    'height_diameter': null, 
                                    'season':1,
                                };
                                case (3): 
                                urBlockIndexes={
                                    'brand': 2,
                                    'width': null,
                                    'height_diameter': null, 
                                    'season':1,
                                };
                                break;
                                case (4): 
                                urBlockIndexes={
                                    'brand': null,
                                    'width': 2,
                                    'height_diameter': 3, 
                                    'season':1,
                                };
                                break;
                                case (5): 
                                urBlockIndexes={
                                    'brand': 2,
                                    'width': 3,
                                    'height_diameter': 4, 
                                    'season':1,
                                };
                                break; 
                            }
 
							if( typeof pageData['urlBlocks'][2+paramsIndexSlider] !== 'undefined'){
								paramsIndexSlider=1;
								if (
	                                typeof pageData['urlBlocks'][urBlockIndexes['brand']] !== 'undefined' &&
	                                pageData['urlBlocks'][urBlockIndexes['brand']]
	                            ) {
	                                myBaseParams['brand'] = (pageData['urlBlocks'][urBlockIndexes['brand']]).toLowerCase();
	                            }
							}

                         


                            /* width */
                            if (
                                typeof pageData['urlBlocks'][urBlockIndexes['width']] !== 'undefined' &&
                                pageData['urlBlocks'][urBlockIndexes['width']]
                            ) {
                                if ( pageData['urlBlocks'][urBlockIndexes['width']] !== app.getLang('all_url') ) {
                                    myBaseParams['width'] = pageData['urlBlocks'][urBlockIndexes['width']];
                                } else {
                                    myBaseParams['width'] = '';
                                }
                            }

                            
                            /* height R diameter */
                            
                            if (
                                typeof pageData['urlBlocks'][urBlockIndexes['height_diameter']] !== 'undefined' &&
                                pageData['urlBlocks'][urBlockIndexes['height_diameter']]
                            ) {
                                if ( pageData['urlBlocks'][urBlockIndexes['height_diameter']] !== app.getLang('all_url') ) {
                                    //var tmp = unescape(pageData['urlBlocks'][3]);
                                    var tmp = decodeURIComponent(pageData['urlBlocks'][urBlockIndexes['height_diameter']]);
                                    var tmpArr = tmp.split(' ');
                                    if ( tmpArr[0] !== app.getLang('all_url') && tmpArr[0] ) { /* nem osszes, 70R15 || 70 || R15 */
                                        if ( tmpArr[0].toLowerCase().indexOf('r') > -1 ) { /* 70R15 || R15 */
                                            var hdArr = tmpArr[0].toLowerCase().split('r');
                                            if ( hdArr[0] ) { myBaseParams['height'] = hdArr[0]; }
                                            if ( hdArr[1] ) { myBaseParams['diameter'] = hdArr[1].toUpperCase(); }
                                        } else { /* 70 */
                                            myBaseParams['height'] = tmpArr[0];
                                        }

                                    }
                                    //if ( segArr.length > 1 && segArr[1] ) { /* utolsó kari a SI, a többi a li */
                                    //}
                                } else {
                                    myBaseParams['height'] = '';
                                    myBaseParams['diameter'] = '';
                                }
                            }
                             

                            /* season */
                            if (
                                typeof pageData['urlBlocks'][urBlockIndexes['season']] !== 'undefined' &&
                                pageData['urlBlocks'][urBlockIndexes['season']]
                            ) {
                                var seasonHelper = app.invertArray(data.search_keys.season);
                                if ( typeof seasonHelper[ pageData['urlBlocks'][urBlockIndexes['season']] ] !== 'undefined' ) {
                                    myBaseParams['season'] = seasonHelper[ pageData['urlBlocks'][urBlockIndexes['season']] ];
                                }
 
                            }

                            /* brand 
                            if (
                                typeof pageData['urlBlocks'][urBlockIndexes['season']] !== 'undefined' &&
                                pageData['urlBlocks'][urBlockIndexes['season']]
                            ) {
                                myBaseParams['brand'] = (pageData['urlBlocks'][urBlockIndexes['season']]).toLowerCase();
                            }
							*/		

                        }

                    }

                            
					
                    /* Paraméterekből kibányászom ami kell */
                    if ( typeof pageData['urlParams'] !== 'undefined' ) { 
                        
                    
						if ( typeof pageData['urlParams']['width'] !== 'undefined' && pageData['urlParams']['width'] ) { myBaseParams['width'] = pageData['urlParams']['width']; }
						if ( typeof pageData['urlParams']['height'] !== 'undefined' && pageData['urlParams']['height'] ) { myBaseParams['height'] = pageData['urlParams']['height']; }
						if ( typeof pageData['urlParams']['diameter'] !== 'undefined' && pageData['urlParams']['diameter'] ) { myBaseParams['diameter'] = pageData['urlParams']['diameter']; }
						if ( typeof pageData['urlParams']['season'] !== 'undefined' && pageData['urlParams']['season'] ) { myBaseParams['season'] = pageData['urlParams']['season']; }
						
						if( typeof pageData['urlParams']['cartype'] !== 'undefined' && pageData['urlParams']['cartype'] ){
							myBaseParams['cartype'] = pageData['urlParams']['cartype'].split('%2C');
						}
						
                        if ( typeof pageData['urlParams']['li'] !== 'undefined' && pageData['urlParams']['li'] ) { myBaseParams['li'] = pageData['urlParams']['li']; }
                        if ( typeof pageData['urlParams']['si'] !== 'undefined' && pageData['urlParams']['si'] ) { myBaseParams['si'] = pageData['urlParams']['si']; }
                        if ( typeof pageData['urlParams']['fuel'] !== 'undefined' && pageData['urlParams']['fuel'] ) { myBaseParams['fuel'] = pageData['urlParams']['fuel']; }
                        if ( typeof pageData['urlParams']['wet'] !== 'undefined' && pageData['urlParams']['wet'] ) { myBaseParams['wet'] = pageData['urlParams']['wet']; }
                        if ( typeof pageData['urlParams']['noise'] !== 'undefined' && pageData['urlParams']['noise'] ) { myBaseParams['noise_code'] = pageData['urlParams']['noise']; }
                        if ( typeof pageData['urlParams']['reinforced'] !== 'undefined' && pageData['urlParams']['reinforced'] ) { myBaseParams['xlfr'] = '1'; /* pageData['urlParams']['reinforced']; */ }
                        if ( typeof pageData['urlParams']['runflat'] !== 'undefined' && pageData['urlParams']['runflat'] ) { myBaseParams['runflat'] = '1'; /* pageData['urlParams']['runflat']; */ }
                        if ( typeof pageData['urlParams']['electric'] !== 'undefined' && pageData['urlParams']['electric'] ) { myBaseParams['electric'] = '1'; /* pageData['urlParams']['runflat']; */ }
                        if ( typeof pageData['urlParams']['brand'] !== 'undefined' && pageData['urlParams']['brand'] ) { myBaseParams['brand'] = pageData['urlParams']['brand']  }
                    }
                }

                /* Aktuális oldalszám kikeresése */
                var actPageNumber = 1;
                var actPageNumberO = $('.pagination li.active a').first();
                if ( actPageNumberO.length ) {
                    actPageNumber = parseInt(actPageNumberO.text());
                } else { /* fallback */
                    if (
                        typeof pageData === 'object' &&
                        typeof pageData['urlParams'] !== 'undefined' &&
                        typeof pageData['urlParams']['page'] !== 'undefined' && pageData['urlParams']['page']
                    ) { actPageNumber = parseInt(pageData['urlParams']['page']); }
                }
                if ( isNaN(actPageNumber) ) { actPageNumber = 1; }
                actPageNumber = Math.max(actPageNumber, 1);



                /* GTM START. Statikusan betöltött terméklista küldése */
                var vatMulti = 1 + parseFloat(app.getSettingData( 'vat_' + app.domain() ));
                var actCurrency = app.getSettingData( 'currency_' + app.domain() );


                /* Statikus Termékek, dinamikus lekérése rögvest-azonnal */
                var neededProducts = [];
                var productListItem = $('[data-id].product_list__item');
                productListItem.each(function (id, el) {
                    var productItem = $(this);
                    var productCode = productItem.attr('data-id');
                    if ( typeof productCode !== 'undefined' && productCode) {
                        neededProducts.push(productCode);
                    }
                });
 
                app.search_products( neededProducts ).done(function (data) {
                    staticProductDatas = data;
                    dLayer.productImpression(staticProductDatas,neededProducts,searchType,searchData,actPageNumber);

                    //addGTMDataLayer(dataLayerObj, DL_LOG);

                    /* Összehasonlításhoz */
                    $(document).off("click", ".btn--submit_comparing").on("click", ".btn--submit_comparing", function (e) {
                        //console.log('searchCikktip', searchCikktip);
                        Compare().showItems(e, data, (searchCikktip == 'A' ? 'tyre' : 'wheel') );
                    });

                });
 


                try{
 
                
                    if(myBaseParams['brand'] !== "" && app.base_params['brand']!==myBaseParams['brand'])
                        app.base_params['brand']=myBaseParams['brand'];
                    if(myBaseParams['li'] !== "" && app.base_params['li']!==myBaseParams['li'])
                        app.base_params['li']=myBaseParams['li'];
                    if(myBaseParams['si'] !== "" && app.base_params['si']!==myBaseParams['si'])
                        app.base_params['si']=myBaseParams['si'];
                    if(myBaseParams['diameter'] !== "" && app.base_params['diameter']!==myBaseParams['diameter'])
                        app.base_params['diameter']=myBaseParams['diameter'];
                    if(myBaseParams['height'] !== "" && app.base_params['height']!==myBaseParams['height'])
                        app.base_params['height']=myBaseParams['height'];
                    if(myBaseParams['width'] !== "" && app.base_params['width']!==myBaseParams['width'])
                        app.base_params['width']=myBaseParams['width'];
        
                
                        find = [
                            app.getLang('car_url'),
                            app.getLang('van_url'),
                            app.getLang('offroad_url')
                        ];
    
                        replace    = [
                                'SZ', 
                                'KT',
                                'OFF'
                        ];
                
                        if(app.base_params['cartype'].length== 0){
                            for (var i = 0; i < find.length; i++) {
                                    regex = new RegExp(find[i], "g"); 
                                    if(pageData.urlParams['cartype'] .search(regex)>-1){
                                        app.base_params.cartype .push(replace[i]);
                                    }
                                }
                        }
                }catch(e){        
                 
                }

                searchBySizesModule.setCarSizesHTML(data.all_sizes[ 'A' ], app.base_params);
                /*
                    app.search_promise($("#form_auto_by_size").serialize() + "&nosave=1").done(function (data) {
                        //MSG+ATTN: CSAK GUMIABRONCSRA MŰKÖDIK
                        $(document).off("click", ".btn--submit_comparing").on("click", ".btn--submit_comparing", function (e) {
                            Compare().showItems(e, data, app.base_params.cikktip == 'A' ? 'tyre' : 'wheel');
                        });
                    }).fail(function (e) {
                        console.log(e.message);
                    });
                    */
            });

            $(document).off('click', '.product_list__item .product_list__item__checker').on('click', ".product_list__item .product_list__item__checker", function (e) {
                e.preventDefault();

                Compare().checkItems(e, this);
            });

            $(document).off('click', '.product_list__item a').on('click', ".product_list__item a", function (e) {

                e.preventDefault();
                var o = $(this);
                var productCode = o.closest('.product_list__item').attr('data-id');

                if ($("body").hasClass("comparing")) {
                    Compare().checkItems(e, this);
                } else {

                    if (
                        typeof productCode !== 'undefined' && productCode &&
                        staticProductDatas !== null &&
                        typeof staticProductDatas[ productCode ] !== 'undefined'
                    ) {
                        var selected_position = $.fn.getObjectKeyIndex(staticProductDatas, productCode);
                        var productData = staticProductDatas[productCode];
                        try{
                            dLayer.productClick(productData,{'actionField': {
                                    'list': (searchType?searchType:'undefined'),
                                    'searchData': (searchData?searchData:'undefined')
                                }});
                        }catch(e){

                        }

                    } else {
                        //return false;
                    }
                }

                window.location = $(this).attr("href");
            });

        }
    };
}

function productProfileStatic(type) {
    if ( typeof type === 'undefined') { type = 'tyre'; }
    return {
        show: function () {
//console.log('productProfileStatic.show: ', app.domain() );
            app.setStatic();
            var similarProductsData = null;
            var vatMulti = 1 + parseFloat(app.getSettingData( 'vat_' + app.domain() ));
            var actCurrency = app.getSettingData( 'currency_' + app.domain() );
            var chunks = app.URI.split("/");
            var qsTMP = app.query_string();
            //var product_id = app.query_string()['id'];
            var product_id = (typeof qsTMP['id'] !== 'undefined' && qsTMP['id']? qsTMP['id']:'' );
            var product_data = null;
            var autoid = (typeof qsTMP['autoid'] !== 'undefined' && qsTMP['autoid']? qsTMP['autoid']:'' );
            $.post("/ajaxLoader.php?module=Search", {
                "product_id": product_id,
                "autoid": autoid
            }, null, 'json').done(function (data) {
//console.log('productProfileStatic: ', data);
//ATTN+TODO: Mi van, ha a termék nem létezik???!!!

                if(typeof data.data != 'undefined')
                    data = data.data;

                product_data = data;
                dLayer.productView(data);

                app.base_params.cikktip = data.cikktip;
                productProfile().setProductNumber(data.stock, $("#product-number"));
                app.couponPromise().done(function (couponData) {
                    //console.log('productStaticCoupon::couponData', couponData);
                    /* COUPON */
                    var coupon = app.couponMatch( data.brand, data.season_code, parseInt($('#product-number').val()) );
                    if (
                        data.cikktip == 'A' &&
                        coupon !== false
                    ) {
//console.log('productStaticCoupon::coupon', coupon);
                        app.templatePromise().done(function (template) {
//console.log('coupon.button', template);
                            var templateName = app.getTemplateName(coupon['template'], true);
                            console.log(app.hasTemplate( coupon['template'], true ));
                            if ( app.hasTemplate( coupon['template'], true ) ) {
                                var couponBox = $( app.getTemplate( coupon['template'], true ) );
                                var couponURL = app.couponBrandUrl(data.brand);
                                couponBox.attr('href', 'https://gumi.hu/autogumi/2021-tavaszi-kuponos-akcio/');
                                //couponBox.attr('target', couponURL['target'] );
                                couponBox.attr('target', '_blank');
                                couponBox.html('<img src="/assets/media/images/' + coupon.button + '">');
                                couponBox.insertAfter(".product-total");
                            } else {
                                $('<br/><a class="coupon-button" href="//gumi.hu/ajanlatok/gumiszereles-arak" target="_blank"><img style="width:100%;" src="/assets/media/images/' + coupon['template'] + '" alt="coupon_image" /></a>').insertAfter(".product-total");
                            }
                        });
                    }

                });
                $(document).off('click', '.order-btn');
                $(document).on('click', '.order-btn', function (e) {
                    //console.log('add_to_cart::static');
                    e.preventDefault();
                    app.cart().saveToCart(data);

                    return false;
                });

                /* Hasonló termékek lekérése statikus oldalról */
                var neededProducts = [];
                var similarProductItems = $('#similar a[data-id].similar-products-item');
                similarProductItems.each(function (id, el) {
                    var productItem = $(this);
                    var productCode = productItem.attr('data-id');
                    if ( typeof productCode !== 'undefined' && productCode ) {
                        neededProducts.push(productCode);
                    }
                });

                // console.log('neededProducts', neededProducts);
                app.search_products( neededProducts ).done(function (simiData) {
                    //console.log('search_products', simiData);
                    similarProductsData = simiData;
                    console.log(similarProductsData)
                    /* GTM START */
                    var searchType = 'similar_products';
                    //var searchData = product_id;
                    var searchData = $.fn.getObjVal(similarProductsData, 'brand', 'undefined', true) + ' ' + $.fn.getObjVal(similarProductsData, 'name', 'undefined', true);

                    dLayer.productImpression(similarProductsData,neededProducts,searchType,searchData,1);
                });

                app.slick();

            }).fail(function (e) {
                console.log(e);
            });

            /* Egy hasonló termékre klikkelt */
            $(document).off('click', '#similar .similar-products-item').on('click', '#similar .similar-products-item', function (e) {
                var o = $(this);
                var productCode = o.attr('data-id');
                //console.log('productProfileStatic::productCode', productCode);
                //console.log('similarProductsData', similarProductsData);
                if (
                    typeof productCode !== 'undefined' && productCode &&
                    similarProductsData !== null &&
                    typeof similarProductsData[ productCode ] !== 'undefined'
                ) {
                    var searchType = 'similar_products';
                    //var searchData = product_id;
                    var searchData = $.fn.getObjVal(product_data, 'brand', 'undefined', true) + ' ' + $.fn.getObjVal(product_data, 'name', 'undefined', true);

                    var selected_position = $.fn.getObjectKeyIndex(similarProductsData, productCode);
                    var productData = similarProductsData[productCode];
                    //console.log( selected_position + '. productData', productCode, productData);
                    try{
                        dLayer.productClick(productData,{'actionField': {
                                'list': (searchType?searchType:'undefined'),
                                'searchData': (searchData?searchData:'undefined')
                            }});
                    }catch(e){

                    }


                }
                //return false;
            });

        }
    }
}


function productProfile(d, type) {
    if ( typeof d === 'undefined') { d = null; }
    if ( typeof type === 'undefined') { type = 'tyre'; }
//console.log('productProfile', d, type);

    var setProductNumber = function (data, th) {
        //var stock = parseFloat(data);
        //var itemQty = th.val();
        th.val((data > 4 ? 4 : data));
        th.unbind('input propertychange paste').bind('input propertychange paste', function () {
            if (parseInt(data) < parseInt(th.val())) {
                th.val(data);
            }
        });
    };

    return {
        show: function () {
            var similarProductsData = null;
            var VAT = parseFloat( app.getSettingData( 'vat_' + app.domain() ) );
            var vatMulti = 1 + VAT;

            var data = d;

//console.log('productProfile.show: ', app.domain(), d);
//console.log('productProfile.show: ', d);
            dLayer.productView(data);

            //$('.content_div').html(app.templates()['product_profile']);
            $('.content_div').html(app.getTemplate( 'product_profile', false ) );
            $(".back_to_list").after( app.getLang('back_to_previous_search') );
            $(".tech_data h5").html( app.getLang('tech_data') );
            $(".book h3").html( app.getLang('buy') );
            $(".cartype").html( app.getLang('car_type') );
            $(".season").html( app.getLang('season') );
            $(".prod_size").html(app.getLang('size') );
            $(".prod_si").html( app.getLang('speed_index') );
            $(".prod_li").html(app.getLang('load_index') );
            $(".prod_fuel").html(app.getLang('fuel_efficiency') );
            $(".prod_wet").html(app.getLang('stop_on_wet_road') );
            $(".prod_noise").html(app.getLang('moving_noise'));
            $(".prod_xlfr").html(app.getLang('xlfr'));
            $(".prod_runflat").html(app.getLang('runflat'));
            $(".prod_electric").html(app.getLang('electric'));
            $(".about_brand").html(app.getLang('about_brand'));
            if (app.domain() === 'hu') {
                $(".list_price").html(app.getLang('list_price'));
            }
            $(".offer_price").html(app.getLang('sale_price'));
            if (app.domain() === 'hu') {
                $(".saving").html(app.getLang('save'));
            }
            $(".in_stock").html(app.getLang('in_stock'));
            $(".stock_s").html(app.getLang('stock'));
            $(".add_to_cart").html('<span class="fa fa-cart-plus fa-2x"></span>&nbsp; ' + app.getLang('in_the_cart'));
            $(".eu_badge").html(app.getLang('eu_label'));
            $(".similar").html(app.getLang('similar_products'));
            //var prod_name = type == 'tyre' ? data.brand + " " + data.pattern + " " + app.getLang('tyre') : data.brand + " " + data.name;
            var prod_name = type == 'tyre' ? data.brand + " " + data.name + " " + app.getLang('tyre') : data.brand + " " + data.name;
            document.title = prod_name;
            var kit_price = 0;
            var logSizesParam = null;
            if (type == 'tyre') { /* GumiabRoncs */
                logSizesParam = data.width + "/" + data.height + "R" + data.diameter;
                $('.wheel_kit').hide();
                $('.p-season').html(app.getLang( "season_" + data.season_code) );
                var carTypeValue = app.getLang("unknown") + ' (' + data.cartype+')';
                if ( data.cartype == 'SZ' ) { carTypeValue = app.getLang("car"); }
                else if ( data.cartype == 'KT' ) { carTypeValue = app.getLang("van"); }
                else if ( data.cartype == 'OFF' ) { carTypeValue = app.getLang("offroad"); }
                else if ( data.cartype == 'SUVC' ) { carTypeValue = app.getLang("suv"); }
                //else if ( data.cartype == 'UT' ) { carTypeValue = app.getLang("valami"); }
                //else if ( data.cartype == 'SK' ) { carTypeValue = app.getLang("valami"); }
                $('.p-cartype').html( carTypeValue );
                $('.p-size').html(data.width + '/' + data.height + 'R' + data.diameter + " " + data.li + data.si);
                $('.p-si').html(data.si + ' (' + data.si_name + ')');
                $('.p-li').html(data.li + ' (' + data.li_name + ')');
                $('.p-fuel').html(data.fuel);
                $('.p-wet').html(data.wet);
                $('.p-noise').html(data.noise + " dB");
//console.log('show', data);
                $('.p-xlfr').html( app.getLang(  (data.xlfr? 'label_yes': 'label_no') ) );
                $('.p-runflat').html( app.getLang(  (data.runflat? 'label_yes': 'label_no') ) );
                $('.p-electric').html( app.getLang(  (data.electric? 'label_yes': 'label_no') ) );
            } else { /* Felni */
                logSizesParam = data.diameter + "|" + data.size;
                $(".tech_data").hide();
                $(".eu-badge").hide();
                if (d.kit.price || d.kit.list_price) {
                    //console.log(d);
                    kit_price = ((d.kit.price ? d.kit.price : d.kit.list_price) * vatMulti);
                    //$('.kit_price').html(kit_price.toLocaleString('fr-FR').replace(',', '.') + " " + app.getSettingData( 'currency_' + app.domain() ) );
                    $('.kit_price').html( app.getFormattedPrice(kit_price) + " / 4" + app.getLang('pcs') );
                    data.kit = d.kit;
                } else {
                    $('.wheel_kit').hide();
                }
            }

            /* Termék logolása */
            if ( logSizesParam !== null ) {
                $.getJSON(
                    '/ajaxLoader.php?module=LogProduct&kod=' + data.KOD + '&sizes=' + logSizesParam,
                    function (logData) {
                        //console.log('logData', logData);
                    }
                );
            }

            /* Hasonló tételek lekérése.  */
            $('#similar').empty();
            $.getJSON("/ajaxLoader.php?module=AllParams&type=getSimilarProducts&id="+d['KOD']+"&size="+d['size'], function ( simiData ) {
                if ( simiData ) {
                    /* A simiData egy tömb aminek az indexei nem termékkódok sajni... */
                    similarProductsData = {};
                    /* GTM START */


                    var searchType = 'similar_products';
                    var actCurrency = app.getSettingData( 'currency_' + app.domain() );
                    var dataLayerObj = {
                        'event': 'productImpression',
                        'ecommerce': {
                            'currencyCode': actCurrency,
                            'searchType': searchType,
                            'searchData': $.fn.getObjVal(d, 'brand', 'undefined', true) + ' ' + $.fn.getObjVal(d, 'name', 'undefined', true),
                            //'searchData': d['KOD'],
                            'impressions': []
                        },
                        'listPage': 1
                    };
                    /* *** */

                    var h = "";
                    $.each(simiData, function (k, productData) {
                        //console.log(k, productData);
                        similarProductsData[ productData.KOD ] = productData;

                        h += '<a href="'+ productData.url + '/?id=' + productData.KOD + '" target="_self" class="similar-products-item" data-id="'+productData.KOD+'">\n\
                            <h4 class="mt--0 mb--0">' + productData.brand + '</h4>' + productData.name + '<br/>\n\
                            <span class="txt-strong">' + app.getFormattedPrice(productData.price * vatMulti, true) + '</span><br/>\n\
                            <div class="similar-products-img" style="background-image: url(\'' + app.http2https(productData.image_url) + '\')">\n\
                            </div></a>';

                        dataLayerObj['ecommerce']['impressions'].push({
                            'id': $.fn.getObjVal(productData, 'KOD', 'undefined', true),
                            'SKU': $.fn.getObjVal(productData, 'size', $.fn.getObjVal(productData, 'KOD', 'undefined', true), true),
                            'brand': $.fn.getObjVal(productData, 'brand', 'undefined', true),
                            'name': $.fn.getObjVal(productData, 'brand', 'undefined', true) + ' ' + $.fn.getObjVal(productData, 'name', 'undefined', true),
                            'price': app.getPrice(productData['price'] * vatMulti, false),
                            'listPrice': app.getPrice(productData['list_price'] * vatMulti, false),
                            'category': getGTMCategoryByCode( productData['cicsop'], productData['season_code'], 'undefined' ),
                            'variant': getGTMCarTypeByCode( productData['cartype'], 'undefined' ),
                            'list': (searchType? searchType:'undefined'),
                            'position': k+1,
                            /* extra */
                            'stock': $.fn.getObjVal(productData, 'stock', 'undefined'),
                            'width': $.fn.getObjVal(productData, 'width', 'undefined', true, true),
                            'sidewall': $.fn.getObjVal(productData, 'height', 'undefined', true, true),
                            'diameter': $.fn.getObjVal(productData, 'diameter', 'undefined', true, true),
                            'fuel_efficiency': $.fn.getObjVal(productData, 'fuel', 'undefined', true),
                            'wet_braking': $.fn.getObjVal(productData, 'wet', 'undefined', true),
                            'speed_index': $.fn.getObjVal(productData, 'si', 'undefined', true),
                            'load_index': $.fn.getObjVal(productData, 'li', 'undefined', true)
                        });

                    });
                    $('#similar').html(h);
                    app.slick();

                    dLayer.productImpression(simiData,Object.keys(simiData),searchType, $.fn.getObjVal(d, 'brand', 'undefined', true) + ' ' + $.fn.getObjVal(d, 'name', 'undefined', true),1);

                    /* Egy hasonló termékre klikkelt */
                    $(document).off('click', '#similar .similar-products-item').on('click', '#similar .similar-products-item', function (e) {
                        var o = $(this);
                        var productCode = o.attr('data-id');
                        //console.log('productProfile::productCode', productCode);
                        //console.log('similarProductsData', similarProductsData);
                        if (
                            typeof productCode !== 'undefined' && productCode &&
                            similarProductsData !== null &&
                            typeof similarProductsData[ productCode ] !== 'undefined'
                        ) {
                            var searchType = 'similar_products';
                            //var searchData = d['KOD'];
                            var searchData = $.fn.getObjVal(d, 'brand', 'undefined', true) + ' ' + $.fn.getObjVal(d, 'name', 'undefined', true);

                            var selected_position = $.fn.getObjectKeyIndex(similarProductsData, productCode);
                            var productData = similarProductsData[productCode];
                            //console.log( selected_position + '. productData', productCode, productData);
                            try{
                                dLayer.productClick(productData,{'actionField': {
                                        'list': (searchType?searchType:'undefined'),
                                        'searchData': (searchData?searchData:'undefined')
                                    }});
                            }catch(e){

                            }


                        }
                        //return false;
                    });


                }
            });

            /* TILOS formázott értéket idetenni!!! */
            $('.kit_price').attr('data-price', kit_price);
            $('.product-name').html(prod_name);
            $('.product-img').attr('src', app.http2https(data.image_url) );

            if(data.coupon_image !=''){ 
                $('.product-img').after('<img class="product-sale-ribbon" src="/assets/media/images/'+data.coupon_image+'" align="right" />'); 
            }

             

            /* USP product page */
            if ( typeof data['priority'] !== 'undefined' && parseInt(data['priority']) > 0 ) {
                var uspFeat = app.getLang('usp_featured', 'feat.');
                var uspProd = app.getLang('usp_product', 'product');
                var uspBrand = app.getLang('usp_brand', 'brand');

                $('.product-tag-image').attr('src', '/svg?file=tag2line.svg&border=f33&line1='+uspFeat+'&line2='+ ( parseInt(data['priority']) > 50? uspProd : uspBrand ) ).attr('data-priority', data['priority']);
            }

            /* COUPON */
            //var coupon = app.getCouponData();
            var coupon = app.couponMatch( data.brand, data.season_code, parseInt($('#product-number').val()) );
            if (
                data.cikktip == 'A' &&
                coupon !== false
                //app.couponMatch(data.brand, data.season_code, parseInt($('#product-number').val()))
            ) {
                var couponTempName = app.getTemplateName( coupon['template'] );
                //console.log('couponTempName', couponTempName);
                if ( app.hasTemplate( coupon['template'], true ) ) {
                    var couponBox = $( app.getTemplate( coupon['template'], true ) );
                    var couponURL = app.couponBrandUrl(data.brand);
                    couponBox.attr('href', 'https://gumi.hu/autogumi/2021-tavaszi-kuponos-akcio/');
                    //couponBox.attr('target', couponURL['target'] );
                    couponBox.attr('target', '_blank');
                    couponBox.html('<img src="/assets/media/images/' + coupon.button + '">');
                    couponBox.insertAfter(".product-total");
                    //$( app.getTemplate( coupon.button, true ) ).insertAfter(".product-total");
                    //couponBox.attr('href', couponURL['href'] );

                } else {
                    $('<br/><a class="coupon-button" href="//gumi.hu/ajanlatok/gumiszereles-arak" target="_blank"><img style="width:100%;" src="/assets/media/images/' + coupon['template'] + '" alt="'+coupon['template']+'" /></a>').insertAfter(".product-total");
                }
                //$('<div style="text-align: center;"><img style="position:relative" src="/assets/media/images/' + coupon['image'] + '" /></div>').insertAfter('.product-img');
            }

            /* CONTISAFE */
            if ( false && app.domain() == 'hu' && ['continental', 'barum', 'semperit'].indexOf( (data.brand).toLowerCase() ) > -1 ) {
                $('.product-img').after('<div style=" text-align: center;"><img style="position:relative;"  src="/assets/media/images/contisafe.png"></div>');
            }



            /* FALKEN DRÓTOZÁS */
            if ( data.KOD == '22545R17YFK510X' && app.domain() == 'hu' ) {
                $('.product-img').after('<div style=" text-align: left;"><img style="position:absolute; left:0;top:initial;right:initial;bottom: 0"  src="/assets/media/images/falken_sommerreifentest_2019_hu_gunmihu_160x312.png"></div>');
            }

            $('.product-kod').html('No. ' + data.KOD);
            $('.product-ean').html((typeof data.ean === 'string' && data.ean? 'EAN: ' + data.ean : null ));
            if (app.domain() === 'hu') {
                $('.product-listprice').html((data.list_price * (1 + VAT)).toLocaleString('fr-FR', {
                    minimumFractionDigits: app.fraction(),
                    maximumFractionDigits: app.fraction()
                }).replace(',', '.') + " " + app.getSettingData('currency_' + app.domain() ) );
            } else {
                $('.product-listprice').html('');
            }
            $('.product-price').html((data.price * (1 + VAT)).toLocaleString('fr-FR', {
                minimumFractionDigits: app.fraction(),
                maximumFractionDigits: app.fraction()
            }).replace(',', '.') + " " + app.getSettingData( 'currency_' + app.domain() ) );
            if (app.domain() === 'hu') {
                $('.product-save').html((((data.list_price) - data.price) * (1 + VAT)).toLocaleString('fr-FR', {
                    minimumFractionDigits: app.fraction(),
                    maximumFractionDigits: app.fraction()
                }).replace(',', '.') + " " + app.getSettingData( 'currency_' + app.domain()  ) );
            } else {
                $('.product-save').html('');
            }
            $('.product-stock').html((data.stock > 4 ? '4+' : data.stock) + ' ' + app.getLang('abbr_pcs') );
            setProductNumber(data.stock, $("#product-number"));
            var p_price = parseFloat((data.price * (1 + VAT)).toLocaleString('en-EN', {
                minimumFractionDigits: app.fraction(),
                maximumFractionDigits: app.fraction()
            }).replace(',', ''));
            $('.product-total').html((p_price * parseInt($('#product-number').val()) + kit_price * (parseInt($('#product-number').val()) / 4)).toLocaleString('fr-FR', {
                minimumFractionDigits: app.fraction(),
                maximumFractionDigits: app.fraction()
            }).replace(',', '.') + " " + app.getSettingData( 'currency_' + app.domain() ) );

            //$('.product-total').html((kit_price + Math.ceil(data.price * (1 + VAT)) * $('#product-number').val()).toLocaleString('fr-FR') + ' Ft.');
            $('.product-descr').html(data.brand_tags.replace(/\|/gi, '<br>'));
            //TODO: itt még nem mindig van nyelvi adat
            $('.product-about-brand').html("<strong>" + data.brand + "</strong><br/>" + data.brand_desc + ((data.mark_tags || data.mark_desc) ? '<br><br><strong>' + app.getLang('the_markings') + '</strong>: <br>' + data.pattern + "<br>" + data.mark_tags.replace(/\|/g, '<br>') + "<br><br>" + data.mark_desc : ''));
            $("#product-number").attr('data-pid', data.KOD);
            $("#product-number").attr('data-category', data.cicsop);
            $("#product-number").attr('data-price', data.price);
            $('.img-badge').attr('src', app.http2https(data.badge) );

            $(document).off('click', '.order-btn');
            $(document).on('click', '.order-btn', function (e) {
                //console.log('add_to_cart::dynamic');
                e.preventDefault();
                app.cart().saveToCart(data);

                return false;
            });

            Compare().handleComparingBar();
        },
        setProductNumber: setProductNumber,

    };
}

/* KOSÁR START */
function Cart(VAT) {
    var myName = 'Cart';
    var vatMulti = 1 + VAT;
    var cart_content = {};
    var cart_content_date = null;
    var cart_services_content = {};
    var cart_services_content_date = null;
    var cart_content_interval = 0;

    /* Kosárba teszek valamit */
    var saveToCart = function (search_data) {
  
        if(typeof search_data.data != 'undefined')
            search_data = search_data.data[Object.keys(search_data.data)[0]];
console.log('saveToCart', search_data);
        var actCurrency = app.getSettingData( 'currency_' + app.domain() );

        var messageKey = 'cart_item_addition_failed';

        if (
            typeof search_data === 'object' && search_data &&
            typeof search_data['KOD'] !== 'undefined'
        ) {
            //var input = $("#product-number");
            var productNumberO = $("#product-number");
            if(productNumberO.length == 0) {
                productNumberO = $(".product_list__item[data-id='" + search_data['KOD'] + "'] .product-number");
            }
            ///console.log("productNumberO", productNumberO);
            var productQuantity = parseInt(productNumberO.val());
            if ( isNaN(productQuantity) ) { productQuantity = 0; }
            var alloyMOD4 = 0;
            //var key = input.attr("data-pid");
            //console.log(search_data);
            var itemTypeKey = null;
            var eventAction = null;
            if ( search_data.cikktip == 'A' ) {
                eventAction = 'Autógumi';
                itemTypeKey = 'tyre';
            } else {
                /* MSG: Csak alufelnihez kell KIT */
                eventAction = 'Felni';
                if ( search_data.cicsop == 'CLEM') { itemTypeKey = 'steel_wheel'; }
                else { /* MSG csak 4dbonként szabad kosárba tenni... */
                    itemTypeKey = 'alloy_wheel';
                    alloyMOD4 = productQuantity % 4;
                }
            }
            var itemType = (itemTypeKey ? app.getLang(itemTypeKey): '');
            var cart_item = {
                'items': productQuantity,
                image_url: app.http2https(search_data.image_url),
                brand_desc: null,
                'type': itemType, /* Nyelvi adatot sessionben tárolni azért nem jó, mert nyelvváltáskor nincs hatás.. */
                'type_key': itemTypeKey,
            };

            var cart_itemss = {

                'KOD': search_data.KOD,
                'brand': search_data.brand,
                'name': search_data.name,
                'season': search_data.season,
                'season_code': search_data.season_code,
                'price': search_data.price,
                'size': search_data.size,
                'stock': search_data.stock,
                'image_url': app.http2https(search_data.image_url),
                'pattern': search_data.pattern,

                'kit': (search_data.kit /* && search_data.cicsop != 'CLEM' && search_data.cikktip == 'C' */ ? search_data.kit : ''),
                'black_friday': search_data.black_friday,
                'cicsop': search_data.cicsop,
                'cartype': search_data.cartype,
                'list_price': search_data.list_price,
                /* GTM miatt kellenek */
                'width': search_data['width'],
                'height': search_data['height'],
                'diameter': search_data['diameter'],
                'fuel': search_data['fuel'],
                'wet': search_data['wet'],
                'si': search_data['si'],
                'li': search_data['li']
            };
            cart_item = {...search_data,...cart_item};


//console.log(cart_item, search_data);
console.log(productQuantity, alloyMOD4);

            var cartItemPrevQty = 0;
            if ( productQuantity > 0 && alloyMOD4 == 0 ) {
                if (
                    typeof cart_content[ search_data.KOD ] !== 'undefined' &&
                    typeof cart_content[ search_data.KOD ]['items'] !== 'undefined'
                ) {
                    cartItemPrevQty = parseInt(cart_content[ search_data.KOD ]['items']);
                    if ( isNaN(cartItemPrevQty) ) { cartItemPrevQty = 0; }
                }
                var newItemQty = productQuantity + cartItemPrevQty;
                console.log(newItemQty, search_data.stock);
                if ( newItemQty <= search_data.stock ) { /* Van elegendő, készleten */
                    //outMessage = appMessages['cart_item_added'];
                    console.log('saveToCart', cart_item);
                    if (2 == 1 /*storage_exists*/) {
                        /*save to the local storage*/
                        messageKey = 'cart_item_added';
                        c = cart_content;
                        if (!c[cart_item.KOD] || !c) {
                            c[cart_item.KOD] = cart_item;
                        } else {
                            c[cart_item.KOD].items = c[cart_item.KOD] && search_data.stock >= (parseInt(cart_item.items) + parseFloat(c[cart_item.KOD].items)) ? parseInt(cart_item.items) + parseInt(c[cart_item.KOD].items) : c[cart_item.KOD].items;
                        }
                        getCartTotal(c, true);
                        localStorage.setItem("cart", JSON.stringify(c));
                        cart_content = c;
                    } else { /* save to the server */
                        messageKey = null;
                        $.post('/ajaxLoader.php?module=Cart', {
                            data: JSON.stringify(cart_item)
                        }, function (data) {

                            if ( typeof data === 'object' && data ) {
                                //console.log('Cart success', data);
                                messageKey = 'cart_item_added';

                                console.log('ajaxLoader.php?module=Cart', cart_item,search_data);

                                dLayer.addCart(search_data,cart_item.items);


                                cart_content = data;
                                getCartTotal(data, true);

                                //dLayer.checkoutSteps([search_data],1);
                            } else {
                                //console.log('Cart failed', data);
                                messageKey = 'cart_item_addition_failed';
                            }
                            app.handleMessages(app.getMessage( messageKey ), app.mess_template(), '.add_cart_continue, .go_to_cart');
                        }, 'json').fail(function (e) {
                            console.log(e);
                            messageKey = 'cart_item_addition_failed';
                            app.handleMessages(app.getMessage( messageKey ), app.mess_template(), '.add_cart_continue, .go_to_cart');
                        });
                    }
                }
            } else if ( productQuantity > 0 && alloyMOD4 != 0 && search_data.cikktip == 'C' ) {
                messageKey = null;
                var alloyErrObj = {
                    'id': 0,
                    'mess_type': 1,
                    'type': 1,
                    'name': 'alloy_rim_limitation',
                    'string': app.getLang('alloy_rim_limitation')
                };
                app.handleMessages(alloyErrObj, app.mess_template(), '.add_cart_continue, .go_to_cart');
            }
        }
        if ( messageKey !== null ) {
            app.handleMessages(app.getMessage( messageKey ), app.mess_template(), '.add_cart_continue, .go_to_cart');
        }
    };

    var getLocalCart = function () {
        if (localStorage.cart) {
            return JSON.parse(localStorage.cart);
        } else { return {}; }
    }

    /* Ha több lap van megnyitva akkor mindenhol kellene frissíteni a kosarat!!! */
    var cartAutoRefresh = function() {
        cart_content_date = null;
        if ( cart_content_interval ) {
            clearInterval(cart_content_interval);
            cart_content_interval = 0;
        }
        cart_content_interval = setInterval(function () {
            getCart();
        }, 10000);
    }

    var refreshCartData = function (fn) {
        $.getJSON('/ajaxLoader.php?module=Cart', function (data) {
           
            cart_content = data;
            cart_content_date = Date.now(); 
            try {                
                fn(data);
            } catch (error) {
                
            } 
        }, 'json').fail(function (e) {
            console.log(e);
        });
    };

    var refreshServiceCartData = function (fn) {
        $.getJSON('/ajaxLoader.php?module=Cart&services=1', function (data) {
           
            cart_services_content = data;
            cart_services_content_date = Date.now();   
            
            try {                
                fn(data);
            } catch (error) {
                
            } 
        }, 'json').fail(function (e) {
            console.log(e);
        });
    };
 
    var getServiceCartData  = function () { 
            return cart_services_content;
    }

    var removeFromCart = function (item_no,fn) {
        $.getJSON('/ajaxLoader.php?module=Cart&del=' + item_no, function (data) {
            try {                
                fn();
            } catch (error) {
                
            }
          })  
        
    };

    var removeServiceFromCart = function (item_no,fn) {
        $.getJSON('/ajaxLoader.php?module=Cart&del-service=' + item_no, function (data) {
            try {                
                fn();
            } catch (error) {
                
            }
          })  
        
    };


    var getCart = function () {
        if (2 == 1 /*storage_exists*/) {
            cart_content = $(".cart-amount").getLocalCart();
            getCartTotal(cart_content, true);
        } else {
            $.getJSON('/ajaxLoader.php?module=Cart', function (data) {
                //console.log('getCart::ajaxLoader.php?module=Cart', data);
                cart_content = data;
                cart_content_date = Date.now(); /* Utolsó frissítés dátuma */
//console.log('getCart: ', data, cart_content_date);
                /* Van purchase oldal! */
                if ($("#send-order-btn").length && !Object.keys(cart_content).length) {
                    $(".content_div").html('<h1>' + app.getLang('empty_cart') + '</h1>');
                    location = "/";
                }

                getCartTotal(cart_content, true);
            }, 'json').fail(function (e) {
                console.log(e);
            });
        }

    };

    /**
     * Kosár tartalmának szummázott bruttó összege
     * @param {type} cart
     * @returns {Cart.getCartTotal.total|Number}
     */
    var getCartTotal = function (cart, refreshCartBody) {
        var total = 0;
        var titles = [];
        var coupons = {};
        //var vatMulti = 1 + VAT;
        var cartItemsCount = Object.keys(cart).length;
//console.log(cart, cartItemsCount);
        $.each(cart, function (l, obj) {
//console.log(l, obj);
            var kit = 0;
            var kitGross = 0;
            var itemsCount = 0; /* Termék mennyiség */
            if ( typeof obj.items !== 'undefined' ) {
                itemsCount = parseFloat(obj.items);
                if ( isNaN(itemsCount) ) { itemsCount = 0; }
            }
            /* MSG+ATTN: Az összes inputon átirja a mennyiséget ahol nem egyezik a kosáréval! */
            /* TODO+BUG: Ismert hiba, ha a purchase oldalon vagyunk és a kosárba új elem került akkor a listában nem jelenik meg automatikusan */
            if ( typeof obj.KOD !== 'undefined' ) {
                var inputClass = '.cart_item_' + obj.KOD + ' .cart_item__count input';
                var inputObj = $(inputClass);
                if ( inputObj.length && inputObj.val() != itemsCount ) {
                    inputObj.val( itemsCount );
                }
            }

            /* COUPON */
            /* Van-e kupon akció */
            var coupon = app.couponMatch(obj.brand, obj.season_code, itemsCount);
            if ( coupon !== false ) {
                coupons[ coupon['title'] ] = coupon;
            }

            var kitCount = app.getKITquantity(itemsCount); /* 4 db-onként jár 1 kit */
            //var kitCount = Math.floor(itemsCount / 4); /* 4 db-onként jár 1 kit */
            //console.log('itemsCount: ',  itemsCount, ', kitCount: ', kitCount);
            var itemPrice = 0; /* Nettó termékár */
            if ( typeof obj.price !== 'undefined' ) {
                itemPrice = parseFloat(obj.price);
                if ( isNaN(itemPrice) ) { itemPrice = 0; }
            }
            var itemPriceGross = itemPrice * vatMulti; /* Bruttó termékár */
            itemPriceGross = parseFloat(itemPriceGross.toFixed(app.fraction()));
            //console.log('itemPrice: ',  itemPrice, ', itemPriceGross: ', itemPriceGross);
            if (
                typeof obj.kit === 'object' && Object.keys( obj.kit ).length
                && obj.cicsop == 'CMOM'
            ) { /* Van kit ojjekt */
                var kitPrice = 0;
                if ( typeof obj.kit.price !== 'undefined' ) {
                    kitPrice = parseFloat(obj.kit.price);
                    if ( isNaN(kitPrice) ) { kitPrice = 0; }
                }
                var kitListPrice = 0;
                if ( typeof obj.kit.list_price !== 'undefined' ) {
                    kitListPrice = parseFloat(obj.kit.list_price);
                    if ( isNaN(kitListPrice) ) { kitListPrice = 0; }
                }
                if ( kitPrice > 0 ) { kitGross = (kitPrice * vatMulti); }
                else if (kitListPrice > 0 ) { kitGross = (kitListPrice * vatMulti); }
                kitGross = parseFloat(kitGross.toFixed(app.fraction()));
                kit = (kitGross * kitCount);
                /*
                if (obj.kit.price) {
                    kit=(obj.items / 4) * ( parseFloat(obj.kit.price) * vatMulti).toFixed(app.fraction()) ;
                } else {
                    kit=(parseFloat(obj.kit.list_price) * (obj.items / 4) * vatMulti).toFixed(app.fraction());
                }
                */
            }
            //console.log('kit: ', kit);
            //var t = parseFloat(obj.items) * parseFloat((obj.price) * vatMulti).toFixed(app.fraction());
            var itemsTotal = (itemsCount * itemPriceGross);
            var itemsTotalKit = itemsTotal + kit;
            titles.push( obj.name + ': ' + itemsTotalKit.toFixed(app.fraction()) + ' = (' + itemsCount + ' x ' + itemPriceGross.toFixed(app.fraction()) +')' + (kit>0? ' + ' + kit.toFixed(app.fraction()) +' ( ' + kitCount + ' x ' + kitGross.toFixed(app.fraction()) + ' kit)' :'') ) ;
            total += itemsTotalKit;
        });

//Kupon összesen.
//Kupon kedvezményt csak ha szerelés is van
        var discountPrice = 0;
        if (
            $('#delivery_method').val() == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING &&
            typeof coupons !== 'undefined' && Object.keys(coupons).length > 0
        ) {
            for ( var couponTitle in coupons) {
                var coupon = coupons[couponTitle];
                if (
                    typeof coupon['discount_service_name'] === 'string' &&
                    typeof coupon['discount_service_gross_price'] === 'number' &&
                    coupon['discount_service_name']
                ) {
                    //Minden gumira megkapja a kedvezményt
                    discountPrice += -Math.abs(coupon['discount_service_gross_price']);

                    //Csak a legjobb kedvezményt kapja meg
                    /*
                    if ( Math.abs(discountPrice) < Math.abs(coupon['discount_service_gross_price']) ) {
                        discountPrice = -Math.abs(coupon['discount_service_gross_price']);
                    }
                    */
                }
            }
        }
        $(document).trigger("purchase-total", [ { 'key': 'discount', 'price': discountPrice } ]);

        //Összesen
        total = parseFloat(total.toFixed(app.fraction()));
        $(document).trigger("purchase-total", [ { 'key': 'cart', 'price': total } ]);

        //console.log('getCartTotal', total, typeof total);
        if (
            typeof refreshCartBody === 'undefined' ||
            ( typeof refreshCartBody !== 'undefined' && refreshCartBody )
        ) {
            //var formattedTotal = app.getFormattedPrice(total);
            var formattedTotal = app.getFormattedPrice(total, true);
            $('.js--cart-total').html(formattedTotal);

            if ( total > 0 || cartItemsCount > 0 ) {
                /*
                $('.cart-amount').html(app.getLang('place_order') + " - " + total.toLocaleString('fr-FR', {
                    minimumFractionDigits: app.fraction(),
                    maximumFractionDigits: app.fraction()
                }).replace(',', '.') + " " + app.getSettingData( 'currency_' + app.domain() ) ).attr('title', titles.join("\n") );
                */
                $('.cart-amount').html( app.getLang('place_order') + " - " + formattedTotal ).attr('title', titles.join("\n") );
            } else {
                //$('.cart-amount').html("0 " + app.getSettingData( 'currency_' + app.domain() ) );
                $('.cart-amount').html( formattedTotal );
                $('.cart-body').html(app.getLang('empty_cart'));
            }
            //console.log('cartItemsCount:', cartItemsCount);
            //$(".cart_button__item_counter").html( 777 );
            $(".cart_button__item_counter").html( cartItemsCount );
            if ( total > 0 || cartItemsCount > 0 ) { $(".cart_button").addClass("on"); }
            else { $(".cart_button").removeClass("on"); }
        }

        /* MSG+ATTN!!!: Az új fizetési oldalon a kosarat befrissítem */
        /* MSG+ATTN!!!: Az új fizetési oldalon a kosarat befrissítem */
        /* MSG+ATTN!!!: Az új fizetési oldalon a kosarat befrissítem */
        var checkoutForm = $('#checkout-form');
        if ( checkoutForm.length ) {
            $(document).trigger('cart-event', [{'type': 'refresh', 'cart': cart }]);
        }
        /* --- */

        return total;
    }

    var deleteCartItem = function (back, del_element) {
        var del_item = del_element.attr('data-rel');
        if ( typeof del_item !== 'undefined' && del_item) {
//console.log('deleteCartItem: ' , back , del_item );
//return true;
            //var del_row = $(".cart_item_" + del_item);
            if (2 == 1 ) { /*storage_exists*/
                delete cart_content[del_item];
                localStorage.setItem("cart", JSON.stringify(cart_content));
                getCartTotal(cart_content, true);
                $(".cart_item_" + del_item).remove();
                if (back && !Object.keys(cart_content).length) { location="/"; }
            } else {
                $.getJSON('/ajaxLoader.php?module=Cart&del=' + del_item, function (data) {
//console.log('del_item: ' , del_item);
                    if ( typeof cart_content[del_item] !== 'undefined' ) {
                        var p = cart_content[del_item];
//console.log('del_item: ', p);
                        /*
                        var cartItemType = p.type;
                        if ( typeof p['type_key'] !== 'undefined' ) {
                            cartItemType = app.getLang( p['type_key'] );
                        }
                        */

                        try{
                            dLayer.removeFromCart(p);
                        }catch(e){

                        }

                    }

                    cart_content = data;
                    getCartTotal(cart_content, true);
                    app.purchase().refreshCartContent();
                    app.purchase().refreshExtraServices();

                    //del_row.remove();
                    if ( typeof cart_content[ del_item ] === 'undefined' ) {
                        $(".cart_item_" + del_item).remove();
                    }

                    if ( !Object.keys(cart_content).length ) { /* A kosár üres! */
                        if ( $("#send-order-btn").length ) {
                            back = true;
                            $(".content_div").html('<h1>' + app.getLang('empty_cart') + '</h1>');
                        }
                        if ( back ) {
                            location = "/";
                            //app.BackToList();
                        }
                    }

                }, 'json').fail(function (e) {
                    /*console.log(e);*/
                });
            }
        }
    }

    //var changeCartItem = function (back, input, kitQuantity) {
    var changeCartItem = function (back, input) {
        //if (typeof kitQuantity === 'undefined' ) { kitQuantity = 0; }
        var change_item = input.attr('data-rel');
        if ( typeof change_item !== 'undefined' && change_item ) {
            var item_no = parseInt(input.val());
            if ( !isNaN(item_no) && item_no > 0 ) {
//console.log('changeCartItem: ' , back, change_item, item_no);
//return true;
                //cart_content[change_item].items = item_no;
                /*item_total_div = $("#item-total-" + change_item);*/
                if (2 == 1 /*storage_exists*/) {
                    cart_content[change_item].items = item_no;
                    localStorage.setItem("cart", JSON.stringify(cart_content));
                    getCartTotal(cart_content, true);
                    //$("#check_items_" + change_item).val(item_no);
                    if (back && !Object.keys(cart_content).length)
                        app.BackToList();
                    /*item_total_div.html(Math.ceil((cart_content[change_item].items * cart_content[change_item].price * VAT)));*/
                } else {
                    $.getJSON('/ajaxLoader.php?module=Cart&change=' + change_item + '&items=' + item_no, function (data) {
                        cart_content = data;
                        app.purchase().refreshCartContent();
                        /*item_total_div.html(Math.ceil((cart_content[change_item].items * cart_content[change_item].price * VAT)));*/
                        getCartTotal(cart_content, true);
                        app.purchase().refreshExtraServices();
                        $("#check_items_" + change_item).val(item_no);
                        if ( !Object.keys(cart_content).length ) { /* A kosár üres */
                            if ( $("#send-order-btn").length ) { /* Valszínű megrendelés oldal */
                                back = true;
                                $(".content_div").html('<h1>' + app.getLang('empty_cart') + '</h1>');
                            }
                            if ( back ) {
                                location = "/";
                                //app.BackToList();
                            }
                        }
                    }, 'json').fail(function (e) {
                        /*console.log(e);*/
                    });
                }
            }
        }
    };

    /* Kosár gombra klikkeléskor készül el a kosár */
    var cartData = function () {
        //console.log('cartData', cart_content);

        if (Object.keys(cart_content).length) {
            dLayer.checkoutSteps(cart_content)
            var divdata = '';
            //var actCurrency = app.getSettingData( 'currency_' + app.domain() );
            $.each(cart_content, function (key, obj) {
//console.log(key, obj);
                /* Item Price */
                var itemPrice = 0; /* Nettó termékár */
                if ( typeof obj.price !== 'undefined' ) {
                    itemPrice = parseFloat(obj.price);
                    if ( isNaN(itemPrice) ) { itemPrice = 0; }
                }
                var itemPriceGross = itemPrice * vatMulti; /* Bruttó termékár */
                itemPriceGross = parseFloat((itemPriceGross).toFixed(app.fraction()));
                var itemPriceFormatted = app.getFormattedPrice(itemPriceGross);
                /* KIT */
                var kitGross = 0;
                if ( typeof obj.kit === 'object' && Object.keys('kit').length ) { /* Van kit */
                    var kitPrice = 0;
                    if ( typeof obj.kit.price !== 'undefined' ) {
                        kitPrice = parseFloat(obj.kit.price);
                        if ( isNaN(kitPrice) ) { kitPrice = 0; }
                    }
                    var kitListPrice = 0;
                    if ( typeof obj.kit.list_price !== 'undefined' ) {
                        kitListPrice = parseFloat(obj.kit.list_price);
                        if ( isNaN(kitListPrice) ) { kitListPrice = 0; }
                    }
                    if ( kitPrice > 0 ) { kitGross = (kitPrice * vatMulti); }
                    else if (kitListPrice > 0 ) { kitGross = (kitListPrice * vatMulti); }
                }
                kitGross = parseFloat((kitGross).toFixed(app.fraction()));
                var kitGrossFormatted = app.getFormattedPrice(kitGross);
                //Tétel tipusa aktuális nyelven
                var cartItemType = obj.type;
                if ( typeof obj['type_key'] !== 'undefined' ) {
                    cartItemType = app.getLang( obj['type_key'] );
                }

                divdata += '<div class="cart_item_' + key + '">';
                divdata += '<div class="cart_item">';
                divdata += '<div class="grid gutter--sm">';
                divdata += '<div class="col cart_item__image">';
                divdata += '<div class="thumbnail square">';
                //divdata += '<img src="' + obj.image_url + '" />';
                divdata += '<img src="' + app.http2https(obj.image_url) + '" />';
                divdata += '</div>';
                divdata += '</div>';
                divdata += '<div class="col cart_item__details">';
                divdata += '<div class="grid gutter--sm">';
                divdata += '<div class="col cart_item__details__left">';
                divdata += '<div class="cart_item__name">' + obj.brand + ' ' + obj.pattern + ' ' + " " + cartItemType + ' </div>';
                divdata += '<div class="cart_item__parameters">' + obj.name + '</div>';
                if ( kitGross > 0 ) {
                    divdata += '<div class="cart_item__kit">Kit: ' + kitGrossFormatted + ' / 4 '+app.getLang('abbr_pcs')+'</div>';
                }
                divdata += '</div>';
                divdata += '<div class="col cart_item__details__right">';
                divdata += '<div class="cart_item__price">' + itemPriceFormatted + ' / ' + app.getLang('abbr_pcs') + '</div>';
                divdata += '<div class="cart_item__count">';
                divdata += '<input data-rel="' + key + '" class="text--center" type="text" value="' + obj.items + '" size="2"> ' + app.getLang('abbr_pcs');
                divdata += '</div>';
                divdata += '<button  data-rel="' + key + '" class="cart_item__remove_button btn--remove_cart_item"><span class="icon icon--trash"></span></button>';
                divdata += '</div>';
                divdata += '</div>';
                divdata += '</div>';
                divdata += '</div>';
                divdata += '</div>';
                divdata += '<hr /> ';
                divdata += '</div>';



            });
            getCartTotal(cart_content, true);
            $(".cart-content").append(divdata);
            $(".cart-body h2").html(app.getLang('cart_content'));
        } else {
            $('.cart-body').html( app.getLang('empty_cart') );
        }

    };

    var BackToList = function () {
        $(this).fadeOut('fast', function () {
            $("html, body").animate({
                scrollTop: 0
            }, "fast");
            if (search_data) {
                // $(this).html(templates['product_list']);
                $(this).fadeIn('fast', function () {
                    listData(search_data);

                });
            } else {
                location = '/';
            }
        });
    };

    $(document).on('click', '.cart_item__remove_button', function (e) {
        e.preventDefault();
        var back = app.URI == 'purchase' ? true : false;
        deleteCartItem(back, $(this));
        return false;
    });

    $(document).on('focusout', '.cart_item__count input', function (e) {
        var o = $(this);
        var back = app.URI == 'purchase' ? true : false;
        e.stopPropagation();
//MSG: Ha nem írt be semmit akkor is törli
        if ( !o.val() ) { deleteCartItem(back, o); }
    });

    /* Megrendelés oldalon vagy Kosárnál a mennyiségek módosítása */
    $(document).on('input propertychange keyup', '.cart_item__count input', function (e) {
        /* MSG: Több eseménynél is lefut a cucc!!! */
        //console.log(myName);
        var cartItemCntO = $(this);
        //var cartItemRel = cartItemCntO.attr('data-rel');
        var itemCode = cartItemCntO.attr('data-rel');
        var cartItemCnt = parseInt( cartItemCntO.val() );
        if ( isNaN(cartItemCnt) ) { cartItemCnt = 0; }
        var cartItemParent = $();
        if ( typeof itemCode !== 'undefined' && itemCode ) {
            cartItemParent = cartItemCntO.closest( '.cart_item_' + itemCode );
        }
        if ( cartItemParent.length ) {
            var cartItemsParent = cartItemParent.parent();
            //console.log('cartItemParent', '.cart_item_' + itemCode);
            e.stopPropagation();
            var cartItemsCheck = $('.cart-items-check').first();
            var back = (app.URI == 'purchase' ? true : false);
            var kitQty = 0;
            var deliveryItems = 0;
            /* MSG: valahogy a purchase-en belül is meg kellene tudni változtatni... */
            var couponExists = false;
            //var cartDatas = app.cart().cart_content();
            var cartDatas = cart_content;
            //console.log(e.type);
            //console.log('cart_content:: ', cart_content);
            //console.log('app.cart().cart_content():: ', cartDatas);
            //Cart::cart_content még a módosítás előtti állapotot tartalmazza!!!
            $.each(cart_content, function (key, obj) {
                //var ccQty = parseInt(obj.items);
                //if ( isNaN(ccQty) ) { ccQty = 0; }
                //ATTN!!! Mennyiséget szigorúan az inputmezőből veszem
                var inputO = cartItemsParent.find('.cart_item_' + obj.KOD+ ' .cart_item__count input').first();
                //var inputO = $('.cart_item_' + obj.KOD+ ' .cart_item__count input').first();
                var iQty = parseInt(inputO.val());
                if ( isNaN(iQty) ) { iQty = 0; }
                deliveryItems += iQty;
                //console.log( obj.name, ', from: ' + obj.items, 'to: ' + iQty);
                /* COUPON */
                var coupon = app.couponMatch(obj.brand, obj.season_code, iQty);
                if (
                    coupon !== false
                    //app.couponMatch(obj.brand, obj.season_code, iQty)
                ) { couponExists = true; }
            });
            //console.log('couponExists: ', couponExists,', new total count: ', deliveryItems );
            /*
            $.each($(".cart-items-check .cart_item__count input"), function (i, o) {
                var oQty = parseInt($(this).val());
                if ( isNaN(oQty) ) { oQty = 0; }
                deliveryItems += parseInt( oQty );
            });
            */
            /*
            $(".shipping").remove();
            cartItemsCheck.append( app.purchase().getDeliveryCost(deliveryItems) );
            */
            //$(".shipping").html( app.purchase().getDeliveryCost(deliveryItems) );
            var DC = app.purchase().getDeliveryCost(deliveryItems);
//TODO: Total fizetés
            /* Itt már nem hagyom módosítgatni, mert a végtelenségig pakolászik kifelé */
            /* COUPON */
            /* Fizetés oldalról kell csak leszedni!!! */
            $("#send_order .coupon-button").remove();
            /* 2020.03.18: Azt kérték itt ne legyen dobozka */
            couponExists = false;
            if ( couponExists ) {
                var coupon = app.getCouponData();
                if ( Object.keys(coupon).length && typeof coupon.button !== 'undefined' ) {
                    if ( app.hasTemplate( coupon.button, true ) ) {
                        //var couponBox = $( app.getTemplate( coupon.button, true ) );
                        //couponBox.attr('href', app.couponBrandUrl(data.brand) );
                        //couponBox.insertAfter(".cart-items-check");
                        $( app.getTemplate( coupon.button, true ) ).insertAfter(".cart-items-check");
                    } else {
                        $('<a class="coupon-button" href="//gumi.hu/ajanlatok/gumiszereles-arak" target="_blank"><img style="width:100%;" src="/assets/media/images/' + coupon.button + '" alt="'+coupon.button+'"></a>').insertAfter(".cart-items-check");
                    }
                }
                /*
                $(".coupon-agree").remove();
                $(".coupon-offer").remove();

                if ( deliveryItems >= 4) {
                    $(app.templates().coupon_agree.replace('[[coupon-agree]]', app.getLang('coupon_terms') )).insertAfter(".cart-items-check");
                } else {
                    if ( Object.keys(coupon).length && typeof coupon.button !== 'undefined' ) {
                        if ( coupon.button.indexOf('.html') == -1 ) {
                            $('<br><a href="http://gumi.hu/ajanlatok/gumiszereles-arak" target="_blank"><img width=100% src="/assets/media/images/' + coupon.button + '"></a>').insertAfter(".cart-items-check");
                        } else {
                            $(app.templates().coupon).insertAfter(".cart-items-check");
                        }
                    }
                }
                */
            }

            //var itemCode = cartItemCntO.attr('data-rel');
            var itemStock = 0;
            var cartData = null;
            //var cartDatas = app.cart().cart_content();
            if (
                typeof itemCode !== 'undefined' &&
                itemCode &&
                typeof cartDatas[itemCode] !== 'undefined'
            ) { cartData = cartDatas[itemCode]; }
//console.log(itemCode, cartDatas, cartData);
//console.log(itemCode, cartData);
            if ( cartData !== null ) {
                itemStock = parseInt(cartData.stock); /* Készlet */
                if ( isNaN(itemStock) ) { itemStock = 0; }
                if ( itemStock < cartItemCnt ) { /* Nincs elegendő tétel */
                    productProfile().setProductNumber( itemStock, cartItemCntO );
                }

                //if ( cartData.cicsop == 'CMOM' ) { kitQty = app.getKITquantity( cartItemCntO ); }
                /*
                if (
                    cartData.type == app.getLang('alloy_wheel') ||
                    ( typeof cartData.type_key === 'string' && cartData.type_key == 'alloy_wheel' )
                ) {
                    //kitQty = app.setWheelQuantity( cartItemCntO );
                    kitQty = app.getKITquantity( cartItemCntO );
                }
                */
                /*
                if ( itemStock >= cartItemCnt ) {
                    changeCartItem(back, cartItemCntO, kitQty);
                } else {
                    productProfile().setProductNumber( itemStock, cartItemCntO );
                    changeCartItem(back, cartItemCntO, kitQty);
                }
                */
                changeCartItem(back, cartItemCntO);
            }
            /* Kosárból törlés, csak ha 0-t írt be */
            if ( cartItemCntO.val() == '0' ) { deleteCartItem(back, cartItemCntO); }

        }
    });


    return {
        getCart: getCart,
        cartAutoRefresh: cartAutoRefresh,
        saveToCart: saveToCart,
        cart_content: function () {
            return cart_content;
        },
        getCartTotal: getCartTotal,
        cartData: cartData,
        refreshServiceCartData : refreshServiceCartData , 
        refreshCartData: refreshCartData,
        getServiceCartData: getServiceCartData,
        removeFromCart: removeFromCart, 
        removeServiceFromCart: removeServiceFromCart, 
        couponExists: function() {
            var out = false;
            $.each(cart_content, function (key, obj) {
                var ccQty = parseInt(obj.items);
                if ( isNaN(ccQty) ) { ccQty = 0; }
                /* COUPON */
                var coupon = app.couponMatch(obj.brand, obj.season_code, ccQty);
                if (
                    coupon !== false
                ) { out = true; return true; }
                //console.log( 'Cart::couponExists:: ',  obj, out );
            });
            return out;
        }
    }
}
/* KOSÁR END */



function Purchase(cc) {
    var myName = 'Purchase'; /* Debug */
    var user = app.getUserData();
//console.log('Purchase.user', user);
    var VAT = parseFloat(app.getSettingData( 'vat_' + app.domain() ) );
    var CURRENCY = app.getSettingData( 'currency_' + app.domain() );
    var coupon = app.getCouponData();
    var vanConti = false; /* Inicializáláskor beállítom */
    var couponExists = false; /* Inicializáláskor beállítom */
    var cart_content = (typeof cc === "undefined") ? app.cart().cart_content() : cc;
    /* Kell egy segédváltozó az össz érték kiszámításához */
    var total_price_helper = {};
    $(document).on("purchase-total", function ( e, obj ) {
        if (
            typeof obj === 'object' &&
            typeof obj['key'] !== 'undefined' &&
            typeof obj['price'] !== 'undefined'
        ) {
            var price = parseFloat(obj['price']);
            if ( isNaN(price) ) { price = 0; }
            var total = 0;
            total_price_helper[ obj['key'] ] = price;
            for ( var i in total_price_helper ) {
                var price = total_price_helper[i];
                total += price;
                if ( i == 'discount' ) {
                    var formattedPrice = app.getFormattedPrice(price, true);
                    $('.js--discount-total').html(formattedPrice);
                } else if ( i == 'cart' ) {
                    var formattedPrice = app.getFormattedPrice(price, true);
                    $('.js--cart-total').html(formattedPrice);
                }

            }
            //var totalFormatted = parseFloat( total ).toFixed(app.fraction());
            var totalFormatted = app.getFormattedPrice(total, false);

            $('.js--purchase-total-gross-price').html(totalFormatted);
        }
 
    });

    /* Nem a legjobb ötlet felülírni a user eredeti adatait, de legyen így egyszerű az élet! */
    var fillUserData = function (d) {
//console.log('fillUserData', d, user);
        if (Object.keys(d).length) {
            var neededKeys = { /* {d: user} */
                'name': 'name',
                'email': 'email',
                'phone_number': 'phone',
                'plate_number': 'platenum',
                'delivery_name': 'delivery_name',
                'delivery_address': 'delivery_address',
                'delivery_postcode': 'delivery_postcode',
                'delivery_city': 'delivery_city',
                'inv_name': 'inv_name',
                'inv_address': 'inv_address',
                'inv_postcode': 'inv_postcode',
                'inv_city': 'inv_city',
                'inv_taxnum': 'inv_taxnum',
                'inv_company_id': 'inv_company_id'
            };
            for ( var dKey in neededKeys ) {
                var uKey = neededKeys[dKey];
                if ( typeof d[dKey] !== 'undefined' && d[dKey] !== false ) {
                    user[uKey] = d[dKey];
                    //console.log('fillUserData', uKey, d[dKey]);
                }
            }

            if ( typeof d.delivery_method !== 'undefined' ) {
                $("#delivery_method").val(d.delivery_method).attr('data-default', d.delivery_method);
                //.trigger('change');
            }

            if ( typeof d.location_city !== 'undefined' ) {
                $("#location_city").attr('data-default', d.location_city);
                //$("#location_city").val(d.location_city);
            }

            if ( typeof d.location_address !== 'undefined' ) {
                $("#location_address").attr('data-default', d.location_address);
                //$("#location_address").val(d.location_address);
            }

        }
    }

    /* Extra szolgáltatások lekérése */
    var exSrvLoader = null;
    var extraServices = null;
    exSrvLoader = $.getJSON('/ajaxLoader.php?module=AllParams&type=extra_services');
    exSrvLoader.done(function (e) {
        //console.log('extra_services', e);
        extraServices = e;

        $(document).on("click mychange", "#service_mounting_balancing", function (e) {
            var o = $(this);
            refreshExtraServices({
                'target_id': o.attr('id'),
                'gtm': {
                    'event': ( o.is(':checked')? 'addToCart':'removeFromCart')
                }
            });
            //console.log('service_mounting_balancing', o.is(':checked'));
        });

        $(document).on("click", "#service_tire_guarding", function (e) {
            var o = $(this);
            //console.log('service_tire_guarding', o.is(':checked'));
            refreshExtraServices({
                'target_id': o.attr('id'),
                'gtm': {
                    'event': ( o.is(':checked')? 'addToCart':'removeFromCart')
                }
            });
        });

        $(document).on("click", "#service_alloy_wheels", function (e) {
            var o = $(this);
            //console.log('service_alloy_wheels', o.is(':checked'));
            refreshExtraServices({
                'target_id': o.attr('id'),
                'gtm': {
                    'event': ( o.is(':checked')? 'addToCart':'removeFromCart')
                }
            });
        });

        $(document).on("click", 'input[type="radio"][name="car_type"]', function (e) {
            refreshExtraServices();
        });

        $(document).on("change", '#service_mounting_balancing_qty', function (e) {
            refreshExtraServices();
        });
        $('.js--purchase-service-price').html(0); /* Árak kinullázása */
        //$('.js--purchase-service-price-parent').hide(); /* Árak eltüntetése */
        $('.extra-services-parent').fadeIn(1000);
        /* Azt kérték, hogy legyen megjelölve alapból... */
        $('#service_mounting_balancing').prop('checked', true).trigger('mychange');
    }).fail(function (e) {
        console.log('extra_services', e);
        $.fn.alert(
            'ERROR',
            e.responseText,
            'OK',
            null,
            null,
            null
        );
    });

    /* Extra szolgáltatások frissítése */
    var refreshExtraServices = function (multiObject) {
        /* *** */
        var targetId = null;
        var GTM_event = null;
        var GTM_items = [];
        if ( typeof multiObject !== 'undefined' && multiObject ) {
            if ( typeof multiObject['target_id'] === 'string' && multiObject['target_id'] ) { targetId = multiObject['target_id']; }
            if ( typeof multiObject['gtm'] === 'object' && typeof multiObject['gtm']['event'] === 'string' && multiObject['gtm']['event'] ) {
                GTM_event = multiObject['gtm']['event'];
            }
            //console.log('refreshExtraServices', multiObject );
        }
//console.log('refreshExtraServices', multiObject );
        /* *** */

        var dm = $('#delivery_method').val(); /* Átvételi mód */
        var la = $('#location_address').val(); /* telephely id */
        var laOption = $('#location_address option[value="'+la+'"]'); /* telephely OPTION */
        var laType = laOption.attr('data-type'); /* telephely tipus */
        var selectedCarType = $('input[name="car_type"]:checked').val();
        var plusMountQty = parseInt($('#service_mounting_balancing_qty').val());
        if ( isNaN(plusMountQty) ) { plusMountQty = 0; }
        var ESP = $('.extra-services-parent');
        var serviceMountingBalancing = $('#service_mounting_balancing');
        var SMBparent = serviceMountingBalancing.closest('.js--purchase-service-parent');
        //Gumiszerelés bekapcsolásakor használható szolgáltatások
        var dependentServices = {
            'service_tire_guarding': null
            , 'service_alloy_wheels': null /* alufelni */
        };
        for (var id in dependentServices ) {
            var el = $('#'+id);
            var elPar = el.closest('.js--purchase-service-parent');
            var elDetails = elPar.find('.js--service-details');
            dependentServices[id] = {
                'el': el,
                'parent': elPar,
                'details': elDetails,
                'checked': el.is(':checked')
            };
            elDetails.empty();
            elDetails.fadeOut(100);
        }
        //console.log('dependentServices', dependentServices);
        //---
        //var serviceTireGuarding = $('#service_tire_guarding');
        //var STGparent = serviceTireGuarding.closest('.js--purchase-service-parent');
        //var SMBchecked = serviceMountingBalancing.is(':checked');
        var PSPP = $('.js--purchase-service-price-parent'); /* Összes szolga ár szülője */
        var PSTP = $('.js--purchase-service-total-price'); /* Összesítés ár szülője */
        //--- szolgáltatások részletezése...
        var SMBdetails = SMBparent.find('.js--service-details');
        SMBdetails.empty();
        SMBdetails.fadeOut(100);
        //---
        var vatMulti = VAT + 1;
        //var actCurrency = app.getSettingData( 'currency_' + app.domain() );
        //PSPP.hide(); /* Árak eltüntetése */
        $('.js--purchase-service-price').html(0);
        var isShow = false;
        if (
            app.domain() == 'hu' &&
            typeof extraServices !== 'undefined' && extraServices &&
            Object.keys(extraServices).length &&
            //( dm == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP || dm == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING ) &&
            dm == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING &&
            laType === '0'
        ) { isShow = true; }
//console.log('refreshExtraServices', plusMountQty );
//console.log('refreshExtraServices', Object.keys(extraServices).length, extraServices );
//console.log('refreshExtraServices', isShow );
        if ( isShow ) {
            //serviceMountingBalancing.prop('checked', true);
            ESP.fadeIn(1000);
            var SMBchecked = serviceMountingBalancing.is(':checked');

            if ( SMBchecked ) { /* Szolgáltatások engedélyezése */
                //serviceTireGuarding.prop('disabled', false);
                for (var id in dependentServices ) {
                    var srvRow = dependentServices[id];
                    srvRow['el'].prop('disabled', false);
                    srvRow['checked'] = srvRow['el'].is(':checked');
                }
            } else { /* Szolgáltatások tiltása */
                //serviceTireGuarding.prop('checked', false).prop('disabled', true);
                for (var id in dependentServices ) {
                    var srvRow = dependentServices[id];
                    srvRow['el'].prop('checked', false).prop('disabled', true);
                    srvRow['checked'] = srvRow['el'].is(':checked');
                }
            }

            var totalGrossAllPrice = 0; /* Összes tétel bruttó ára */
            var neededServices = {};

            if ( SMBchecked ) {
                /* Itt kell a kedvezményes márkák listáját bővíteni... */
                /* Alábbi márkák esetén 4db felett rákerül a KENYELMKEDV vagy SZERGUMIHU */
                var discountBrands = [ ]; /* 'all' */
                /*
                if ( true || app.isDevelopment() ) {
                    var discountBrands = [ 'kumho', 'falken', 'toyo', 'bridgestone', 'firestone', 'continental', 'semperit', 'barum' ];
                }
                */
                var discountSumma = 0;
                var discountServiceName = null;
                var rimCounts = {};
                var minRimSize = null;
                for (var ci in cart_content) {
                    var cRow = cart_content[ci];
                    var qty = parseInt(cRow.items);
                    var rimSize = null;
                    var cicsop = null;
                    if ( typeof cRow['cicsop'] === 'string' && cRow['cicsop'] ) { cicsop = (cRow['cicsop']).toUpperCase(); }
                    //console.log(cRow, cicsop.substr(0, 1) );
                    var brand = null;
                    if ( typeof cRow.brand === 'string' && cRow.brand ) {
                        brand = (cRow.brand).toLowerCase();
                        if (
                            discountBrands.indexOf(brand) > -1
                            || discountBrands.indexOf('all') > -1
                        ) { discountSumma += qty; }
                    }

//ATTN+MSG: Egyelőre csak gumiabroncsra működik
//ATTN+MSG: Egyelőre csak gumiabroncsra működik
//ATTN+MSG: Egyelőre csak gumiabroncsra működik
                    if (
                        typeof cRow.size === 'string' &&
                        typeof cicsop === 'string' && cicsop && cicsop.substr(0, 1) == 'A'
                    ) {
                        var tmp = (cRow.size).replace(/[RC]/g, '/');
                        var tmpArr = tmp.split('/');
                        if ( tmpArr.length >= 3 ) {
                            tmpArr[2] = parseInt(tmpArr[2]);
                            if ( isNaN(tmpArr[2]) ) {
                                console.log(cRow.size, tmpArr);
                            } else {
                                rimSize = tmpArr[2];
                            }
                        }
                    }
                    if ( rimSize ) {
                        if ( minRimSize === null || rimSize < minRimSize ) {
                            minRimSize = rimSize;
                        }
                        if ( typeof rimCounts[ rimSize ] === 'undefined' ) { rimCounts[ rimSize ] = 0; }
                        rimCounts[ rimSize ] += qty;
                        //console.log("rim", rimSize, cRow);
                    }
                }
                if ( minRimSize === null ) { minRimSize = 15; }
                var alloyRimCount = 0; /* Alufelni felár mennyiség */
                //console.log("minRimSize", minRimSize);
                //console.log(discountBrands, "discountSumma", discountSumma);
                /* MSG: Ha szeretne a vásárolt gumikon felül szerelni!!! */
                if ( plusMountQty > 0 && minRimSize ) {
                    if ( typeof rimCounts[ minRimSize ] === 'undefined' ) { rimCounts[ minRimSize ] = 0; }
                    rimCounts[ minRimSize ] += plusMountQty;
                }
                for ( var rimSize in rimCounts ) {
                    var rimCount = rimCounts[rimSize];
                    var rimSizeInt = Math.min(rimSize, 22);
                    var serviceName = null;
                    if ( selectedCarType === 'KT' ) {
                        serviceName = 'SZERCENTKTH';
                    } else { /* Személygépkocsiként kezelem */
                        if ( rimSizeInt <= 16 ) {
                            serviceName = 'SZERCENT15';
                        } else {
                            serviceName = 'SZERCENT'+ rimSizeInt;
                        }
                    }

                    /* Alufelni felár mennyiség */
                    if ( rimSizeInt <= 16 ) { alloyRimCount += rimCount; }

                    if ( serviceName ) {
                        if ( typeof neededServices[serviceName] === 'undefined' ) {
                            neededServices[serviceName] = { 'qty': 0, 'unit_gross_price': 0, 'total_gross_price': 0, 'type': 1, 'data': null };
                            if ( typeof extraServices[serviceName] !== 'undefined' ) {
                                neededServices[serviceName]['data'] = extraServices[serviceName];
                            }
                        }
                        neededServices[serviceName]['qty'] += rimCount;
                    }
                }
                //console.log('neededServices', neededServices);
                if ( Object.keys(neededServices).length ) { /* Van szerelés!!! */
                    var gumhotQty = 4;
                    var serviceId = 'GUMHOT';
                    var serviceName = null;
                    var serviceCicsop = 'SZER';
                    var servicePrice = 'undefined';
                    var serviceData = null;
                    if ( typeof extraServices[serviceId] !== 'undefined' ) {
                        serviceData = extraServices[serviceId];
                        serviceName = serviceData['NEV'];
                        serviceCicsop = serviceData['CICSOP'];
                        var priceKey = 'AR_' + (CURRENCY?CURRENCY:'HUF');
                        var unitNetPrice = serviceData[priceKey]; /* AR_HUF */
                        if ( typeof serviceData['CICSOP'] === 'string' && serviceData['CICSOP'] == 'ZJOV' ) {
                            unitNetPrice = Math.abs(unitNetPrice) * -1;
                        }
                        var servicePrice = parseFloat(( unitNetPrice * vatMulti ).toFixed(app.fraction()));
                    }
                    /* ATTN!!! */
                    if (
                        typeof dependentServices['service_tire_guarding'] !== 'undefined' &&
                        typeof dependentServices['service_tire_guarding']['checked'] !== 'undefined' &&
                        dependentServices['service_tire_guarding']['checked']
                    ) { /* MSG + ATTN: Csak akkor szabad felszámolni, ha van szerelés */
                        neededServices[ serviceId ] = { 'qty': gumhotQty, 'unit_gross_price': 0, 'total_gross_price': 0, 'type': 2, 'data': serviceData };
                        if ( discountSumma >= 4 ) { discountServiceName = 'KENYELMKEDV'; }
                    } else { /* Nincs tárolás csak szerelés */
                        if ( discountSumma >= 4 ) { discountServiceName = 'SZERGUMIHU'; }
                    }
                    /* *** */
                    if ( GTM_event === 'removeFromCart' && targetId === 'service_tire_guarding' ) {
                        GTM_items.push({
                            'id': (serviceId),
                            'SKU': (serviceId),
                            'brand': 'undefined',
                            'name': $.fn.capitalize(serviceName),
                            'price': servicePrice,
                            'listPrice': 'undefined',
                            'category': getGTMCategoryByCode( serviceCicsop, '', 'undefined' ),
                            'variant': 'undefined',
                            'quantity': gumhotQty,
                            'stock': 'infinity',
                            'width': 'undefined',
                            'sidewall': 'undefined',
                            'diameter': 'undefined',
                            'fuel_efficiency': 'undefined',
                            'wet_braking': 'undefined',
                            'speed_index': 'undefined',
                            'load_index': 'undefined'
                        });
                    }

                    /*
                 * 2 lehetőség alufelni felár esetében:
                 * A: vásárló pipálja be és bevallásos alapon számoljuk fel
                 * B: szerelés esetén alapból felszámoljuk és utólag kompenzálunk...
                 */

                    var srvQty = alloyRimCount;
                    var serviceId = 'ALUSZERFELARAM';
                    var serviceName = null;
                    var serviceCicsop = 'SZER';
                    var servicePrice = 'undefined';
                    var serviceData = null;
                    if ( typeof extraServices[serviceId] !== 'undefined' ) {
                        serviceData = extraServices[serviceId];
                        serviceName = serviceData['NEV'];
                        serviceCicsop = serviceData['CICSOP'];
                        var priceKey = 'AR_' + (CURRENCY?CURRENCY:'HUF');
                        var unitNetPrice = serviceData[priceKey]; /* AR_HUF */
                        if ( typeof serviceData['CICSOP'] === 'string' && serviceData['CICSOP'] == 'ZJOV' ) {
                            unitNetPrice = Math.abs(unitNetPrice) * -1;
                        }
                        var servicePrice = parseFloat(( unitNetPrice * vatMulti ).toFixed(app.fraction()));
                    }

                    if (

                        typeof dependentServices['service_alloy_wheels'] !== 'undefined' &&
                        typeof dependentServices['service_alloy_wheels']['checked'] !== 'undefined' &&
                        dependentServices['service_alloy_wheels']['checked'] &&
                        /* TODO: kiszedni ha élesítjük */
                        //app.isDevelopment() &&
                        alloyRimCount > 0
                        //minRimSize <= 16
                    ) {
                        /* Sz. Levente azt mondta, hogy ez csak akkor kell ha a felni méret <= 16 */
                        var srvQty = alloyRimCount; //4;
                        var srvType = 3; /* Vásárló pipálja */
                        //var srvType = 1; /* Alapból felszámoljuk */
                        neededServices[ serviceId ] = { 'qty': srvQty, 'unit_gross_price': 0, 'total_gross_price': 0, 'type': srvType, 'data': serviceData };
                    }

                    if ( GTM_event === 'removeFromCart' && targetId === 'service_alloy_wheels' && alloyRimCount > 0 ) {
                        GTM_items.push({
                            'id': (serviceId),
                            'SKU': (serviceId),
                            'brand': 'undefined',
                            'name': $.fn.capitalize(serviceName),
                            'price': servicePrice,
                            'listPrice': 'undefined',
                            'category': getGTMCategoryByCode( serviceCicsop, '', 'undefined' ),
                            'variant': 'undefined',
                            'quantity': alloyRimCount,
                            'stock': 'infinity',
                            'width': 'undefined',
                            'sidewall': 'undefined',
                            'diameter': 'undefined',
                            'fuel_efficiency': 'undefined',
                            'wet_braking': 'undefined',
                            'speed_index': 'undefined',
                            'load_index': 'undefined'
                        });
                    }

                    /* Kedvezmény felhasználása */
                    if ( discountServiceName ) {
                        neededServices[ discountServiceName ] = { 'qty': 1, 'unit_gross_price': 0, 'total_gross_price': 0, 'type': 1, 'data': null };
                        if ( typeof extraServices[ discountServiceName ] !== 'undefined' ) {
                            neededServices[ discountServiceName ]['data'] = extraServices[discountServiceName];
                        }
                    }

                }

//TODO: Ezen a ponton tudnám átalakítani KENYELEM* csomaggá...
//TODO: Ezen a ponton tudnám átalakítani KENYELEM* csomaggá...
//TODO: Ezen a ponton tudnám átalakítani KENYELEM* csomaggá...
                var totalGrossPricesByTypes = {};
                for ( var serviceName in neededServices ) {
                    var row = neededServices[serviceName];
                    var priceKey = 'AR_' + (CURRENCY?CURRENCY:'HUF');
                    var unitNetPrice = row['data'][priceKey]; /* AR_HUF */
                    //A jóváírások előjele legyen mindig negativ
                    if ( typeof row['data']['CICSOP'] === 'string' && row['data']['CICSOP'] == 'ZJOV' ) {
                        unitNetPrice = Math.abs(unitNetPrice) * -1;
                    }
                    //---
                    var srvType = row['type'];
                    var qty = row['qty'];
                    //Bruttó egységár
                    var unitGrossPrice = parseFloat(( unitNetPrice * vatMulti ).toFixed(app.fraction()));
                    row['unit_gross_price'] = unitGrossPrice;
                    //var totalGrossPrice = unitGrossPrice * qty;
                    //Bruttó össz
                    var totalGrossPrice = parseFloat(( unitGrossPrice * qty ).toFixed(app.fraction()));
                    row['total_gross_price'] = totalGrossPrice;
                    totalGrossAllPrice += totalGrossPrice;
                    if ( typeof totalGrossPricesByTypes[srvType] === 'undefined' ) { totalGrossPricesByTypes[srvType] = 0; }
                    totalGrossPricesByTypes[srvType] += totalGrossPrice;
                    //Szolgáltatások részletezése...
                    //var srvDetails = row['data']['NEV'] + ' (' + serviceName + '): ' + qty + ' '+app.getLang('abbr_pcs')+' * ' + app.getFormattedPrice(row['unit_gross_price'], true)  + ' = ' + app.getFormattedPrice(row['total_gross_price'], true)
                    var srvDetails = '<span class="srv-dtl-name">' + row['data']['NEV'] + ':</span><br >' + qty + ' '+app.getLang('abbr_pcs')+' * ' + app.getFormattedPrice(row['unit_gross_price'], true)  + ' = <span class="srv-dtl-price">' + app.getFormattedPrice(row['total_gross_price'], true)+'</span>';
                    var detailsElem = null;
//console.log(row);
                    if ( srvType == 1 ) { /* SZERCENT% */
                        SMBdetails.append($('<div class="block mt--0" data-cicsop="'+row['data']['CICSOP']+'">'+srvDetails+'</div>'));
                        SMBdetails.fadeIn(200);

                        if ( GTM_event === 'addToCart' && targetId === 'service_mounting_balancing' ) {
                            GTM_items.push({
                                'id': (row['data']['KOD']),
                                'SKU': (row['data']['KOD']),
                                'brand': 'undefined',
                                'name': $.fn.capitalize(row['data']['NEV']),
                                'price': row['unit_gross_price'],
                                'listPrice': 'undefined',
                                'category': getGTMCategoryByCode( row['data']['CICSOP'], '', 'undefined' ),
                                'variant': 'undefined',
                                'quantity': qty,
                                'stock': 'infinity',
                                'width': 'undefined',
                                'sidewall': 'undefined',
                                'diameter': 'undefined',
                                'fuel_efficiency': 'undefined',
                                'wet_braking': 'undefined',
                                'speed_index': 'undefined',
                                'load_index': 'undefined'
                            });
                        }
                    } else if ( srvType == 2 ) { /* GUMHOT */
                        if (
                            typeof dependentServices['service_tire_guarding'] !== 'undefined' &&
                            typeof dependentServices['service_tire_guarding']['details'] === 'object' &&
                            dependentServices['service_tire_guarding']['details'].length
                        ) {
                            detailsElem = dependentServices['service_tire_guarding']['details'];

                            if ( GTM_event === 'addToCart' && targetId === 'service_tire_guarding' ) {
                                GTM_items.push({
                                    'id': (row['data']['KOD']),
                                    'SKU': (row['data']['KOD']),
                                    'brand': 'undefined',
                                    'name': $.fn.capitalize(row['data']['NEV']),
                                    'price': row['unit_gross_price'],
                                    'listPrice': 'undefined',
                                    'category': getGTMCategoryByCode( row['data']['CICSOP'], '', 'undefined' ),
                                    'variant': 'undefined',
                                    'quantity': qty,
                                    'stock': 'infinity',
                                    'width': 'undefined',
                                    'sidewall': 'undefined',
                                    'diameter': 'undefined',
                                    'fuel_efficiency': 'undefined',
                                    'wet_braking': 'undefined',
                                    'speed_index': 'undefined',
                                    'load_index': 'undefined'
                                });
                            }

                        }
                    } else if ( srvType == 3 ) { /* ALUSZERFELARAM */
                        if (
                            typeof dependentServices['service_alloy_wheels'] !== 'undefined' &&
                            typeof dependentServices['service_alloy_wheels']['details'] === 'object' &&
                            dependentServices['service_alloy_wheels']['details'].length
                        ) {
                            detailsElem = dependentServices['service_alloy_wheels']['details'];

                            if ( GTM_event === 'addToCart' && targetId === 'service_alloy_wheels' ) {
                                GTM_items.push({
                                    'id': (row['data']['KOD']),
                                    'SKU': (row['data']['KOD']),
                                    'brand': 'undefined',
                                    'name': $.fn.capitalize(row['data']['NEV']),
                                    'price': row['unit_gross_price'],
                                    'listPrice': 'undefined',
                                    'category': getGTMCategoryByCode( row['data']['CICSOP'], '', 'undefined' ),
                                    'variant': 'undefined',
                                    'quantity': qty,
                                    'stock': 'infinity',
                                    'width': 'undefined',
                                    'sidewall': 'undefined',
                                    'diameter': 'undefined',
                                    'fuel_efficiency': 'undefined',
                                    'wet_braking': 'undefined',
                                    'speed_index': 'undefined',
                                    'load_index': 'undefined'
                                });
                            }

                        }
                    }
                    if ( detailsElem ) {
                        detailsElem.append($('<div class="block mt--0">'+srvDetails+'</div>'));
                        detailsElem.fadeIn(200);
                    }
                }
                //console.log("totalGrossPricesByTypes", totalGrossPricesByTypes);
                if ( typeof totalGrossPricesByTypes[1] !== 'undefined' && totalGrossPricesByTypes[1] ) {
                    //Gumiszer szolgák...
                    var totalGrossPriceF = app.getFormattedPrice(totalGrossPricesByTypes[1], false);
                    SMBparent.find('.js--purchase-service-price').html( totalGrossPriceF );
                    //SMBparent.find('.js--purchase-service-price-parent').fadeIn(300);
                }
                if (
                    typeof totalGrossPricesByTypes[2] !== 'undefined' && totalGrossPricesByTypes[2] &&
                    typeof dependentServices['service_tire_guarding'] !== 'undefined' &&
                    typeof dependentServices['service_tire_guarding']['parent'] === 'object' &&
                    dependentServices['service_tire_guarding']['parent'].length
                ) { /* GUMHOT */
                    var totalGrossPriceF = app.getFormattedPrice(totalGrossPricesByTypes[2], false);
                    dependentServices['service_tire_guarding']['parent'].find('.js--purchase-service-price').html( totalGrossPriceF );
                }
                if (
                    typeof totalGrossPricesByTypes[3] !== 'undefined' && totalGrossPricesByTypes[3] &&
                    typeof dependentServices['service_alloy_wheels'] !== 'undefined' &&
                    typeof dependentServices['service_alloy_wheels']['parent'] === 'object' &&
                    dependentServices['service_alloy_wheels']['parent'].length
                ) { /* ALUSZERFELARAM */
                    var totalGrossPriceF = app.getFormattedPrice(totalGrossPricesByTypes[3], false);
                    dependentServices['service_alloy_wheels']['parent'].find('.js--purchase-service-price').html( totalGrossPriceF );
                }
                //console.log("rimCounts", rimCounts);
            }
//console.log("neededServices", neededServices);
            /*
var debugArr = [];
for (var i in neededServices) {
    var r = neededServices[i];
    debugArr.push(
        r['data']['NEV'] + ' (' + i + '): ' + r['qty'] + ' '+app.getLang('abbr_pcs')+' * ' + app.getFormattedPrice(r['unit_gross_price'], true)  + ' = ' + app.getFormattedPrice(r['total_gross_price'], true)
    );
}
*/

            //debugArr.push("\n-----------------\n"+JSON.stringify(neededServices));
//$('#extra-services-debug').val( debugArr.join("\n") );
            //var totalGrossPriceF = parseFloat( totalGrossAllPrice ).toFixed(app.fraction());
            var totalGrossPriceF = app.getFormattedPrice(totalGrossAllPrice, false);
            PSTP.html(totalGrossPriceF);
            $(document).trigger("purchase-total", [ { 'key': 'services', 'price': totalGrossAllPrice } ]);


            /* GTM START */
            if ( GTM_event === 'removeFromCart' && targetId === 'service_mounting_balancing' ) {
//TODO: ITT sajni nem tudom a konkrétan levett cikket
//TODO: ITT sajni nem tudom a konkrétan levett cikket
//TODO: ITT sajni nem tudom a konkrétan levett cikket
                GTM_items.push({
                    'id': ('SZERCENT%'),
                    'SKU': ('SZERCENT%'),
                    'brand': 'undefined',
                    'name': $.fn.capitalize('SZERELÉS-CENTRÍROZÁS'),
                    'price': 'undefined',
                    'listPrice': 'undefined',
                    'category': getGTMCategoryByCode( 'SZER', '', 'undefined' ),
                    'variant': 'undefined',
                    'quantity': 'undefined',
                    'stock': 'infinity',
                    'width': 'undefined',
                    'sidewall': 'undefined',
                    'diameter': 'undefined',
                    'fuel_efficiency': 'undefined',
                    'wet_braking': 'undefined',
                    'speed_index': 'undefined',
                    'load_index': 'undefined'
                });
            }

            if ( GTM_items.length > 0 && GTM_event ) {
                if ( GTM_event === 'addToCart' ) {
                    addGTMDataLayer({
                        'event': GTM_event,
                        'ecommerce': {
                            'currencyCode': CURRENCY,
                            'add': {
                                'products': GTM_items
                            }
                        }
                    }, DL_LOG);
                } else if ( GTM_event === 'removeFromCart' ) {
                    addGTMDataLayer({
                        'event': GTM_event,
                        'ecommerce': {
                            'remove': {
                                'products': GTM_items
                            }
                        }
                    }, DL_LOG);
                }
            }
            /* GTM END */

        } else {
            $(document).trigger("purchase-total", [ { 'key': 'services', 'price': 0 } ]);

//$('#extra-services-debug').val( null );
            /* Dilemma ha eltűnik a jelölőnégyzet nem kellene bekapcsolva hagyni */
            //serviceMountingBalancing.prop('checked', false);
            //serviceTireGuarding.prop('checked', false).prop('disabled', true);
            ESP.hide();
        }
    }

    /* Vissza adja a választott átvételi módot */
    var getDeliveryMethod = function () {
        var out = $("#delivery_method").val();
        if ( typeof out === 'undefined' || !out ) {
            /* 2020.06.10 már nincs szükség default értékre */
            //out = PURCHASE_DELIVERY_MODE_HOME;
            out = '';
        }
//console.log('getDeliveryMethod', out);
        return out;
    }

    /* Ha a kosárban csak C-tipusú azaz Kisteherhez tartozó gumiabroncs van akkor TRUE */
    var cartIsJustVanTire = function () {
        var out = false;
        var tireCountOf = 0; /* Össz gumiabroncs tétel mennyisége */
        var vanTireCountOf = 0; /* Össz kisteher gumiabroncs tétel mennyisége */
        //console.log(cart_content);
        if ( Object.keys(cart_content).length ) { /* Ha a kosár nem üres */
            for ( var iCode in cart_content ) {
                var cItem = cart_content[iCode];
                //console.log(cItem);
                if (
                    typeof cItem['cicsop'] === 'string' && cItem['cicsop'] &&
                    (cItem['cicsop']).match(/^A[a-zA-z]{3}$/gi)
                ) { //Gumiabroncsról van szó
                    tireCountOf++;
                    if (
                        typeof cItem['size'] === 'string' && cItem['size'] &&
                        (cItem['size']).match(/^[0-9]+\/[0-9]+R[0-9]+C$/gi)
                    ) { //"215/65R15C"
                        vanTireCountOf++;
                    }
                }
            }
            //console.log('TIRE:', tireCountOf, 'VAN_TIRE: ' , vanTireCountOf);
            if ( tireCountOf > 0 && tireCountOf == vanTireCountOf ) { out = true; }
        }
        return out;
    }


    var showPurchase = function () {
//console.log( myName, 'showPurchase');

        if (!Object.keys(cart_content).length) { /* Ha a kosár üres */
            location="/";
            return false;
        }

        $.getJSON("/ajaxLoader.php?module=AllParams&type=postCodes", function (p_data) { /* 11 */
            /* irányítószámok eltárolása */
//console.log("user", user);

            //console.log(p_data);
            var locations = [];
            $.each(p_data, function (k, o) {
                //if ( locations.indexOf(k) == -1 ) {
                locations.push(k);
                //}
            });

//Átvételi mód kiválasztása delivery_method
//2020.04.04-én ezt a sorrendet kérték!!!
//2020.06.10-én módosult a sorrend, bekerült a kérem válasszon
            var deliveryMethodName = 'undefined';
            var deliveryMethodOrder = [ "", PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING, PURCHASE_DELIVERY_MODE_LOCAL_PICKUP, PURCHASE_DELIVERY_MODE_HOME ];
            for ( var i in deliveryMethodOrder ) {
                var dm = deliveryMethodOrder[i];
                var dmEl = $('#delivery_method option[value="' + dm + '"]');
                if ( dmEl.length ) {
                    dmEl.prop('selected', true);
                    dmEl.trigger('change');
                    deliveryMethodName = dmEl.text();
                    break;
                }
            }

//console.log('showPurchase', p_data);
//console.log('showPurchase', user);
//Fizetési mód kiválasztása
            var paymentMethodName = 'undefined';
            var paymentMethodOrder = [ PURCHASE_PAYMENT_BANK_CARD, PURCHASE_PAYMENT_COD, PURCHASE_PAYMENT_PREPAY ];
            if ( app.domain() == 'cz' || app.domain() == 'sk' ) {
                var paymentMethodOrder = [ PURCHASE_PAYMENT_COD, PURCHASE_PAYMENT_BANK_CARD, PURCHASE_PAYMENT_PREPAY ];
            }
            for ( var i in paymentMethodOrder ) {
                var pm = paymentMethodOrder[i];
                var pmEl = $('input[type="radio"][name="payment_method"][value="' + pm + '"]');
                if ( pmEl.length ) {
                    pmEl.prop('checked', true);
                    pmEl.trigger('change');
                    if ( pm === PURCHASE_PAYMENT_COD ) {
                        paymentMethodName = 'Cash on delivery';
                    } else if ( pm === PURCHASE_PAYMENT_PREPAY ) {
                        paymentMethodName =  'Prepay';
                    } else if ( pm === PURCHASE_PAYMENT_BANK_CARD ) {
                        paymentMethodName =  'Credit/debit card';;
                    }
                    break;
                }
            }

//Személy típus kiválasztás
//PURCHASE_PERSON_TYPE_PRIVATE = 'private'; /* magánszemély */
//PURCHASE_PERSON_TYPE_LEGAL = 'legal'; /* Jogi személy */
//PURCHASE_PERSON_TYPE_SKCZ = 'sk_cz'
            var defaultPersonType = ( app.domain() == 'sk' || app.domain() == 'cz' ? PURCHASE_PERSON_TYPE_SKCZ : PURCHASE_PERSON_TYPE_PRIVATE );
            var personTypeObj = $('input[type="radio"][name="person_type"][value="' + defaultPersonType + '"]');
            if ( personTypeObj.length ) {
                //personTypeObj.prop("checked", true).trigger('change');
            } else {
                console.log('Missing person type ', defaultPersonType);
            }

//Autó típus kiválasztás
//TODO: ha a kosár tartalmaz C tipusút akkor kisterhet kell megjelölni...
//TODO: ha a kosár tartalmaz C tipusút akkor kisterhet kell megjelölni...
//TODO: ha a kosár tartalmaz C tipusút akkor kisterhet kell megjelölni...
            var carTypeObj = $('input[type="radio"][name="car_type"][value="' + ( cartIsJustVanTire() ? CARTYPE_CODE_VAN : CARTYPE_CODE_CAR ) + '"]');
            //var carTypeObj = $('input[type="radio"][name="car_type"][value="' + CARTYPE_CODE_VAN + '"]');
            //var carTypeObj = $('input[type="radio"][name="car_type"][value="' + CARTYPE_CODE_OFF + '"]');
            if ( carTypeObj.length ) {
                carTypeObj.prop("checked", true).trigger('change');
            } else {
                console.log('Missing car type ', carTypeObj);
            }

            //$(".bank_card_info").show();

          

            $.getJSON("/ajaxLoader.php?module=AllParams&type=orderData", function (od) { /* 12 */
//console.log("orderData", od);

                if (
                    Object.keys(od).length &&
                    typeof od['data'] === 'object' &&
                    Object.keys(od['data']).length
                ) {
                    fillUserData( od['data'] );
                }

//console.log("FEFE", user);
                if ( typeof user !== 'undefined' && Object.keys(user).length ) {
                    $('#p_name').val(user.name);
                    $('#p_email').val(user.email);
                    $('#p_phone_number').val(user.phone);
                    $('#p_plate_number').val(user.platenum);
                    /* Szállítási adatok */
                    $('#p_delivery_name').val(user.delivery_name);
                    $('#p_delivery_address').val(user.delivery_address);
                    $('#p_delivery_postcode').val(user.delivery_postcode);
                    $('#p_delivery_city').val(user.delivery_city);
                }
                /* Kosár elkészítése */
                buildCart(cart_content, 0);

                $(document).on("submit", "#send_order", function (e) {
                    //console.log(myName, '#send_order');
                    /* Ezen a ponton a kosár tartalmán lehet, hogy változtatott, uh nem a mentettet kellene venni... */
                    var cart_short = {};
                    var vatMulti = (1 + VAT);
                    $.each(cart_content, function (key, obj) {
                        var oPrice = (parseFloat( obj.price * vatMulti )).toFixed(app.fraction());
                        oPrice = parseFloat(oPrice);
                        cart_short[key] = {
                            'items': parseInt(obj.items),
                            'name': obj.brand + ' ' + obj.name,
                            'price': oPrice,
                            'kit': obj.kit,
                            'cicsop': obj.cicsop
                        };
                    });
                    $('#cart-order').val(JSON.stringify(cart_short));
                    return checkOrderForm();
                });

                if (vanConti) {
                    $('<div class="conti_terms"><input type="checkbox" name="conti_agree" value="1">' + app.getLang('conti_terms') + "</div>").insertAfter(".cart-items-check");
                    $(".conti_second").hide();
                }
                /* COUPON */
//console.log('couponExists: ', couponExists);
                couponExists = false;
                if ( couponExists && coupon && Object.keys(coupon).length ) { /* Elvileg van kupon */
                    //$((coupon.button.indexOf('.html') == -1 ? '<a class="coupon-button" href="http://gumi.hu/ajanlatok/gumiszereles-arak" target="_blank"><img style="width:100%;" src="/assets/media/images/' + coupon.button + '"></a>' : app.getTemplate('coupon', false)  )).insertAfter(".cart-items-check");
                    if ( app.hasTemplate( coupon.button, true ) ) {
                        $( app.getTemplate( coupon.button, true ) ).insertAfter(".cart-items-check");
                    } else {
                        $('<a class="coupon-button" href="//gumi.hu/ajanlatok/gumiszereles-arak" target="_blank"><img style="width:100%;" src="/assets/media/images/' + coupon.button + '" alt="coupon" /></a>').insertAfter(".cart-items-check");
                    }
                }
                /*
                if (couponExists) {
                    $(app.templates().coupon_agree.replace('[[coupon-agree]]', app.getLang('coupon_terms') )).insertAfter(".cart-items-check");
                } else if (app.domain() == 'hu' && Object.keys(coupon).length) {
                    $((coupon.button.indexOf('.html') == -1 ? '<br><a href="http://gumi.hu/ajanlatok/gumiszereles-arak" target="_blank"><img width=100% src="/assets/media/images/' + coupon.button + '"></a>' : app.templates().coupon)).insertAfter(".cart-items-check")
                }
                */

                /* Számlázási adatok */
                invData();

                /* Átvételi mód váltáskor is ez fut le */
                handleDeliveryData();

                /* Irányítószámok alapján a városok lekérése */
                var autocompleteCity = function (event, ui) {
                    var o = $(this);
                    var oId = o.attr('id');
                    var targetId = null;
                    var targetName = null;
                    if ( oId == 'p_inv_postcode' ) {
                        targetId = 'p_inv_city';
                        targetName = 'inv_city';
                    } else if ( oId == 'p_delivery_postcode' ) {
                        targetId = 'p_delivery_city';
                        targetName = 'delivery_city';
                    }
                    if ( targetId && targetName ) {
                        var realValue = ( typeof ui === 'undefined' ? event.target.value : ui.item.value);

                        if ( typeof p_data[realValue] !== 'undefined' ) {
                            $('#' + targetId).replaceWith('<select id="' + targetId + '" name="' + targetName + '" required></select>');
                            var targetO = $('#' + targetId);
                            $.each(p_data[realValue], function (i, v) {
                                targetO.append("<option>" + v.zip_city + "</option>");
                            });
                        } else {
                            $('#' + targetId).replaceWith('<input type="text" id="' + targetId + '" name="' + targetName + '" required />');
                        }
                    } else {
                        console.log('autocompleteCity unknown error');
                    }
                }

                $("#p_inv_postcode").off('input').on('input', function () {
                    var targetId = 'p_inv_city';
                    var targetName = 'inv_city';
                    $('#' + targetId).replaceWith('<input type="text" id="' + targetId + '" name="' + targetName + '" required />');
                    $('#' + targetId).empty();
                });

                $("#p_delivery_postcode").off('input').on('input', function () {
                    var targetId = 'p_delivery_city';
                    var targetName = 'delivery_city';
                    $('#' + targetId).replaceWith('<input type="text" id="' + targetId + '" name="' + targetName + '" required />');
                    $('#' + targetId).empty();
                });

                $("#p_inv_postcode,#p_delivery_postcode").autocomplete({
                    source: locations,
                    minLength: (app.domain()=='hu'?2:3),
                    select: autocompleteCity
                    /*
                    ,open: function () {
                        $("ul.ui-menu").width(200);
                        $("ul.ui-menu").css('list-style-type', 'none');
                    }
                    */
                }).focusout(autocompleteCity);

                //$("#p_inv_postcode,#p_delivery_postcode").focusout(autocompleteCity);
            });

        }).fail(function (e) {
            console.log("error" + JSON.stringify(e));
        });
    }

    var buildCart = function (cart_content, sale) {
        var data = '';
        var first = true;
        if ( typeof sale === 'undefined') { sale = 0; }
        else { sale = parseFloat(sale); }
        //var GivenDate = '2019-05-20 23:59:59';
        //var CurrentDate = new Date();
        //GivenDate = new Date(GivenDate);
        var coupons = {};
        var cartItems = 0;
        var deliveryCost = app.getSettingData( 'delivery_cost_' + app.domain() );
        var actCurrency = app.getSettingData( 'currency_' + app.domain() );
        couponExists = false;
        vanConti = false;
        var vatMulti = 1 + VAT;
        var totalGrossPrice = 0;
        
//console.log('buildCart', cart_content);
        $.each(cart_content, function (key, obj) {
            var iQty = parseInt(obj.items);
            if ( isNaN(iQty) ) { iQty = 0; }
            cartItems += iQty;
            //Termék ár
            var grossUnitPrice = (parseFloat( (obj.price * vatMulti) - sale )).toFixed(app.fraction());
            grossUnitPrice = parseFloat(grossUnitPrice);
            var grossSumPrice = (grossUnitPrice * iQty);

//console.log(key, obj);
            //KIT árazás
            var kitCount = 0;
            var kitGrossUnitPrice = 0;
            var kitGrossSumPrice = 0;
            if ( typeof obj['kit'] === 'object' && Object.keys( obj['kit'] ).length ) { /* Van kit */
                //kitCount = Math.floor(iQty / 4); /* 4 db-onként jár 1 kit */
                kitCount = app.getKITquantity(iQty); /* 4 db-onként jár 1 kit */
                var kitPrice = 0;
                if ( typeof obj.kit.price !== 'undefined' ) {
                    kitPrice = parseFloat(obj.kit.price);
                    if ( isNaN(kitPrice) ) { kitPrice = 0; }
                }
                var kitListPrice = 0;
                if ( typeof obj.kit.list_price !== 'undefined' ) {
                    kitListPrice = parseFloat(obj.kit.list_price);
                    if ( isNaN(kitListPrice) ) { kitListPrice = 0; }
                }
                if ( kitPrice > 0 ) { kitGrossUnitPrice = (kitPrice * vatMulti); }
                else if (kitListPrice > 0 ) { kitGrossUnitPrice = (kitListPrice * vatMulti); }
                kitGrossUnitPrice = parseFloat(kitGrossUnitPrice.toFixed(app.fraction()));
                kitGrossSumPrice = ( kitGrossUnitPrice * kitCount );
            }
//Összesen fizet a tételért
            totalGrossPrice += ( grossSumPrice + kitGrossSumPrice );

            /* COUPON */
            /* Van-e kupon akció */
            var coupon = app.couponMatch(obj.brand, obj.season_code, iQty);
            if ( coupon !== false ) {
                coupons[ coupon['title'] ] = coupon;
                couponExists = true;
            }

            /* CONTI OFF */
            //Tétel tipusa aktuális nyelven
            var cartItemType = obj.type;
            if ( typeof obj['type_key'] !== 'undefined' ) {
                cartItemType = app.getLang( obj['type_key'] );
            }

            //if ( app.domain() == 'hu' && ['continental', 'barum', 'semperit'].indexOf( (obj.brand).toLowerCase() ) > -1 && GivenDate >= CurrentDate ) { vanConti = true; }
            data += '<div class="cart_item_' + key + '">';
            if (!first) {
                data += '<hr/> ';
            }
            data += '<div class="cart_item">';
            data += '<div class="grid gutter--sm">';
            data += '<div class="col cart_item__image">';
            data += '<div class="thumbnail">';
            data += '<img src="' + app.http2https(obj.image_url) + '">';
            data += '</div>';
            data += '</div>';
            data += '<div class="col cart_item__details">';
            data += '<div class="grid gutter--sm">';
            data += '<div class="col cart_item__details__left">';
            data += '<div class="cart_item__name">';
            data += obj.brand + ' ' + obj.pattern + ' ' + " " + cartItemType;
            data += '</div>';
            data += '<div class="cart_item__parameters">';
            data += obj.name;
            data += '</div>';
            if ( kitGrossUnitPrice > 0 ) {
                data += '<div class="cart_item__kit">';
                data += 'Kit: <span class="cart_item__kitprice">' + app.getFormattedPrice(kitGrossUnitPrice, false) + '</span> ' + actCurrency + ' / 4 ' + app.getLang('abbr_pcs');
                data += '</div>';
            }
            data += '</div>';
            data += '<div class="col cart_item__details__right">';
            data += '<div class="cart_item__price">';
            data += app.getFormattedPrice(grossUnitPrice, false) + " " + actCurrency + ' / ' + app.getLang('abbr_pcs');
            data += '</div>';
            data += '<div class="cart_item__count">';
            data += '<input id="check_items_' + key + '" data-rel="' + key + '" data-unitprice="'+grossUnitPrice+'" data-kitprice="'+kitGrossUnitPrice+'" class="text--center" type="text" value="' + iQty + '" size="2">';
            data += ' ' + app.getLang('abbr_pcs');
            data += '</div>';
            data += '<button type="button" data-rel="' + key + '" class="cart_item__remove_button btn--remove_cart_item">';
            data += '<span class="icon icon--trash"></span>';
            data += '</button>';
            data += '</div>';
            data += '</div>';
            data += '</div>';
            data += '</div>';
            data += '</div>';
            data += '</div>';
            first = false;
        });
//Kupon összesen.
//Kupon kedvezményt csak ha szerelés is van
        var discountPrice = 0;
        if (
            $('#delivery_method').val() == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING &&
            typeof coupons !== 'undefined' && Object.keys(coupons).length > 0
        ) {
            for ( var couponTitle in coupons) {
                var coupon = coupons[couponTitle];
                if (
                    typeof coupon['discount_service_name'] === 'string' &&
                    typeof coupon['discount_service_gross_price'] === 'number' &&
                    coupon['discount_service_name']
                ) {
                    //Minden gumira megkapja a kedvezményt
                    discountPrice += -Math.abs(coupon['discount_service_gross_price']);

                    //Csak a legjobb kedvezményt kapja meg
                    /*
                    if ( Math.abs(discountPrice) < Math.abs(coupon['discount_service_gross_price']) ) {
                        discountPrice = -Math.abs(coupon['discount_service_gross_price']);
                    }
                    */
                }
            }
        }
        $(document).trigger("purchase-total", [ { 'key': 'discount', 'price': discountPrice } ]);

        if (app.domain() == 'at') {
            $('#delivery_method').attr('disabled',true);
            $('#delivery_method option[value="1"]').prop('selected',true);
            $('.treatment-cost-content').attr('data-origin-total',parseFloat($('.js--purchase-total-gross-price').text()));
        }
//Kosár összesen:
        //totalGrossPrice = app.cart().getCartTotal(cart_content, false);
        $(document).trigger("purchase-total", [ { 'key': 'cart', 'price': totalGrossPrice } ]);
        //$('.js--cart-total').html(app.getFormattedPrice(totalGrossPrice, true));

        $('.cart-items-check').html(data);
//MSG: Mi lenne, ha nem törölném mindig a shipping tartalmát, hanem csak bele pakolnám mint a kosár esetén
        /*
        $(".shipping").remove();
        $(getDeliveryCost(cartItems)).insertAfter('.cart-items-check');
        */
        //$(".shipping").html( getDeliveryCost(cartItems) );
        var DC = getDeliveryCost(cartItems);
    }

    /* Szállítási ktg kiszámítása mennyiség alapján */
    var getDeliveryCost = function (cartItems) {
        
//TODO: 2 funkciós legyen és csak js--delivery-cost módosuljon
        var data = '';
        var deliveryCost = 0;
        var netShippmentUnitPrice = 0;
        var needShippmentPay = false; /* Alapból mondjuk, hogy nem kell száll ktg */
        var deliveryMethod = getDeliveryMethod();
        //var deliveryMethod = $("#delivery_method").val();
        
        if ( deliveryMethod == PURCHASE_DELIVERY_MODE_HOME ) { /* Csak akkor kell szálldíj ha házhozszállítás van... */
            needShippmentPay = true;
            if ( app.domain() == 'hu' ) {
                if ( $('input[type="radio"][name="payment_method"]:checked').val() == PURCHASE_PAYMENT_BANK_CARD ) { needShippmentPay = false; }
            } else if ( app.domain() == 'ro' ) {
                if ( cartItems >= 4 ) { needShippmentPay = false; }
                //} else if ( app.domain() == 'sk' ) {
                //} else if ( app.domain() == 'cz' ) {
            }
            /* } else if ( deliveryMethod == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP ) {  */
            /* Helyi átvétel esetén országok közötti szállítás esetén szálldíj */
            if (   app.domain() == 'cz') {
                needShippmentPay = true;
               
            }
        }
        if ( app.domain() == 'ro' ) {
            needShippmentPay = true;
        }
        if ( app.domain() == 'eu' ) {
             if(parseFloat(app.getSettingData( 'delivery_cost_' + app.domain() ) )>0);
             needShippmentPay = true;
        }
 
        if ( needShippmentPay ) {
            netShippmentUnitPrice = parseFloat(app.getSettingData( 'delivery_cost_' + app.domain() ) );
            deliveryCost = (netShippmentUnitPrice * cartItems * (1 + VAT)).toFixed(app.fraction()); 

            if(app.domain() == 'at'){
                deliveryCost =  Math.round(deliveryCost); 
            }
        }

        $(document).trigger("purchase-total", [ { 'key': 'shipping-fee', 'price': deliveryCost } ]);
        $('.shipping .js--delivery-cost').html( app.getFormattedPrice(deliveryCost, true) );
        var treatment_cost = parseFloat(app.getSettingData( 'treatment_cost_' + app.domain() ) );
        $('.js--treatment-total').html( app.getFormattedPrice(treatment_cost, true) );
 
        return deliveryCost;
        /*
            data += '<hr/>';
            data += '<div class="pull--left">';
                data += '<span style="font-weight: bold;">' + app.getLang('delivery_cost') + ':</span>';
            data += '</div>';
            data += '<div class="col cart_item__details__right">';
                data += '<div class="cart_item__price js--delivery-cost" style="margin-bottom: 20px;">';
                    data += deliveryCost + ' ' + app.getSettingData( 'currency_' + app.domain() );
                data += '</div>';
            data += '</div>';
            return data;
        */
    }

    //var sameData = function () {
    var copyBilling2Delivery = function () {
        //Számlázási adatokat másolja a szállítási adatokba...
        $('#p_delivery_name').val( $('#p_inv_name').val() );
        $('#p_delivery_postcode').val( $('#p_inv_postcode').val() );
        $('#p_delivery_address').val( $('#p_inv_address').val() );

        //Számlázási város
        var ic = $('#p_inv_city');
        var icTagName = ic.prop('tagName');
        var icVal = ic.val();
        //száll város
        var dc = $('#p_delivery_city');
        var dcTagName = dc.prop('tagName');

        if ( dcTagName == 'SELECT' ) {
            if ( icTagName == 'SELECT' ) {
                var options = $("#p_inv_city > option").clone();
            } else {
                var options = $('<option>'+icVal+'</option>');
            }
            dc.empty();
            dc.append(options);
        } else {
            dc.val( icVal );
        }

    }

    /* Szállítási adatok */
    var deliveryData = function () {
        var deliveryMethod = getDeliveryMethod();
        //var deliveryMethod = $("#delivery_method").val();
        if ( deliveryMethod == PURCHASE_DELIVERY_MODE_HOME ) { /* Házhozszállítás */
            if ( typeof user !== 'undefined' && Object.keys(user).length ) {
                if ( typeof user.delivery_name === 'string' && user.delivery_name ) {
                    $('#p_delivery_name').val(user.delivery_name);
                }
                if ( typeof user.delivery_postcode === 'string' && user.delivery_postcode ) {
                    $('#p_delivery_postcode').val(user.delivery_postcode);
                }
                if ( typeof user.delivery_address === 'string' && user.delivery_address ) {
                    $('#p_delivery_address').val(user.delivery_address);
                }
                if ( typeof user.delivery_city === 'string' && user.delivery_city ) {

                    var dc = $('#p_delivery_city');
                    var dcTagName = dc.prop('tagName');

                    if ( dcTagName == 'SELECT' ) {
                        var options = $('<option>'+user.delivery_city+'</option>');
                        dc.empty();
                        dc.append(options);
                    } else {
                        dc.val( user.delivery_city );
                    }
                }
            }
            //} else if ( !deliveryMethod ) { /* Kérem válasszon */
        }
    }

    /* Számlázási adatok */
    var invData = function () {
        if ( typeof user !== 'undefined' && Object.keys(user).length ) {
            //console.log(user);
            if ( typeof user.inv_name === 'string' && user.inv_name ) {
                $('#p_inv_name').val(user.inv_name);
            }
            if ( typeof user.inv_postcode === 'string' && user.inv_postcode ) {
                $('#p_inv_postcode').val(user.inv_postcode);
            }
            if ( typeof user.inv_address === 'string' && user.inv_address ) {
                $('#p_inv_address').val(user.inv_address);
            }
            if ( typeof user.inv_city === 'string' && user.inv_city ) {
                $('#p_inv_city').val(user.inv_city);
            }

            /* Vigyázni kell, mert itt kitöltjük a mezőt de lehet, hogy magánszemély van megadva! */
            if ( typeof user.inv_taxnum === 'string' && user.inv_taxnum ) {
                $('#p_inv_taxnum').val(user.inv_taxnum);
            }
            if ( typeof user.inv_company_id === 'string' && user.inv_company_id ) {
                $('#p_inv_company_id').val(user.inv_company_id);
            }
        }
    }

    /* Főként Átvétel mód választáskor fut le!!! */
    var handleDeliveryData = function () {

        /*
        if (app.domain() == 'hu' || app.domain() == 'sk') {
            buildCart(cart_content, 0);
        }
        */
        var deliveryMethod = getDeliveryMethod();
        //var deliveryMethod = $("#delivery_method").val();

        buildCart(cart_content, 0);
//console.log('handleDeliveryData', deliveryMethod);

        if ( !deliveryMethod || deliveryMethod == PURCHASE_DELIVERY_MODE_HOME ) { /* Kérem válasszon vagy Házhozszállítás */
            //if (app.domain() == 'hu') { $(".on-site").html(''); }
            $(".cash_on_delivery").show();
            //Itt kell automatikusan fiz módot választani???
            //$('input[type="radio"][name="payment_method"][value="' + (app.domain() == 'hu' || app.domain() == 'sk' || app.domain() == 'cz' ? PURCHASE_PAYMENT_BANK_CARD : PURCHASE_PAYMENT_COD ) + '"]').prop("checked", true).trigger('change');
            $('#p_delivery_name').prop('required', true);
            $('#p_delivery_postcode').prop('required', true);
            $('#p_delivery_city').prop('required', true);
            $('#p_delivery_address').prop('required', true);
            //$("#purchase_delivery_datas").show();
            //$("js--purchase-delivery-datas").show();
            $('#location_city').empty(); //.html(null);
            $('#location_address').empty(); //.html(null);
            $('.locations').fadeOut(300); /* .hide(); */
            $('#p_plate_number').prop('required', false);
        } else { /* Telephelyi átvétel */
            /* .cash_on_delivery eseményből lekezelve */
            $('#p_delivery_name').prop('required', false);
            $('#p_delivery_postcode').prop('required', false);
            $('#p_delivery_city').prop('required', false);
            $('#p_delivery_address').prop('required', false);
            $('.locations').fadeIn(300); /* .show(); */
            $("#purchase_delivery_datas").hide();
            //$("js--purchase-delivery-datas").hide();
            if ( deliveryMethod == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP ) {
                $('.plate_number_parent').fadeOut(300); /* .hide(); */
                $('.car_type_parent').fadeOut(300); /* .hide(); */
                $('#p_plate_number').prop('required', false);
            } else if ( deliveryMethod == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING ) {
                $('.plate_number_parent').fadeIn(300); /* .show(); */
                $('.car_type_parent').fadeIn(300); /* .show(); */
                $('#p_plate_number').prop('required', true);
            }
            getLocCities();
            getLocAddresses($('#location_city').val());
        }
        refreshExtraServices();


        var deliveryMethodNameGTM = '';
        switch(parseInt(deliveryMethod)){
            case PURCHASE_DELIVERY_MODE_HOME:
                deliveryMethodNameGTM = 'Home delivery';
                break
            case PURCHASE_DELIVERY_MODE_LOCAL_PICKUP:
                deliveryMethodNameGTM = 'Service point acceptance';
                break
            case PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING:
                deliveryMethodNameGTM = 'Service point acceptance + installation';
                break

        } 

        if(typeof deliveryMethodFirstLoad != 'undefined'){
            var cart_data = app.cart().cart_content();
            dLayer.checkoutSteps(cart_data,2, deliveryMethodNameGTM);
        }

        setTimeout(function () {
            deliveryMethodFirstLoad = 1;           
        }, 2000)
      
            
    }

    var cartHasBlackFridayItem = function () {
        var out = false;
        $.each(app.cart().cart_content(), function (key, data) {
            //console.log('cartHasBlackFridayItem: ', key, data);
            if ( !out && data.black_friday == "1" ) {
                out = true;
                return true;
            }
        });
        return out;
    };

    var getLocCities = function () {
        //var deliveryMethod = $("#delivery_method").val();
        var deliveryMethod = getDeliveryMethod();
//console.log( 'getLocCities', app.locations(), deliveryMethod);
        var lc = $('#location_city');
        var lcDataDefault = lc.attr('data-default'); /* Ilyen csak a korábbi rendelésből származik */
        if ( typeof lcDataDefault === 'string' ) { lcDataDefault = lcDataDefault.toLowerCase(); }
        //var hasBF = cartHasBlackFridayItem();
        lc.empty();
        lc.append('<option value="" style="color:red;">' + app.getLang('all') + '</option>');
        var locationsCountOf = 0;
        var selectedKey = null;
        $.each(app.locations(), function (key, obj) {
            var keyLo = key.toLowerCase();
            var addition = true;
            if ( deliveryMethod == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING ) { /* Szerelés esetén...Csak MO/Budapesten belül van ilyen */
                if ( app.domain() == 'hu' ) {
                    if ( keyLo != 'budapest' ) {
                        addition = false;
                    }
                } else { addition = false; }
            }
            if ( addition ) {
                if ( app.domain() == 'hu' && keyLo == 'budapest' ) { selectedKey = key; }
                else if ( app.domain() == 'sk' && keyLo == 'bratislava' ) { selectedKey = key; }
                if ( typeof lcDataDefault === 'string' && lcDataDefault == keyLo ) { selectedKey = key; }
//console.log('getLocCities', key, keyLo, sel, obj);
                //if ( !( hasBF && keyLo != 'budapest') ) {
                var county = key;
                if ( typeof obj[0] !== 'undefined' && typeof obj[0]['megye'] !== 'undefined' && obj[0]['megye'] ) { county = obj[0].megye; }
                lc.append('<option value="' + key + '" >' + county + '</option>');
                locationsCountOf++;
                //}
            }
        });
        //console.log('selectedKey', selectedKey);
        var selOpt = null;
        if ( selectedKey ) {
            selOpt = lc.find('option[value="'+selectedKey+'"]').first();
        }
        if ( locationsCountOf == 1 && ( selOpt === null || !selOpt.length ) ) { /* Ha 1 db van ami nincs kiválasztva... */
            selOpt = lc.find('option[value!=""]').first();
        }
        if ( selOpt !== null && selOpt.length > 0 ) { selOpt.prop('selected', true); }
    };

    var getLocAddresses = function (city) {
//MSG: Ha csak 1 db van akkor megjelölni
        var la = $('#location_address');
        var laDataDefault = la.attr('data-default'); /* Ilyen csak a korábbi rendelésből származik */
        la.empty();
        la.append('<option value="" style="color:red;">' + app.getLang('all') + '</option>');
        var locData = app.getLocationData(city);
        //var deliveryMethod = $("#delivery_method").val();
        var deliveryMethod = getDeliveryMethod();
//console.log( 'getLocAddresses', locData, deliveryMethod);
        var addressesCountOf = 0;
        var selectedVal = null;
        if ( locData ) {
            //var hasBF = cartHasBlackFridayItem();
            $.each(locData, function (key, obj) {
//console.log('getLocAddresses', key, obj);
                var addition = true;
                if ( deliveryMethod == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING ) { /* Szerelés esetén...Csak MO/Budapesten belül van ilyen */
                    if ( app.domain() == 'hu' ) {
                        if ( obj['szerviz_tipus'] != '0' ) {
                            addition = false;
                        }
                    } else { addition = false; }
                }
                if ( addition ) {
                    if ( typeof laDataDefault !== 'undefined' && laDataDefault == obj.id ) { selectedVal = obj.id; }
                    addressesCountOf++;
                    //if (!(hasBF && obj.estate_id > 10)) {
                    var labelArr = [];
                    if ( typeof obj.nev !== 'undefined' && obj.nev ) { labelArr.push(obj.nev); }
                    if ( typeof obj.cim !== 'undefined' && obj.cim ) { labelArr.push(obj.cim); }
                    //if ( typeof obj.telefon !== 'undefined' && obj.telefon ) { labelArr.push( '(' + app.getLang('phone_number') + ': ' + obj.telefon+')' ); }

                    la.append('<option value="' + obj.id + '" data-type="' +obj['szerviz_tipus'] + '" data-phone="'+obj['telefon']+'">' + labelArr.join(' - ') + '</option>');
                    //}
                }
            });
            var selOpt = null;
            if ( selectedVal ) {
                selOpt = la.find('option[value="'+selectedVal+'"]').first();
            }
            if ( addressesCountOf == 1 && ( selOpt === null || !selOpt.length ) ) { /* Ha 1 db van ami nincs kiválasztva... */
                selOpt = la.find('option[value!=""]').first();
            }
            if ( selOpt !== null && selOpt.length > 0 ) {
                selOpt.prop('selected', true);
                la.trigger('change');
            }
        }
        la.trigger('phone-change');
    };

    var checkOrderForm = function () {



        //var names = /^[0-9,a-z,á,é,ű,ú,ő,ó,ü,ö,í,Í,Á,É,Ű,Ú,Ő,Ó,Ü,Ö,\s,\-,\.,\(,\)]{2,}$/gi;
        //var address = /^[a-z,0-9,á,é,ű,ú,ő,ó,ü,ö,í,Í,Á,É,Ű,Ú,Ő,Ó,Ü,Ö,\/,\',\s,\-,\.,\:,\(,\)]{5,}$/ig;
        var names = /^[0-9a-zA-Z\u0080-\uFFFF\&\s\-\.\,\(\)]{2,70}$/gi;
        var address = /^[0-9a-zA-Z\u0080-\uFFFF\/\'\s\-\.\,\:\(\)]{3,70}$/ig;
        /*
        if (app.domain() == "sk") {
            var names = /^[0-9a-zA-ZáäčďéĺľňóôŕšťúýžÁÄČĎÉÍĹĽŇÓÔŔŠŤÚÝŽ\s\-\.\,\(\)]{2,}$/gi;
            var address = /^[0-9a-zA-ZáäčďéĺľňóôŕšťúýžÁÄČĎÉÍĹĽŇÓÔŔŠŤÚÝŽ\/\'\s\-\.\,\:\(\)]{5,}$/ig;
        } else if (app.domain() == "cz") {
            var names = /^[0-9a-zA-ZýžáčďéěíňóřšťúůÝŽÁČĎÉĚÍŇÓŘŠŤÚŮ\s\-\.\,\(\)]{2,}$/gi;
            var address = /^[0-9a-zA-ZýžáčďéěíňóřšťúůÝŽÁČĎÉĚÍŇÓŘŠŤÚŮ\/\'\s\-\.\,\:\(\)]{5,}$/ig;
        } else if (app.domain() == "ro") {
            var names = /^[0-9a-zA-Zăâî?ş?ţĂÂÎ?Ş?Ţ\s\-\.\,\(\)]{2,}$/gi;
            var address = /^[0-9a-zA-Zăâî?ş?ţĂÂÎ?Ş?Ţ\/\'\s\-\.\,\:\(\)]{5,}$/ig;
        }
        */
        var plateNumPattern = /^[0-9a-zA-Z\-\s]+$/;
        var numbers = /^[0-9]+$/;
        if (app.domain() == "hu" ) {
            var post_code_pattern = /^[0-9]{4}$/;
        } else {
            var post_code_pattern = /^[0-9]{3,6}$/;
        }
        //var numbers1 = /^[0-9]{7,}$/;
        var phone_number_pattern = /^(\+)?[0-9\/\-\s]{7,15}$/;

        /* Magyarországi cégformák: BT, KFT, KKT, RT, ZRT, NYRT, EV, EC */
        /* korlátolt, kereskedelmi, vállalat, egyéni vállalkozó, egyéni cég, alapítvány, iroda, hivatal, önkormányzat, kormány, egyház, szövetség, szövetkezet, bank, egyesület, mentő, tűzoltó, rendőr */
        var company_pattern_hu = /^.*\s+(bt|kft|kkt|rt|zrt|nyrt|e\.v|e\.c)(\.)?(\s)*$/gi;
        //var company_words_pattern_hu = /\b(?:korlátolt|kereskedelmi|vállalat|egyéni\s+vállalkozó|egyéni\s+cég|alapítvány|iroda|hivatal|önkormányzat|kormány|egyház|szövetség|szövetkezet|bank|egyesület|mentő|tűzoltó|rendőr)\b/gi;
        var company_words_pattern_hu = /(korlátolt|kereskedelmi|vállalat|egyéni\s+vállalkozó|egyéni\s+cég|alapítvány|iroda|hivatal|önkormányzat|kormány|egyház|szövetség|szövetkezet|bank|egyesület|mentő|tűzoltó|rendőr)/gi;
        /*
        var taxnumber = /^[0-9,r,o,s,k,c,z]{3,15}$/gi;
        var taxnumberSK = /^SK[0-9]{10}$/gi;
        var taxnumberCZ = /^CZ[0-9]{5,15}$/gi;
        */
        var taxNumberPattern = /^[0-9roskcz]{3,15}$/gi;
        var taxNumberPatternSK = /^SK[0-9]{10}$/gi;
        var taxNumberPatternCZ = /^CZ[0-9]{5,15}$/gi;
        var taxNumberPatternHU = /^[0-9]{8}\-[0-9]\-[0-9]{2}$/gi;
        var taxNumberPatternRO = /^[0-9ro]{3,15}$/gi;

        var rxEmail = /^[a-zA-Z0-9\._\-\+\%]{2,}@[a-zA-Z0-9\.\-]{2,}\.[a-zA-Z]{2,6}$/gi;

        var errorMessages = [];
        var firstFocusId = null;
        var error = '';
        //var company_id = /^[0-9]{8}$/gi;
        var companyIdPattern = /^[0-9]{8}$/gi;

        //var selectedDeliveryMethod = $("#delivery_method").val();
        var selectedDeliveryMethod = getDeliveryMethod();
//console.log('selectedDeliveryMethod', selectedDeliveryMethod);
        var selectedDeliveryMethodName = $('#delivery_method option[value="'+selectedDeliveryMethod+'"]').text();
//console.log('selectedDeliveryMethodName', selectedDeliveryMethodName);
        if ( !selectedDeliveryMethod ) { /* Nem választott ki megfelelő átvételi módot */
            errorMessages.push( app.getLang('please_choose_delivery_method') );
            if ( !firstFocusId ) { firstFocusId = '#delivery_method'; }
        }

        var isLocalPickup = ( selectedDeliveryMethod == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP || selectedDeliveryMethod == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING ? true:false);
//console.log('checkOrderForm', selectedDeliveryMethod);

        if ( !$("#aszf").is(':checked')) {
            errorMessages.push( app.getLang('read_terms_conditions') );
            if ( !firstFocusId ) { firstFocusId = '#aszf_avt'; }
        }

        if ( !$("#avt").is(':checked')) {
            errorMessages.push( app.getLang('read_privacy_policy') );
            if ( !firstFocusId ) { firstFocusId = '#aszf_avt'; }
        }

        if (!$("#p_name").val().match(names)) // name match
        {
            errorMessages.push( app.getLang('bad_name') );
            if ( !firstFocusId ) { firstFocusId = '#p_name'; }
        }

        if (!$("#p_email").val().match(rxEmail)) // email match
        {
            errorMessages.push( app.getLang('bad_email_format') );
            if ( !firstFocusId ) { firstFocusId = '#p_email'; }
        }

        //if (!$("#p_phone_number").val().match(numbers1)) // number match
        if (!$("#p_phone_number").val().match(phone_number_pattern)) /*  number match */
        {
            errorMessages.push( app.getLang('bad_phone_number_format') );
            if ( !firstFocusId ) { firstFocusId = '#p_phone_number'; }
        }

        if ( isLocalPickup )
        { /* telephelyi átvétel van */

            if ( !$("#location_city").val() ) { /* Location city */
                errorMessages.push( app.getLang('bad_delivery_address') );
                if ( !firstFocusId ) { firstFocusId = '#location_city'; }
            } else if ( !$("#location_address").val() ) { /* Location address */
                errorMessages.push( app.getLang('bad_delivery_address') );
                if ( !firstFocusId ) { firstFocusId = '#location_address'; }
            }
            if ( selectedDeliveryMethod == PURCHASE_DELIVERY_MODE_LOCAL_PICKUP_MOUNTING ) { /* Szerelést is szeretne */
//MSG: Rendszám ellenőrzés
                if ( !$("#p_plate_number").val().match(plateNumPattern) ) {
                    errorMessages.push( app.getLang('bad_plate_number') );
                    if ( !firstFocusId ) { firstFocusId = '#p_plate_number'; }
                }

//MSG: autó típus megadás
                var acceptedCarTypes = [ CARTYPE_CODE_CAR, CARTYPE_CODE_VAN, CARTYPE_CODE_OFF ];
                var selectedCarType = $('input[type="radio"][name="car_type"]:checked').val();
                if ( acceptedCarTypes.indexOf(selectedCarType) == -1 ) {
                    errorMessages.push( app.getLang('car_type_missing') );
                }
            }
        }

//Számlázási ADATOK
        var pInvName = $("#p_inv_name").val(); /* Számlázási név */
        if (
            app.domain() == "hu" &&
            (
                pInvName.match(company_pattern_hu)
                || pInvName.match(company_words_pattern_hu)
            )
        ) {
            $('input[type="radio"][name="person_type"][value="'+PURCHASE_PERSON_TYPE_LEGAL+'"]').click();
//console.log('Cégnevet adott meg: ' + pInvName);
//return false;
        }

        if ( !pInvName.match(names) ) /* name match */
        {
            errorMessages.push( app.getLang('bad_invoice_name') );
            if ( !firstFocusId ) { firstFocusId = '#p_inv_name'; }
        }

        if (!$("#p_inv_address").val().match(address)) /* address match */
        {
            errorMessages.push( app.getLang('bad_invoice_address') );
            if ( !firstFocusId ) { firstFocusId = '#p_inv_address'; }
        }

        if ( !$("#p_inv_city").val().match(address) )
        { /* name match */
            errorMessages.push( app.getLang('bad_invoice_location') );
            if ( !firstFocusId ) { firstFocusId = '#p_inv_city'; }
        }

        if (!$("#p_inv_postcode").val().match(post_code_pattern))
        { /* number match */
            errorMessages.push( app.getLang('bad_invoice_post_code') + ' ('+$("#p_inv_postcode").val()+')' );
            if ( !firstFocusId ) { firstFocusId = '#p_inv_postcode'; }
        }

//Személy típusa
        var taxNumber = $("#p_inv_taxnum").val();
        if ( typeof taxNumber === 'string' && taxNumber.length ) {  /* Adószám javítás, ha szóközt hagyott benne */
            taxNumber = $.trim(taxNumber);
            $("#p_inv_taxnum").val(taxNumber);
        }

        var taxNumberSuccess = true;
        var companyNumber = $("#p_inv_company_id").val();
        var companyNumberSuccess = true; /* hu, ro esetén ez nem kell */
        if ( app.domain() == 'sk' || app.domain() == 'cz' ) { /* Máshogy kezeljük. Ha beír valamit akkor formátumra stimmeljen */
            if ( typeof taxNumber === 'string' && taxNumber.length ) {  /* Adószám */
                if ( app.domain() == 'sk' && !taxNumber.match(taxNumberPatternSK) ) {
                    taxNumberSuccess = false;
                } else if ( app.domain() == 'cz' && !taxNumber.match(taxNumberPatternCZ) ) {
                    taxNumberSuccess = false;
                }
            }

            if (
                typeof companyNumber === 'string' &&
                companyNumber.length &&
                !companyNumber.match(companyIdPattern)
            ) { /* Cégjegyzékszám */
                companyNumberSuccess = false;
            }
        } else { /* Egyéb országokban */
            var selectedPersonType = $('input[type="radio"][name="person_type"]:checked');
            if ( !selectedPersonType.length ) {
                errorMessages.push( app.getLang('no_person_type_selected') );
            } else if ( selectedPersonType.val() == PURCHASE_PERSON_TYPE_LEGAL ) { /* Jogi személy */
                if ( typeof taxNumber !== 'string' ) {
                    taxNumberSuccess = false;
                } else if ( app.domain() == 'hu' && !taxNumber.match(taxNumberPatternHU) ) {
                    taxNumberSuccess = false;
                } else if (
                    app.domain() == 'ro' &&
                    (
                        !taxNumber.match( taxNumberPatternRO ) ||
                        !checkTaxNumber( taxNumber )
                    )
                ) {
                    taxNumberSuccess = false;
                }
                //} else if ( selectedPersonType.val() == PURCHASE_PERSON_TYPE_SKCZ ) { /* SK, CZ */
            } else {
                //$("#p_inv_taxnum").empty();
                //$("#p_inv_company_id").empty();
            }
        }

        if ( !taxNumberSuccess ) {
            // tax id match
            errorMessages.push( app.getLang('bad_tax_number_11_chars') );
            if ( !firstFocusId ) { firstFocusId = '#p_inv_taxnum'; }
        }

        if ( !companyNumberSuccess ) {
            errorMessages.push( app.getLang('bad_company_id') );
            if ( !firstFocusId ) { firstFocusId = '#p_inv_company_id'; }
        }

        /* *** */


//SZÁLLÍTÁSI ADATOK
        if ( selectedDeliveryMethod == PURCHASE_DELIVERY_MODE_HOME ) { /* Házhozszállítás esetén */
            if ( $('#inv_same_data').is(':checked') ) { /* Ugyanaz mint a számlázási cím */
                copyBilling2Delivery();
            }

            if ( !$("#p_delivery_name").val().match(names) )
            {  /* name match */
                errorMessages.push( app.getLang('bad_delivery_name') );
                if ( !firstFocusId ) { firstFocusId = '#p_delivery_name'; }
            }

            if (
                ( !$("#p_delivery_city").val() || ($("#p_delivery_city").val() && !$("#p_delivery_city").val().match(address)) )
            ) { /* name match */
                errorMessages.push( app.getLang('bad_delivery_location') );
                if ( !firstFocusId ) { firstFocusId = '#p_delivery_city'; }
            }

            if ( !$("#p_delivery_postcode").val().match(post_code_pattern))
            { /* postakód */
                errorMessages.push( app.getLang('bad_delivery_post_code') );
                if ( !firstFocusId ) { firstFocusId = '#p_delivery_postcode'; }
            }

            if (
                !$("#p_delivery_address").val().match(address)
            ) { // address match
                errorMessages.push( app.getLang('bad_delivery_address') );
                if ( !firstFocusId ) { firstFocusId = '#p_delivery_address'; }
            }
        }



        /* TODO: Valamilyen kupon kód */
        var acceptedCouponCodes = [ 'amts2019kupon', 'black2020friday', 'biztonsag2020' ];
        var couponCode = ($('#coupon_code').val()? ($('#coupon_code').val()).toLowerCase():'');
        if (
            app.domain() == 'hu' &&
            couponCode &&
            acceptedCouponCodes.indexOf(couponCode) < 0
        ) {
            errorMessages.push( app.getLang('bad_coupon_code') );
            if ( !firstFocusId ) { firstFocusId = '#coupon_code'; }
        }

        var cartOrder = $("#cart-order").val();
        var cartJSON = null;
        if ( typeof cartOrder === 'string' && cartOrder.length >= 2 ) {
            cartJSON = JSON.parse(cartOrder);
            for ( var ci in cartJSON) {
                var cartItem = cartJSON[ci];
                var cartItemQty = 0;
                if ( typeof cartItem['items'] !== 'undefined' ) {
                    cartItemQty = parseFloat(cartItem['items']);
                }
                if ( typeof cartItem['cicsop'] === 'string' && cartItem['cicsop'] == 'CMOM' && (cartItemQty % 4) != 0 ) {
                    //errorMessages.push( app.getLang('Alufelnit csak 4-esével vehet!') );
                    errorMessages.push( app.getLang('alloy_rim_limitation') );
                }
            }
        }
        if ( cartJSON === null || typeof cartJSON !== 'object' || !Object.keys(cartJSON).length ) {
            errorMessages.push( app.getLang('empty_cart') );
        }
//console.log( 'cart-order', cartJSON );

        var selectedPaymentMethod = null;
        var selectedPaymentMethodName = 'undefined';
        var selectedPaymentMethodObj = $('input[type="radio"][name="payment_method"]:checked').first();
        if ( selectedPaymentMethodObj.length > 0 ) {
            selectedPaymentMethod = selectedPaymentMethodObj.val();
        }
        if ( !selectedPaymentMethod ) {
            errorMessages.push( app.getLang('no_payment_method_selected') );
        } else if ( selectedPaymentMethod === PURCHASE_PAYMENT_COD ) {
            selectedPaymentMethodName = app.getLang('cash_on_delivery');
        } else if ( selectedPaymentMethod === PURCHASE_PAYMENT_PREPAY ) {
            selectedPaymentMethodName = app.getLang('prepay');
        } else if ( selectedPaymentMethod === PURCHASE_PAYMENT_BANK_CARD ) {
            selectedPaymentMethodName = app.getLang('pay_with_card_free_delivery');
        }
//console.log('selectedPaymentMethod', selectedPaymentMethod, selectedPaymentMethodName);

        if ( $('.g-recaptcha').length ) { /* Van CAPTCHA */
            var isCaptchaChecked = (grecaptcha && typeof grecaptcha.getResponse === 'function' && grecaptcha.getResponse().length !== 0);
            if ( !isCaptchaChecked ) {
                errorMessages.push( app.getLang('please_check_captcha') );
            }
        }

        if ( firstFocusId ) {
            $( firstFocusId ).focus();
        }

        if ( errorMessages.length ) {
            errorMessages.unshift( app.getLang('please_fill_in_all_details') );
            $.fn.alert(
                app.getLang('label_alert'),
                errorMessages.join("<br/>\n"),
                'OK',
                null,
                null,
                null
            );
            return false;
        } else {
            /* GTM */
            //console.log('cart_content', cart_content);

            //dLayer.checkoutSteps(cart_content,3, selectedDeliveryMethodName + ' - ' + selectedPaymentMethodName);

            /* *** */

            $("#send_order input[type=submit]").removeClass('yellow');
            $("#send_order input[type=submit]").addClass('steel_gray_3 outlined');
            $("#send_order input[type=submit]").prop('disabled', true);
            $("#send_order input[type=submit]").val(app.getLang('wait_send'));
            return true;
        }
    }

    var checkTaxNumber = function (cif) {
        cif = cif.toUpperCase().replace('RO', '');

        if (cif.length > 10) {
            return false;
        }
        var checkNo = cif.substr(-1);
        cif = cif.substr(0, cif.length - 1);
        var diff = 9 - cif.length;
        for (var i = 0; i < diff; i++) {
            cif = '0' + cif.toString();
        }
        var cifArray = cif.split('');

        var sum = parseInt(cifArray[0]) * 7 + parseInt(cifArray[1]) * 5 + parseInt(cifArray[2]) * 3 + parseInt(cifArray[3]) * 2 + parseInt(cifArray[4]) * 1 + parseInt(cifArray[5]) * 7 + parseInt(cifArray[6]) * 5 + parseInt(cifArray[7]) * 3 + parseInt(cifArray[8]) * 2;
        sum = sum * 10;
        var reminder = sum % 11;
        if (reminder == 10) {
            reminder = 0;
        }
        if (reminder == checkNo) {
            return true;
        }
        return false;
    }

    $(document).on('change', '#p_inv_name, #p_inv_address, #p_inv_postcode, #p_inv_city', function (e) {
        /* Számlázási adatok ha módosulnak, a szállításit is illik átirni... */
        if ( $('#inv_same_data').is(':checked') ) { copyBilling2Delivery(); }
    });

    $(document).on('change', '#inv_same_data', function (e) {
        if ($(this).prop('checked')) {
            //console.log('inv_same_data', 'copyBilling2Delivery');
            $('#p_delivery_name').prop('disabled', true);
            $('#p_delivery_address').prop('disabled', true);
            $('#p_delivery_postcode').prop('disabled', true);
            $('#p_delivery_city').prop('disabled', true);
            copyBilling2Delivery();
        } else {
            //console.log('inv_same_data', 'deliveryData');
            $('#p_delivery_name').prop('disabled', false);
            $('#p_delivery_address').prop('disabled', false);
            $('#p_delivery_postcode').prop('disabled', false);
            $('#p_delivery_city').prop('disabled', false);
            deliveryData();
        }
    });

    $(document).on('click', '.conti_tovabb, .conti_terms input[type=checkbox]', function (e) {
        $('.conti_tovabb').hide();
        $('.conti_second').show();
        if ( $(this).attr('type') != 'checkbox' ) {
            e.preventDefault();
            return false;
        }
    });

    $(document).on("change", "#delivery_method", handleDeliveryData);

    $(document).on("change", "#location_address", function (e) {
        var o = $(this);
        var locID = o.val();
        if ( locID ) {
            var locCity = $('#location_city').val();
            var locData = app.getLocationData(locCity, locID);
            //console.log( locID, locData );
            if ( locData ) {
                //console.log('locData', locID, locData);
                if ( locData['szerviz_tipus'] == 0 ) { /* Saját telephely, van utánvét */
                    $(".cash_on_delivery").show();
                } else { /* Külsős telephely, nincs utánvét */
                    $(".cash_on_delivery").hide();
                    $( 'input[type="radio"][name="payment_method"][value="'+PURCHASE_PAYMENT_BANK_CARD+'"]').prop("checked", true).trigger('change');
                    /* MSG+TODO: Ezt nem tudom miért kell */
                    if (app.domain() == 'hu') {
                        buildCart(cart_content, 0);
                        //$(".on-site").html('');
                    }
                }
            }
        } else {
            //console.log('semmi nincs kijelölve');
            $(".cash_on_delivery").show();
        }
        /* --- */
        o.trigger('phone-change');
        /* --- */
        refreshExtraServices();
    });

    $(document).on("phone-change", "#location_address", function (e) {
        var o = $(this);
        var locID = o.val();
        var selOpt = $();
        if ( locID ) {
            selOpt = o.find('option[value="'+locID+'"]');
        }
        /* Telefonszám */
        var dPhone = selOpt.attr('data-phone');
        var phoneLink = $('.js--loc-phone-link');
        if ( app.domain() == 'hu' && typeof dPhone !== 'undefined' && dPhone ) {
            phoneLink.attr('href', 'tel:'+dPhone);
            phoneLink.find('.js--loc-phone-number').html(dPhone);
            phoneLink.fadeIn(300);
        } else {
            phoneLink.attr('href', 'javascript: void(0);');
            phoneLink.fadeOut(300);
        }
        /* szerviz link */
        var garageLink = $('.js--loc-link');
        if ( app.domain() == 'hu' && locID ) {
            garageLink.attr('href', '/'+app.getLang('b_service_url')+'/'+locID);
            garageLink.fadeIn(300);
        } else {
            garageLink.attr('href', 'javascript: void(0);');
            garageLink.fadeOut(300);
        }

    });

    $(document).on("change", "#location_city", function (e) {
        var o = $(this);
        var oVal = o.val();
        var oValLo = oVal.toLowerCase();
        $(".cash_on_delivery").show();
        getLocAddresses(oVal);
        refreshExtraServices();
    });

    $(document).on("change", 'input[type="radio"][name="person_type"]', function (e) {
        var o = $(this);

        $('.js--purchase-billing-datas').attr('hidden',false)
        $('.js--purchase-delivery-datas').attr('hidden',false)

        $('#p_inv_taxnum').prop('required', true)
        var oVal = o.val();

        $('.person_type_card').siblings().removeClass('checkout-payment-border')
        $('.person_type_card_'+oVal).addClass('checkout-payment-border')
        

        console.log('ewfefefefef  bence',oVal);
        if ( oVal == PURCHASE_PERSON_TYPE_PRIVATE ) { /* Magánszemély */
            $('#p_inv_taxnum').prop('required', false)
            $('#p_inv_company_id').prop('required', false).val('');
            $('.inv_taxnum_parent').hide();
            $('.inv_company_id_parent').hide();
        } else if ( oVal == PURCHASE_PERSON_TYPE_LEGAL ) { /* Jogi személy */
            $('#p_inv_taxnum').prop('required', true)
            $('#p_inv_company_id').prop('required', false);
            $('.inv_taxnum_parent').show();
            $('.inv_company_id_parent').show();
        } else if ( oVal == PURCHASE_PERSON_TYPE_SKCZ ) { /* SKCZ */
            $('.person_type_parent').hide();
            $('#p_inv_taxnum').prop('required', false).val('');
            $('#p_inv_company_id').prop('required', false).val('');
            $('.inv_taxnum_parent').show();
            $('.inv_company_id_parent').show();
        }
    });

    
    if( app.domain() == 'eu'){
        $(document).on('keyup', "input[name='eu_tax_number']", function (event) { 
          if($(this).val() != ''){
            $(this).val('SK'+$(this).val().replace(/\D/g, ""))
          }
        });
    
      }

    $(document).on("change", 'input[type="radio"][name="payment_method"]', function (e) {

        var o = $(this);
        var oVal = o.val();
//console.log('payment_method: ', oVal);
        if (app.domain() == 'hu' || app.domain() == 'sk' || app.domain() == 'cz') {
            buildCart(cart_content, 0);
        }
        if ( oVal == PURCHASE_PAYMENT_BANK_CARD ) {
            //$(".bank_card_info").show();
            $(".bank_card_info").removeClass('op-40');
            $('#send-order-btn').val(app.getLang('send_order_card'));
        } else {
            //$(".bank_card_info").hide();
            $(".bank_card_info").addClass('op-40');
            $('#send-order-btn').val(app.getLang('send_cart'));
        }



        switch($(this).val()){
            case '01':
                paymentModeGTM = 'Cash on delivery';
                break
            case '03':
                paymentModeGTM = 'Credit/debit card';
                break


        }

        if(typeof paymentMethodFirstLoad != 'undefined'){
            var cart_data = app.cart().cart_content();
            //dLayer.checkoutSteps(cart_data,2, paymentModeGTM);
        }

        setTimeout(function () {
            paymentMethodFirstLoad = 1;           
        }, 2000)
      
    });

    /* Kosár tartalmát beállítom, biztos változott rajta valami */
    var refreshCartContent = function() {
        couponExists = app.cart().couponExists();
        cart_content = app.cart().cart_content();
        //console.log('refreshCartContent:: cart_content: ', cart_content, ', couponExists: ' + couponExists);
    };

    return {
        showPurchase: showPurchase,
        getDeliveryCost: getDeliveryCost,
        fillUserData: fillUserData,
        refreshCartContent: refreshCartContent,
        refreshExtraServices: refreshExtraServices,
        getDeliveryMethod: getDeliveryMethod
    }
}

function PurchaseStatic() {
    //console.log('PurchaseStatic');
    return {
        show: function () {
            app.setStatic();
            $.getJSON("/ajaxLoader.php?module=LoadTemplates&method=main&template=purchase", function (data) {
                $(".content_div").html(data.purchase);
                $.getJSON('/ajaxLoader.php?module=Cart', function (cc) {
                    //console.log('PurchaseStatic');
                    //console.log('cart_content', cart_content);
                    //cart_content = cc;
                    //$(".content_div").html(data.purchase);
                    //Purchase(cart_content).showPurchase();
                    var p = Purchase(cc);
                    app.setPurchase(p);
                    //console.log('PurchaseStatic: ', app.purchase());
                    p.showPurchase();
                }, 'json').fail(function (e) {
                    console.log(e.getMessageData());
                });
            });
        }
    }
}
/* Szervizek letöltése */
function LocationsStatic() {

 
    var locations = function (service_name) {
    }

    /*
    var locationBySlug = function (locid) {
        datebooking_url = app.getLang('b_checkout_datebooking_url');

        if (window.location.href.split('/')[3] !== datebooking_url){
            $.ajax({
                //url: '//szerviz.gumi.hu/szervizleiras.php?id=' + locid,
                url: '/ajaxLoader.php?module=AllParams&type=getLocationFullData&slug=' + locid,
                type: 'GET',
                data: '',
                dataType: 'json',
                async: true,
                success: function (data) {
                    document.title = data.name;
                    var contentDiv = $(".content_div");
                    contentDiv.empty().hide();
                    var tmp = app.getTemplate( 'location', false);
                    if ( tmp ) {
                        contentDiv.html( tmp );
                        addDatatoDOM(data);
                        contentDiv.fadeIn(1000);
                    } else {
                        app.templatePromise().done(function (a) {
                            contentDiv.html(a.location);
                            addDatatoDOM(data);
                            contentDiv.fadeIn(1000);
                        });
                    }
                    $('html, body').animate({scrollTop: 0}, 1000);
                }

            });
        }
    }

     */
    var addDatatoDOM = function (data) {
        console.log('addDatatoDOM', data);

        if (
            typeof data === 'object' &&
            Object.keys(data).length
        ) {
            if (
                data != null
            ) {
                var langCode = app.getSettingData('lang_code');
                var addressLink = '';
                if (
                    typeof data.gps_latitude !== 'undefined' && data.gps_latitude &&
                    typeof data.gps_longitude !== 'undefined' && data.gps_longitude
                ) {
                    addressLink = 'https://www.google.hu/maps?q=' + data.gps_latitude + ',' + data.gps_longitude;
                }

                $gpsQuery = '&q=' + data.gps_latitude + ',' + data.gps_longitude;


                var searchParams = new URLSearchParams($('#service-map').attr('src'));
                searchParams.set('q',data.gps_latitude + ',' + data.gps_longitude)
                var newParams = searchParams.toString();

                $('#service-map').attr('src',decodeURIComponent(newParams));


                $('#nev').html(data.name);

                $('#cim').html('<span class="fa fa-map-marker"></span> ' + data.post_code + " " + data.city + ", " + data.route + " " + data.street_number);
                $('#cim').attr('href', addressLink );
                //$('#cim_leiras').html(data.szerviz[0].cim_leiras);
                $('#kep_url').attr('src', data.image );
                //$('#seo_leiras').html(data.szerviz[0].seo_leiras);

                $('#telefon').attr('href', 'tel:' + data.phone)
                    .html('<span class="fa fa-phone"></span> <span class="txt-upper txt-strong">'+app.getLang('call_now')+':</span> ' + data.phone );

                if ( typeof data.email !== 'undefined' && data.email ) {
                    $('#email').attr('href', 'mailto:' + data.email)
                        .html('<span class="txt-upper txt-strong">E-mail</span>: ' + data.email );
                } else {
                    $('#email').hide();
                }

                try{
                    $('#description').html(data["description_" + DL_LANG_CODE].replace(/\n/g, "<br />") );
                }catch(e){

                }

                /* időpontfoglalás link */
                var idoLink = null;
                if (
                    typeof data.company_type !== 'undefined' &&
                    typeof data.code !== 'undefined' && data.code
                ) {
                    //idoLink = "https://ido.gumi.hu/" + (app.isDevelopment()?'teszt/':'')+'ghlogin.php?depotcode='+data.szerviz[0].kod;
                      idoLink = window.location.origin +'/' + app.getLang('b_checkout_datebooking_url');
                }
                if ( idoLink ) {
                    $('#ido_gumi_hu').attr('href', idoLink );
                    //.html( app.getLang('b_main_sign_up_mounting') );
                } else {
                    $('#ido_gumi_hu').hide();
                }

                /* gumit veszek link... */
                var marketLink = null;
                var baseSeason = app.getSettingData('base_season');
                var seasonBlock = '';
                if ( baseSeason == 'N' ) { seasonBlock = app.getLang('summer_url'); }
                else if ( baseSeason == 'T' ) { seasonBlock = app.getLang('winter_url'); }
                else if ( baseSeason == 'NEGY' ) { seasonBlock = app.getLang('all_seasons_url'); }
                marketLink = '../' + app.getLang('search_by_sizes_url') + '/' + app.getLang('all_url') + '/' + app.getLang('all_url') + '/'  + app.getLang('all_url') + '/' + seasonBlock ;
                if ( marketLink ) {
                    $('#market').attr('href', marketLink );
                } else {
                    $('#market').hide();
                }

            }

            //nyitvatartas
            var mondayEl = $('#hetfo');
            var openHoursTable = mondayEl.closest('div.table.custom');
            if (
                typeof data['opening_hours'] !== 'undefined'
            ) {
                openHoursTable.show();
                var dayHelper = [ 'hetfo', 'kedd', 'szerda', 'csutortok', 'pentek', 'szombat', 'vasarnap' ];

                var day_index = 0;
                for(var key in data.opening_hours) {
                    var arr = [];
                    arr.push(data.opening_hours[key].start_time);
                    arr.push(data.opening_hours[key].end_time);

                    if ( arr.length ) {
                        if ( arr.length == 2 && arr[0] == arr[1] ) {
                            arr.pop();
                        }
                        $("#" + dayHelper[day_index]).html(arr.join(' - '));
                    }

                    day_index++;
                }
            } else {
                openHoursTable.hide();
            }

            //---
            //console.log(langCode);
            var parkolas = $('#parkolas');
            parkolas.empty();

            if ( typeof data['parkolas'] !== 'undefined' ) {
                var content = '<ul>';
                for (var i in data.parkolas) {
                    var row = data.parkolas[i];
                    //console.log(row);
                    var langKey = 'text_'+ langCode;
                    if ( typeof row[langKey] === 'undefined' || !row[langKey] ) {
                        langKey = 'text_hu';
                        //Magyarról kellene lefordítani...
                        /*
                        $.getJSON("/ajaxLoader.php?module=AllParams&type=translate&from=hu&to="+langCode+"&get_back=" +row['parkolas_id']+ "&text="+encodeURI(row[langKey]), function (tr) {
                            if (
                                typeof tr === 'object' &&
                                typeof tr['success'] !== 'undefined' && tr['success'] &&
                                typeof tr['message'] === 'string' && tr['message']
                            ) { //Fordítás sikeres, vissza kellene tölteni...
                                //console.log(tr['message'], tr);
                                $('#parkolas'+tr['get_back']).html(tr['message']);
                                $.getJSON("/ajaxLoader.php?module=AllParams&type=szerviz&table=parkolas&lang="+langCode+"&id=" +tr['get_back']+ "&text="+encodeURI(tr['message']), function (sz) {
                                    console.log(sz);
                                });
                            }
                        });
                        */
                    }
                    if ( langKey && typeof row[langKey] !== 'undefined' && row[langKey] ) {
                        content += '<li id="parkolas'+row['parkolas_id']+'">' + row[langKey] + '</li>';
                    }
                }
                content += '</ul>';
                parkolas.html(content);
                $('.parking').show();
            }else{
                $('.parking').hide();
            }
            //---
            var szolgaltatas = $('#szolgaltatas');
            szolgaltatas.empty();
            if ( typeof data['siteservices'] !== 'undefined' ) {
                var content = '<ul>';
                for (var i in data.siteservices) {
                    var row = data.siteservices[i];
                    //console.log(row);
                    var langKey = 'text_'+ langCode;
                    if ( typeof row[langKey] === 'undefined' || !row[langKey] ) {
                        langKey = 'text_hu';

                        //Magyarról kellene lefordítani...
                        /*
                        $.getJSON("/ajaxLoader.php?module=AllParams&type=translate&from=hu&to="+langCode+"&get_back=" +row['szolgaltatas_id']+ "&text="+encodeURI(row[langKey]), function (tr) {
                            if (
                                typeof tr === 'object' &&
                                typeof tr['success'] !== 'undefined' && tr['success'] &&
                                typeof tr['message'] === 'string' && tr['message']
                            ) { //Fordítás sikeres, vissza kellene tölteni...
                                //console.log(tr['message'], tr);
                                $('#szolgaltatas'+tr['get_back']).html(tr['message']);
                                $.getJSON("/ajaxLoader.php?module=AllParams&type=szerviz&table=szolgaltatas&lang="+langCode+"&id=" +tr['get_back']+ "&text="+encodeURI(tr['message']), function (sz) {
                                    console.log(sz);
                                });
                            }
                        });
                        */
                    }
                    if ( typeof row["description_" + langCode] !== 'undefined' ) {
                        content += '<li id="szolgaltatas'+row['id']+'">' + row["description_" + langCode] + '</li>';
                    }
                }
                content += '</ul>';
                szolgaltatas.html(content);
            }
            //---
            var egyeb = $('#egyeb');
            egyeb.empty();
            if (
                typeof data['egyeb'] !== 'undefined'
            ) {
                var content = '<ul>';
                for (var i in data.egyeb) {
                    var row = data.egyeb[i];
                    var langKey = 'text_'+ langCode;
                    if ( typeof row[langKey] === 'undefined' || !row[langKey] ) { langKey = 'text_hu'; }
                    if ( langKey && typeof row[langKey] !== 'undefined' && row[langKey] ) {
                        content += '<li>' + row[langKey] + '</li>';
                    }
                }
                content += '</ul>';
                egyeb.html(content);
            }
        }
    }


    var locationsFrame = function (service_name) {
        //MSG: Itt már a nyelvi adatok rendelkezésre állnak
        //app.searchPromise().done(function (d) {
//console.log('locationsFrame', d);
        //app.lang = d.lang;
        $(".content_div").html(
            '<div class="box">\n' +
            /* '<h2>' + app.getLang('garages') + '</h2>\n' +*/
            //'<div class="grid" id="szervizek"></div>\n' +
            '<div class="row" id="'+app.getLang('b_service_url')+'"></div>\n' +
            '</div>'
        );
        locations(service_name);
        //});
    }

    var getSearchByLocationName = function (service_name){
        /*
        $.ajax({
            url: '/ajaxLoader.php?module=AllParams&type=getAllLocations',
            //url: '//szerviz.gumi.hu/szervizek_all.php',
            type: 'GET',
            data: {
                service_name:service_name
            },
            dataType: 'json',
            async: true,
            success: function (data) {

                var parseData = "";
                //data = JSON.parse(data);
                var meta = data.meta;


                data = data.data;
                var garagesByTypes = {};
                for (var key in data) {
                    var county = data[key]
                    for (var i in county) {
                        var garage = county[i];
                        var garageType = 'unknown';
                        if ( typeof garage['company_type'] !== 'undefined') { garageType = garage['company_type']; }
                        if ( typeof garagesByTypes[garageType] === 'undefined') { garagesByTypes[garageType] = {}; }
                        if ( typeof garagesByTypes[garageType][key] === 'undefined') { garagesByTypes[garageType][key] = []; }
                        garagesByTypes[garageType][key].push( garage );
                    }
                }
                //console.log(garagesByTypes);
                for (var garageType in garagesByTypes ) {
                    var counties = garagesByTypes[garageType];
                    var garageLabel = '';
                    var buttonColor = '';
                    if ( garageType == '0' || app.domain() == 'sk') {
                        garageLabel = app.getLang('akh_garages');
                        buttonColor = 'yellow';
                    } else if ( garageType == '1' ) {
                        garageLabel = app.getLang('akh_partner_garages');
                        buttonColor = 'steel_gray_1';
                    } else {
                        garageLabel = app.getLang('garages');
                        buttonColor = 'steel_gray_1';
                    }

                    var countyID = 0;

                    for (var countyKey in counties) {
                        var county = counties[countyKey];
                        //parseData += '<div class="col-xxs-12 mb--1"><h3 class="mt--0 mb--1">' + (countyID>0? '<a href="#garage-type-'+garageType+'" class="txt-upper">' + garageLabel + '</a> - ':'')+ countyKey + '</h3>';
                        if(countyKey != "Budapest" && app.domain() == 'hu') {
                            parseData += '<div class="col-xxs-12 mb--1"><h3 class="mt--0 mb--1">' + countyKey + ' megye</h3>';
                        } else {
                            parseData += '<div class="col-xxs-12 mb--1">';//<h3 class="mt--0 mb--1">' + countyKey + '</h3>'
                        }
                        parseData += '<div class="col-xxs-12" >';
                        parseData += '<div class="col-xxs-11" style="background-color: #ececec;">';
                        parseData += '<hr>';
                        parseData += '</div>';
                        for (var i in county) {
                            var raw = county[i];
                            //ez volt a szerviz_div
                            parseData += '<div class="col-xxs-12 col-sm-6 col-md-4 col-lg-4 garage-block shadow " id="'+app.getLang('b_service_url')+'_' + raw.id + '" data-slug="' + raw.slug + '" data-id="' + raw.id + '">' +
                                '<div class="col-xxs-12 garage-name">' +
                                '<button type="button" class="btn block '+buttonColor+' txt-left">'+(garageType==0?raw.name:raw.company_name) +'</button>' +
                                '</div>' +
                                '<div class="col-xxs-12 garage-address"><span>' + raw.post_code + " " + raw.city + ", " + raw.route + " " + raw.street_number + '</span></div>' +
                                '<div class="col-xxs-12 garage-details form_help steel_gray_1 btn outlined block">' + app.getLang('details') +'</div>' +
                                '</div>';
                        }
                        parseData += '</div>';
                        parseData += '</div>';
                        try {
                            parseData += '<p  >' + meta[0].description+ '</p>';
                        } catch (error) {

                        }
                        countyID++;
                    }
                }

                //console.log(parseData)

                $('.service_list_content').html(parseData).fadeIn(1000);

            }


        });
        */
    }

    return {
        show: function () {
            var path = window.location.pathname.split('/');
            var locationId = null;
            if ( path.length && path[0] == '' ) {
                if ( path.length >= 3 ) {
                    locationId =  path[2] ;
                }
            }

            /*
            if ( locationId !== null ) {
                locationsFrame(locationId);
            } else {
                locationsFrame();
            }
            */
            //console.log(window.location.pathname, path, locationId);
            //$(document).off('click', '.szerviz_div').on('click', '.szerviz_div', function () {

            /*
            $(document).off('click', '#back-to-locations').on('click', '#back-to-locations', function (a) {
                a.preventDefault();
                locationsFrame();
                history.pushState({
                    title: 'LocationsStatic',
                    method: "show",
                    url: app.URI,
                    params: {title: {data: null, type: null}, method: {}}
                }, null, "/szerviz");
                return false;
            });
            */
        }
    };
}

function handleFB(go) {
    //console.log('FB', FB);
    fbLogin = function () {
        //FB.login() called before FB.init()
        //console.log('handleFB::fbLogin', FB);
        FB.login(function (r) {
            if (r.authResponse) {
                location = go;
                console.log('Welcome!  Fetching your information.... ');
            } else {
                console.log('User cancelled login or did not fully authorize.');
            }
        }, {
            scope: 'email,public_profile'
        });
    };

    return {
        check: function () {
            //console.log('handleFB::check', FB);
            FB.getLoginStatus(function (response) {
                //console.log('FB response', response);
                if (response.status === 'connected') {
                    location = go;
                } else {
                    $(".facebook").html("Először lépjen be a Facebookra! <br>Kattintson ide!");
                    $('.facebook').parent('a').removeClass('fb-link');
                    $('.facebook').parent('a').addClass('fb-login');
                }
            })
        },
        login: fbLogin,
    }
}
 

$(document).on('change','input[type=radio][name=payment_method]',function() {
    taxnum_input = $('input[name="inv_taxnum"]');
    

    treatment_cost = app.getFormattedPrice(Math.round(parseFloat(app.getSettingData( 'treatment_cost_' + app.domain() ) ) * 1.2),true);
    treatment_no_curr = Math.round(parseFloat(app.getSettingData( 'treatment_cost_' + app.domain() ) ) * 1.2)
     
    var old_total = $('.treatment-cost-content').attr('data-origin-total');
    var new_total = parseFloat($('.js--purchase-total-gross-price').text()) + treatment_no_curr;
    if ($(this).val() == '01') {
        $('.treatment-cost-content').addClass('visible')
        $('.js--treatment-total').text(treatment_cost);
        $('.treatment-cost-content').css('display','block');
        $('.payment_section_content').addClass('checkout-payment-border');
        $('.prepay_section_content').removeClass('checkout-payment-border');
        $('.paypal_section_content').removeClass('checkout-payment-border');
        $('.barion_section_content').removeClass('checkout-payment-border');
        $('.payment_info_content').css('display','block');
        $('.paypal_info_content').css('display','none');
        $('.barion_info_content').css('display','none');
    }else if ($(this).val() == '04') {
        $('.treatment-cost-content').removeClass('visible')
        $('.treatment-cost-content').css('display','none');
        $('.payment_section_content').removeClass('checkout-payment-border');
        $('.paypal_section_content').addClass('checkout-payment-border');
        $('.prepay_section_content').removeClass('checkout-payment-border');
        $('.barion_section_content').removeClass('checkout-payment-border');
        $('.payment_info_content').css('display','none');
        $('.paypal_info_content').css('display','block');
        $('.barion_info_content').css('display','none');
    }else if ($(this).val() == '03') {
        $('.treatment-cost-content').removeClass('visible')
        $('.treatment-cost-content').css('display','none');
        $('.payment_section_content').removeClass('checkout-payment-border');
        $('.paypal_section_content').removeClass('checkout-payment-border');
        $('.prepay_section_content').removeClass('checkout-payment-border');
        $('.barion_section_content').addClass('checkout-payment-border');
        $('.payment_info_content').css('display','none');
        $('.paypal_info_content').css('display','none');
        $('.barion_info_content').css('display','block');
    }else if ($(this).val() == '02') {
        $('.treatment-cost-content').removeClass('visible')
        $('.treatment-cost-content').css('display','none');
        $('.payment_section_content').removeClass('checkout-payment-border');
        $('.paypal_section_content').removeClass('checkout-payment-border');
        $('.prepay_section_content').addClass('checkout-payment-border');
        $('.barion_section_content').removeClass('checkout-payment-border');
        $('.payment_info_content').css('display','block');
        $('.paypal_info_content').css('display','none');
        $('.barion_info_content').css('display','none');
    }

    if ($('.treatment-cost-content').hasClass('visible')){
        $('.js--purchase-total-gross-price').html( app.getFormattedPrice(new_total, false) );
    }else{
      
      //  $(document).trigger("purchase-total", [ { 'key': 'services', 'price': 0 } ]); 
    }
    
    
    try{
        if($('#delivery_method option').length == 2)
            $('#delivery_method option:nth-child(2)').prop('selected',true);
    }catch(e){

    }
});

function Compare() {
    var VAT = parseFloat(app.getSettingData( 'vat' ) );

    var handleCookie = function (item, isChecked) {
        /* selected item */
        if ( typeof item === 'undefined' ) { item = null; }
        /* select/deselect */
        if ( typeof isChecked === 'undefined' ) { isChecked = 0; }

        var arr = getItems();
        if (item) {
            var itemIndex = arr.indexOf(item);
//console.log('compare_items', arr);
//console.log('item', item);
//console.log('isChecked', isChecked);
//console.log('itemIndex', itemIndex);
            if ( !isChecked && itemIndex > -1 ) { /* már jelölt tétel törlése */
                arr.splice(itemIndex, 1);
            } else if ( isChecked && itemIndex <= -1 ) { /* Még nem megjelölt tétel megjelölése */
                arr.push(item);
            }
//console.log('compare_items', arr);
            if (arr.length) {
                createCookie('compare_items', arr.join("|"), 1);
            } else {
                eraseCookie('compare_items');
            }
        }
        return arr.length;
    };

    var getItems = function () {
        var items = readCookie('compare_items');
        var arr = items ? items.split("|") : [];
        return arr;
    };

    var handleComparingBar = function () {
        var count = Compare().handleCookie();
        if (count) {
            $(".comparing__actions").css({'transform': 'none', '-webkit-transform': 'none', 'ms-transform': 'none'});
        } else {
            if (!$("body").hasClass('comparing')) {
                $(".comparing__actions").css({
                    'transform': 'transform: translate3d(0,100%,0)',
                    '-webkit-transform': 'translate3d(0,100%,0)',
                    'ms-transform': 'transform: translate3d(0,100%,0)'
                });
            }
        }
        $(".comparing__actions__item_counter span").html(count);
    };

    var itemHTML = function (i, d, prod_data) {
        //console.log(i, d, prod_data);
//Autó típusa,  Erősített kivitel, Defekttűrő rendszer
        var seasonLangKey = 'season_' + d.season_code;
        var seasonTitle = (d.cikktip == 'A'? app.getLang(seasonLangKey) + " " + app.getLang('tyre') : app.getLang('wheel'));

        $(".prod_name_row").append(prod_data.prod_name);
        //$(".prod_name h4").eq(i).html(d.brand + " " + d.pattern);
        $(".prod_name h4").eq(i).html(d.brand + " " + d.name);
        $(".prod_name h4").eq(i).attr('id', d.KOD);
        $(".prod_name h4").eq(i).addClass('product_list__item');
        $(".prod_image_row").append(prod_data.prod_image);
        //$(".prod_image img").eq(i).attr("src", d.image_url);
        $(".prod_image img").eq(i).attr("src", app.http2https(d.image_url) );
        $(".prod_season_row").append(prod_data.prod_season);
        //$(".prod_season").eq(i).html(d.season + " " + app.getLang('tyre') );
        $(".prod_season").eq(i).html( seasonTitle );
        $(".prod_size_row").append(prod_data.prod_size);
        $(".prod_size").eq(i).html(d.size);
        $(".prod_speed_row").append(prod_data.prod_speed);
        $(".prod_speed").eq(i).html(d.si_name);
        $(".prod_load_row").append(prod_data.prod_load);
        $(".prod_load").eq(i).html( (d.li ? d.li + " (" + d.li_name + ")":"") );
        $(".prod_fuel_row").append(prod_data.prod_fuel);
        $(".prod_fuel").eq(i).html(d.fuel);
        $(".prod_wet_row").append(prod_data.prod_wet);
        $(".prod_wet").eq(i).html(d.wet);
        $(".prod_noise_row").append(prod_data.prod_noise);
        $(".prod_noise").eq(i).html( ( d.noise? d.noise + " dB": '') );
        $(".prod_quantity_row").append(prod_data.prod_quantity);
        productProfile().setProductNumber(d.stock, $("#product-number"));

        /*  $(".prod_quantity").eq(i).find('.product-total').html(parseFloat(d.price * (1 + VAT)) * $(".prod_quantity").eq(i).find("input:text").val().toLocaleString('fr-Fr').replace(',', '.', {
              minimumFractionDigits: app.fraction(),
              maximumFractionDigits: app.fraction()
          }) + " " + app.getSettingData( 'currency_' + app.domain() ) );*/
        $(".prod_quantity").eq(i).find("input:text").attr("data-price", d.price);
        $(".prod_quantity").eq(i).find("input:text").attr("data-pid", d.KOD);
    }

    return {
        showList: function () {

        },
        showItems: function (e, searchData, type) {
            /* TODO: ismert bug */
            if ( typeof type === 'undefined') { type = 'tyre'; }
            type = 'tyre';
            var search_res = $(".content_div");
            var compare_items = handleCookie();
//console.log('compare_items', compare_items);
            if (compare_items > 1) {
                var templateName = 'compare' + (type == 'wheel' ? '_wheel' : '');
                search_res.html( app.getTemplate( templateName, false ) );
                $("body").removeClass("comparing");
                var prod_data = {};
                prod_data.prod_name = $(".prod_name")[0].outerHTML;
                prod_data.prod_image = $(".prod_image")[0].outerHTML;
                if (type == 'tyre') {
                    prod_data.prod_season = $(".prod_season")[0].outerHTML;
                    prod_data.prod_size = $(".prod_size")[0].outerHTML;
                    prod_data.prod_speed = $(".prod_speed")[0].outerHTML;
                    prod_data.prod_load = $(".prod_load")[0].outerHTML;
                    prod_data.prod_fuel = $(".prod_fuel")[0].outerHTML;
                    prod_data.prod_wet = $(".prod_wet")[0].outerHTML;
                    prod_data.prod_noise = $(".prod_noise")[0].outerHTML;
                }
                //prod_data.prod_quantity = $(".prod_quantity")[0].outerHTML;
                $(".prod_name, .prod_image,.prod_season,.prod_size,.prod_speed,.prod_load,.prod_fuel,.prod_wet,.prod_noise,.prod_quantity").remove();
                var i = 0;
                var items = getItems();
                var promises = [];
                $.each(items, function (key, dt) {
                    //console.log(key, dt);
                    if (searchData && searchData[dt]) {
                        //console.log( searchData[dt] );
                        itemHTML(i, searchData[dt], prod_data);
                        i++;
                    } else {
                        promises.push(app.search_promise({'product_id': dt}));
                    }
                });
                $("#back-to-auto-list").html($("#back-to-auto-list").html() + app.getLang('back_to_previous_search') );
                $(".compare-title").html( app.getLang('compare_products') );
                $(".prod_name_row strong").html( app.getLang('product') );
                $(".prod_image_row strong").html( app.getLang('image') );
                $(".prod_season_row strong").html( app.getLang('season') );
                $(".prod_size_row strong").html( app.getLang('size') );
                $(".prod_speed_row strong").html( app.getLang('speed_index') );
                $(".prod_load_row strong").html( app.getLang('load_index') );
                $(".prod_fuel_row strong").html( app.getLang('fuel_efficiency') );
                $(".prod_wet_row strong").html( app.getLang('stop_on_wet_road') );
                $(".prod_noise_row strong").html( app.getLang('moving_noise') );

                if (promises.length) {
                    $.when.apply(null, promises).done(function () {
                        $.each(arguments, function (key, d) {
                            //console.log(key, d);
                            itemHTML(i, d[0], prod_data);
                            i++;
                        });
                    });
                }
            }
        },

        checkItems: function (e, th, data) {

            e.preventDefault();
            e.stopPropagation();

            var selectedItemsCount = handleCookie();
            var neededCount = 0;
//console.log('selectedItemsCount', selectedItemsCount);
            var parent = $(th).closest('.product_list__item.tire');

            if ( parent.length > 0 ) {
                var productItemCode = parent.attr('data-id');
                var targetInput = parent.find('input').first();
                if ( targetInput.length && targetInput.val() ) { /* fallback */
                    productItemCode = targetInput.val();
                }
//console.log('productItemCode', productItemCode);
//console.log('targetInput', targetInput);
                var isChecked = targetInput.is(':checked');
                if ( !isChecked ) {
                    neededCount = selectedItemsCount + 1;
                } else {
                    neededCount = Math.max(selectedItemsCount - 1, 0);
                }
//console.log('neededCount', neededCount);
                if ( neededCount <= 3 ) {
                    /* Mehet a megjelölés módosítás */
                    targetInput.prop("checked", (isChecked? false:true) );
                    selectedItemsCount = handleCookie(productItemCode, (isChecked? 0:1) );
                } else {
                    //alert("Csak 3 terméket hasonlíthatsz össze");
                    $.fn.alert(
                        app.getLang('label_alert'),
                        app.getLang('products_compare_limit'),
                        'OK',
                        null,
                        null,
                        null
                    );
                }
            }
            $(".comparing__actions__item_counter span").html(selectedItemsCount);
            Compare().handleComparingBar();
        },

        checkFromCookie: function () {
            var items = $(".product_list__form input:checkbox");
            var cookie_items = readCookie('compare_items');
            var ci_arr = cookie_items ? cookie_items.split('|') : [];
            $.each(items, function (key, dt) {
                if ($.inArray(items[key].value, ci_arr) != -1)
                    items[key].checked = true;
                else
                    items[key].checked = false;
            });
        },
        handleCookie: handleCookie,
        handleComparingBar: handleComparingBar

    };
}

function showPageStatic() {

    //console.log('showPageStatic');
    var saveUnit = function (id, url) {
        if ( typeof id !== 'undefined' && id ) {
            var cookie = readCookie('viewed_messages');
            var saved = cookie ? JSON.parse(cookie) : {};
            saved[id] = url;
            createCookie('viewed_messages', JSON.stringify(saved), 30);
        }
    };

    return {
        show: function () {
            app.popupPromise().done(function (data) {
                if (data.length) {
                    //console.log('showPageStatic', data);
                    var element = null;
                    $.each(data, function (k, o) {
                        if ( app.URI == 'Pages/' + o.urlname ) {
                            element = o;
                            return false;
                        }
                    });
                    if ( element ) { /* Mindenképp olvasottá teszem!!! */
                        //console.log(element);
                        saveUnit(element.id, element.urlname);
                        if ( element.further == 0 ) { /* Ha nem mindig megjelenő, akkor nem jelenítem meg újra... */
                            app.removePopup(element.id);
                        }
                    }
                }

            });
        },
        saveCookie: saveUnit
    };
}

$(document).on('change','input[name="tax_number"]',function (){
    console.log('ide')
    if ($(this).val().length < 8){
        $('input[name="tax_number"]').addClass('error');
    }else{
        $('input[name="tax_number"]').removeClass('error');
    }
    if ($(this).val() == ''){
        $('input[name="tax_number"]').removeClass('error');
    }
})

$(document).on('change', '.search_order_params', function () {
    $.ajax({
        url: '/ajaxLoader.php?module=HandleOrder&type=getOrderListMibiz',
        data: {
            mibiz:      $('#search_order_mibiz').val(),
            start_date: $('#search_order_start_date').val(),
            end_date:   $('#search_order_end_date').val(),
            package:    $('#search_order_package').val()
        },
        dataType: 'json',
        type: 'get',
        beforeSend:function (){
            $('.filter_order_list_content').html($('.preloader').html())
        },
        success: function (data) {
            if(typeof data.temp != 'undefined'){
                let temp = data.temp;
                $('.filter_order_list_content').html(temp);
            }
        },
    }, 3000);
});

$(document).on('click', '#search_date', function () {
    if ($('#search_order_start_date').val() !== '' && $('#search_order_end_date').val() !== ''){
        $.ajax({
            url: '/ajaxLoader.php?module=HandleOrder&type=getOrderListDates',
            data: {
                mibiz:      $('#search_order_mibiz').val(),
                start_date: $('#search_order_start_date').val(),
                end_date:   $('#search_order_end_date').val(),
                package:    $('#search_order_package').val()
            },
            dataType: 'json',
            type: 'get',
            beforeSend:function (){
                $('.filter_order_list_content').html($('.preloader').html())
            },
            success: function (data) {
                if(typeof data.temp != 'undefined'){
                    let temp = data.temp;
                    $('.filter_order_list_content').html(temp);
                }
            },
        }, 3000);
    }
});


var setImageSrcFromDataAttribute = function( imageElement ) { 
    let imageUrl = imageElement.data( 'src' );
    imageElement.attr('src', imageUrl);
}

var lazyLoadImages = function( imageElements ) {
    
    imageElements.each( function() { 
        if($(this).is('img')){
            //Do something
            setImageSrcFromDataAttribute( $( this ) );
          }else{
                $(this).append($('<img>',{src: $(this).data( 'src' )}))
          }
        
    });
}
var lazyLoadBgImages = function( imageElements ) {
    
    imageElements.each( function() {
         $(this).css('background-image', 'url(' + $(this).data( 'src' ) + ')');
        
    });
}

$(document).ready(function (){ 
    lazyLoadImages(  $('.lazyload')); 
    lazyLoadBgImages(  $('.lazyload-bg')); 
});