var aLayer = new String();
var aStyle = new String();
var theCalDiv = new String();
var divToHide = false;
var timeoutDelay = 750;
var xPos = 0;
var yPos = 0;
var calBodyFont = new String();
   
	
//-- Accession aux balises <DIV> selon les navigateurs
  if (isBrowser.ie4 || isBrowser.ie5) {
    aLayer = ".all";
	  aStyle = ".style";
	  theCalDiv = "['CALENDAR_DIV']";
	  calBodyFont = "7pt";
  }else if (isBrowser.ns4) {
    aLayer = ".layers";
	  aStyle = "";
	  theCalDiv = "['CALENDAR_DIV']";
	  if (isBrowser.mac){
	    calBodyFont = "9pt";
	  }else{
	    calBodyFont = "7.5pt";
	  }  
  }else if (isBrowser.ns6) {
    aLayer = ".getElementById";
	  aStyle = ".style";
	  theCalDiv = "('CALENDAR_DIV')";
	  calBodyFont = "7pt";
  }	 

//--  Déclaration de division pour affichage dynamique du calendrier --
//--  DOIT NÉCESSAIREMENT ÊTRE INCLUS À L'INTÉRIEUR D'UNE BALISE <FORM> --
document.writeln('<STYLE type="text/css">');
    document.writeln('#CALENDAR_DIV {'); 
      document.writeln('position: absolute;'); 
      //-- Doit être négatif pour IE sur Mac
      document.writeln('top: -145px;'); 
      document.writeln('left: 0px;'); 
      document.writeln('width: 145px;');
      document.writeln('height: 145px;');
      document.writeln('overflow: visible;');
      document.writeln('background-color: #ffffff;');
      document.writeln('z-index: 2;'); 
      document.writeln('visibility: hidden;'); 
    document.writeln('}');
    
    document.writeln('.calendar_header { background-color: #003399; }');
    document.writeln('.calendar_header_text { color: #6699CC; background-color: #003399; font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: ' + calBodyFont + '; font-weight: bold; }');
    
    if((isBrowser.mac) && (isBrowser.ns4)){
      document.writeln('.calendar_header_month { background-color: #003399; font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: ' + calBodyFont + '; font-weight: bold; }');
      document.writeln('.calendar_header_day { background-color: #6699CC; font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: ' + calBodyFont + '; font-weight: bold; }');
    }else{
      document.writeln('.calendar_header_month { color: #ffffff; background-color: #003399; font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: ' + calBodyFont + '; font-weight: bold; }');
      document.writeln('.calendar_header_day { color: #ffffff;  background-color: #6699CC; font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: ' + calBodyFont + '; font-weight: bold; }');
    }
    
    document.writeln('.calendar_work_day { background-color: #ffffff; }');
    document.writeln('.calendar_week_end { background-color: #DBEAF5; }');
    document.writeln('.calendar_current_day { background-color: #FFE44F; font-weight: bold;}');
    document.writeln('.calendar_day_text { color: #000000; font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: ' + calBodyFont + '; text-decoration: none; }');
    document.writeln('.calendar_day_grey { color: #999999; font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: ' + calBodyFont + '; text-decoration: none; }');
  document.writeln('</STYLE>');
  
  document.writeln('<DIV id="CALENDAR_DIV" onmouseout="hideCalendar();"'); 
    document.writeln('onmouseover="if (divToHide){ clearTimeout(divToHide); divToHide = false; }"></DIV>');
//--  Fin calendrier division --

//-- Utiliser avec le script date_picker_fr.js ou date_picker_en.js
function openDate(event, elementName, elementValue){
   doCalendarPositioning(event);
   show_calendar(elementName, elementValue);
   eval("document" + aLayer + theCalDiv + aStyle + ".visibility = 'visible'");
  
}

//-- Utiliser avec le script date_time_picker_fr.js ou date_time_picker_en.js
function openDateTime(event, elementName, elementValue){
   doCalendarPositioning(event);
   show_date_time(elementName, elementValue);
   eval("document" + aLayer + theCalDiv + aStyle + ".visibility = 'visible'");
}


/**************************************************************/
//-- Positionnement du calendrier par rapport à un évènement click
//-- de la souris.

function setXY(someX, someY){
  //-- Affichage à gauche du click de souris
  //-- Valeurs par défaut pouvant être ajustées
  //-- sur l'appel de la méthode
  xPos = someX - 170;
  yPos = someY - 15;
}

function doCalendarPositioning(event){
  //-- Positionnement du CALENDAR_DIV selon le navigateur
  
  //-- Positionnement exact du calendrier
  if (isBrowser.ie5 || isBrowser.ie4){
    var event = window.event;
    var obj = event.srcElement;
    x = 0;
		while (obj.offsetParent != null) {
  		  x += obj.offsetLeft;
  		  obj = obj.offsetParent;
		}
		x += obj.offsetLeft;
    y = 0;
	  var obj = event.srcElement;
	  
    while (obj.offsetParent != null) {
  		  y += obj.offsetTop;
  		  obj = obj.offsetParent;
		}
		y += obj.offsetTop;
	
    eval("document" + aLayer + theCalDiv + aStyle + ".left = x + 20");
    if (event.y>0) {
	    eval("document" + aLayer + theCalDiv + aStyle + ".top = y");
	  }
  }
  
  if (isBrowser.ns4){
    eval("document" + aLayer + theCalDiv + aStyle + ".x = event.x + 20");
    eval("document" + aLayer + theCalDiv + aStyle + ".y = event.y - 5");
  }
  
  if (isBrowser.ns6){
    eval("document" + aLayer + theCalDiv + aStyle + ".left = event.pageX + 20");
    eval("document" + aLayer + theCalDiv + aStyle + ".top = event.pageY - 5");
  }
    
}

//-- Peuplement dynamique du calendrier
//-- La chaîne strHTML contenant des balises HTML,
//-- l'accès à la division est déclarée au long.
function drawCalendar(strHTML){
  if (isBrowser.ie5 || isBrowser.ie4){
    document.all['CALENDAR_DIV'].innerHTML = strHTML;
  }else if (isBrowser.ns4){
    document.layers['CALENDAR_DIV'].document.open();
	  document.layers['CALENDAR_DIV'].document.write(strHTML);
	  document.layers['CALENDAR_DIV'].document.close();;
  }else if (isBrowser.ns6) {
    var aDiv = document.getElementById("CALENDAR_DIV");
    aDiv.innerHTML = strHTML;
  }
}

/**************************************************************/
//-- Fermeture du calendrier sur l'évènement onmouseout.
function hideCalendar(){
  //-- Programmation d'un court délai avant la fermeture du calendrier,
  //-- en millisecondes
  divToHide = setTimeout("doHideAfterWait()",timeoutDelay);
}

//-- Exécution de la fermeture
function doHideAfterWait(){
  if (divToHide){
    if (isBrowser.ns4){
      eval("document" + aLayer + theCalDiv + aStyle + ".hidden = true");
      //document.layers['CALENDAR_DIV'].visibility = "hidden";
    }else{
      eval("document" + aLayer + theCalDiv + aStyle + ".visibility = 'hidden'");
    }
    clearTimeout(divToHide);
    divToHide = false;
  }
}

