function show_calendar(str_target, str_datetime, int_top, int_left) {

	document.getElementById('forfait').style.visibility = 'hidden'; // IE6 bug override

   var arr_months = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"];
   var week_days = ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"];
   var n_weekstart = 1; // day week starts from (normally 0 or 1)
   var str_onclick = '';
//if (str_target == 'date2')
	//var str_onclick = "document.getElementById('jusquau').checked = true;";

// Si la date est invalide : Initialisation avec la date du jour
var test_date = /^(\d+)\/(\d+)\/(\d+)$/;
if (!test_date.exec(str_datetime)) { 	var d = new Date();
											var str_datetime = d.getDate()+ "/" +(d.getMonth() + 1) + "/"+  d.getFullYear();
											var str_datetimeForMonth = "01/" +(d.getMonth() + 1) + "/"+  d.getFullYear();
										 }
else {
	var d = new Date(str_datetime);
	var str_datetimeForMonth = "01/" +(d.getMonth() + 1) + "/"+  d.getFullYear();
}

   var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt(str_datetime));

/* JOUR MOIS ET ANNEE PRESENTE*/
   var this_Day = new Date().getDate()
   var this_Month = new Date().getMonth()
	var this_Year = new Date().getFullYear()

/* MOIS PRECEDENT */
   var dt_prev_month = new Date(str_datetimeForMonth);
   dt_prev_month.setMonth(dt_datetime.getMonth()-1);
   var dt_next_month = new Date(str_datetimeForMonth);
   dt_next_month.setMonth(dt_datetime.getMonth()+1);

/* ANNEE PRECEDENTE */
   var dt_prev_year = new Date(dt_datetime);
   dt_prev_year.setFullYear(dt_datetime.getFullYear()-1);
   var dt_next_year = new Date(dt_datetime);
   dt_next_year.setFullYear(dt_datetime.getFullYear()+1);

/* PREMIER JOUR DU MOIS */
   var dt_firstday = new Date(dt_datetime);
   dt_firstday.setDate(1);
   dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);

/* DERNIER JOUR DU MOIS    */
   var dt_lastday = new Date(dt_next_month);
   dt_lastday.setDate(0);

/* TITRE DU CALENDRIER */
   var title_calendar=(str_target=='dd')?'DATE D\'ARRIVEE':'DATE';

   // html generation (feel free to tune it for your particular application)
   // ENTETE CALENDRIER
   var StringYear=dt_datetime.getFullYear().toString().substring(dt_datetime.getFullYear().toString().length-2,dt_datetime.getFullYear().toString().length)
   var str_buffer = new String (
      "<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
      "<tr>\n<td bgcolor=\"#4682B4\">"+
      "<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+

   //ENTETE TABLEAU
   "<tr>\n   <td bgcolor=\"#11488C\" style='text-align:center;color:white;font-family:verdana;font-weight:bold;font-size:11px;' colspan=\"6\">"+title_calendar+"<\/td>\n"+
   "<td bgcolor=\"#11488C\" style=\"text-align:center;color:navy;font-family:verdana;font-weight:bold;font-size:10px;background-color:silver;border:outset 2px white;cursor:pointer;\" onclick=\"document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; \">X<\/td>\n "+
   "<\/tr>\n"+



// Ligne Année précédente / suivante
      //"<tr>\n   <td bgcolor=\"#11488C\"><a href=\"javascript:show_calendar('"+str_target+"', '"+
      //dt2dtstr(dt_prev_year)+"');\">"+
      //"<img src=\"style/images/previous.gif\" border=\"0\""+
      //" alt=\"Année précédente\"></a></td>\n"+
      //"   <td align=\"center\" bgcolor=\"#11488C\" colspan=\"5\">"+
      //"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"
      //+" 20"+StringYear+"</font></td>\n"+
      //"   <td bgcolor=\"#11488C\" align=\"right\"><a href=\"javascript:show_calendar('"
      //+str_target+"', '"+dt2dtstr(dt_next_year)+"');\">"+
      //"<img src=\"style/images/next.gif\"  border=\"0\""+
      //
      //" alt=\"Année suivante\"></a></td>\n</tr>\n"+

// Ligne Mois précédent / suivant
      "<tr>\n   <td bgcolor=\"#4682B4\"><a href=\"javascript:show_calendar('"+
      str_target+"', '"+ dt2dtstr(dt_prev_month)+"'); \">"+
      "<img src=\"style/images/previous.gif\" border=\"0\""+
      " alt=\"MP\" title=\""+dt_prev_month+"\"></a></td>\n"+
      "   <td align=\"center\" bgcolor=\"#4682B4\" colspan=\"5\">"+
      "<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"
      +arr_months[dt_datetime.getMonth()]+" 20"+StringYear+"</font></td>\n"+
      "   <td bgcolor=\"#4682B4\" align=\"right\"><a href=\"javascript:show_calendar('"
      +str_target+"', '"+dt2dtstr(dt_next_month)+"');  \">"+
      "<img src=\"style/images/next.gif\" border=\"0\""+
      " alt=\"MS\"  title=\""+dt_next_month+"\" ></a></td>\n</tr>\n"

   ); //end newstring

   var dt_current_day = new Date(dt_firstday);

   // print weekdays titles
   str_buffer += "<tr>\n";
   for (var n=0; n<7; n++)
      str_buffer += "   <td bgcolor=\"#87CEFA\">"+
      "<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"+
      week_days[(n_weekstart+n)%7]+"</font></td>\n";


   // print calendar table
   str_buffer += "</tr>\n";
   while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
      dt_current_day.getMonth() == dt_firstday.getMonth()) {

      // print row header
      str_buffer += "<tr>\n";
      for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
            if (dt_current_day.getDate() == this_Day &&  dt_current_day.getMonth() == this_Month && dt_current_day.getFullYear()==this_Year ){

              // case aujourd'hui
               str_buffer += "   <td bgcolor=\"#FFB6C1\" align=\"right\" ";}

            else {
            		if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6){
	               	// case de weekend
   		            	str_buffer += "   <td bgcolor=\"#DBEAF5\" align=\"right\" ";
   		            	}
		          else{
       	        	// jour ouvres du mois
          		     	str_buffer += "   <td bgcolor=\"white\" align=\"right\" ";
						}
				  }


