var obj_date_mois;
var obj_date_annee;
var obj_date_jour;
var obj_date_jour_semaine;
var obj_date_deb_mois_suiv;
var obj_date_fin_mois_prec;
var the_color = "";

function calendrier(dec, name, fonction, fr) {
  var calendrier2 = document.getElementById('calendrier');
  //Construction du tableau des mois
  if(fr) var tabMois = new Array("Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");
  else var tabMois = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
  //Récupération du mois et de l'année
  obj_date_mois = obj_date_mois + dec;
  if(obj_date_mois == 0) {
    obj_date_mois = 12;
    obj_date_annee -= 1;
  }
  if(obj_date_mois == 13) {
    obj_date_mois = 1;
    obj_date_annee += 1;
  }
  //Récupération du nombre de jour du mois en cours
  var nbre_jours;
  switch(obj_date_mois) {
    case 1 : 
    case 3 :
    case 5 :
    case 7 :
    case 8 :
    case 10 :
    case 12 : nbre_jours=31;
    break;
    case 4 :
    case 6 :
    case 9 :
    case 11 : nbre_jours=30;
    break;
    case 2 : 
      //Vérification du caractère bisextile de l'année
      if((obj_date_annee % 4) == 0) {
        if(((obj_date_annee % 100) == 0) && ((obj_date_annee % 1000) != 0)) nbre_jours = 28;
        else nbre_jours = 29;
      }
      else nbre_jours = 28;
    break;
  }
  //Recherche du jour de la semaine correspondant au 1 du mois en cours
  if(dec == 1) {
    obj_date_jour = 1;
    obj_date_jour_semaine = obj_date_deb_mois_suiv;
  }
  if(dec == -1) {
    obj_date_jour = nbre_jours;
    obj_date_jour_semaine = obj_date_fin_mois_prec;
  }
  while(obj_date_jour != 1) {
    obj_date_jour -= 1;
    obj_date_jour_semaine -= 1;
    if(obj_date_jour_semaine == -1) obj_date_jour_semaine = 6;
  }
	if(obj_date_jour_semaine==7) obj_date_jour_semaine = 0;
  //Initialisation du tableau des jours
  for(j=2;j<8;j++) {
    for(k=0;k<7;k++) {
      calendrier2.rows[j].cells[k].innerHTML = "&nbsp;";
    }
  }
  //Affichage des jours dans le tableau
  var cellule = obj_date_jour_semaine;
  var ligne = 2;
	
  obj_date_fin_mois_prec = obj_date_jour_semaine - 1;
  if(obj_date_fin_mois_prec == -1) obj_date_fin_mois_prec = 6
  for(i=1;i<=nbre_jours;i++) {
		calendrier2.rows[ligne].cells[cellule].innerHTML = "<a class=\"lien\" href=\"javascript:selection(" + i + ", '" + name + "', '" + fonction + "');\" onmouseover=\"self.status='';return true;\">" + i + "</a>";
    cellule += 1;
    if(cellule == 7) {
      cellule = 0;
      ligne += 1;
    }
  }
  obj_date_deb_mois_suiv = cellule;
  //Affichage du mois et de l'année
  if(document.all) {
    mon_choix = document.getElementById("choixDate");
    mon_tableau = mon_choix.childNodes[0];
    ma_ligne = mon_tableau.childNodes[0];
    ma_celulle = ma_ligne.childNodes[0];
    ma_celulle.childNodes[1].innerHTML = tabMois[obj_date_mois-1] + " " + obj_date_annee;
  }
  else {
    mon_choix = document.getElementById("choixDate");
    mon_tableau = mon_choix.childNodes[1];
    ma_ligne = mon_tableau.childNodes[1];
    ma_celulle = ma_ligne.childNodes[0];
    ma_celulle.childNodes[3].innerHTML = tabMois[obj_date_mois-1] + " " + obj_date_annee;
  }
}

function selection(val, name, fonction){
  var ladate = document.getElementById(name);
  if(val<10) val = "0" + val;
  if(obj_date_mois<10) m = "0" + obj_date_mois;
  else m = obj_date_mois;
  ladate.value = val + "/" + m + "/" + obj_date_annee;
  var chD=document.getElementById('choixDate');
  chD.style.visibility="hidden";
	if(fonction.length>0) eval(fonction + '();')
	ladate.disabled = false;
}

