« Utilisateur:Pinocchio/yearnav.js » : différence entre les versions
De BoyWiki
(test) |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
/* Yearnav */ | /* Yearnav */ | ||
/* Navigation à travers les années - destiné aux pages années | /* Navigation à travers les années - destiné aux pages années | ||
Ligne 80 : | Ligne 79 : | ||
yearnavparam['bar'].style.wordSpacing = (initwin - lgbar)/6; | yearnavparam['bar'].style.wordSpacing = (initwin - lgbar)/6; | ||
} | } | ||
addOnloadHook(yearnav); | |||
Version du 30 mars 2009 à 17:32
/* Yearnav */
/* Navigation à travers les années - destiné aux pages années
/* moyen d'accès aux autres années, siècles ou millénaires */
/* tableau global des pages années - généré par xx */
var yearnavlist = new Array();
yearnavlist['1922'] = 'zzz';
yearnavlist['2000'] = 'zzz';
var yearnavparam = new Array();
function yearnav() {
if (document.getElementById('yearnav') == undefined) return;
yearnavparam['cdr'] = document.getElementById('yearnav');
yearnavparam['win'] = document.getElementById('yearwin');
yearnavparam['bar'] = document.getElementById('yearbar');
yearnavparam['cen'] = document.getElementById('yearbtnsc');
yearnavparam['mil'] = document.getElementById('yearbtnmc');
/* init event boutons shift */
var btntab = 'yearbtnal yearbtnar yearbtnsl yearbtnsr yearbtnml yearbtnmr'.split(/ /);
for (var i = 0; i < btntab.length ; i++) {
document.getElementById(btntab[i]).onmousedown = yearnav_shift_start;
document.getElementById(btntab[i]).onmouseup = yearnav_shift_stop;
document.getElementById(btntab[i]).onmouseout = yearnav_shift_stop;
}
/* récup année initiale */
yearnavparam['ymid'] = 0;
if (yearnavparam['bar'].firstChild.data) yearnavparam['ymid'] = parseInt(yearnavparam['bar'].firstChild.data.replace(/\n/g,''));
/* init barre dates initiales */
if (yearnavparam['ymid'] == 0) {
var now = new Date();
yearnavparam['ymid'] = parseInt(now.getFullYear());
}
/* si lien inexistant */
var lnk = '';
if (yearnavlist[yearnavparam['ymid']] == undefined) lnk = 'nolnk';
var str = '<a class="'+lnk+'" href="/wiki/'+yearnavparam['ymid']+'">'+yearnavparam['ymid']+'</a>';
var n = 1, m = -1;
for (var i = 1; i < 4 ; i++) {
if (yearnavparam['ymid']+m == 0) m--;
lnk = '';
if (yearnavlist[yearnavparam['ymid']+m] == undefined) lnk = 'nolnk';
str = '<a class="'+lnk+'" href="/wiki/'+(yearnavparam['ymid']+m)+'">'+(yearnavparam['ymid']+m--)+'</a> '+str;
if (yearnavparam['ymid']+n == 0) n++;
lnk = '';
if (yearnavlist[yearnavparam['ymid']+n] == undefined) lnk = 'nolnk';
str = str+' <a class="'+lnk+'" href="/wiki/'+(yearnavparam['ymid']+n)+'">'+(yearnavparam['ymid']+n++)+'</a>';
}
yearnavparam['bar'].innerHTML = str;
yearnavparam['ylow'] = (yearnavparam['ymid'])+m+1;
yearnavparam['yhig'] = (yearnavparam['ymid'])+n-1;
/* init siècle et millénaire */
if (yearnavparam['ymid'] > 0) {
var x = Math.ceil(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/wiki/'+arabtoroman(x)+'e_siècle';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle';
x = Math.ceil(yearnavparam['ymid'] / 1000);
yearnavparam['mil'].firstChild.href = '/wiki/'+arabtoroman(x)+'e_millénaire';
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire';
} else {
var x = Math.floor(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/wiki/'+arabtoroman(x)+'e_siècle_av._J.-C.';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle av. J.-C.';
var x = Math.floor(yearnavparam['ymid'] / 1000);
yearnavparam['mil'].firstChild.href = '/wiki/'+arabtoroman(x)+'e_millénaire_av._J.-C.';
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire av. J.-C.';
}
/* ajuste espacement contenu à largeur fenêtre */
yearnavparam['bar'].style.wordSpacing = 0;
var lgbar = yearnavparam['bar'].offsetWidth;
var initwin = yearnavparam['win'].offsetWidth;
yearnavparam['bar'].style.wordSpacing = (initwin - lgbar)/6;
}
addOnloadHook(yearnav);
/* lancée par flèches de navigation années/siècles/millénaires */
function yearnav_shift_start() {
var idevent = this.id;
yearnav_shift(idevent);
yearnavparam['cnt'] = 0;
yearnavparam['int'] = setInterval(function() { yearnav_shift(idevent); }, 300);
}
/* boucle de défilement des années */
function yearnav_shift(idevent) {
var lgbar = yearnavparam['bar'].offsetWidth;
var newy = yearnavparam['ymid'];
switch (idevent) {
case "yearbtnal":
if (yearnavparam['ylow'] > -9999) newy = newy - 1;
if (newy == 0) newy = -1;
break;
case "yearbtnar":
if (yearnavparam['yhig'] < 9999) newy = newy + 1;
if (newy == 0) newy = 1;
break;
case "yearbtnsl":
if (yearnavparam['ylow'] > -9900) newy = newy - 100;
if (newy == 0) newy = -1;
break;
case "yearbtnsr":
if (yearnavparam['yhig'] < 9900) newy = newy + 100;
if (newy == 0) newy = 1;
break;
case "yearbtnml":
if (yearnavparam['ylow'] > -9000) newy = newy - 1000;
if (newy == 0) newy = -1;
yearnavparam['cnt'] = 0;
break;
case "yearbtnmr":
if (yearnavparam['yhig'] < 9000) newy = newy + 1000;
if (newy == 0) newy = 1;
yearnavparam['cnt'] = 0;
break;
}
/* recrée barre avec nouvelles dates */
var lnk = '';
if (yearnavlist[newy] == undefined) lnk = 'nolnk';
var str = '<a class="'+lnk+'" href="/wiki/'+newy+'">'+newy+'</a>';
var n = 1, m = -1;
for (var i = 1; i < 4 ; i++) {
if (newy + m == 0) m--;
lnk = '';
if (yearnavlist[newy+m] == undefined) lnk = 'nolnk';
str = '<a class="'+lnk+'" href="/wiki/'+(newy + m)+'">'+(newy + m--)+'</a> '+str;
if (newy + n == 0) n++;
lnk = '';
if (yearnavlist[newy+n] == undefined) lnk = 'nolnk';
str = str+' <a class="'+lnk+'" href="/wiki/'+(newy + n)+'">'+(newy + n++)+'</a>';
}
yearnavparam['bar'].innerHTML = str;
yearnavparam['ymid'] = newy;
yearnavparam['ylow'] = (newy + m + 1);
yearnavparam['yhig'] = (newy + n - 1);
/* réajuste espacement (si largeur nombres diff) */
yearnavparam['bar'].style.wordSpacing = 0;
var lgbar = yearnavparam['bar'].offsetWidth;
var initwin = yearnavparam['win'].offsetWidth;
yearnavparam['bar'].style.wordSpacing = (initwin - lgbar) / 6;
/* init siècle et millénaire */
if (yearnavparam['ymid'] > 0) {
var x = Math.ceil(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/wiki/'+arabtoroman(x)+'e_siècle';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle';
x = Math.ceil(yearnavparam['ymid'] / 1000);
yearnavparam['mil'].firstChild.href = '/wiki/'+arabtoroman(x)+'e_millénaire';
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire';
} else {
var x = Math.floor(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/wiki/'+arabtoroman(x)+'e_siècle_av._J.-C.';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle av. J.-C.';
var x = Math.floor(yearnavparam['ymid'] / 1000);
yearnavparam['mil'].firstChild.href = '/wiki/'+arabtoroman(x)+'e_millénaire_av._J.-C.';
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire av. J.-C.';
}
/* vitesse shift */
if (yearnavparam['cnt']++ == 6) {
clearInterval(yearnavparam['int']);
yearnavparam['int'] = setInterval(function() { yearnav_shift(idevent); }, 100);
}
}
/* arrêt défilement */
function yearnav_shift_stop() {
clearInterval(yearnavparam['int']);
}
/* convertisseur nombre en romain de 1 à 99 */
function arabtoroman(num) {
var unit = new Array('','I','II','III','IV','V','VI','VII','VIII','IX');
var tens = new Array('','X','XX','XXX','XL','L','LX','LXX','LXXX','XC');
var t = Math.floor(Math.abs(num) / 10);
var u = Math.abs(num) % 10;
return(tens[t]+unit[u]);
}