const B64ToBuff = (base64String) => new Uint8Array(Array.from(atob(base64String), char => char.charCodeAt(0))).buffer;

function getCoordinates() {
    return new Promise((resolve, reject) => {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(
                position => resolve(position.coords),
                error => reject(error)
            );
        } else {
            reject(new Error("Geolocation is not supported by this browser."));
        }
    });
}

async function getCity() {
    try {
        const coords = await getCoordinates();
        const response = await fetch(`https://nominatim.openstreetmap.org/reverse?format=json&lat=${coords.latitude}&lon=${coords.longitude}`);
        const data = await response.json();

        if (data && data.address) {
            const city = data.address.city || data.address.town || data.address.village || data.address.hamlet;
            const postalCode = data.address.postcode;
            return postalCode + ' ' + city || '';
        }
    } catch {
        return '';
    }
}

async function getLocation() {
    try {
        const coords = await getCoordinates();
        const response = await fetch(`https://nominatim.openstreetmap.org/reverse?format=json&lat=${coords.latitude}&lon=${coords.longitude}`);
        const data = await response.json();

        if (data && data.address) {
            const city = data.address.city || data.address.town || data.address.village || data.address.hamlet;
            const postalCode = data.address.postcode;
            return { postalCode: postalCode, city: city };
        }
    } catch {
        return { postalCode: '', city: '' };
    }
}

const getLocaleDateString = _ => new Date().toLocaleDateString('de-DE')
 
function locale_date_dd_mm_yyyy() {
    const today = new Date();
    const day = String(today.getDate()).padStart(2, '0');
    const month = String(today.getMonth() + 1).padStart(2, '0');
    const year = String(today.getFullYear()).slice(-4);
    return `${day}/${month}/${year}`;
}

let __is_mobile = null;
function isMobile() {
    if (__is_mobile === null) {
        __is_mobile = /Mobi|Android/i.test(window.navigator.userAgent);
    }
    return __is_mobile;
}