// source --> https://die-bunte-christine.de/wp-content/plugins/contexlabs-support/js/contexlabs-errors.min.js?ver=0.1 
/**
 * CMS ADMINS JS Error-Logging
 * Test error: setTimeout(function() { throw new Error("Testfehler"); });
 * @param errorMsg
 * @param url
 * @param lineNumber
 * @param column
 * @param errorObj
 * @returns {boolean}
 */
const errorCache = new Map();
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {

    // Maximum 5 errors total, and only send the same error once
    if (contexlabs_support_errors.error_count >= 5) {
        return;
    }

    const errorKey = `${errorMsg}|${url}|${lineNumber}|${column}`;
    if (errorCache.has(errorKey)) {
        return;
    }
    errorCache.set(errorKey, true);

    const userAgent = navigator.userAgent;
    let browserName = navigator.appName;
    let browserVersion = navigator.appVersion.split(" ")[0];
    const edge = userAgent.match(/Edge\/(\d+)/);
    const edg = userAgent.match(/Edg\/(\d+)/);
    const opera = userAgent.match(/OPR\/(\d+)/);
    const firefox = userAgent.match(/Firefox\/(\d+)/);
    const safari = userAgent.match(/Version\/(\d+).*Safari/);
    const chrome = userAgent.match(/Chrome\/(\d+)/);
    const ie = userAgent.match(/MSIE (\d+)/) || userAgent.match(/Trident\/.*rv:(\d+)/);

    if (edge) {
        browserName = "Edge";
        browserVersion = edge[1];
    } else if (edg) { // Edge Chromium
        browserName = "Edge (Chromium)";
        browserVersion = edg[1];
    } else if (opera) {
        browserName = "Opera";
        browserVersion = opera[1];
    } else if (firefox) {
        browserName = "Firefox";
        browserVersion = firefox[1];
    } else if (safari) {
        browserName = "Safari";
        browserVersion = safari[1];
    } else if (chrome) {
        browserName = "Chrome";
        browserVersion = chrome[1];
    } else if (ie) {
        browserName = "Internet Explorer";
        browserVersion = ie[1];
    }

    // Systemerkennung
    let OSName = "Unknown OS";
    if (navigator.appVersion.indexOf("Win") !== -1) OSName = "Windows";
    else if (navigator.appVersion.indexOf("Mac") !== -1) OSName = "MacOS";
    else if (navigator.appVersion.indexOf("X11") !== -1) OSName = "UNIX";
    else if (navigator.appVersion.indexOf("Linux") !== -1) OSName = "Linux";

    // Erweiterte Bot-Erkennung anhand des User-Agent-Strings
    const bots = [
        'googlebot', 'bingbot', 'yandexbot', 'duckduckbot', 'slurp', 'baiduspider', 'exabot',
        'mediapartners-google', 'adsbot-google', 'applebot', 'facebot', 'facebookexternalhit',
        'twitterbot', 'linkedinbot', 'pinterestbot', 'embedly', 'quora link preview', 'showyoubot',
        'outbrain', 'w3c_validator', 'mail.ru_bot', 'mj12bot', 'ahrefsbot', 'semrushbot',
        'dotbot', 'surdotlybot', 'seznambot', 'screaming frog', 'crawler', 'spider', 'bot', 'robot'
    ];
    const isBot = bots.some(bot => userAgent.toLowerCase().includes(bot));
    if (isBot) {
        // Bei einem Bot nicht weitermachen
        return false;
    }

    const locationHref = window.location.href;
    const errorDetails = `OSName: ${OSName}, BrowserName: ${browserName}, Version: ${browserVersion}, locationHref: ${locationHref}, Error: ${errorMsg}, Script: ${url}, Zeile: ${lineNumber}, Spalte: ${column}, StackTrace: ${errorObj && errorObj.stack ? errorObj.stack : 'N/A'}, Count: ${contexlabs_support_errors.error_count}`;

    // Den fehlerhaften Zustand melden
    jQuery.ajax({
        'type': 'POST',
        'url': contexlabs_support_errors.ajaxurl,
        'data': {
            'action': 'contexlabs_support_errors',
            'frontendError': errorDetails,
            'errorMsg': errorMsg,
            'url': url,
            'lineNumber': lineNumber,
            'column': column,
            'errorObj': errorObj ? errorObj.toString() : 'N/A',
            'browserName': browserName,
            'browserVersion': browserVersion,
            'locationHref': locationHref,
            'OSName': OSName
        }
    });
    contexlabs_support_errors.error_count += 1;
    return false;
};
// source --> https://die-bunte-christine.de/wp-content/themes/travelify/library/js/functions.min.js?ver=6.9.4 
/* Theme front end features */

/* Mobile menu
/*! http://tinynav.viljamis.com v1.1 by @viljamis */

!function(e,t,a){e.fn.tinyNav=function(n){var i=e.extend({active:"current-menu-item",header:!1},n);return this.each(function(){a++;var n=e(this),l="tinynav",r=l+a,o=".l_"+r,c=e("<select/>").addClass(l+" "+r);if(n.is("ul,ol")){var s="";n.addClass("l_"+r).find("a").each(function(){s+='<option value="'+e(this).attr("href")+'">';var t;for(t=0;t<e(this).parents("ul, ol").length-1;t++)s+="- ";s+=e(this).text()+"</option>"}),c.append(s),i.header||c.find(":eq("+e(o+" li").index(e(o+" li."+i.active))+")").attr("selected",!0),c.change(function(){t.location.href=e(this).val()}),e(o).after(c),i.label&&c.before(e("<label/>").attr("for",r).addClass(l+"_label "+r+"_label").append(i.label))}})}}(jQuery,this,0),jQuery(function(){jQuery("#main-nav .root").tinyNav({active:"current-menu-item"})});

/**
 * Animated back to top
 */

jQuery(document).ready(function(){jQuery(".back-to-top").hide();jQuery(function(){jQuery(window).scroll(function(){if(jQuery(this).scrollTop()>1e3){jQuery(".back-to-top").fadeIn()}else{jQuery(".back-to-top").fadeOut()}});jQuery(".back-to-top a").click(function(){jQuery("body,html,header").animate({scrollTop:0},1e3);return false})})});