@import url('https://fonts.googleapis.com/css2?family=Cairo:wght@400;600;700;800&display=swap');
#pt{--g:#0d4a43;--g2:#16766a;--sand:#f6f1e4;--gold:#c8963e;--ink:#1b2a29;--mut:#667a77;--ln:#e3dac5;font-family:'Cairo',Tahoma,Arial,sans-serif;background:var(--sand);color:var(--ink);max-width:1000px;margin:18px auto;border-radius:18px;overflow:hidden;box-shadow:0 8px 28px rgba(13,74,67,.18);line-height:1.6}
#pt *{box-sizing:border-box}
#pt .hero{display:grid;grid-template-columns:1fr 1fr;gap:18px;background:linear-gradient(135deg,var(--g),var(--g2));color:#fff;padding:24px}
#pt .tm{font-size:3rem;font-weight:800;direction:ltr;text-align:right;line-height:1.1;font-variant-numeric:tabular-nums}
#pt .dt{opacity:.92;font-weight:600}
#pt .hj{color:#f3d9a4;font-weight:700}
#pt .nx{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);border-radius:14px;padding:14px 16px}
#pt .nx .lb{opacity:.85;font-size:.9rem}
#pt .nx .nm{font-size:1.6rem;font-weight:800}
#pt .nx .cd{font-size:2rem;font-weight:800;direction:ltr;text-align:right;font-variant-numeric:tabular-nums}
#pt .bar{height:7px;background:rgba(255,255,255,.25);border-radius:9px;overflow:hidden;margin-top:6px}
#pt .bar i{display:block;height:100%;width:0;background:var(--gold);transition:width 1s linear}
#pt .bd{padding:18px}
#pt .ctl{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:16px}
#pt label{display:flex;flex-direction:column;font-size:.8rem;color:var(--mut);font-weight:600;gap:3px}
#pt select,#pt button{font:inherit;border:1px solid var(--ln);border-radius:10px;background:#fff;color:var(--ink);padding:9px 10px;max-width:100%}
#pt button{cursor:pointer;font-weight:700}
#pt button:hover{background:#fbf6ea}
#pt :focus-visible{outline:2px solid var(--gold);outline-offset:2px}
#pt .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:18px}
#pt .pc{background:#fff;border:1px solid var(--ln);border-radius:14px;text-align:center;padding:12px 6px}
#pt .pc b{display:block;font-size:1.05rem;color:var(--g)}
#pt .pc small{display:block;color:var(--mut);font-size:.72rem;direction:ltr}
#pt .pc span{display:block;font-size:1.7rem;font-weight:800;direction:ltr;font-variant-numeric:tabular-nums}
#pt .pc.on{background:var(--g);border-color:var(--g);box-shadow:0 0 0 3px var(--gold)}
#pt .pc.on b,#pt .pc.on small,#pt .pc.on span{color:#fff}
#pt h3{margin:20px 0 4px;color:var(--g);font-size:1.15rem}
#pt .sub{color:var(--mut);font-size:.84rem;margin:0 0 10px}
#pt .wrap{overflow-x:auto;border:1px solid var(--ln);border-radius:12px;background:#fff}
#pt table{width:100%;border-collapse:collapse;min-width:640px}
#pt th{background:var(--g);color:#fff;padding:9px 6px;font-size:.85rem;font-weight:600;white-space:nowrap}
#pt td{padding:8px 6px;text-align:center;border-bottom:1px solid var(--ln);font-variant-numeric:tabular-nums}
#pt td.n{direction:ltr}
#pt td small{display:block;color:var(--mut);font-size:.72rem}
#pt tr:last-child td{border-bottom:0}
#pt tbody tr.me td{background:#fff3d6;font-weight:800}
#pt tbody tr.fr td:first-child{color:var(--g2);font-weight:800}
#pt .dtab tbody tr{cursor:pointer}
#pt .dtab tbody tr:hover td{background:#f6faf9}
#pt .pl{color:#a35a00}
#pt .mi{color:#0b5d8f}
#pt .mn{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
#pt .mn strong{min-width:140px;text-align:center}
#pt .ig{margin-top:18px;background:#fff;border:1px solid var(--ln);border-right:5px solid var(--gold);border-radius:12px;padding:14px 16px;font-size:.9rem}
#pt .ig a{color:var(--g2);font-weight:800}
#pt .ft{color:var(--mut);font-size:.76rem;margin-top:10px}
#pt .pt-error{border-right-color:#b42318!important;background:#fff1f0!important;color:#7a271a}
@media(max-width:700px){
#pt .hero{grid-template-columns:1fr;padding:16px}
#pt .tm{font-size:2.4rem;text-align:center}
#pt .bd{padding:12px}
#pt .nx .cd{text-align:center}
}
@media(prefers-reduced-motion:reduce){#pt .bar i{transition:none}}
(function(){
'use strict';
var TZ='Europe/Vienna';
var $=function(id){return document.getElementById(id)};
var statusBox=$('pt-status');
function statusMessage(message,isError){
if(!statusBox)return;
statusBox.style.display='block';
statusBox.className='ig'+(isError?' pt-error':'');
statusBox.innerHTML=(isError?'تعذّر تشغيل الحساب: ':'حالة الصفحة: ')+message;
}
window.addEventListener('error',function(ev){
statusMessage(
'حدث خطأ JavaScript. تأكد من لصق الكود كاملاً داخل كتلة HTML مخصص، ومن أن WordPress لم يحذف وسم script. تفاصيل الخطأ: '+(ev.message||'غير متاحة'),
true
);
});
var ST=[
['vie','فيينا','Wien',48.2082,16.3738],
['noe','النمسا السفلى (سانت بولتن)','St. Pölten',48.2047,15.6256],
['bgl','بورغنلاند (أيزنشتات)','Eisenstadt',47.8456,16.5233],
['stmk','شتايرمارك (غراتس)','Graz',47.0707,15.4395],
['ktn','كيرنتن (كلاغنفورت)','Klagenfurt',46.6247,14.3050],
['ooe','النمسا العليا (لينتس)','Linz',48.3069,14.2858],
['sbg','سالزبورغ','Salzburg',47.8095,13.0550],
['tir','تيرول (إنسبروك)','Innsbruck',47.2692,11.4041],
['vbg','فورارلبرغ (برجنز)','Bregenz',47.5031,9.7471]
];
var M={
mwl:{n:'رابطة العالم الإسلامي (فجر 18° / عشاء 17°)',f:18,i:17},
egy:{n:'الهيئة المصرية (19.5° / 17.5°)',f:19.5,i:17.5},
isna:{n:'ISNA (15° / 15°)',f:15,i:15},
umm:{n:'أم القرى (18.5° / العشاء بعد المغرب 90 دقيقة)',f:18.5,i:0,im:90}
};
var P=[
['fa','الفجر','Fajr'],
['sr','الشروق','Sunrise'],
['du','الظهر','Dhuhr'],
['as','العصر','Asr'],
['ss','المغرب','Maghrib'],
['is','العشاء','Isha']
];
var S={st:0,me:'mwl',as:'1',hl:'angle',my:0,mm:0,nk:'',day:''};
try{
var sv=JSON.parse(localStorage.getItem('pt_set')||'{}');
['st','me','as','hl'].forEach(function(k){
if(sv[k]!=null)S[k]=sv[k];
});
}catch(e){}
if(!ST[S.st]||!M[S.me]){
S.st=0;
S.me='mwl';
}
/* الحسابات الفلكية */
var R=Math.PI/180;
var sin=function(x){return Math.sin(x*R)};
var cos=function(x){return Math.cos(x*R)};
var tan=function(x){return Math.tan(x*R)};
var asin=function(x){return Math.asin(x)/R};
var acos=function(x){return Math.acos(x)/R};
var acot=function(x){return Math.atan(1/x)/R};
var atan2=function(y,x){return Math.atan2(y,x)/R};
function fa(a){return a-360*Math.floor(a/360)}
function fh(h){return h-24*Math.floor(h/24)}
function jd(y,m,d){
if(m<=2){y--;m+=12}
var A=Math.floor(y/100);
var B=2-A+Math.floor(A/4);
return Math.floor(365.25*(y+4716))+Math.floor(30.6001*(m+1))+d+B-1524.5;
}
function sun(j){
var d=j-2451545;
var g=fa(357.529+0.98560028*d);
var q=fa(280.459+0.98564736*d);
var L=fa(q+1.915*sin(g)+0.020*sin(2*g));
var e=23.439-0.00000036*d;
return {
dec:asin(sin(e)*sin(L)),
eqt:q/15-fh(atan2(cos(e)*sin(L),cos(L))/15)
};
}
function calc(y,m,d,st,tz,o){
var lat=st[3],lng=st[4],J=jd(y,m,d)-lng/360;
function mid(t){
return fh(12-sun(J+t).eqt);
}
function ang(a,t,ccw){
var dc=sun(J+t).dec;
var den=cos(dc)*cos(lat);
var x=(-sin(a)-sin(dc)*sin(lat))/den;
if(!isFinite(x)||x 1)return NaN;
x=Math.max(-1,Math.min(1,x));
return mid(t)+(ccw?-1:1)*acos(x)/15;
}
function asr(t){
var dc=sun(J+t).dec;
return ang(-acot(o.asr+tan(Math.abs(lat-dc))),t);
}
function run(t){
return {
fa:ang(o.f,t.fa,1),
sr:ang(.833,t.sr,1),
du:mid(t.du),
as:asr(t.as),
ss:ang(.833,t.ss),
is:ang(o.i,t.is)
};
}
var t0={fa:5,sr:6,du:12,as:13,ss:18,is:18};
var t={},k,r;
for(k in t0)t[k]=t0[k]/24;
r=run(t);
for(k in t0){
t[k]=isFinite(r[k])?r[k]/24:t0[k]/24;
}
r=run(t);
for(k in r)r[k]+=tz-lng/15;
var nt=fh(r.sr-r.ss);
if(o.hl!=='none'){
var fd=nt*o.f/60;
if(!isFinite(r.fa)||fh(r.sr-r.fa)>fd)r.fa=r.sr-fd;
if(o.i){
var id=nt*o.i/60;
if(!isFinite(r.is)||fh(r.is-r.ss)>id)r.is=r.ss+id;
}
}
if(o.im)r.is=r.ss+o.im/60;
return r;
}
/* الوقت والتواريخ */
function vp(dt){
var o={};
new Intl.DateTimeFormat('en-US',{
timeZone:TZ,hourCycle:'h23',
year:'numeric',month:'numeric',day:'numeric',
hour:'numeric',minute:'numeric',second:'numeric'
}).formatToParts(dt).forEach(function(p){
o[p.type]=+p.value;
});
return {y:o.year,m:o.month,d:o.day,h:o.hour,mi:o.minute,s:o.second};
}
function tzOff(y,m,d){
var dt=new Date(Date.UTC(y,m-1,d,12));
var v=vp(dt);
return (Date.UTC(v.y,v.m-1,v.d,v.h,v.mi,v.s)-dt.getTime())/36e5;
}
var fW=new Intl.DateTimeFormat('ar-u-nu-latn',{
weekday:'long',timeZone:'UTC'
});
var fG=new Intl.DateTimeFormat('ar-u-nu-latn',{
day:'numeric',month:'long',year:'numeric',timeZone:'UTC'
});
var fH;
try{
fH=new Intl.DateTimeFormat('ar-SA-u-ca-islamic-umalqura-nu-latn',{
day:'numeric',month:'long',year:'numeric',timeZone:'UTC'
});
}catch(e){
fH=fG;
}
function ud(y,m,d){return new Date(Date.UTC(y,m-1,d,12))}
function pad(n){return(n0?'+'+n:n<0?'−'+(-n):'0'}
/* عرض بطاقات الصلاة */
function renderCards(){
$('pt-cards').innerHTML=P.map(function(p){
return ''+
''+st[1]+' '+
P.map(function(p){
var d=mm(T[p[0]])-mm(V[p[0]]);
var ok=isFinite(d);
return ''+fmt(T[p[0]])+
'0?'pl':d'+
(ok?(ix?sg(d)+' د':'مرجع'):'—')+' ';
}).join('')+' ';
}).join('');
}
/* الجدول الشهري */
function renderMonth(){
var st=ST[S.st],y=S.my,mo=S.mm;
var n=new Date(y,mo,0).getDate();
var tn=vp(new Date()),rows='';
$('pt-ml').textContent=new Intl.DateTimeFormat('ar-u-nu-latn',{
month:'long',year:'numeric',timeZone:'UTC'
}).format(ud(y,mo,1));
for(var d=1;d<=n;d++){
var T=times(st,y,mo,d);
var dt=ud(y,mo,d);
var wd=dt.getUTCDay();
rows+=''+
''+fW.format(dt)+' '+
''+fG.format(dt)+' '+
''+fH.format(dt)+' '+
P.map(function(p){
return ''+fmt(T[p[0]])+' ';
}).join('')+' ';
}
$('pt-mb').innerHTML=rows;
}
function renderAll(){
var n=vp(new Date());
var t=new Date(Date.UTC(n.y,n.m-1,n.d+1,12));
S.T=times(ST[S.st],n.y,n.m,n.d);
S.T2=times(ST[S.st],t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate());
S.day=n.y+'-'+n.m+'-'+n.d;
$('pt-stn').textContent=ST[S.st][1];
var d=ud(n.y,n.m,n.d);
$('pt-gr').textContent=fW.format(d)+' · '+fG.format(d);
$('pt-hj').textContent=fH.format(d);
S.nk='';
tick(true);
renderDiff(n);
renderMonth();
}
/* الساعة والعد التنازلي */
function tick(force){
var n=vp(new Date());
$('pt-tm').textContent=pad(n.h)+':'+pad(n.mi)+':'+pad(n.s);
if(!force&&S.day!==n.y+'-'+n.m+'-'+n.d){
renderAll();
return;
}
var h=n.h+n.mi/60+n.s/3600;
var L=['fa','du','as','ss','is'];
var k=null,i,nt,pv;
for(i=0;ih){k=L[i];break;}
}
if(k){
nt=S.T[k];
pv=i?S.T[L[i-1]]:S.T.is-24;
}else{
k='fa';
nt=S.T2.fa+24;
pv=S.T.is;
}
var rem=Math.max(0,Math.round((nt-h)*3600));
$('pt-cd').textContent=
pad(Math.floor(rem/3600))+':'+
pad(Math.floor(rem%3600/60))+':'+
pad(rem%60);
var progress=(h-pv)/(nt-pv)*100;
$('pt-bar').style.width=Math.min(100,Math.max(0,progress))+'%';
if(k!==S.nk){
S.nk=k;
var prayer=P.filter(function(p){return p[0]===k})[0];
$('pt-nn').textContent=prayer[1]+' · '+fmt(nt);
renderCards();
}
}
/* عناصر التحكم */
$('pt-st').innerHTML=ST.map(function(s,i){
return ''+s[1]+'';
}).join('');
$('pt-me').innerHTML=Object.keys(M).map(function(k){
return ''+M[k].n+'';
}).join('');
function sync(){
$('pt-st').value=S.st;
$('pt-me').value=S.me;
$('pt-as').value=S.as;
$('pt-hl').value=S.hl;
}
function save(){
try{
localStorage.setItem('pt_set',JSON.stringify({
st:S.st,me:S.me,as:S.as,hl:S.hl
}));
}catch(e){}
}
[['pt-st','st'],['pt-me','me'],['pt-as','as'],['pt-hl','hl']].forEach(function(c){
$(c[0]).addEventListener('change',function(){
S[c[1]]=this.value;
save();
renderAll();
});
});
$('pt-df').addEventListener('click',function(e){
var r=e.target.closest('tr');
if(r){
S.st=+r.dataset.i;
sync();
save();
renderAll();
}
});
function goMonth(dm){
S.mm+=dm;
if(S.mm>12){S.mm=1;S.my++}
if(S.mm<1){S.mm=12;S.my--}
renderMonth();
}
$('pt-pv').onclick=function(){goMonth(-1)};
$('pt-nx').onclick=function(){goMonth(1)};
$('pt-today').onclick=function(){
var n=vp(new Date());
S.my=n.y;
S.mm=n.m;
renderMonth();
};
$('pt-csv').onclick=function(){
var st=ST[S.st];
var n=new Date(S.my,S.mm,0).getDate();
var out=['Date,Weekday,'+P.map(function(p){return p[2]}).join(',')];
for(var d=1;d<=n;d++){
var T=times(st,S.my,S.mm,d);
out.push(
S.my+'-'+pad(S.mm)+'-'+pad(d)+','+
fW.format(ud(S.my,S.mm,d))+','+
P.map(function(p){return fmt(T[p[0]])}).join(',')
);
}
var a=document.createElement('a');
var url=URL.createObjectURL(new Blob(
['\ufeff'+out.join('\n')],
{type:'text/csv;charset=utf-8'}
));
a.href=url;
a.download='prayer-times-'+st[2]+'-'+S.my+'-'+pad(S.mm)+'.csv';
document.body.appendChild(a);
a.click();
a.remove();
setTimeout(function(){URL.revokeObjectURL(url)},1000);
};
/* بدء التشغيل وإظهار الخطأ إن حدث */
try{
var t0=vp(new Date());
S.my=t0.y;
S.mm=t0.m;
sync();
renderAll();
if(statusBox)statusBox.style.display='none';
setInterval(function(){
try{
tick(false);
}catch(err){
statusMessage(err.message||'خطأ أثناء تحديث الساعة.',true);
}
},1000);
}catch(err){
statusMessage(
(err&&err.message?err.message:'خطأ غير معروف')+
' — تحقق من السماح بتشغيل JavaScript في صفحة WordPress.',
true
);
}
})();
--:--:--
توقيت النمسا (Europe/Vienna) ·
الصلاة القادمة
جارٍ الحساب...
--:--:--
تنبيه: يتم تشغيل حساب مواقيت الصلاة. إذا بقيت القوائم فارغة أو بقيت الساعة على --:--:-- بعد تحميل الصفحة، فقد يكون WordPress قد حذف JavaScript عند حفظ الكود. راجع الملاحظة أسفل الصفحة.
الفرق في المواقيت بين المقاطعات
تُحسب المواقيت عند عاصمة كل مقاطعة. الفرق بالدقائق مقارنة بفيينا لهذا اليوم؛ الرقم الموجب (+) يعني أن الصلاة تتأخر عن فيينا، والسالب (−) يعني أنها أبكر. اضغط على أي مقاطعة لاختيارها.
| المقاطعة | الفجر | الشروق | الظهر | العصر | المغرب | العشاء |
|---|
الجدول الشهري الكامل
| اليوم | التاريخ الميلادي | التاريخ الهجري | الفجر | الشروق | الظهر | العصر | المغرب | العشاء |
|---|
المرجع الرسمي: الهيئة الإسلامية الدينية في النمسا (IGGÖ) ·
derislam.at
المواقيت المعروضة محسوبة فلكياً داخل المتصفح اعتماداً على إحداثيات عاصمة كل مقاطعة، وليست منقولة مباشرة من تقويم المركز. قد تختلف عن التقويم المنشور لدى المركز أو المسجد المحلي بسبب طريقة الحساب والاحتياط. يُرجى اعتماد تقويم مسجدك المحلي في الأمور الشرعية، وخصوصاً الصيام والإفطار. التاريخ الهجري حسب تقويم أم القرى وقد يختلف يوماً عن التقويم المعتمد محلياً.
ملاحظة تقنية: إذا لم تعمل الساعة أو بقيت القوائم فارغة بعد الحفظ، افتح كتلة HTML مخصص وتأكد من بقاء وسم script والكود الذي بداخله. قد تحذف بعض صلاحيات WordPress أو إضافات الحماية JavaScript من محتوى الصفحة. عندها استخدم خانة JavaScript المخصصة إن كانت متاحة، أو أضف الكود من خلال إعدادات الموقع الموثوقة.
'+
''+p[1]+''+p[2]+''+
''+fmt(S.T[p[0]])+'
';
}).join('');
}
/* مقارنة المقاطعات */
function renderDiff(n){
var V=times(ST[0],n.y,n.m,n.d);
$('pt-df').innerHTML=ST.map(function(st,ix){
var T=times(st,n.y,n.m,n.d);
return '--:--:--
توقيت النمسا (Europe/Vienna) ·
الصلاة القادمة
جارٍ الحساب...
--:--:--
تنبيه: يتم تشغيل حساب مواقيت الصلاة. إذا بقيت القوائم فارغة أو بقيت الساعة على --:--:-- بعد تحميل الصفحة، فقد يكون WordPress قد حذف JavaScript عند حفظ الكود. راجع الملاحظة أسفل الصفحة.
الفرق في المواقيت بين المقاطعات
تُحسب المواقيت عند عاصمة كل مقاطعة. الفرق بالدقائق مقارنة بفيينا لهذا اليوم؛ الرقم الموجب (+) يعني أن الصلاة تتأخر عن فيينا، والسالب (−) يعني أنها أبكر. اضغط على أي مقاطعة لاختيارها.
| المقاطعة | الفجر | الشروق | الظهر | العصر | المغرب | العشاء |
|---|
الجدول الشهري الكامل
| اليوم | التاريخ الميلادي | التاريخ الهجري | الفجر | الشروق | الظهر | العصر | المغرب | العشاء |
|---|
المرجع الرسمي: الهيئة الإسلامية الدينية في النمسا (IGGÖ) ·
derislam.at
المواقيت المعروضة محسوبة فلكياً داخل المتصفح اعتماداً على إحداثيات عاصمة كل مقاطعة، وليست منقولة مباشرة من تقويم المركز. قد تختلف عن التقويم المنشور لدى المركز أو المسجد المحلي بسبب طريقة الحساب والاحتياط. يُرجى اعتماد تقويم مسجدك المحلي في الأمور الشرعية، وخصوصاً الصيام والإفطار. التاريخ الهجري حسب تقويم أم القرى وقد يختلف يوماً عن التقويم المعتمد محلياً.
ملاحظة تقنية: إذا لم تعمل الساعة أو بقيت القوائم فارغة بعد الحفظ، افتح كتلة HTML مخصص وتأكد من بقاء وسم script والكود الذي بداخله. قد تحذف بعض صلاحيات WordPress أو إضافات الحماية JavaScript من محتوى الصفحة. عندها استخدم خانة JavaScript المخصصة إن كانت متاحة، أو أضف الكود من خلال إعدادات الموقع الموثوقة.
