Napište nám
O nákupu
Porovnání produktů
Hledat
Rádi vám poradíme
+420 720 762 432
Po - Pá: 9:00 - 18:00
Můj účet
Košík je prázdný
za 0 Kč
Úvodní strana
Přenášení a ochrana techniky
»
Fotobatohy
Organizéry a rozdělovače
Klasické batohy
»
Brašny, pouzdra, tašky
Klasické tašky
Pouzdra
Peněženky
Organizéry a vložky
Příslušenství
»
Kufry
Kufry pro fotoaparáty
Kufry pro kamery
Kufry pro objektivy
Kufry pro drony
Kufry na cestování
Ostatní kufry
Organizéry a rozdělovače
Příslušenství ke kufrům
»
Výstroj fotografa
Popruhy na fotoaparáty
Rukavice
Oblečení
»
Organizéry a rozdělovače
Organizéry do batohů
Organizéry do kufrů
Rozdělovače
»
Příslušenství
Uchycení a klipy
Náhradní díly
Pláštěnky
Deštníky
Ostatní
Digitální produkt
Optické vybavení
»
Objektivy
Rozdělení podle bajonetu
Zoom objektivy
Objektivy s pevným ohniskem
Příslušenství k objektivům
»
Filtry
UV a ochranné
Polarizační
ND filtry
Přechodové
Barevné
Efektové
Sady filtrů
Speciální
Dalekohledy
Optické příslušenství
Studio a analog
»
Analog
Fotoaparáty
Filmy
Přenosné tiskárny
Spotřební materiál
»
Ateliér
Světla
Ateliérové vybavení
Stativy
Stativy
Funkční vybavení
»
Čištění techniky
Čistící sady
Ofukovací balónky
Čistící pera
Ostatní pomůcky pro čištění
»
Spotřební materiál
Fotopapír
Fotoalba
Rámečky
Fotoknihy
Fotorůžky
»
Úložiště dat
Paměťové karty
Externí disky
Flash disk
Bezpečné uložení disků a karet
Čtečky karet
»
Napájení a konektivita
Adaptéry
Baterie
Tužkové baterie
Powerbanky
Nabíječky
Zdroje
Kabely
Redukce
Gripy
Ochrané folie, skla a kryty
Nabízené značky
Zimní výbava
Rukavice
Oblečení
Průvodce
Aktuality
Přenášení a ochrana techniky
Optické vybavení
Objektivy
Filtry
UV a ochranné
Polarizační
ND filtry
Přechodové
Barevné
Efektové
Sady filtrů
Speciální
Adaptéry
Krytky
Mezikroužky
Pro DJI, Mavic, OSMO
Dalekohledy
Optické příslušenství
Studio a analog
Funkční vybavení
Značky
Zimní výbava
Filtry
Cena
Výrobce
Cena
0
,-
0
,-
Výrobce
KENKO
Meike
PGYTech
POLAROID
Urth
Zeiss
Zrušit
Pro plnou funkčnost těchto stránek je nutné povolit JavaScript. Zde jsou
instrukce jak povolit JavaScript ve Vašem webovém prohlížeči
.
Úvod
/
Optické vybavení
/
Filtry
Filtry
UV a ochranné
Polarizační
ND filtry
Přechodové
Barevné
Efektové
Sady filtrů
Speciální
Adaptéry
Krytky
Mezikroužky
Pro DJI, Mavic, OSMO
Seřazení
abecední
nejlevnější
nejdražší
nejnovější
doporučené
dostupnost
Urth 39mm Circular Polarizing (CPL) Lens Filter (Plus+) (39 mm)
Přidat do košíku
1 180 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm CPL Lens Filter Pro (39)
Přidat do košíku
1 810 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Ethereal â Â Black Mist Lens Filter (Plus+) (39)
Přidat do košíku
1 180 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Lens Filter Caps (39 mm)
Přidat do košíku
460 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic Adapter Ring (39)
Přidat do košíku
360 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic CPL (Plus+)
Přidat do košíku
1 570 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic Essential Kit (Plus+) (UV+CPL+ND8+ND1000) (39 mm)
Přidat do košíku
2 770 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic Ethereal 1/4 Black Mist Lens Filter (Plus+) (39)
Přidat do košíku
1 330 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic Ethereal â Black Mist Plus+ (39)
Přidat do košíku
1 330 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic Lens Filter Caps (39)
Přidat do košíku
700 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic ND Selects Kit (Plus+) (ND8+ND64+ND1000) (39 mm)
Přidat do košíku
2 630 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic ND1000 (Plus+)
Přidat do košíku
1 330 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic ND64 (6 Stop) Filter Plus+ (39)
Přidat do košíku
1 330 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm Magnetic UV (Plus+)
Přidat do košíku
1 180 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND1000 (10 Stop) Lens Filter (Plus+) (39 mm)
Přidat do košíku
1 180 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND16 (4 Stop) Lens Filter (Plus+) (39 mm)
Přidat do košíku
1 180 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND2 32 (1 5 Stop) Variable ND Lens Filter (Plus+) (39 mm)
Přidat do košíku
1 570 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND2 400 (1 8.6 Stop) Variable ND Lens Filter (39)
Přidat do košíku
1 090 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND4 (2 Stop) Lens Filter (Plus+) (39 mm)
Přidat do košíku
1 180 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND64 (6 Stop) Lens Filter (Plus+) (39 mm)
Přidat do košíku
1 180 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND64 1000 (6 10 Stop) Variable ND Lens Filter (Plus+)
Přidat do košíku
1 570 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND8 (3 Stop) Lens Filter (Plus+) (39 mm)
Přidat do košíku
1 180 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND8 128 (3 7 Stop) Variable ND Lens Filter (Plus+) (39 mm)
Přidat do košíku
1 570 Kč
Cena
Dostupnost
Centrální sklad
Urth 39mm ND8, ND64, ND1000 Lens Filter Kit (Plus+) (39 mm)
Přidat do košíku
2 150 Kč
Cena
Dostupnost
Centrální sklad
Na vašem soukromí nám záleží
Používáme cookies. Díky nim vám náš eshop funguje tak, jak má. Pomůžou vám zapamatovat nastavení jazyku, měny nebo adresy. Také vám díky nim doporučíme produkty, které jsou přesně pro vás. Více najdete v našich
zásadách pro cookies
.
Jen nezbytné
Nastavení
V pořádku
K&F Concept,Gomatic,Zeiss,URTH
(function () { "use strict"; const CUT_OFF_HOUR = 7; // po 7:00 = start další prac. den /* ========================================================= MANUÁLNÍ DNY MIMO PROVOZ (dovolená, inventura, ...) Formát: "dd.mm" (bez roku) ========================================================= */ const EXTRA_BLOCKED_DATES_DDMM = [ // "03.02", // "04.02", // "15.08", ]; /* ========================================================= */ const ADDITION_SELECTOR = ".p_detail_info_box.p_detail_info_addition"; const AVAIL_SELECTOR = ".p_detail_availability"; const AVAIL_SPAN_SELECTOR = '.p_detail_availability span[data-variant="availability"]'; function pad2(n) { return String(n).padStart(2, "0"); } function formatDDMM(dateLocal) { return `${pad2(dateLocal.getDate())}.${pad2(dateLocal.getMonth() + 1)}.`; } // "Teď" v Europe/Prague (nezávisle na TZ uživatele) function nowInPragueParts() { const dtf = new Intl.DateTimeFormat("cs-CZ", { timeZone: "Europe/Prague", year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false }); const parts = dtf.formatToParts(new Date()); const get = (type) => parts.find(p => p.type === type)?.value; return { year: Number(get("year")), month: Number(get("month")), day: Number(get("day")), hour: Number(get("hour")), minute: Number(get("minute")), second: Number(get("second")) }; } // UTC midnight helper (aby nepřekvapilo DST) function makeDateUTC(y, m, d) { return new Date(Date.UTC(y, m - 1, d, 0, 0, 0)); } function dateToKeyUTC(d) { return `${d.getUTCFullYear()}-${pad2(d.getUTCMonth() + 1)}-${pad2(d.getUTCDate())}`; } // Easter Sunday (Gregorian) function easterSunday(year) { const a = year % 19; const b = Math.floor(year / 100); const c = year % 100; const d = Math.floor(b / 4); const e = b % 4; const f = Math.floor((b + 8) / 25); const g = Math.floor((b - f + 1) / 3); const h = (19 * a + b - d - g + 15) % 30; const i = Math.floor(c / 4); const k = c % 4; const l = (32 + 2 * e + 2 * i - h - k) % 7; const m = Math.floor((a + 11 * h + 22 * l) / 451); const month = Math.floor((h + l - 7 * m + 114) / 31); const day = ((h + l - 7 * m + 114) % 31) + 1; return makeDateUTC(year, month, day); } function addExtraBlockedDatesToSet(holidaysSet, year, todayUTC) { EXTRA_BLOCKED_DATES_DDMM.forEach((ddmm) => { const m = ddmm.match(/^(\d{2})\.(\d{2})$/); if (!m) return; const dd = Number(m[1]); const mm = Number(m[2]); if (!Number.isFinite(dd) || !Number.isFinite(mm) || mm < 1 || mm > 12 || dd < 1 || dd > 31) return; const dThisYear = makeDateUTC(year, mm, dd); holidaysSet.add(dateToKeyUTC(dThisYear)); // pokud už datum letos proběhlo, přidáme i příští rok (praktické při údržbě) if (dThisYear.getTime() < todayUTC.getTime()) { const dNextYear = makeDateUTC(year + 1, mm, dd); holidaysSet.add(dateToKeyUTC(dNextYear)); } }); } function buildCZHolidaysSet(years, todayUTC) { const set = new Set(); years.forEach((y) => { // Fixní svátky CZ const fixed = [ [1, 1], [5, 1], [5, 8], [7, 5], [7, 6], [9, 28], [10, 28], [11, 17], [12, 24], [12, 25], [12, 26] ]; fixed.forEach(([mm, dd]) => set.add(dateToKeyUTC(makeDateUTC(y, mm, dd)))); // Velký pátek (-2) a Velikonoční pondělí (+1) const easter = easterSunday(y); const goodFriday = new Date(easter.getTime() - 2 * 24 * 3600 * 1000); const easterMonday = new Date(easter.getTime() + 1 * 24 * 3600 * 1000); set.add(dateToKeyUTC(goodFriday)); set.add(dateToKeyUTC(easterMonday)); // + ručně blokované dny addExtraBlockedDatesToSet(set, y, todayUTC); }); return set; } function isWeekendUTC(d) { const wd = d.getUTCDay(); return wd === 0 || wd === 6; } function isHolidayUTC(d, holidaysSet) { return holidaysSet.has(dateToKeyUTC(d)); } function isBusinessDayUTC(d, holidaysSet) { return !isWeekendUTC(d) && !isHolidayUTC(d, holidaysSet); } function nextBusinessDayUTC(d, holidaysSet) { let cur = new Date(d.getTime()); do { cur = new Date(cur.getTime() + 24 * 3600 * 1000); } while (!isBusinessDayUTC(cur, holidaysSet)); return cur; } function computeShipBaseUTC(holidaysSet) { const p = nowInPragueParts(); const todayUTC = makeDateUTC(p.year, p.month, p.day); const beforeCutoff = (p.hour < CUT_OFF_HOUR); // 0..6 if (beforeCutoff && isBusinessDayUTC(todayUTC, holidaysSet)) return todayUTC; // po cut-off nebo nepracovní den => nejbližší další pracovní den if (isBusinessDayUTC(todayUTC, holidaysSet)) return nextBusinessDayUTC(todayUTC, holidaysSet); let cur = new Date(todayUTC.getTime()); while (!isBusinessDayUTC(cur, holidaysSet)) { cur = new Date(cur.getTime() + 24 * 3600 * 1000); } return cur; } // "+N" pracovních dnů přesně function addBusinessDaysUTC(startUTC, n, holidaysSet) { let cur = new Date(startUTC.getTime()); let added = 0; while (added < n) { cur = new Date(cur.getTime() + 24 * 3600 * 1000); if (isBusinessDayUTC(cur, holidaysSet)) added++; } return cur; } function normalizeText(s) { return (s || "") .replace(/\u00A0/g, " ") .replace(/[–—]/g, "-") .replace(/\s+/g, " ") .trim(); } function parseAddition(text) { // "8 ks – doručení do 5 pracovních dnů" const t = normalizeText(text); const stockMatch = t.match(/(\d+)\s*ks/i); const daysMatch = t.match(/doru[cč]en[ií]\s*do\s*(\d+)\s*prac/i); if (!stockMatch || !daysMatch) return null; const stock = Number(stockMatch[1]); const leadDays = Number(daysMatch[1]); if (!Number.isFinite(stock) || !Number.isFinite(leadDays)) return null; return { stock, leadDays }; } function getAvailabilityMode() { const avail = document.querySelector(AVAIL_SELECTOR); if (!avail) return { mode: "unknown" }; const schemaLink = avail.querySelector('link[itemprop="availability"]'); const schemaHref = schemaLink?.getAttribute("href") || ""; const span = avail.querySelector(AVAIL_SPAN_SELECTOR); const label = normalizeText(span?.textContent || ""); if (/OutOfStock/i.test(schemaHref) || /Dostupnost k ověření/i.test(label)) { return { mode: "verify", avail, span, label }; } if (/^Skladem/i.test(label)) { return { mode: "local", avail, span, label }; } if (/^Centrální sklad/i.test(label)) { return { mode: "central", avail, span, label }; } return { mode: "unknown", avail, span, label }; } function removeExistingEstimate() { document.querySelectorAll(".delivery-estimate").forEach(el => el.remove()); } function insertEstimateUnderSpan(spanEl, dateDDMM) { removeExistingEstimate(); if (!spanEl || !spanEl.parentNode) return; const line = document.createElement("span"); line.className = "delivery-estimate"; line.textContent = `Obdržíte do ${dateDDMM}`; spanEl.insertAdjacentElement("afterend", line); } function applyDeliveryLogic() { const addition = document.querySelector(ADDITION_SELECTOR); if (addition) addition.classList.add("delivery-hide"); const { mode, span } = getAvailabilityMode(); // verify/unknown => jen schovat addition a nic nepřidávat if (mode === "verify" || mode === "unknown") { removeExistingEstimate(); return; } const p = nowInPragueParts(); const todayUTC = makeDateUTC(p.year, p.month, p.day); const holidays = buildCZHolidaysSet([p.year, p.year + 1], todayUTC); // lokální sklad => +1 prac. den if (mode === "local") { const shipBase = computeShipBaseUTC(holidays); const deliveryUTC = addBusinessDaysUTC(shipBase, 1, holidays); insertEstimateUnderSpan(span, formatDDMM(new Date(deliveryUTC.getTime()))); return; } // centrální sklad => vyčíst z addition if (mode === "central") { const parsed = addition ? parseAddition(addition.textContent) : null; // parsing selže nebo stock=0 => nic nepřidávat if (!parsed || parsed.stock <= 0) { removeExistingEstimate(); return; } const shipBase = computeShipBaseUTC(holidays); const deliveryUTC = addBusinessDaysUTC(shipBase, parsed.leadDays, holidays); if (span) span.textContent = `Centrální sklad ${parsed.stock} ks`; insertEstimateUnderSpan(span, formatDDMM(new Date(deliveryUTC.getTime()))); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", applyDeliveryLogic); } else { applyDeliveryLogic(); } })();