/* auteur: Bernard Martin-Rabaud */
/* Date de création: 10/11/2003 modifié le 28/01/2005 */

// FONCTIONS ET METHODES D'AFFICHE DE LA DATE

function complete2(nombre) {
   // met un "0" devant un nombre s'il est < 10
   return (nombre < 10) ? "0" + nombre : nombre;
}

Date.prototype.afficherDate = function() {
   // affiche la date
   return complete2(this.getDate()) + "/" + complete2(this.getMonth() + 1) + "/" + this.getFullYear();
}

Date.prototype.afficherHeure = function() {
   // affiche l'heure
   return complete2(this.getHours()) + ":" + complete2(this.getMinutes()) + ":" + complete2(this.getSeconds());
}

Date.prototype.afficherDateHeure = function() {
   return this.afficherDate() + " " + this.afficherHeure();
}

// CALCUL SIMPLE DE L'HEURE LOCALE EN FONCTION DU FUSEAU HORAIRE

function calculerHeureLocale(mon_fuseau) {
    // calcule l'heure en fonction du fuseau horaire - retourne un objet Date
    var heure = new Date();  
    heure.setTime(heure.getTime() + (heure.getTimezoneOffset() + mon_fuseau*60) * 60 * 1000);
    return heure;
}


// CALCUL DE L'HEURE LOCALE EN TENANT COMPTE DE L'HEURE D'HIVER/ETE DANS L'EU

function dernierDimanche(an, mois, heure) {
    // retourne un objet Date au dernier dimanche du mois à l'heure indiquée
    var jour = new Date(an, mois, 1, heure, 0, 0);
    // jour du 1er du mois (lundi : 0, mardi : 1, ..., dimanche : 6)
    jour_semaine = jour.getDay() ? jour.getDay() + 1 : 6;
    jour.setTime(jour.getTime() + (28 - jour_semaine)*24*60*60*1000);
    return jour;
}

Date.prototype.correctionHeureHiverEte = function() {
    var dd_mars = dernierDimanche(this.getFullYear(), 2, 2);
    var dd_oct = dernierDimanche(this.getFullYear(), 9, 2);
    if ((this.getTime() >= dd_mars.getTime()) && (this.getTime() <= dd_oct.getTime())) 
        this.setTime(this.getTime() + 60*60*1000);
}


// CALCUL DES HEURES LOCALES DE DIFFERENTS PAYS

function afficherHeurePays(fuseau) {
    // l'argument fuseau contient le fuseau horaire,
    // sauf pour l'Europe occidentale où il contient "1,2" (heure d'hiver, heure d'été)
    if (fuseau.indexOf(",") == -1)
        var heure = calculerHeureLocale(fuseau);
    else {
        var fuseaux = fuseau.split(",");
        var heure = calculerHeureLocale(fuseaux[0]);
        heure.correctionHeureHiverEte();
    }
    return heure.afficherHeure();
} 


function afficherDatePays(fuseau) {
    // l'argument fuseau contient le fuseau horaire,
    // sauf pour l'Europe occidentale où il contient "1,2" (heure d'hiver, heure d'été)
    if (fuseau.indexOf(",") == -1)
        var heure = calculerHeureLocale(fuseau);
    else {
        var fuseaux = fuseau.split(",");
        var heure = calculerHeureLocale(fuseaux[0]);
        heure.correctionHeureHiverEte();
    }
    return heure.afficherDate();
} 


function twAffHeure(fuseau) {
  	document.getElementById("heure").innerHTML = 'HEURE '+afficherHeurePays(fuseau);
  	document.getElementById("date").innerHTML = 'DATE '+afficherDatePays(fuseau);
   	var vscript = "twAffHeure('"+fuseau+"')";
  	// alert (vscript);
   	oDelais = setTimeout(vscript,1000);
 }