if (dt_current_day.getMonth() == this_Month && dt_current_day.getFullYear() == this_Year) {
// mois en cours et jours précédents grisés
           if ((dt_current_day.getDate() >= dt_datetime.getDate()) && (dt_current_day.getMonth() == dt_datetime.getMonth())){
                // jours du mois en cours actifs
               	if (str_target == 'date1')
				{
					//var radio = document.formlouer.jour;
					var str_onclick2 = "";
					/*if (radio[0].checked) {
						var str_onclick = "document.getElementById('date2').value= incrementeDate('";
						var str_onclick2 = "');";
					} else if (radio[1].checked) {
						var str_onclick = "document.getElementById('date2').value= incrementeDate(incrementeDate('";
						var str_onclick2 = "'));";
					}*/
					if (document.getElementById("isAeroport").value == '1')
						str_buffer += " style='cursor:pointer;' onclick=\"document.getElementById('"+str_target+"').value='"+dt2dtstr(dt_current_day)+"'; document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; setHoraires(0); if (compareDate((document.getElementById('date1').value), document.getElementById('date2').value)) document.getElementById('date2').value = avanceDate(document.getElementById('date1').value, 1); getTarifs(" + document.formRAC.agence.value + ", '" + document.formRAC.categorie.value + "', '" + photocategorie + "');document.getElementById('heure1').selectedIndex = '39';document.getElementById('heure2').selectedIndex = '39'; \">"+
               			"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
               		else
               			str_buffer += " style='cursor:pointer;' onclick=\"document.getElementById('"+str_target+"').value='"+dt2dtstr(dt_current_day)+"'; document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; setHoraires(0); if (compareDate((document.getElementById('date1').value), document.getElementById('date2').value)) document.getElementById('date2').value = avanceDate(document.getElementById('date1').value, 1); getTarifs(" + document.formRAC.agence.value + ", '" + document.formRAC.categorie.value + "', '" + photocategorie + "'); \">"+
               			"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
				}
				else
				{
					if (document.getElementById("isAeroport").value == '1')
               			str_buffer += " style=\"cursor:pointer;\" onclick=\"document.getElementById('"+str_target+"').value='"+dt2dtstr(dt_current_day)+"'; document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; setHoraires(0); if (compareDate((document.getElementById('date1').value), document.getElementById('date2').value)) document.getElementById('date1').value = reculeDate(document.getElementById('date2').value, 1); getTarifs(" + document.formRAC.agence.value + ", '" + document.formRAC.categorie.value + "', '" + photocategorie + "');document.getElementById('heure1').selectedIndex = '39';document.getElementById('heure2').selectedIndex = '39'; \">"+
               			"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
               		else
               			str_buffer += " style=\"cursor:pointer;\" onclick=\"document.getElementById('"+str_target+"').value='"+dt2dtstr(dt_current_day)+"'; document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; setHoraires(0); if (compareDate((document.getElementById('date1').value), document.getElementById('date2').value)) document.getElementById('date1').value = reculeDate(document.getElementById('date2').value, 1); getTarifs(" + document.formRAC.agence.value + ", '" + document.formRAC.categorie.value + "', '" + photocategorie + "'); \">"+
               			"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
               	}
           }

           else {
               // jours des mois précédents et suivants en gris
               str_buffer += "<a><font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
           }

}
else {
if( (dt_current_day.getMonth() > this_Month && dt_current_day.getFullYear() ==this_Year ) || dt_current_day.getFullYear() >this_Year ){
// mois futurs
           if ( dt_current_day.getMonth() == dt_datetime.getMonth()){

               // jours du mois en cours actifs
               if (str_target == 'date1')
				{
					//var radio = document.formlouer.jour;
					var str_onclick2 = "";
					/*if (radio[0].checked) {
						var str_onclick = "document.getElementById('date2').value= incrementeDate('";
						var str_onclick2 = "');";
					} else if (radio[1].checked) {
						var str_onclick = "document.getElementById('date2').value= incrementeDate(incrementeDate('";
						var str_onclick2 = "'));";
					}*/
					if (document.getElementById("isAeroport").value == '1')
               			str_buffer += " style='cursor:pointer;' onclick=\"document.getElementById('"+str_target+"').value='"+dt2dtstr(dt_current_day)+"'; document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; setHoraires(0); if (compareDate((document.getElementById('date1').value), document.getElementById('date2').value)) document.getElementById('date2').value = avanceDate(document.getElementById('date1').value, 1); getTarifs(" + document.formRAC.agence.value + ", '" + document.formRAC.categorie.value + "', '" + photocategorie + "');document.getElementById('heure1').selectedIndex = '39';document.getElementById('heure2').selectedIndex = '39'; \">"+
               			"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
               		else
               			str_buffer += " style='cursor:pointer;' onclick=\"document.getElementById('"+str_target+"').value='"+dt2dtstr(dt_current_day)+"'; document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; setHoraires(0); if (compareDate((document.getElementById('date1').value), document.getElementById('date2').value)) document.getElementById('date2').value = avanceDate(document.getElementById('date1').value, 1); getTarifs(" + document.formRAC.agence.value + ", '" + document.formRAC.categorie.value + "', '" + photocategorie + "'); \">"+
               			"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
				}
				else
				{
					if (document.getElementById("isAeroport").value == '1')
               			str_buffer += " style='cursor:pointer;' onclick=\"document.getElementById('"+str_target+"').value='"+dt2dtstr(dt_current_day)+"'; document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; setHoraires(0); if (compareDate((document.getElementById('date1').value), document.getElementById('date2').value)) document.getElementById('date1').value = reculeDate(document.getElementById('date2').value, 1); getTarifs(" + document.formRAC.agence.value + ", '" + document.formRAC.categorie.value + "', '" + photocategorie + "');document.getElementById('heure1').selectedIndex = '39';document.getElementById('heure2').selectedIndex = '39'; \">"+
               			"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
               		else
               			str_buffer += " style='cursor:pointer;' onclick=\"document.getElementById('"+str_target+"').value='"+dt2dtstr(dt_current_day)+"'; document.getElementById('DivCalendar').style.display='none'; document.getElementById('forfait').style.visibility = 'visible'; setHoraires(0); if (compareDate((document.getElementById('date1').value), document.getElementById('date2').value)) document.getElementById('date1').value = reculeDate(document.getElementById('date2').value, 1); getTarifs(" + document.formRAC.agence.value + ", '" + document.formRAC.categorie.value + "', '" + photocategorie + "'); \">"+
               			"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
               	}
           }

           else {
               // jours des mois précédents et suivants en gris
               str_buffer += "<a><font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
            }

}

// mois précédents ...
else{		if( (dt_current_day.getMonth() < this_Month && dt_current_day.getFullYear() == this_Year) || ( dt_current_day.getFullYear() < this_Year)){
               str_buffer += "<a><font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
				}
	}
}

               str_buffer += dt_current_day.getDate()+"</font></a></td>\n";


            dt_current_day.setDate(dt_current_day.getDate()+1);
      }


      // print row footer
      str_buffer += "</tr>\n";
   }

   // print calendar footer
   str_buffer +=  "</tr>\n</td>\n</table>\n" ;



   fenCalendrier=document.getElementById('DivCalendar');
   fenCalendrier.innerHTML=str_buffer;
   /*fenCalendrier.style.top=document.getElementById(str_target).offsetTop+"px";*/
   fenCalendrier.style.top=int_top+"px";
   fenCalendrier.style.left=int_left+"px";
   /*fenCalendrier.style.left=Number(document.getElementById(str_target).offsetLeft)+Number(document.getElementById(str_target).offsetWidth)+200+"px";*/
   fenCalendrier.style.display="block";







}
// datetime parsing and formatting routines. modify them if you wish other datetime format
function str2dt (str_datetime) {
   var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
   if (!re_date.exec(str_datetime))
      return alert("Invalid Datetime format: "+ str_datetime);
   return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));
}



