{"id":1260,"date":"2026-02-26T19:40:10","date_gmt":"2026-02-26T19:40:10","guid":{"rendered":"https:\/\/mekteb.us\/?p=1260"},"modified":"2026-02-26T19:48:20","modified_gmt":"2026-02-26T19:48:20","slug":"1260-2","status":"publish","type":"post","link":"https:\/\/mekteb.us\/en\/1260-2\/","title":{"rendered":""},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"bs\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\n  <title>Islamsko-edukativni centar EZAN \u2013 TV Vaktija (Des Moines, IA)<\/title>\n  <style>\n    :root{\n      --bg1:#14a06a;\n      --bg2:#0b6f45;\n      --shadow:0 18px 45px rgba(0,0,0,.35);\n    }\n    *{box-sizing:border-box}\n    body{\n      margin:0;\n      font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\n      background: radial-gradient(1200px 700px at 30% 25%, #1bb875 0%, var(--bg1) 35%, var(--bg2) 100%);\n      min-height:100vh;\n      display:flex;\n      align-items:center;\n      justify-content:center;\n      padding:22px;\n    }\n\n    \/* SAMO VERTIKALNI \u201cTV\u201d *\/\n    .device{\n      width:380px;\n      height:600px;\n      border-radius:22px;\n      background:linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);\n      padding:12px;\n      box-shadow:var(--shadow);\n      border:1px solid rgba(255,255,255,.10);\n    }\n    .device::after{\n      content:\"\";\n      position:absolute;\n      inset:0;\n      pointer-events:none;\n    }\n    .screen{\n      width:100%;\n      height:100%;\n      border-radius:16px;\n      background:linear-gradient(180deg, #ffffff 0%, #eef2f3 100%);\n      overflow:hidden;\n      position:relative;\n      color:#111;\n    }\n\n    .uiHeader{\n      padding:16px 16px 12px;\n      border-bottom:1px solid rgba(0,0,0,.06);\n      background:\n        linear-gradient(180deg, rgba(20,160,106,.14) 0%, rgba(20,160,106,0) 100%),\n        repeating-linear-gradient(135deg, rgba(0,0,0,.03) 0 10px, rgba(0,0,0,.02) 10px 20px);\n      text-align:center;\n    }\n    .centerTitle{\n      font-size:14px;\n      font-weight:900;\n      color:rgba(0,0,0,.72);\n      text-transform:uppercase;\n      letter-spacing:.8px;\n    }\n    .clock{\n      font-size:42px;\n      font-weight:1000;\n      letter-spacing:2px;\n      color:rgba(0,0,0,.80);\n      margin-top:6px;\n    }\n    .submeta{\n      display:flex;\n      justify-content:center;\n      gap:8px;\n      flex-wrap:wrap;\n      font-size:12px;\n      font-weight:850;\n      color:rgba(0,0,0,.58);\n      margin-top:8px;\n    }\n    .submeta span{\n      padding:4px 8px;\n      border-radius:999px;\n      background:rgba(0,0,0,.04);\n      border:1px solid rgba(0,0,0,.06);\n    }\n\n    .uiBody{\n      padding:14px 16px 10px;\n      display:grid;\n      gap:10px;\n    }\n    .row{\n      display:grid;\n      grid-template-columns: 1fr auto;\n      align-items:center;\n      padding:12px 12px;\n      border-radius:12px;\n      background:rgba(0,0,0,.03);\n      border:1px solid rgba(0,0,0,.05);\n    }\n    .row b{\n      font-size:16px;\n      color:rgba(0,0,0,.72);\n      font-weight:900;\n    }\n    .row span{\n      font-size:20px;\n      font-weight:1000;\n      color:rgba(0,0,0,.80);\n      letter-spacing:1px;\n    }\n\n    .nextWrap{\n      padding:0 16px 12px;\n    }\n    .nextBox{\n      padding:12px 12px;\n      border-radius:14px;\n      background:rgba(20,160,106,.10);\n      border:1px solid rgba(20,160,106,.22);\n      display:flex;\n      justify-content:space-between;\n      align-items:center;\n      gap:10px;\n      font-weight:950;\n      color:rgba(0,0,0,.72);\n    }\n    .nextBox .big{ font-size:14px; }\n    .nextBox .count{ font-size:16px; letter-spacing:.5px; }\n\n    .uiFooter{\n      position:absolute;\n      left:0; right:0; bottom:0;\n      padding:12px 14px;\n      background:linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(0,0,0,.03) 100%);\n      border-top:1px solid rgba(0,0,0,.06);\n      font-size:12px;\n      color:rgba(0,0,0,.62);\n      text-align:center;\n      font-weight:850;\n    }\n  <\/style>\n<\/head>\n\n<body>\n  <div class=\"device\">\n    <div class=\"screen\">\n      <div class=\"uiHeader\">\n        <div class=\"centerTitle\">ISLAMSKO-EDUKATIVNI CENTAR EZAN<\/div>\n        <div class=\"clock\" id=\"clockV\">&#8211;:&#8211;:&#8211;<\/div>\n        <div class=\"submeta\">\n          <span id=\"gregV\">\u2014<\/span>\n          <span id=\"hijriV\">\u2014<\/span>\n          <span>Des Moines, IA<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"uiBody\" id=\"timesV\"><\/div>\n\n      <div class=\"nextWrap\">\n        <div class=\"nextBox\">\n          <div class=\"big\" id=\"nextNameV\">Sljede\u0107i namaz: \u2014<\/div>\n          <div class=\"count\" id=\"countV\">&#8211;:&#8211;:&#8211;<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"uiFooter\">MProduction \u2022 Digitalna TV Vaktija \u2022 Des Moines, IA \u2022 ISNA<\/div>\n    <\/div>\n  <\/div>\n\n<script>\n\/* =========================\n   OFFLINE PRAYER TIMES (compact)\n   Method: ISNA (Fajr 15\u00b0, Isha 15\u00b0)\n   Location: Des Moines, IA (41.5868, -93.6250)\n   ========================= *\/\n\nconst CONFIG = {\n  lat: 41.5868,\n  lng: -93.6250,\n  method: \"ISNA\",\n  asr: \"Standard\" \/\/ \"Standard\" or \"Hanafi\"\n};\n\nfunction pad(n){ return String(n).padStart(2,\"0\"); }\nfunction toHMS(ms){\n  const s = Math.max(0, Math.floor(ms\/1000));\n  const hh = Math.floor(s\/3600);\n  const mm = Math.floor((s%3600)\/60);\n  const ss = s%60;\n  return `${pad(hh)}:${pad(mm)}:${pad(ss)}`;\n}\nfunction fmtTime(date){ return `${pad(date.getHours())}:${pad(date.getMinutes())}`; }\nfunction parseHMToDate(hm, baseDate){\n  const [h,m] = hm.split(\":\").map(Number);\n  const d = new Date(baseDate);\n  d.setHours(h, m, 0, 0);\n  return d;\n}\nfunction safeIslamicDate(d){\n  try{\n    const f = new Intl.DateTimeFormat('bs-BA-u-ca-islamic', { day:'2-digit', month:'long', year:'numeric' });\n    return f.format(d);\n  }catch{\n    return \"Hid\u017eretski datum\";\n  }\n}\nfunction safeGregorianDate(d){\n  try{\n    const f = new Intl.DateTimeFormat('bs-BA', { weekday:'long', day:'2-digit', month:'long', year:'numeric' });\n    return f.format(d);\n  }catch{\n    return d.toDateString();\n  }\n}\n\n\/* ---- Minimal PrayTimes core ---- *\/\nconst PrayTimes = (function(){\n  function dtr(d){ return (d * Math.PI) \/ 180.0; }\n  function rtd(r){ return (r * 180.0) \/ Math.PI; }\n  function fixAngle(a){ a = a - 360.0 * Math.floor(a \/ 360.0); return a < 0 ? a + 360.0 : a; }\n  function fixHour(a){ a = a - 24.0 * Math.floor(a \/ 24.0); return a < 0 ? a + 24.0 : a; }\n\n  function julian(date){\n    const y = date.getFullYear(), m = date.getMonth()+1, d = date.getDate();\n    let a = Math.floor((14-m)\/12);\n    let y2 = y + 4800 - a;\n    let m2 = m + 12*a - 3;\n    return d + Math.floor((153*m2 + 2)\/5) + 365*y2 + Math.floor(y2\/4) - Math.floor(y2\/100) + Math.floor(y2\/400) - 32045;\n  }\n\n  function sunPosition(jd){\n    const D = jd - 2451545.0;\n    const g = fixAngle(357.529 + 0.98560028 * D);\n    const q = fixAngle(280.459 + 0.98564736 * D);\n    const L = fixAngle(q + 1.915*Math.sin(dtr(g)) + 0.020*Math.sin(dtr(2*g)));\n    const e = 23.439 - 0.00000036 * D;\n    const RA = rtd(Math.atan2(Math.cos(dtr(e))*Math.sin(dtr(L)), Math.cos(dtr(L))))\/15.0;\n    const decl = rtd(Math.asin(Math.sin(dtr(e))*Math.sin(dtr(L))));\n    const eqt = q\/15.0 - fixHour(RA);\n    return {decl, eqt};\n  }\n\n  function midDay(time, jd){\n    const sp = sunPosition(jd + time);\n    return fixHour(12 - sp.eqt);\n  }\n\n  function sunAngleTime(angle, time, direction, jd, lat){\n    const sp = sunPosition(jd + time);\n    const decl = sp.decl;\n    const noon = midDay(time, jd);\n    const t = (1\/15.0) * rtd(Math.acos(\n      (-Math.sin(dtr(angle)) - Math.sin(dtr(decl))*Math.sin(dtr(lat))) \/\n      (Math.cos(dtr(decl))*Math.cos(dtr(lat)))\n    ));\n    return noon + (direction === \"ccw\" ? -t : t);\n  }\n\n  function asrTime(factor, time, jd, lat){\n    const sp = sunPosition(jd + time);\n    const decl = sp.decl;\n    const angle = -rtd(Math.atan(1\/(factor + Math.tan(Math.abs(dtr(lat - decl))))));\n    return sunAngleTime(angle, time, \"cw\", jd, lat);\n  }\n\n  function floatToTime24(time){\n    if (isNaN(time)) return \"\u2014\";\n    time = fixHour(time + 0.5\/60);\n    const h = Math.floor(time);\n    const m = Math.floor((time - h) * 60);\n    return `${pad(h)}:${pad(m)}`;\n  }\n\n  function getTimes(date, coords, method, asrJuristic){\n    const lat = coords[0], lng = coords[1];\n    const tz = -date.getTimezoneOffset()\/60;\n    const jd = julian(date) - lng\/ (15*24);\n\n    const fajrAngle = (method === \"ISNA\") ? 15 : 18;\n    const ishaAngle = (method === \"ISNA\") ? 15 : 17;\n\n    let times = { fajr: 5, sunrise: 6, dhuhr: 12, asr: 13, sunset: 18, maghrib: 18, isha: 18 };\n    const t = times;\n\n    t.dhuhr   = midDay(t.dhuhr\/24, jd);\n    t.sunrise = sunAngleTime(0.833, t.sunrise\/24, \"ccw\", jd, lat);\n    t.sunset  = sunAngleTime(0.833, t.sunset\/24,  \"cw\", jd, lat);\n    t.fajr    = sunAngleTime(fajrAngle, t.fajr\/24, \"ccw\", jd, lat);\n\n    const asrFactor = (asrJuristic === \"Hanafi\") ? 2 : 1;\n    t.asr     = asrTime(asrFactor, t.asr\/24, jd, lat);\n\n    t.isha    = sunAngleTime(ishaAngle, t.isha\/24, \"cw\", jd, lat);\n    t.maghrib = t.sunset;\n\n    Object.keys(t).forEach(k => t[k] = fixHour(t[k] + tz));\n\n    return {\n      Fajr: floatToTime24(t.fajr),\n      Sunrise: floatToTime24(t.sunrise),\n      Dhuhr: floatToTime24(t.dhuhr),\n      Asr: floatToTime24(t.asr),\n      Maghrib: floatToTime24(t.maghrib),\n      Isha: floatToTime24(t.isha)\n    };\n  }\n\n  return { getTimes };\n})();\n\nfunction renderTimes(times){\n  const list = [\n    [\"Zora (Fajr)\", times.Fajr],\n    [\"Izl. sunca\", times.Sunrise],\n    [\"Podne (Dhuhr)\", times.Dhuhr],\n    [\"Ikindija (Asr)\", times.Asr],\n    [\"Ak\u0161am (Maghrib)\", times.Maghrib],\n    [\"Jacija (Isha)\", times.Isha],\n  ];\n  document.getElementById(\"timesV\").innerHTML =\n    list.map(([n,t]) => `<div class=\"row\"><b>${n}<\/b><span>${t}<\/span><\/div>`).join(\"\");\n}\n\nfunction computeNextPrayer(times, now){\n  const order = [\n    [\"Zora (Fajr)\", times.Fajr],\n    [\"Izl. sunca\", times.Sunrise],\n    [\"Podne (Dhuhr)\", times.Dhuhr],\n    [\"Ikindija (Asr)\", times.Asr],\n    [\"Ak\u0161am (Maghrib)\", times.Maghrib],\n    [\"Jacija (Isha)\", times.Isha]\n  ];\n\n  for (const [name, hm] of order){\n    const dt = parseHMToDate(hm, now);\n    if (dt > now) return { name, at: dt };\n  }\n  const tomorrow = new Date(now);\n  tomorrow.setDate(now.getDate() + 1);\n  return { name: \"Zora (Fajr)\", at: parseHMToDate(times.Fajr, tomorrow) };\n}\n\nfunction tick(){\n  const now = new Date();\n\n  document.getElementById(\"clockV\").textContent =\n    now.toLocaleTimeString('en-US', { hour12:false });\n\n  document.getElementById(\"gregV\").textContent = safeGregorianDate(now);\n  document.getElementById(\"hijriV\").textContent = safeIslamicDate(now);\n\n  if (window.__todayTimes){\n    const next = computeNextPrayer(window.__todayTimes, now);\n    const ms = next.at - now;\n\n    document.getElementById(\"nextNameV\").textContent =\n      `Sljede\u0107i namaz: ${next.name} (${fmtTime(next.at)})`;\n\n    document.getElementById(\"countV\").textContent = toHMS(ms);\n  }\n}\n\nfunction init(){\n  const today = new Date();\n  window.__todayTimes = PrayTimes.getTimes(today, [CONFIG.lat, CONFIG.lng], CONFIG.method, CONFIG.asr);\n  renderTimes(window.__todayTimes);\n\n  tick();\n  setInterval(() => {\n    const now = new Date();\n    if (now.getHours() === 0 && now.getMinutes() === 0 && now.getSeconds() === 0){\n      window.__todayTimes = PrayTimes.getTimes(now, [CONFIG.lat, CONFIG.lng], CONFIG.method, CONFIG.asr);\n      renderTimes(window.__todayTimes);\n    }\n    tick();\n  }, 1000);\n}\n\ninit();\n<\/script>\n<\/body>\n<\/html>\n\n\n\n<!DOCTYPE html>\n<html lang=\"bs\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\n  <title>Islamsko-edukativni centar EZAN \u2013 TV Vaktija (Des Moines, IA)<\/title>\n  <style>\n    :root{\n      --bg1:#14a06a;\n      --bg2:#0b6f45;\n      --shadow:0 18px 45px rgba(0,0,0,.35);\n    }\n    *{box-sizing:border-box}\n    body{\n      margin:0;\n      font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\n      background: radial-gradient(1200px 700px at 30% 25%, #1bb875 0%, var(--bg1) 35%, var(--bg2) 100%);\n      min-height:100vh;\n      display:flex;\n      align-items:center;\n      justify-content:center;\n      padding:22px;\n    }\n\n    .device{\n      width:380px;\n      height:600px;\n      border-radius:22px;\n      background:linear-gradient(180deg, #1a1a1a 0%, #0a0a0a 100%);\n      padding:12px;\n      box-shadow:var(--shadow);\n      border:1px solid rgba(255,255,255,.10);\n    }\n    .screen{\n      width:100%;\n      height:100%;\n      border-radius:16px;\n      background:linear-gradient(180deg, #ffffff 0%, #eef2f3 100%);\n      overflow:hidden;\n      position:relative;\n      color:#111;\n    }\n\n    .uiHeader{\n      padding:16px 16px 12px;\n      border-bottom:1px solid rgba(0,0,0,.06);\n      background:\n        linear-gradient(180deg, rgba(20,160,106,.14) 0%, rgba(20,160,106,0) 100%),\n        repeating-linear-gradient(135deg, rgba(0,0,0,.03) 0 10px, rgba(0,0,0,.02) 10px 20px);\n      text-align:center;\n    }\n    .centerTitle{\n      font-size:14px;\n      font-weight:900;\n      color:rgba(0,0,0,.72);\n      text-transform:uppercase;\n      letter-spacing:.8px;\n    }\n    .clock{\n      font-size:42px;\n      font-weight:1000;\n      letter-spacing:2px;\n      color:rgba(0,0,0,.80);\n      margin-top:6px;\n    }\n    .submeta{\n      display:flex;\n      justify-content:center;\n      gap:8px;\n      flex-wrap:wrap;\n      font-size:12px;\n      font-weight:850;\n      color:rgba(0,0,0,.58);\n      margin-top:8px;\n    }\n    .submeta span{\n      padding:4px 8px;\n      border-radius:999px;\n      background:rgba(0,0,0,.04);\n      border:1px solid rgba(0,0,0,.06);\n    }\n\n    .uiBody{\n      padding:14px 16px 10px;\n      display:grid;\n      gap:10px;\n    }\n    .row{\n      display:grid;\n      grid-template-columns: 1fr auto;\n      align-items:center;\n      padding:12px 12px;\n      border-radius:12px;\n      background:rgba(0,0,0,.03);\n      border:1px solid rgba(0,0,0,.05);\n    }\n    .row b{\n      font-size:16px;\n      color:rgba(0,0,0,.72);\n      font-weight:900;\n    }\n    .row span{\n      font-size:20px;\n      font-weight:1000;\n      color:rgba(0,0,0,.80);\n      letter-spacing:1px;\n    }\n\n    .nextWrap{\n      padding:0 16px 12px;\n    }\n    .nextBox{\n      padding:12px 12px;\n      border-radius:14px;\n      background:rgba(20,160,106,.10);\n      border:1px solid rgba(20,160,106,.22);\n      display:flex;\n      justify-content:space-between;\n      align-items:center;\n      gap:10px;\n      font-weight:950;\n      color:rgba(0,0,0,.72);\n    }\n    .nextBox .big{ font-size:14px; }\n    .nextBox .count{ font-size:16px; letter-spacing:.5px; }\n\n    .uiFooter{\n      position:absolute;\n      left:0; right:0; bottom:0;\n      padding:12px 14px;\n      background:linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(0,0,0,.03) 100%);\n      border-top:1px solid rgba(0,0,0,.06);\n      font-size:12px;\n      color:rgba(0,0,0,.62);\n      text-align:center;\n      font-weight:850;\n    }\n  <\/style>\n<\/head>\n\n<body>\n  <div class=\"device\">\n    <div class=\"screen\">\n      <div class=\"uiHeader\">\n        <div class=\"centerTitle\">ISLAMSKO-EDUKATIVNI CENTAR EZAN<\/div>\n        <div class=\"clock\" id=\"clockV\">&#8211;:&#8211;:&#8211;<\/div>\n        <div class=\"submeta\">\n          <span id=\"gregV\">\u2014<\/span>\n          <span id=\"hijriV\">\u2014<\/span>\n          <span>Des Moines, IA<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"uiBody\" id=\"timesV\"><\/div>\n\n      <div class=\"nextWrap\">\n        <div class=\"nextBox\">\n          <div class=\"big\" id=\"nextNameV\">Sljede\u0107i namaz: \u2014<\/div>\n          <div class=\"count\" id=\"countV\">&#8211;:&#8211;:&#8211;<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"uiFooter\">MProduction \u2022 Digitalna TV Vaktija \u2022 Des Moines, IA<\/div>\n    <\/div>\n  <\/div>\n\n<script>\n\/* =========================\n   OFFLINE PRAYER TIMES (compact)\n   Matching IslamicFinder defaults for:\n   - Fajr\/Isha angles: 15\u00b0\/15\u00b0\n   - Dhuhr: +1 min after Zawal\n   - Maghrib: +1 min after Sunset\n   Location: Des Moines, IA (41.5868, -93.6250)\n   ========================= *\/\n\nconst CONFIG = {\n  lat: 41.5868,\n  lng: -93.6250,\n  fajrAngle: 15,\n  ishaAngle: 15,\n  asr: \"Standard\",      \/\/ \"Standard\" or \"Hanafi\"\n  dhuhrAfterZawalMin: 1,\n  maghribAfterSunsetMin: 1\n};\n\nfunction pad(n){ return String(n).padStart(2,\"0\"); }\nfunction toHMS(ms){\n  const s = Math.max(0, Math.floor(ms\/1000));\n  const hh = Math.floor(s\/3600);\n  const mm = Math.floor((s%3600)\/60);\n  const ss = s%60;\n  return `${pad(hh)}:${pad(mm)}:${pad(ss)}`;\n}\nfunction fmtTime(date){ return `${pad(date.getHours())}:${pad(date.getMinutes())}`; }\nfunction parseHMToDate(hm, baseDate){\n  const [h,m] = hm.split(\":\").map(Number);\n  const d = new Date(baseDate);\n  d.setHours(h, m, 0, 0);\n  return d;\n}\nfunction safeIslamicDate(d){\n  try{\n    const f = new Intl.DateTimeFormat('bs-BA-u-ca-islamic', { day:'2-digit', month:'long', year:'numeric' });\n    return f.format(d);\n  }catch{\n    return \"Hid\u017eretski datum\";\n  }\n}\nfunction safeGregorianDate(d){\n  try{\n    const f = new Intl.DateTimeFormat('bs-BA', { weekday:'long', day:'2-digit', month:'long', year:'numeric' });\n    return f.format(d);\n  }catch{\n    return d.toDateString();\n  }\n}\n\n\/* ---- Minimal PrayTimes core ---- *\/\nconst PrayTimes = (function(){\n  function dtr(d){ return (d * Math.PI) \/ 180.0; }\n  function rtd(r){ return (r * 180.0) \/ Math.PI; }\n  function fixAngle(a){ a = a - 360.0 * Math.floor(a \/ 360.0); return a < 0 ? a + 360.0 : a; }\n  function fixHour(a){ a = a - 24.0 * Math.floor(a \/ 24.0); return a < 0 ? a + 24.0 : a; }\n\n  function julian(date){\n    const y = date.getFullYear(), m = date.getMonth()+1, d = date.getDate();\n    let a = Math.floor((14-m)\/12);\n    let y2 = y + 4800 - a;\n    let m2 = m + 12*a - 3;\n    return d + Math.floor((153*m2 + 2)\/5) + 365*y2 + Math.floor(y2\/4) - Math.floor(y2\/100) + Math.floor(y2\/400) - 32045;\n  }\n\n  function sunPosition(jd){\n    const D = jd - 2451545.0;\n    const g = fixAngle(357.529 + 0.98560028 * D);\n    const q = fixAngle(280.459 + 0.98564736 * D);\n    const L = fixAngle(q + 1.915*Math.sin(dtr(g)) + 0.020*Math.sin(dtr(2*g)));\n    const e = 23.439 - 0.00000036 * D;\n    const RA = rtd(Math.atan2(Math.cos(dtr(e))*Math.sin(dtr(L)), Math.cos(dtr(L))))\/15.0;\n    const decl = rtd(Math.asin(Math.sin(dtr(e))*Math.sin(dtr(L))));\n    const eqt = q\/15.0 - fixHour(RA);\n    return {decl, eqt};\n  }\n\n  function midDay(time, jd){\n    const sp = sunPosition(jd + time);\n    return fixHour(12 - sp.eqt);\n  }\n\n  function sunAngleTime(angle, time, direction, jd, lat){\n    const sp = sunPosition(jd + time);\n    const decl = sp.decl;\n    const noon = midDay(time, jd);\n    const t = (1\/15.0) * rtd(Math.acos(\n      (-Math.sin(dtr(angle)) - Math.sin(dtr(decl))*Math.sin(dtr(lat))) \/\n      (Math.cos(dtr(decl))*Math.cos(dtr(lat)))\n    ));\n    return noon + (direction === \"ccw\" ? -t : t);\n  }\n\n  function asrTime(factor, time, jd, lat){\n    const sp = sunPosition(jd + time);\n    const decl = sp.decl;\n    const angle = -rtd(Math.atan(1\/(factor + Math.tan(Math.abs(dtr(lat - decl))))));\n    return sunAngleTime(angle, time, \"cw\", jd, lat);\n  }\n\n  function floatToTime24(time){\n    if (isNaN(time)) return \"\u2014\";\n    time = fixHour(time + 0.5\/60); \/\/ round to nearest minute\n    const h = Math.floor(time);\n    const m = Math.floor((time - h) * 60);\n    return `${pad(h)}:${pad(m)}`;\n  }\n\n  function addMinutes(timeFloat, minutes){\n    return fixHour(timeFloat + (minutes\/60));\n  }\n\n  function getTimes(date, lat, lng, fajrAngle, ishaAngle, asrJuristic, dhuhrMin, maghribMin){\n    const tz = -date.getTimezoneOffset()\/60;\n    const jd = julian(date) - lng\/(15*24);\n\n    let t = { fajr: 5, sunrise: 6, dhuhr: 12, asr: 13, sunset: 18, maghrib: 18, isha: 18 };\n\n    t.dhuhr   = midDay(t.dhuhr\/24, jd);\n    t.sunrise = sunAngleTime(0.833, t.sunrise\/24, \"ccw\", jd, lat);\n    t.sunset  = sunAngleTime(0.833, t.sunset\/24,  \"cw\", jd, lat);\n    t.fajr    = sunAngleTime(fajrAngle, t.fajr\/24, \"ccw\", jd, lat);\n\n    const asrFactor = (asrJuristic === \"Hanafi\") ? 2 : 1;\n    t.asr     = asrTime(asrFactor, t.asr\/24, jd, lat);\n\n    t.isha    = sunAngleTime(ishaAngle, t.isha\/24, \"cw\", jd, lat);\n    t.maghrib = t.sunset;\n\n    \/\/ timezone adjust\n    Object.keys(t).forEach(k => t[k] = fixHour(t[k] + tz));\n\n    \/\/ IslamicFinder-style defaults\n    t.dhuhr   = addMinutes(t.dhuhr, dhuhrMin);\n    t.maghrib = addMinutes(t.maghrib, maghribMin);\n\n    return {\n      Fajr: floatToTime24(t.fajr),\n      Sunrise: floatToTime24(t.sunrise),\n      Dhuhr: floatToTime24(t.dhuhr),\n      Asr: floatToTime24(t.asr),\n      Maghrib: floatToTime24(t.maghrib),\n      Isha: floatToTime24(t.isha)\n    };\n  }\n\n  return { getTimes };\n})();\n\nfunction renderTimes(times){\n  const list = [\n    [\"Zora (Fajr)\", times.Fajr],\n    [\"Izl. sunca\", times.Sunrise],\n    [\"Podne (Dhuhr)\", times.Dhuhr],\n    [\"Ikindija (Asr)\", times.Asr],\n    [\"Ak\u0161am (Maghrib)\", times.Maghrib],\n    [\"Jacija (Isha)\", times.Isha],\n  ];\n  document.getElementById(\"timesV\").innerHTML =\n    list.map(([n,t]) => `<div class=\"row\"><b>${n}<\/b><span>${t}<\/span><\/div>`).join(\"\");\n}\n\nfunction computeNextPrayer(times, now){\n  const order = [\n    [\"Zora (Fajr)\", times.Fajr],\n    [\"Izl. sunca\", times.Sunrise],\n    [\"Podne (Dhuhr)\", times.Dhuhr],\n    [\"Ikindija (Asr)\", times.Asr],\n    [\"Ak\u0161am (Maghrib)\", times.Maghrib],\n    [\"Jacija (Isha)\", times.Isha]\n  ];\n\n  for (const [name, hm] of order){\n    const dt = parseHMToDate(hm, now);\n    if (dt > now) return { name, at: dt };\n  }\n  const tomorrow = new Date(now);\n  tomorrow.setDate(now.getDate() + 1);\n  return { name: \"Zora (Fajr)\", at: parseHMToDate(times.Fajr, tomorrow) };\n}\n\nfunction tick(){\n  const now = new Date();\n\n  document.getElementById(\"clockV\").textContent =\n    now.toLocaleTimeString('en-US', { hour12:false });\n\n  document.getElementById(\"gregV\").textContent = safeGregorianDate(now);\n  document.getElementById(\"hijriV\").textContent = safeIslamicDate(now);\n\n  if (window.__todayTimes){\n    const next = computeNextPrayer(window.__todayTimes, now);\n    const ms = next.at - now;\n\n    document.getElementById(\"nextNameV\").textContent =\n      `Sljede\u0107i namaz: ${next.name} (${fmtTime(next.at)})`;\n\n    document.getElementById(\"countV\").textContent = toHMS(ms);\n  }\n}\n\nfunction init(){\n  const today = new Date();\n  window.__todayTimes = PrayTimes.getTimes(\n    today,\n    CONFIG.lat,\n    CONFIG.lng,\n    CONFIG.fajrAngle,\n    CONFIG.ishaAngle,\n    CONFIG.asr,\n    CONFIG.dhuhrAfterZawalMin,\n    CONFIG.maghribAfterSunsetMin\n  );\n\n  renderTimes(window.__todayTimes);\n\n  tick();\n  setInterval(() => {\n    const now = new Date();\n    if (now.getHours() === 0 && now.getMinutes() === 0 && now.getSeconds() === 0){\n      window.__todayTimes = PrayTimes.getTimes(\n        now,\n        CONFIG.lat,\n        CONFIG.lng,\n        CONFIG.fajrAngle,\n        CONFIG.ishaAngle,\n        CONFIG.asr,\n        CONFIG.dhuhrAfterZawalMin,\n        CONFIG.maghribAfterSunsetMin\n      );\n      renderTimes(window.__todayTimes);\n    }\n    tick();\n  }, 1000);\n}\n\ninit();\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Islamsko-edukativni centar EZAN \u2013 TV Vaktija (Des Moines, IA) ISLAMSKO-EDUKATIVNI CENTAR EZAN &#8211;:&#8211;:&#8211; \u2014 \u2014 Des Moines, IA Sljede\u0107i namaz: \u2014 &#8211;:&#8211;:&#8211; MProduction \u2022 Digitalna TV Vaktija \u2022 Des Moines, IA \u2022 ISNA Islamsko-edukativni centar <a class=\"mh-excerpt-more\" href=\"https:\/\/mekteb.us\/en\/1260-2\/\" title=\"\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-1260","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-uncategorized"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>- IEC EZAN<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mekteb.us\/en\/1260-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"- IEC EZAN\" \/>\n<meta property=\"og:description\" content=\"Islamsko-edukativni centar EZAN \u2013 TV Vaktija (Des Moines, IA) ISLAMSKO-EDUKATIVNI CENTAR EZAN &#8211;:&#8211;:&#8211; \u2014 \u2014 Des Moines, IA Sljede\u0107i namaz: \u2014 &#8211;:&#8211;:&#8211; MProduction \u2022 Digitalna TV Vaktija \u2022 Des Moines, IA \u2022 ISNA Islamsko-edukativni centar [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mekteb.us\/en\/1260-2\/\" \/>\n<meta property=\"og:site_name\" content=\"IEC EZAN\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-26T19:40:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-26T19:48:20+00:00\" \/>\n<meta name=\"author\" content=\"Nijaz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nijaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mekteb.us\\\/1260-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mekteb.us\\\/1260-2\\\/\"},\"author\":{\"name\":\"Nijaz\",\"@id\":\"https:\\\/\\\/mekteb.us\\\/#\\\/schema\\\/person\\\/76d9b96e692e0870a38205a7d4967329\"},\"headline\":\"No title\",\"datePublished\":\"2026-02-26T19:40:10+00:00\",\"dateModified\":\"2026-02-26T19:48:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mekteb.us\\\/1260-2\\\/\"},\"wordCount\":61,\"commentCount\":0,\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/mekteb.us\\\/1260-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mekteb.us\\\/1260-2\\\/\",\"url\":\"https:\\\/\\\/mekteb.us\\\/1260-2\\\/\",\"name\":\"- IEC EZAN\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mekteb.us\\\/#website\"},\"datePublished\":\"2026-02-26T19:40:10+00:00\",\"dateModified\":\"2026-02-26T19:48:20+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/mekteb.us\\\/#\\\/schema\\\/person\\\/76d9b96e692e0870a38205a7d4967329\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/mekteb.us\\\/1260-2\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mekteb.us\\\/#website\",\"url\":\"https:\\\/\\\/mekteb.us\\\/\",\"name\":\"IEC EZAN\",\"description\":\"6206 Douglas Ave, Iowa 50322\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/mekteb.us\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mekteb.us\\\/#\\\/schema\\\/person\\\/76d9b96e692e0870a38205a7d4967329\",\"name\":\"Nijaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/420f584b5a2aaee798711724ca0e510a40d9288c31392fa94626eb585833aea4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/420f584b5a2aaee798711724ca0e510a40d9288c31392fa94626eb585833aea4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/420f584b5a2aaee798711724ca0e510a40d9288c31392fa94626eb585833aea4?s=96&d=mm&r=g\",\"caption\":\"Nijaz\"},\"url\":\"https:\\\/\\\/mekteb.us\\\/en\\\/author\\\/nijaz\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"- IEC EZAN","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mekteb.us\/en\/1260-2\/","og_locale":"en_US","og_type":"article","og_title":"- IEC EZAN","og_description":"Islamsko-edukativni centar EZAN \u2013 TV Vaktija (Des Moines, IA) ISLAMSKO-EDUKATIVNI CENTAR EZAN &#8211;:&#8211;:&#8211; \u2014 \u2014 Des Moines, IA Sljede\u0107i namaz: \u2014 &#8211;:&#8211;:&#8211; MProduction \u2022 Digitalna TV Vaktija \u2022 Des Moines, IA \u2022 ISNA Islamsko-edukativni centar [...]","og_url":"https:\/\/mekteb.us\/en\/1260-2\/","og_site_name":"IEC EZAN","article_published_time":"2026-02-26T19:40:10+00:00","article_modified_time":"2026-02-26T19:48:20+00:00","author":"Nijaz","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Nijaz","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mekteb.us\/1260-2\/#article","isPartOf":{"@id":"https:\/\/mekteb.us\/1260-2\/"},"author":{"name":"Nijaz","@id":"https:\/\/mekteb.us\/#\/schema\/person\/76d9b96e692e0870a38205a7d4967329"},"headline":"No title","datePublished":"2026-02-26T19:40:10+00:00","dateModified":"2026-02-26T19:48:20+00:00","mainEntityOfPage":{"@id":"https:\/\/mekteb.us\/1260-2\/"},"wordCount":61,"commentCount":0,"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/mekteb.us\/1260-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/mekteb.us\/1260-2\/","url":"https:\/\/mekteb.us\/1260-2\/","name":"- IEC EZAN","isPartOf":{"@id":"https:\/\/mekteb.us\/#website"},"datePublished":"2026-02-26T19:40:10+00:00","dateModified":"2026-02-26T19:48:20+00:00","author":{"@id":"https:\/\/mekteb.us\/#\/schema\/person\/76d9b96e692e0870a38205a7d4967329"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mekteb.us\/1260-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/mekteb.us\/#website","url":"https:\/\/mekteb.us\/","name":"IEC EZAN","description":"6206 Douglas Ave, Iowa 50322","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mekteb.us\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/mekteb.us\/#\/schema\/person\/76d9b96e692e0870a38205a7d4967329","name":"Nijaz","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/420f584b5a2aaee798711724ca0e510a40d9288c31392fa94626eb585833aea4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/420f584b5a2aaee798711724ca0e510a40d9288c31392fa94626eb585833aea4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/420f584b5a2aaee798711724ca0e510a40d9288c31392fa94626eb585833aea4?s=96&d=mm&r=g","caption":"Nijaz"},"url":"https:\/\/mekteb.us\/en\/author\/nijaz\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/posts\/1260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/comments?post=1260"}],"version-history":[{"count":2,"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/posts\/1260\/revisions"}],"predecessor-version":[{"id":1263,"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/posts\/1260\/revisions\/1263"}],"wp:attachment":[{"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/media?parent=1260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/categories?post=1260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mekteb.us\/en\/wp-json\/wp\/v2\/tags?post=1260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}