function position(fonction, name){
	var choixDate = document.getElementById('choixDate');
  var mon_input = document.getElementById(name);
  var height = mon_input.offsetHeight;
	var tag="";
	var top = 0;
	var left = 0;
	while(tag!="BODY") {
		left += mon_input.offsetLeft;
		top += mon_input.offsetTop;
		tag = mon_input.offsetParent.tagName;
		mon_input = mon_input.offsetParent;
	}
	choixDate.style.top = top + height;
	choixDate.style.left = left;
	choixDate.style.visibility="visible";
	if(fonction.length>0) eval(fonction + '();');
}

function aff_calendrier(name, jour, mois, annee, color1, color2, fonction, fr) {
  the_color = color2;
  var choixDate = document.getElementById('choixDate');
	if(choixDate.style.visibility!="visible") {
    obj_date_mois = mois;
    obj_date_annee = annee;
    obj_date_jour = jour;
    var a = new Date();
    a.setDate(jour);
	  a.setMonth(mois-1);
    a.setYear(annee);
    obj_date_jour_semaine = a.getDay();
    if(obj_date_jour_semaine == 0) obj_date_jour_semaine = 6;
    else obj_date_jour_semaine--;
    var obj_date_code;
    obj_date_code = '  <table id="calendrier" border="0" cellpadding="3" cellspacing="1" style="background-color:#' + color1 + ';">';
    obj_date_code += '    <tr style="background-color:#' + color2 + '; color:#' + color1 + ';">';
    obj_date_code += '      <th width="15px;" align="center"><a href="javascript:calendrier(-1, \'' + name + '\', \'' + fonction + '\', ' + fr + ');" onmouseover="self.status=\'\';return true;" style="color:#' + color1 + ';"><<</a></th>';
    obj_date_code += '      <th id="cell_mois" colspan="5" align="center">Mois</th>';
    obj_date_code += '      <th width="15px;" align="center"><a href="javascript:calendrier(1, \'' + name + '\', \'' + fonction + '\', ' + fr + ');" onmouseover="self.status=\'\';return true;" style="color:#' + color1 + ';">>></a></th>';
    obj_date_code += '    </tr>';
    obj_date_code += '    <tr style="background-color:#' + color2 + '; color:#' + color1 + ';">';
    if(fr) {
      obj_date_code += '      <th align="center" width="15px;">L</th>';
      obj_date_code += '      <th align="center" width="15px;">M</th>';
      obj_date_code += '      <th align="center" width="15px;">M</th>';
      obj_date_code += '      <th align="center" width="15px;">J</th>';
      obj_date_code += '      <th align="center" width="15px;">V</th>';
      obj_date_code += '      <th align="center" width="15px;">S</th>';
      obj_date_code += '      <th align="center" width="15px;">D</th>';
	 }
  	else {
      obj_date_code += '      <th align="center" width="15px;">M</th>';
      obj_date_code += '      <th align="center" width="15px;">T</th>';
      obj_date_code += '      <th align="center" width="15px;">W</th>';
      obj_date_code += '      <th align="center" width="15px;">T</th>';
      obj_date_code += '      <th align="center" width="15px;">F</th>';
      obj_date_code += '      <th align="center" width="15px;">S</th>';
      obj_date_code += '      <th align="center" width="15px;">S</th>';
    }
    obj_date_code += '    </tr>';
    obj_date_code += '    <tr>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '    </tr>';
    obj_date_code += '    <tr>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '    </tr>';
    obj_date_code += '    <tr>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '    </tr>';
    obj_date_code += '    <tr>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '    </tr>';
    obj_date_code += '    <tr>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '    </tr>';
    obj_date_code += '    <tr>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '      <td align="center">&nbsp;</td>';
    obj_date_code += '    </tr>';
    obj_date_code += '  </table>';
	  choixDate.innerHTML = obj_date_code;
    document.getElementById(name).value = "";
    document.getElementById(name).disabled = true;
    position(fonction, name);
    calendrier(0,name,fonction, fr);
  }
}