/***********************************
* Formatage de date pour affichage *
***********************************/

function dt2dtstr (dt_datetime) {
   var FormatedDate=""

   FormatedDate+=(dt_datetime.getDate().toString().length==1)?"0"+dt_datetime.getDate().toString():dt_datetime.getDate().toString();
   FormatedDate+="/";
   FormatedDate+=((dt_datetime.getMonth()+1).toString().length==1)?"0"+(dt_datetime.getMonth()+1).toString():(dt_datetime.getMonth()+1).toString();
   FormatedDate+="/";
   FormatedDate+="20"+dt_datetime.getFullYear().toString().substring(dt_datetime.getFullYear().toString().length-2,dt_datetime.getFullYear()).toString()
   return FormatedDate;
}

function dt2tmstr (dt_datetime) {
   return (new String (dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()));
}



/*************************
* comparaison des dates  *
*************************/
function comparedate(){
	var maintenant=new Date();
	maintenant=dt2dtstr(maintenant).split('\/').reverse().join('');
	if(document.getElementById('da').value.length<1){
		alert("Entrez une date d\'arrivée");
        return false;
    }

	var date_arrivee=document.getElementById('da').value.split('\/').reverse().join('');
	if(date_arrivee<maintenant){
    	alert('Vous ne pourrez pas arriver avant aujourd\'hui');
        return false;
    }

	if(document.getElementById('da').value.length<1){
    	alert("Entrez une date de départ");
        return false;
    }

	var date_depart=document.getElementById('dd').value.split('\/').reverse().join('');
	if(date_arrivee>date_depart){
    	alert("Vous devez arriver avant de repartir!");
        return false;
    }
	else
      return true;
}
function compareDate(date1, date2) {
	var reg = new RegExp("/", "g");
	tab1 = date1.split(reg);
	tab2 = date2.split(reg);

	date_1 = tab1[2]+''+tab1[1]+''+tab1[0];
	date_2 = tab2[2]+''+tab2[1]+''+tab2[0];

	if (parseInt(date_1) > parseInt(date_2)) {
		return true;
	} else {
		return false;
	}
}

function avanceDate(pDate, nbJours)
{
	// retourne une date avancée d'un nombre de jours (au format FR)
	reg = new RegExp("/", "g");
	tabDate = pDate.split(reg);
	dDateUS = new Date(eval('"' + tabDate[1] + '/' + tabDate[0] + '/' + tabDate[2] + '"'));
	dDateUS = addDays(dDateUS, nbJours);
	return dDateUS.dateFormat('d/m/Y');
}

function reculeDate(pDate, nbJours)
{
	// retourne une date reculée d'un nombre de jours (au format FR)
	reg = new RegExp("/", "g");
	tabDate = pDate.split(reg);
	dDateUS = new Date(eval('"' + tabDate[1] + '/' + tabDate[0] + '/' + tabDate[2] + '"'));
	dDateUS = remDays(dDateUS, nbJours);
	return dDateUS.dateFormat('d/m/Y');
}
