//De code waar de gebedstijden worden berekend: function PrayTimes() { var a, b, c, d, e, f = { fajr: 'Fajr', sunrise: 'Sunrise', dhuhr: 'Dhuhr', asr: 'Asr', maghrib: 'Maghrib', isha: 'Isha', }, g = { Makkah: { name: 'Umm Al-Qura University, Makkah', params: { fajr: 18.5, isha: '90 min', }, }, }, h = { maghrib: '0 min', midnight: 'Standard', }, i = 'Makkah', j = { imsak: '10 min', dhuhr: '0 min', asr: 'Standard', highLats: 'NightMiddle', }, k = '24h', l = ['am', 'pm'], m = '-----', n = 1, o = {}, p = h; for (var q in g) { var r = g[q].params; for (var s in p) void 0 === r[s] && (r[s] = p[s]); } for (var q in f) o[q] = 0; return { setMethod: function (a) { g[a] && (this.adjust(g[a].params), (i = a)); }, adjust: function (a) { for (var b in a) j[b] = a[b]; }, tune: function (a) { for (var b in a) o[b] = a[b]; }, getMethod: function () { return i; }, getSetting: function () { return j; }, getOffsets: function () { return o; }, getDefaults: function () { return g; }, getTimes: function (f, g, h, i, j) { return ((a = 1 * g[0]), (b = 1 * g[1]), (c = g[2] ? 1 * g[2] : 0), (k = j || k), f.constructor === Date && (f = [f.getFullYear(), f.getMonth() + 1, f.getDate()]), (void 0 !== h && 'auto' != h) || (h = this.getTimeZone(f)), (void 0 !== i && 'auto' != i) || (i = this.getDst(f)), (d = 1 * h + (1 * i ? 1 : 0)), (e = this.julian(f[0], f[1], f[2]) - b / 360), this.computeTimes()); }, getFormattedTime: function (a, b, c) { if (isNaN(a)) return m; if ('Float' == b) return a; ((c = c || l), (a = DMath.fixHour(a + 0.5 / 60))); var d = Math.floor(a), e = Math.floor(60 * (a - d)), f = '12h' == b ? c[d < 12 ? 0 : 1] : ''; return ('24h' == b ? this.twoDigitsFormat(d) : ((d + 12 - 1) % 12) + 1) + ':' + this.twoDigitsFormat(e) + (f ? ' ' + f : ''); }, midDay: function (a) { var b = this.sunPosition(e + a).equation; return DMath.fixHour(12 - b); }, sunAngleTime: function (b, c, d) { var f = this.sunPosition(e + c).declination, g = this.midDay(c), h = (1 / 15) * DMath.arccos((-DMath.sin(b) - DMath.sin(f) * DMath.sin(a)) / (DMath.cos(f) * DMath.cos(a))); return g + ('ccw' == d ? -h : h); }, asrTime: function (b, c) { var d = this.sunPosition(e + c).declination, f = -DMath.arccot(b + DMath.tan(Math.abs(a - d))); return this.sunAngleTime(f, c); }, sunPosition: function (a) { var b = a - 2451545, c = DMath.fixAngle(357.529 + 0.98560028 * b), d = DMath.fixAngle(280.459 + 0.98564736 * b), e = DMath.fixAngle(d + 1.915 * DMath.sin(c) + 0.02 * DMath.sin(2 * c)), f = (DMath.cos(c), DMath.cos(2 * c), 23.439 - 3.6e-7 * b), g = DMath.arctan2(DMath.cos(f) * DMath.sin(e), DMath.cos(e)) / 15, h = d / 15 - DMath.fixHour(g); return { declination: DMath.arcsin(DMath.sin(f) * DMath.sin(e)), equation: h, }; }, julian: function (a, b, c) { b <= 2 && ((a -= 1), (b += 12)); var d = Math.floor(a / 100), e = 2 - d + Math.floor(d / 4); return Math.floor(365.25 * (a + 4716)) + Math.floor(30.6001 * (b + 1)) + c + e - 1524.5; }, computePrayerTimes: function (a) { a = this.dayPortion(a); var b = j; return { fajr: this.sunAngleTime(this.eval(b.fajr), a.fajr, 'ccw'), sunrise: this.sunAngleTime(this.riseSetAngle(), a.sunrise, 'ccw'), dhuhr: this.midDay(a.dhuhr), asr: this.asrTime(this.asrFactor(b.asr), a.asr), maghrib: this.sunAngleTime(this.riseSetAngle(), a.maghrib), isha: this.sunAngleTime(this.eval(b.isha), a.isha), }; }, computeTimes: function () { for ( var a = { fajr: 5, sunrise: 6, dhuhr: 12, asr: 13, maghrib: 18, isha: 18, }, b = 1; b <= n; b++ ) a = this.computePrayerTimes(a); return ((a = this.adjustTimes(a)), (a.midnight = a.maghrib + this.timeDiff(a.maghrib, a.sunrise) / 2), (a = this.tuneTimes(a)), this.modifyFormats(a)); }, adjustTimes: function (a) { var c = j; for (var e in a) a[e] += d - b / 15; return ('None' != c.highLats && (a = this.adjustHighLats(a)), (a.fajr = a.sunrise - 1.5), this.isMin(c.maghrib) && (a.maghrib = a.maghrib + this.eval(c.maghrib) / 60), (a.isha = a.maghrib + 1.5), (a.dhuhr += this.eval(c.dhuhr) / 60), a); }, asrFactor: function (a) { return ( { Standard: 1, Hanafi: 2, }[a] || this.eval(a) ); }, riseSetAngle: function () { return 0.833 + 0.0347 * Math.sqrt(c); }, tuneTimes: function (a) { for (var b in a) a[b] += o[b] / 60; return a; }, modifyFormats: function (a) { for (var b in a) a[b] = this.getFormattedTime(a[b], k); return a; }, adjustHighLats: function (a) { var b = j, c = this.timeDiff(a.maghrib, a.sunrise); return ((a.fajr = this.adjustHLTime(a.fajr, a.sunrise, this.eval(b.fajr), c, 'ccw')), (a.isha = this.adjustHLTime(a.isha, a.maghrib, this.eval(b.isha), c)), a); }, adjustHLTime: function (a, b, c, d, e) { var f = this.nightPortion(c, d), g = 'ccw' == e ? this.timeDiff(a, b) : this.timeDiff(b, a); return ((isNaN(a) || g > f) && (a = b + ('ccw' == e ? -f : f)), a); }, nightPortion: function (a, b) { var c = j.highLats, d = 0.5; return ('AngleBased' == c && (d = (1 / 60) * a), 'OneSeventh' == c && (d = 1 / 7), d * b); }, dayPortion: function (a) { for (var b in a) a[b] /= 24; return a; }, getTimeZone: function (a) { var b = a[0], c = this.gmtOffset([b, 0, 1]), d = this.gmtOffset([b, 6, 1]); return Math.min(c, d); }, getDst: function (a) { return 1 * (this.gmtOffset(a) != this.getTimeZone(a)); }, gmtOffset: function (a) { var b = new Date(a[0], a[1] - 1, a[2], 12, 0, 0, 0), c = b.toGMTString(); return (b - new Date(c.substring(0, c.lastIndexOf(' ') - 1))) / 36e5; }, eval: function (a) { return 1 * (a + '').split(/[^0-9.+-]/)[0]; }, isMin: function (a) { return -1 != (a + '').indexOf('min'); }, timeDiff: function (a, b) { return DMath.fixHour(b - a); }, twoDigitsFormat: function (a) { return a < 10 ? '0' + a : a; }, }; } var DMath = { dtr: function (a) { return (a * Math.PI) / 180; }, rtd: function (a) { return (180 * a) / Math.PI; }, sin: function (a) { return Math.sin(this.dtr(a)); }, cos: function (a) { return Math.cos(this.dtr(a)); }, tan: function (a) { return Math.tan(this.dtr(a)); }, arcsin: function (a) { return this.rtd(Math.asin(a)); }, arccos: function (a) { return this.rtd(Math.acos(a)); }, arctan: function (a) { return this.rtd(Math.atan(a)); }, arccot: function (a) { return this.rtd(Math.atan(1 / a)); }, arctan2: function (a, b) { return this.rtd(Math.atan2(a, b)); }, fixAngle: function (a) { return this.fix(a, 360); }, fixHour: function (a) { return this.fix(a, 24); }, fix: function (a, b) { return ((a -= b * Math.floor(a / b)), a < 0 ? a + b : a); }, };