Astronomical Wheel of the Year https://wheeloftheyear.soundragon.su
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 26KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <!DOCTYPE html>
  2. <!-- https://gitlab.com/zlax/solarwheeloftheyear -->
  3. <html xmlns="http://www.w3.org/1999/xhtml"><head>
  4. <head>
  5. <!--
  6. Image 'The Wheel Of The Year' by Charlee Brown https://www.flickr.com/photos/charleebrown/376931276
  7. ;
  8. ;=
  9. .=; .X
  10. ... ;;.
  11. ; .; ;.=
  12. == =. = . ;
  13. . X=. ;. = = ;.
  14. + .;;; .. .; .. .
  15. +. ;..; . = =
  16. X; .; .= = .; = =. .
  17. =;; ;. .+. = = ; . .=
  18. ; ; = =. = X = ; ;;
  19. .;.; ;. ;. = .. ; = ;;
  20. = = ; =. = ; ;. = = ;
  21. + .= = =. = ;; ; . .. ;
  22. ; .; = =. = = .; . = .;
  23. ; = = .= = ; ; .; .. ;=
  24. ;. = ;. ; . .= ; .; = ;.
  25. = .= .= .; .. ; = .+ ; ;
  26. = .; ; ;; .. ;. .; .X ;.
  27. ; ;. =. = ;. .; ;. .X ;; ;
  28. . =. .; .. .= =. + = = .; +
  29. +. .. .; ; . ; + ;. ; .= =
  30. .+. = .; = ; ; ; = + ;. .
  31. ;; + .; X .; ; = = .X ;. =
  32. ;... .. .+ ; = ; X . .+ =. X
  33. ; .. = + . .. ; ; + .; ;. ;
  34. .; .; ; .; ; X ; ; ; .; ; ..
  35. .. ... ;. .; + .;; . . . ; =. .;;
  36. ; ;; ; ;; ; ==. ;=; = = ; ;;.;=.
  37. ;. ;; = = ;. =;. ;= X ;. .; .+. =.
  38. ; .=. ;. ;.; .=. ;= ;.. . ..; =
  39. .. =+ = .;; +. ;= ..= = ... =
  40. ; .=; ; .+. ;. ;= += .. .=. =.
  41. ;. =; ; X. + ;= =; = .;. .;
  42. ; .= ; ;+ + ;. ;+ ;. =. =
  43. = .. + ; = ; ;. ;= ; = =
  44. ;; ; =.; = .; = .; .. =
  45. .; ; ;.; ; .X = + =; .;
  46. ; =. .. ;=. .= + ; .. .+
  47. ; ;. = =X =. ; .=; +
  48. . .= ;. ;; . X; ;.
  49. .; ;;. ; =. ;+ =
  50. ; ; ; ; =. .+ = ==;;;
  51. = ;.=. .; = ;;;;; + =. ;;+=; ;;;..=.
  52. .. == . .. = .;+M##########M;;. + .. .;;X=. .=;
  53. ;. ;=.; ; .= ;X###M++++==++++M##M+;.==. ;. .= ..=.. ;=
  54. = ..=. ; . =M##X=;...........;==+M#M##= = .= . .;.
  55. ; .;. ; =##M+.................;M#####+ .= .;= ;=
  56. ; .;.. ;M##+.................=X########+ .=; ; .=.
  57. ; .+= =M#M;.................X###########M. .X.. .;
  58. ; =+ X#M=.................+#############M#= =X. =;
  59. ; .+. X#M;................=M##############=M#; =; .;.
  60. = == M#M................;X################X;MM; .+. .=
  61. =. . X#M................+###M#=############X..M#; .= .=
  62. .= +#M................X###MM#+#############..;M#. .=
  63. =; ;##;...............+####=#M=#############...;#M ;;
  64. .= M#=................X###.;#==#############;...;#+ ;.
  65. =; +#X.................###X X#=X#############.....X#. =.
  66. .== .MM=................X###M.## X############M.....;#+ .;
  67. .;. M#X..........;=;.;X######X#X X############X......X#. ;.
  68. .. ;;;;=+X;;====.. .##........;XM###M##########X X############+......;#X ;= ...=;;;;.....
  69. ;..=;; .=+. X#X......;X##################.X############........M#. ;;=; ;==;.. ..;.+=;.;;
  70. ;= ;. .##;.....XM###################XM###########=........;#= .++.; ;;.;=+=;.
  71. .+;. =#M....=M############;+#M#################X..........MX .;X.. ... .;+X=
  72. ..=. X#+..;M##############X;#XX###############X=..........=#. .= ;;;
  73. ;=. .M#.;M################M.X#==#############X;X..........;#= .+..
  74. = .##X###################;;#X.;XM########M=.=+...........MX .;;
  75. .=. .#####M#M##############=.X#+...=X##XXX=...==...........X#. .;.
  76. ;.;. .=X;. M####+MM+##############X.;#MX+...;X;......=+...........X#; .=.
  77. ==.. X####M;#=X##############X..;++XX...X;......;+.......+...X#; ..X
  78. .=.;; =#####=;#.M##############+......=.;+=........X=.....+=...X#; ;.;
  79. .; .;;;;;;;;;;;+=; .M####.+M ###############=........X=.......;M#M+=;=X=....X#; ==.
  80. ..==. M###+X= ##############M........=M......;+M+#;;+==......X#; ..;=+
  81. ..;. +#####= ##############X.......;X+....;+#M=+#;..........X#; ;;.;==;;. ;==.
  82. ;.; +#####X ##############;..XX+=+M+...;X##M=;+M...........X#; ...=;
  83. .=. =######;#############MM+X;;XMX...=M###+=;;MM...........X#; .=..
  84. ;.; .#XX###M############+.+=........=###M+;;;=#+...........XM ;;.
  85. .;. .##.=##############+.........=XX###M=;;;;+#+...........MX ..;.
  86. ;. M#;.=M##########M=........;X#####X=;;;;;M#=..........=#= .;
  87. ;; =#+...+X######M+.........;M####M+;;;;;;+##...........+#. ..;
  88. =. ;#M.....;=======........+M###X+;;;;;;;=M#M...........MM ..==
  89. ;= .;+ M#=.........=;=X=....;M##M==;;;;;;;;=MM#X..........;#= .=+. ... ....
  90. .=. ;== =#X.............+X.;+#MX=;;;;;;;;;;+#= M+..........M#. ..=+==;=++;
  91. .+ =X= M#;.............XXX+=;;;;;;;;;;;=X#= =#..........;#X == .;.
  92. ;; .. ;;;= =#X.............=#M+=;;;;;;;;;=+MX. =#;..........X#. ;X;. ..=
  93. =. .;===;.==;; .;;. .= M#;............;X+M#XX+=;;=+X#X= +M=..........;#X =;== ;=.;
  94. =. ;X=..;;;;;;;;;;. ;; ;#M............;=..=M##MMMM#+. ;MM;...........MM. .==.;+; .=+; ;
  95. +=.;. ;. X#=...........+;...;=M####; .+MX;...........=#+ .=. .;;. ..;; ;;;
  96. . ;; .MM;.........;M.......;=XMM+MMX;........=...;MX .=
  97. =. ;MM;......;+M;...........;==...........=..;M# =;
  98. ;. ;#M;....++=..........................;;..X#; .=
  99. .= =#M.................................X.;M#= ; ;.
  100. .; .= =MM;..............................===##= ;= ;.
  101. ;; =; ;#M=.............................X+##; =. ..
  102. .. = ;M#X;................+;.......;M##M; ;; ..
  103. ;; ;; +##X;...............++=...=X##M= =. ..
  104. ;. .+. ;X##X=..............;=+MM###+. =; .;
  105. = ;+. .XM#MX;;;.........;;XM#MX. ;.=. .;
  106. ; ..;+ +X####M+====+MM###X= ; ;;; ;.
  107. ;. ... ; +. .;;XX######MX;;. . ; ..=. ;
  108. ;. ;. ; =. ...... = ;; == =
  109. .= ..=. ; .+ .= ;. =;; ..
  110. .. ;; ; ; X. .; ; ..; ;.
  111. +. . ;=+ ; ++ ;; . + ;
  112. ;. .;;;; ; ..= . . += . =. ..
  113. ;;=;=. ;; ;. . ;. .; ; .;; ; .; ;
  114. . ; ; ; X + ; ;;= = .; ..
  115. = .; ; .= .= ; ; = =. .. .= ;
  116. ;. ;; ; == .; + ;. . .. ; ==.
  117. = .; = ..; =; X + ; .= . ;=
  118. ; . . ; ; =; = =; ; =. = =
  119. .. .;. ; ..; .; =; .; . .= ;
  120. ; .; ; . + ;.; . ;. ; =. .
  121. .. . ; = + . . .; .; ; ... ;
  122. ; .; ; ; ; . . . . . .. ;; ..
  123. .. = .. . ; . . ; ;; = ; ;. =
  124. ;.= = ;. ; = . ; . .; . ;; =
  125. .+. ; ;. .. + ; . ;. . ;; .
  126. . = ;. ; ; ; . = ; = ;.=
  127. ; ;. .. . ; ;. ;. ; ; .=.
  128. ; .. ; + ; .. . .; .+
  129. ; ; .; ; ; ; . . +
  130. = = ; .; ; ;. ; . ;
  131. . ; = . ; ; . .
  132. .; =. ; = . = ; ; ;. .
  133. = .. ; ; ; = ; ; ; =
  134. ; .; + + =. . ; + ; ;
  135. .. ;; ; . . .. ; X
  136. .==. . . ; ; = ;
  137. .+. . = ; = ; . +
  138. = . + .; .. ; ; .
  139. ; . = . ; ; ;
  140. ; ; ; = ;..
  141. . ; .. .. ;.=
  142. . ; . =.. =.
  143. . ;; .;
  144. ;.; = .; +
  145. .; ..
  146. +X = ;=
  147. + . .;
  148. . .
  149. =;
  150. .
  151. -->
  152. <link rel="icon" href="favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
  153. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  154. <link rel="stylesheet" type="text/css" href="anthrstlsht.css">
  155. <title>solar wheel of the year</title>
  156. </head>
  157. <body>
  158. <br><p align="center"><input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-11, 'UTC-11');" value="UTC-11"/>
  159. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-10, 'UTC-10');" value="UTC-10"/>
  160. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-9, 'UTC-9');" value="UTC-9"/>
  161. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-8, 'UTC-8');" value="UTC-8"/>
  162. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-7, 'UTC-7');" value="UTC-7"/><br>
  163. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-6, 'UTC-6');" value="UTC-6"/>
  164. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-5, 'UTC-5');" value="UTC-5"/>
  165. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-4, 'UTC-4');" value="UTC-4"/>
  166. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-3.5, 'UTC-3:30');" value="UTC-3:30"/>
  167. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-3, 'UTC-3');" value="UTC-3"/><br>
  168. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(0, 'UTC-0');" value="UTC-0"/>
  169. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(1, 'UTC+1');" value="UTC+1"/>
  170. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(2, 'UTC+2');" value="UTC+2"/>
  171. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(3, 'UTC+3');" value="UTC+3"/>
  172. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(3.5, 'UTC+3:30');" value="UTC+3:30"/><br>
  173. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(5, 'UTC+5');" value="UTC+5"/>
  174. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(5.5, 'UTC+5:30');" value="UTC+5:30"/>
  175. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(6, 'UTC+6');" value="UTC+6"/>
  176. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(6.5, 'UTC+6:30');" value="UTC+6:30"/>
  177. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(7, 'UTC+7');" value="UTC+7"/><br>
  178. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(8, 'UTC+8');" value="UTC+8"/>
  179. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(9, 'UTC+9');" value="UTC+9"/>
  180. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(9.5, 'UTC+9:30');" value="UTC+9:30"/>
  181. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(10, 'UTC+10');" value="UTC+10"/>
  182. <input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(11, 'UTC+11');" value="UTC+11"/></p>
  183. <div align = "center" id="soltable"></div>
  184. <script type="text/javascript">
  185. // The exact reference year is only 2021. The dates of the others are calculate according to this model.
  186. var VernalEquinox2021 = new Date('Sat Mar 20 2021 09:37:27 GMT+0000');
  187. var NorthernSolstice2021 = new Date('Mon Jun 21 2021 03:32:08 GMT+0000');
  188. var AutumnalEquinox2021 = new Date('Wed Sep 22 2021 19:21:03 GMT+0000');
  189. var SouthernSolstice2021 = new Date('Tue Dec 21 2021 15:59:16 GMT+0000');
  190. var VernalEquinox2022 = new Date('Sun Mar 20 2022 15:33:23 GMT+0000');
  191. function formatedDate(datein) {
  192. var dateout = "" + ("0" + ( datein.getUTCDate())).slice(-2) + "." + ("0" + ( datein.getUTCMonth() + 1)).slice(-2) + " " + ("0" + datein.getUTCHours()).slice(-2) + ":" + ("0" + datein.getUTCMinutes()).slice(-2);
  193. return dateout;
  194. }
  195. function tableRow(vernalequinox) {
  196. var stringout = "<td>";
  197. if (vernalequinox.getYear() == VernalEquinox2021.getYear()) stringout += "<b>";
  198. stringout += vernalequinox.getFullYear();
  199. if (vernalequinox.getYear() == VernalEquinox2021.getYear()) stringout += "</b>";
  200. var Imbolc = new Date(vernalequinox.getTime() - ((VernalEquinox2022.getTime() - SouthernSolstice2021.getTime()) / 2));
  201. stringout += '<td class = "even">' + formatedDate(Imbolc) + "</td>";
  202. stringout += "</td><td>" + formatedDate(vernalequinox) + "</td>";
  203. var Beltane = new Date(vernalequinox.getTime() + ((NorthernSolstice2021.getTime() - VernalEquinox2021.getTime()) / 2));
  204. stringout += '<td class = "even">' + formatedDate(Beltane) + "</td>";
  205. var Midsummer = new Date(vernalequinox.getTime() + (NorthernSolstice2021.getTime() - VernalEquinox2021.getTime()));
  206. stringout += "<td>" + formatedDate(Midsummer) + "</td>";
  207. var Lughnasadh = new Date(vernalequinox.getTime() + ((NorthernSolstice2021.getTime() - VernalEquinox2021.getTime()) + (AutumnalEquinox2021.getTime() - NorthernSolstice2021.getTime()) / 2));
  208. stringout += '<td class = "even">' + formatedDate(Lughnasadh) + "</td>";
  209. var Mabon = new Date(vernalequinox.getTime() + (AutumnalEquinox2021.getTime() - VernalEquinox2021.getTime()));
  210. stringout += "<td>" + formatedDate(Mabon) + "</td>";
  211. var Samhain = new Date(vernalequinox.getTime() + ((AutumnalEquinox2021.getTime() - VernalEquinox2021.getTime()) + (SouthernSolstice2021.getTime() - AutumnalEquinox2021.getTime()) / 2));
  212. stringout += '<td class = "even">' + formatedDate(Samhain) + "</td>";
  213. var Yule = new Date(vernalequinox.getTime() + (SouthernSolstice2021.getTime() - VernalEquinox2021.getTime()));
  214. stringout += "<td>" + formatedDate(Yule) + "</td>";
  215. return stringout;
  216. }
  217. function makeTable(UTC, UTCstr) {
  218. var fulltable = "<table><caption>";
  219. now = new Date();
  220. fulltable += 'Approximate astronomical <a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year">Wheel of the Year</a> - ' + '<a href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time"><b>' + UTCstr + "</b></a><br>";
  221. fulltable += 'Model: 2021 <a href="https://en.wikipedia.org/wiki/Tropical_year">Tropical year</a> - ' + ( ( VernalEquinox2022 - VernalEquinox2021 ) / 1000 / 60 / 60 / 24 ) + " days (view source for details)</caption>";
  222. fulltable += '<tr><th>Gregorian Year</th><th><a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year#Imbolc">Imbolc</a></th><th><a';
  223. fulltable += ' href="https://en.wikipedia.org/wiki/Wheel_of_the_Year#Vernal_Equinox_.28Ostara.29">Ostara</a></th><th>';
  224. fulltable += '<a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year#Beltane">Beltane</a></th><th><a href="https://en.wikipedia.org/wiki/';
  225. fulltable += 'Wheel_of_the_Year#Midsummer_.28Litha.29">Midsummer</a></th><th><a href="https://en.wikipedia.org/wiki/';
  226. fulltable += 'Wheel_of_the_Year#Lammas.2FLughnasadh">Lughnasadh</a></th><th><a href="https://en.wikipedia.org/wiki/';
  227. fulltable += 'Wheel_of_the_Year#Autumnal_equinox_.28Mabon.29">Mabon</a></th><th><a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year#Samhain">';
  228. fulltable += 'Samhain</a></th><th><a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year#Midwinter_.28Yule.29">Yule</a></th></tr>';
  229. for (var i = 1; i <= 17; i++) {
  230. var current = new Date ( VernalEquinox2021.getTime() + ( UTC * 60 * 60 * 1000 ) - ( ( VernalEquinox2022.getTime() - VernalEquinox2021.getTime() ) * (7 - i) ) );
  231. if (current.getYear() == now.getYear()) fulltable += '<tr class = "currentyear">';
  232. else if (i % 2 == 0 ) fulltable += '<tr class = "even">';
  233. else fulltable += '<tr>'
  234. fulltable += tableRow(current) + "</tr>";
  235. }
  236. fulltable += "</table>";
  237. return fulltable;
  238. }
  239. var defaultTable = makeTable(0, "UTC-0");
  240. document.getElementById("soltable").innerHTML = defaultTable;
  241. </script>
  242. <br><p align="center"><a href="https://gitlab.com/zlax/solarwheeloftheyear">source code</a></p>
  243. <br><p align="center"><a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year"><img src="the_wheel_of_the_year_by_Charlee_Brown.jpg" alt="The Wheel Of The Year by Charlee Brown"></a></p>
  244. </body>
  245. </html>