/* 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 this.getFullYear() + "," + complete2(this.getMonth() - 1) + "," + complete2(this.getDate())  ;

}



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;

}



function afficherMonHeure1(mon_fuseau) {

    // affiche l'heure en fonction du fuseau horaire

    var heure = calculerHeureLocale(mon_fuseau);  

    return heure.afficherDateHeure();

}



// 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);

}



function afficherMonHeure2(mon_fuseau_hiver) {

    var heure = calculerHeureLocale(mon_fuseau_hiver);  

    // correction pour les pays européens qui changent d'heure hiver/été

    heure.correctionHeureHiverEte();

    return heure.afficherDateHeure();

}



// 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.afficherDateHeure();

} 



// POUR AFFICHAGE DE L'HEURE LOCALE EN PAGE 2



function remplirInputHeureLocale() {

    document.forms["mon_heure_locale"].mon_heure.value = afficherMonHeure2(1);

//    document.forms["mon_heure_locale"].mon_heure.value = "mon cul";

}

