// JavaScript Document
function namosw_init_clock() 
{ 
//*************************************Expliquation sur le fonctionnement du script*********************************** 
//Ce programme permet de créer une horloge en temps réel 
//On peut définir autant d'horloge que l'on souhaite (sur une même page) chaqu'une d'entre elle doit être definie par 2 paramètres le premier 
//permet de définir l'id de la balise span dans laquelle l'horloge apparaitra et le second paramètre permet de definir 
//le type d'horloge à utiliser 
//7 types d'horloge peuvent être affichées 
//******************************************************************************************************************** 
//Cette fonction permet de charger les paramètres qui définissent les différentes horloges (localisation et type de l'horloge) 
//ainsi que le contenu des tableaux contenant les noms des jours et des mois lors du chargement de la page 
  
  var type, i, top, obj, clocks, strobj, tempvar; 
  clocks = new Array(); 
  //Permet de récupérer les n argument définits dans les paramètres de la fonction namosw_init_clock() lors du chargement de la page 
  for (i = 0, top = 0; i < namosw_init_clock.arguments.length; i += 2)//ici on extrait chaque paramètre définit dans la fonction namosw_init_clock() lors du chargement de la page et on les places dans un tableau objet 
      { 
      //namosw_init_clock.arguments[i] : paramètre i définit dans les arguments de la fonction namosw_init_clock(argument1, argument2,...) 
    strobj = eval('document.getElementById("' + namosw_init_clock.arguments[i] + '")');//Permet de définir l'objet dans lequel sera afficher l'horloge sur la page html à partir des paramètres paires définit dans la fonction lors du chargement de la page 
    type = namosw_init_clock.arguments[i+1]; 
    if (type < 1 && 7 < type) continue; 
    clocks[top++] = strobj; 
    clocks[top++] = type; 
      } 
  //*****************definition des tableau contenant les noms des mois et des jours**************** 
  clocks.months = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 
                            'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'); 
  clocks.days = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 
                            'Jeudi', 'Vendredi', 'Samedi'); 
  //************************************************************************************************ 
  if (top > 0) 
      { 
    document.namosw_clocks = clocks; 
    namosw_clock(); 
      } 
} 
  
function namosw_clock() 
{ 
//fonction permettant l'affichage des différentes horloges suivant les différents formats ainsi que les différents endroits 
//(au niveau des balises span) ainsi que le lancement de l'execution toutes les secondes 
  var i, type, clocks, next_call, str, hour, ampm, now, year2, year4; 
  clocks = document.namosw_clocks; 
  if (clocks == null) return; 
  next_call = false; 
  //affichage de toutes les horloges en fonction du type et de l'id de la balise span dans laquelle l'horloge sera affiché 
    for (i = 0; i < clocks.length; i += 2) { 
    obj = clocks[i];//objet dans lequel sera affiché la n ième horloge 
    type = clocks[i+1];//type d'affichage de la n ième horloge 
    now = new Date(); 
    year2 = now.getYear(); 
    year4 = year2; 
    if (year2 < 1000) year4 = 1900 + year2; 
    if (year2 >= 100) year2 = year4; 
    //définition des formats en fonction du type 1,2,3,4... 
    //remarque : document.getElementById("type1").innerHTML permet d'afficher la date ou l'heure au niveau de la balise span ayant comme id type1 
    if (type == 1 || type == 2) 
        { 
          obj.innerHTML = now.getDate() + ' ' + clocks.months[now.getMonth()] + ' ' + year4; 
          if (type == 2) 
            obj.innerHTML = clocks.days[now.getDay()] + ' ' + obj.innerHTML; 
        } 
    else if (type == 3 || type == 4) 
        { 
          obj.innerHTML = year2 + '/' + (now.getMonth()+1) + '/' + now.getDate(); 
        } 
    else if (type == 5 || type == 6) 
        { 
          obj.innerHTML = (now.getMonth()+1) + '/' + now.getDate() + '/' + year2; 
        } 
     
    if (type == 2 || type == 6 || type == 7) 
        { 
          hour = now.getHours(); 
          ampm = 0; 
          //Dans cette ligne on teste aussi si les minutes et(ou) les secondes sont <10 si c'est le cas on concatène un 0 devant 
          //l'heure et(ou) les secondes (on pourrait faire la même chose avec les heures 
          str = hour +':'+ ((now.getMinutes() < 10) ? '0'+now.getMinutes():now.getMinutes()) +':'+ ((now.getSeconds() < 10) ? '0'+now.getSeconds():now.getSeconds()); 
          if (type == 7) 
              { 
              obj.innerHTML = str; 
              } 
          else 
              { 
              obj.innerHTML += ' ' + str; 
              } 
        } 
    //si on utilise l'affichage de l'heure on met la variable next_call a true afin d'executer (settimeout) la fonction namosw_clock() 
    //toutes les secondes (1000 millisecondes) pour obtenir l'affichage des secondes en temps réel 
    if (type == 2 || type == 6 || type == 7) 
        next_call = true; 
  }//fin for 
  if (next_call) 
    window.setTimeout("namosw_clock();", 1000); 
}//fin fonction 
// --> 