Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.
- Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
- Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
- Internet Explorer ja Edge: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
- Opera: Paina Ctrl-F5.
var queryApi = 'https://www.jarviwiki.fi/w/api.php'; // 'http://' + window.location.hostname + '/w/api.php';
var jwMapSiteStyleCache = {};
function firstDayOfWeek (year, week) {
// Jan 1 of 'year'
var d = new Date(year, 0, 1),
offset = d.getTimezoneOffset();
// ISO: week 1 is the one with the year's first Thursday
// so nearest Thursday: current date + 4 - current day number
// Sunday is converted from 0 to 7
d.setDate(d.getDate() + 4 - (d.getDay() || 7));
// 7 days * (week - overlapping first week)
d.setTime(d.getTime() + 7 * 24 * 60 * 60 * 1000
* (week + (year == d.getFullYear() ? -1 : 0 )));
// daylight savings fix
d.setTime(d.getTime()
+ (d.getTimezoneOffset() - offset) * 60 * 1000);
// back to Monday (from Thursday)
d.setDate(d.getDate() - 3);
return d;
}
function toDateFromSecsSince1970(s) {
var t = new Date(1970, 0, 1);
t.setMinutes(-t.getTimezoneOffset());
t.setSeconds(s);
return t;
}
Date.prototype.getDaysSinceZero = function () {
var aggregateMonths = [0, // January
31, // February
31 + 28, // March
31 + 28 + 31, // April
31 + 28 + 31 + 30, // May
31 + 28 + 31 + 30 + 31, // June
31 + 28 + 31 + 30 + 31 + 30, // July
31 + 28 + 31 + 30 + 31 + 30 + 31, // August
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31, // September
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30, // October
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31, // November
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30, // December
];
return (this.getFullYear()*365.25 + aggregateMonths[this.getMonth()] + this.getDate());
}
Date.prototype.inRelationToToday = function(lang) {
var today = new Date();
var days = Math.round(today.getDaysSinceZero() - this.getDaysSinceZero());
if (days == 0) {
return labels( 'today', lang);
} else if (days == 1) {
return labels( 'yesterday', lang);
} else if (days < 11) {
return days + ' ' + labels( 'daysAgo', lang);
} else {
if (lang=='fi') {
return this.getDate() + '.' + (this.getMonth()+1) + '.' + this.getFullYear();
} else {
return this.toLocaleDateString();
}
}
function labels(id, lang) {
var labs = {
fi: { today: 'Tänään', yesterday: 'Eilen', daysAgo: 'päivää sitten' },
sv: { today: 'Idag', yesterday: 'Igår', daysAgo: 'dagar sedan' },
en: { today: 'Today', yesterday: 'Yesterday', daysAgo: 'days ago' }
};
lang = lang && (lang in labs) ? lang : 'fi';
return labs[lang][id];
}
};
Date.prototype.getWeekNumber = function(){
var d = new Date(+this);
d.setHours(0,0,0);
d.setDate(d.getDate()+4-(d.getDay()||7));
return Math.ceil((((d-new Date(d.getFullYear(),0,1))/8.64e7)+1)/7);
};
Date.prototype.yyyymmdd = function() {
var yyyy = this.getFullYear().toString();
var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
var dd = this.getDate().toString();
return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]);
};
Date.prototype.getDayOfYear = function () {
var aggregateMonths = [0, // January
31, // February
31 + 28, // March
31 + 28 + 31, // April
31 + 28 + 31 + 30, // May
31 + 28 + 31 + 30 + 31, // June
31 + 28 + 31 + 30 + 31 + 30, // July
31 + 28 + 31 + 30 + 31 + 30 + 31, // August
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31, // September
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30, // October
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31, // November
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30, // December
];
return (aggregateMonths[this.getMonth()] + this.getDate());
}
Date.prototype.getMonthName = function(lang) {
lang = lang && (lang in Date.locale) ? lang : 'en';
return Date.locale[lang].month_names[this.getMonth()];
};
Date.prototype.getMonthNameShort = function(lang) {
lang = lang && (lang in Date.locale) ? lang : 'en';
return Date.locale[lang].month_names_short[this.getMonth()];
};
Date.locale = {
fi: {
month_names: ['Tammikuu', 'Helmikuu', 'Maaliskuu', 'Huhtikuu', 'Toukokuu', 'Kesäkuu', 'Heinäkuu', 'Elokuu', 'Syyskuu', 'Lokakuu', 'Marraskuu', 'Joulukuu'],
month_names_short: ['Tammi', 'Helmi', 'Maalis', 'Huhti', 'Touko', 'Kesä', 'Heinä', 'Elo', 'Syys', 'Loka', 'Marras', 'Joulu']
},
sv: {
month_names: ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],
month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']
},
en: {
month_names: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
}
};
function hslToRgb(h, s, l){
/**
* Converts an HSL color value to RGB. Conversion formula
* adapted from //en.wikipedia.org/wiki/HSL_color_space.
* Assumes h, s, and l are contained in the set [0, 1] and
* returns r, g, and b in the set [0, 255].
*
* @param Number h The hue
* @param Number s The saturation
* @param Number l The lightness
* @return Array The RGB representation
*/
var r, g, b;
if(s == 0){
r = g = b = l; // achromatic
}else{
function hue2rgb(p, q, t){
if(t < 0) t += 1;
if(t > 1) t -= 1;
if(t < 1/6) return p + (q - p) * 6 * t;
if(t < 1/2) return q;
if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
return p;
}
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1/3);
}
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}