1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
| var timestamp;
var localTimestamp;
var ratio;
var formula;
var mooncount;
var offset2;
var moonstart;
var newmoon;
var waxcrescent;
var firstquarter;
var waxgibbous;
var fullmoon;
var wangibbous;
var lastquarter;
var wancrescent;
function RunEorzeaClock(serverTimestamp) {
//Adjusting the time
serverTimestamp = (serverTimestamp + 5) * 1000;
//Setting timestamp to that of the server
timestamp = serverTimestamp;
//Settting local time stamp to current dates time
localTimestamp = new Date().getTime();
updateEorzeaTime();
//Information for moonphases
ratio = 1440 / 70;
formula = 1000 * 60 * 60 * 24 * 4 / ratio;
mooncount = new Date();
offset2 = 21 - mooncount.getTimezoneOffset() / 60;
moonstart = new Date(2010, 7, 15, offset2, 20, 0);
newmoon = new Date(moonstart.getTime());
waxcrescent = new Date(moonstart.getTime() + formula);
firstquarter = new Date(moonstart.getTime() + formula * 2);
waxgibbous = new Date(moonstart.getTime() + formula * 3);
fullmoon = new Date(moonstart.getTime() + formula * 4);
wangibbous = new Date(moonstart.getTime() + formula * 5);
lastquarter = new Date(moonstart.getTime() + formula * 6);
wancrescent = new Date(moonstart.getTime() + formula * 7);
UpdateMoons();
LeveRefresh();
}
function updateEorzeaTime() {
var now = new Date();
//Converting current time to Eorzean
//getTime function returns UNIX UTC timestamp
var tmpTime = ((timestamp + now.getTime() - localTimestamp) / 1000) * 4188615725;
var EorzeanYear = parseInt(tmpTime / 562949953421312);
EorzeanYear -= 9519;
EorzeanYear /= 12;
EorzeanYear = parseInt(EorzeanYear);
var EorzeanMonth = parseInt(tmpTime / 562949953421312);
EorzeanMonth = EorzeanMonth % 12;
EorzeanMonth++;
EorzeanMonth = parseInt(EorzeanMonth);
var EorzeanDay = parseInt(tmpTime / 17592186044416);
EorzeanDay &= 31;
EorzeanDay++;
EorzeanDay = parseInt(EorzeanDay);
var tmpTime = ((timestamp + now.getTime() - localTimestamp) / 1000) * 24
var EorzeanHour = parseInt(tmpTime / 4200);
EorzeanHour %= 24;
tmpTime = ((timestamp + now.getTime() - localTimestamp) / 1000) * 1440;
var EorzeanMinute = parseInt(tmpTime / 4200);
EorzeanMinute -= 10;
EorzeanMinute %= 60;
//adding '0' before hours and minutes if less than 10
if (EorzeanHour < 10) EorzeanHour = "0" + EorzeanHour;
if (EorzeanMinute < 10) EorzeanMinute = "0" + EorzeanMinute;
document.getElementById("EorzeaTime").innerHTML = EorzeanHour + ':' + EorzeanMinute + ', ' + EorzeanMonth + '/' + EorzeanDay + '/' + EorzeanYear;
t = setTimeout('updateEorzeaTime()', 1000);
}
function UpdateMoons() {
//gets the value per moon
var moon1 = LunarCalendarRefresh(newmoon, 'moon1');
var moon2 = LunarCalendarRefresh(waxcrescent, 'moon2');
var moon3 = LunarCalendarRefresh(firstquarter, 'moon3');
var moon4 = LunarCalendarRefresh(waxgibbous, 'moon4');
var moon5 = LunarCalendarRefresh(fullmoon, 'moon5');
var moon6 = LunarCalendarRefresh(wangibbous, 'moon6');
var moon7 = LunarCalendarRefresh(lastquarter, 'moon7');
var moon8 = LunarCalendarRefresh(wancrescent, 'moon8');
//transfer the content to the dom respectively
if (document.getElementById("lunar_m1"))
document.getElementById("lunar_m1").innerHTML = moon1;
if (document.getElementById("lunar_m2"))
document.getElementById("lunar_m2").innerHTML = moon2;
if (document.getElementById("lunar_m3"))
document.getElementById("lunar_m3").innerHTML = moon3;
if (document.getElementById("lunar_m4"))
document.getElementById("lunar_m4").innerHTML = moon4;
if (document.getElementById("lunar_m5"))
document.getElementById("lunar_m5").innerHTML = moon5;
if (document.getElementById("lunar_m6"))
document.getElementById("lunar_m6").innerHTML = moon6;
if (document.getElementById("lunar_m7"))
document.getElementById("lunar_m7").innerHTML = moon7;
if (document.getElementById("lunar_m8"))
document.getElementById("lunar_m8").innerHTML = moon8;
//if moons' value is default then we need much faster refresh to get the proper time the soonest
if (moon1 == '00 : 00 : 00' && moon2 == '00 : 00 : 00' && moon3 == '00 : 00 : 00' && moon4 == '00 : 00 : 00' && moon5 == '00 : 00 : 00' && moon6 == '00 : 00 : 00' && moon7 == '00 : 00 : 00' && moon8 == '00 : 00 : 00')
m = setTimeout('UpdateMoons()', 1);
else
m = setTimeout('UpdateMoons()', 500);
}
function LunarCalendarRefresh(adjust, moon) {
//00 : 00 : 00 set as the default value
var value = '00 : 00 : 00';
var now = new Date();
// difference will be the countdown time for each moon
difference = adjust.getTime() - (timestamp + now.getTime() - localTimestamp);
if (difference > 0) {
//translate to hours
hours = Math.floor(difference / (60 * 60 * 1000));
difference -= hours * 60 * 60 * 1000;
//translate to min
minutes = Math.floor(difference / (60 * 1000));
difference -= minutes * 60 * 1000;
//translate to sec
seconds = Math.floor(difference / 1000);
//if single digit then add padding-left '0'
if (hours < 10) hours = "0" + hours;
if (minutes < 10) minutes = "0" + minutes;
if (seconds < 10) seconds = "0" + seconds;
value = hours + " : " + minutes + " : " + seconds;
}
else {
if ((adjust.getTime() + formula) < (timestamp + now.getTime() - localTimestamp)) {
temp = adjust.getTime();
adjust.setTime(temp + formula * 8);
}
else {
//if difference <= 0 then the moon will be the current moon
value = '<span class="current_moon">  Current </span>';
//change the big moon current
if (document.getElementById("lb_lunar_calendar_icon"))
document.getElementById("lb_lunar_calendar_icon").className = 'icon ' + moon;
//change the langbar moon current
if (document.getElementById("moon_image"))
document.getElementById("moon_image").className = 'moon ' + moon;
}
}
return value;
}
function LeveRefresh() {
var now = new Date();
//compute time passed between a UNIX timestamp when we had a guild refresh and the current UNIX timestamp
var difference = (timestamp + now.getTime() - localTimestamp) - Date.UTC(2010, 11, 10, 12);
if (isNaN(difference))
return;
//resets happens every 36 hrs, so find out how many resets we had in the passed time
var resetsSoFar = Math.floor(difference / (12 * 60 * 60 * 1000));
//compute the next reset
var nextReset = (resetsSoFar + 1) * 12 * 60 * 60 * 1000;
//next reset will occur in
difference = nextReset - difference;
//translate to hours
var hours = Math.floor(difference / (60 * 60 * 1000));
difference -= hours * 60 * 60 * 1000;
//translate to min
var minutes = Math.floor(difference / (60 * 1000));
difference -= minutes * 60 * 1000;
//translate to sec
var seconds = Math.floor(difference / 1000);
//if single digit then add padding-left '0'
if (hours < 10) hours = "0" + hours;
if (minutes < 10) minutes = "0" + minutes;
if (seconds < 10) seconds = "0" + seconds;
//refresh the lunar clock with current value
if (document.getElementById("leverefreshdiv"))
document.getElementById("leverefreshdiv").innerHTML = hours + "h " + minutes + "m " + seconds + "s";
setTimeout('LeveRefresh()', 200);
} |
Partager