// Définition de la classe WTDate.

function WTDate()
{
   // Initialisation des propriétes de l'objet.
   this.format = "short";
   this.lang = "fr";
   this.casse = "lower";
   this.mode = 0;
   this.realtime = false;
   
   this.fontSize = 10;
   this.color = "#000000"
   this.bgColor = "#ffffff";
   
   this.left = 0;
   this.top = 0;
   this.width = 220;
   this.height = 15;
   this.borderColor = "#000000";
   this.borderWidth = 1
   
   var awtD_us = new Array('sunday','monday','tuesday','wednesday','thursday','friday','saturday');
   var awtM_us = new Array('january','february','march','april','may','june','july'
      ,'august','september','october','november','december');
   var awtD_es = new Array('domingo','lunes','martes','miercoles','jueves','viernes','sabato');
   var awtM_es = new Array('enero','febrero','marzo','abril','mayo','junio','julio'
      ,'agosto','septiembre','octubre','noviembre','diciembre');
   var awtD_fr = new Array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
   var awtM_fr = new Array('janvier','février','mars','avril','mai','juin','juillet'
      ,'aoüt','septembre','octobre','novembre','decembre');

   // Initialisation des méthodes de l'objet.
   this.displayWT = function( pid )
   {
      // Contrôle des valeurs des propriétés.
      var wtformat = ( this.format != 'none' && this.format != 'short' && this.format != 'long' )? 'none' : this.format;
      var wtlang = ( this.lang != 'fr' && this.lang != 'us' && this.lang != 'es' )? 'fr' : this.lang;
      var wtcasse = ( this.casse != 'lower' && this.casse != 'upper' )? 'lower' : this.casse;
      var wtmode = ( this.mode != 'none' && this.mode != 12 && this.mode != 24 )? 'none' : this.mode;
      var wtrealtime = ( this.realtime != false && this.realtime != true)? false : this.realtime;
      
      var wtfontSize = ( isNaN(this.fontSize) )? 10 : this.fontSize;
      var wtleft = ( isNaN(this.left) )? 0 : this.left;
      var wttop = ( isNaN(this.top) )? 0 : this.top;
      var wtwidth = ( isNaN(this.width) )? 220 : this.width;
      var wtheight = ( isNaN(this.height) )? 15 : this.height;
      var wtborderWidth = ( isNaN(this.borderWidth) )? 1 : this.borderWidth;
      
            
      // Creation, wtformatage et affichage dans le document de l'éléments container du WorldTimer
      // *******************************************************************
      
      // Creation d'un nouvel identifiant pour l'objet INPUT.
      var i = 1;
      do {
         var wtid = "wtinput_" + i;
         i++;
      } while (document.getElementById(wtid));
   
      // Création de l'élément
      var elInput = document.createElement("INPUT");
      elInput.setAttribute('type','text');
      elInput.setAttribute('id',wtid);
      elInput.unselectable = "On";
      
      // Vérification de l'argument de methode
      // si il est vide : alors insertion dynamique du champ INPUT
      // sinon : insertion du champ INPUT dans l'élément référencé par 'pid'.
      if ( pid != null ) { 
         
         // Insertion dans 'pid'.
         document.getElementById(pid).appendChild(elInput);
      } else {
         
         // Insertion Dynamique.
         document.getElementsByTagName('body').item(0).appendChild(elInput);
         with(document.getElementById(wtid).style) {
            position = "absolute";
            left = wtleft + "px";
            top = wttop + "px";
         }
      }
      
      // wtformatage du champ.
      with(document.getElementById(wtid).style) {
         width = wtwidth + "px";                  // 220 fr - 260 us et es
         height = wtheight + "px";
         borderColor = this.borderColor;
         borderStyle = "solid";
         borderWidth = wtborderWidth + "px";
         fontFamily = "sans-serif";
         fontSize = wtfontSize + "px";
         color = this.color;
         backgroundColor = this.bgColor;
         textAlign = "center";
      }
      
      
      this.engineRealTime = function()
      {
         // Recupération de la date et de l'heure courante.
         var dNow = new Date();
         var dday = dNow.getDay();
         var ddate = dNow.getDate();
         var dmonth = dNow.getMonth();
         var dyear = dNow.getFullYear();
   
         var dhrs = dNow.getHours();
         var dmns = dNow.getMinutes();
         var dmns = ( dmns < 10 )? '0' + dmns : dmns;
         var dscs = dNow.getSeconds();
         var dscs = ( dscs < 10 )? '0' + dscs : dscs;
         var dmil = dNow.getMilliseconds();
      
         // wtformat de l'heure.
         switch ( wtmode ) {
            case 'none' :
               gthetime = '';
               gseparation = '';
               break;
            case 12 :
               gampm = (dhrs > 12)? ' pm' : ' am';
               dhrs = (dhrs > 12)? dhrs-12 : dhrs;
               dhrs = (dhrs < 10)? '0' + dhrs : dhrs;
               gthetime = dhrs + '.' + dmns + '.' + dscs + gampm;
               gseparation = '  -  ';
               break;
            case 24 :
               dhrs = (dhrs < 10)? '0' + dhrs : dhrs;
               gthetime = dhrs + ':' + dmns + ':' + dscs;
               gseparation = '  -  ';
               break;
         }
      
         // wtformat de la date et traduction de celle-ci dans la wtlangue choisie.
         switch ( wtlang ) {
            case 'fr' :
               if (wtformat == 'long') {
                  gthedate = awtD_fr[dday] + ' ' + ddate + ' ' + awtM_fr[dmonth] + ' ' + dyear; 
                  gthedate = gthedate + gseparation + gthetime;
                  break;
               }
               if (wtformat == 'short') {
                  dmonth = ((dmonth + 1) < 10)? '0' + (dmonth+1) : dmonth+1;
                  ddate = (ddate < 10)? '0' + ddate : ddate;
                  gthedate = ddate + '/' + dmonth + '/' + dyear;
                  gthedate = gthedate + gseparation + gthetime;
                  break;
               }
               if (wtformat == 'none') {
                  gthedate = gthetime;
                  break;
               }
            case 'us' :
               if (wtformat == 'long') {
                  gthedate = awtD_us[dday] + ', ' + awtM_us[dmonth] + ' ' + ddate + 'th, ' + dyear; 
                  gthedate = gthedate + gseparation + gthetime;
                  break;
               }
               if (wtformat == 'short') {
                  dmonth = ((dmonth + 1) < 10)? '0' + (dmonth+1) : dmonth+1;
                  ddate = (ddate < 10)? '0' + ddate : ddate;
                  gthedate = dyear + '/' + dmonth + '/' + ddate;
                  gthedate = gthedate + gseparation + gthetime;
                  break;
               }
               if (wtformat == 'none') {
                  gthedate = gthetime;
                  break;
               }
            case 'es' :
               if (wtformat == 'long') {
                  gthedate = awtD_es[dday] + ' ' + ddate + ' de ' + awtM_es[dmonth] + ' de ' + dyear; 
                  gthedate = gthedate + gseparation + gthetime;
                  break;
               }
               if (wtformat == 'short') {
                  dmonth = ((dmonth + 1) < 10)? '0' + (dmonth+1) : dmonth+1;
                  ddate = (ddate < 10)? '0' + ddate : ddate;
                  gthedate = ddate + '/' + dmonth + '/' + dyear;
                  gthedate = gthedate + gseparation + gthetime;
                  break;
               }
               if (wtformat == 'none') {
                  gthedate = gthetime;
                  break;
               }
         } 
      
      
      
         // Gestion de la wtcasse et ecriture de la date dans le champ.
         gthedate = (wtcasse == 'upper')? gthedate.toUpperCase() : gthedate;
         document.getElementById(wtid).value = gthedate;
      }   // Fin Methode engineRealTime.
      
      if( wtrealtime ) { window.setInterval(this.engineRealTime, 1000) } else { this.engineRealTime(); }

   }   // Fin Methode displayWT.
      
}