// LIBRAIRE JavaScript

// Version 1.0

// 08-2002

// Julien 

// class Applat pour la config des couleurs !!!!

//--------------------------------------------------------

// popup permettant de choisir une date graphiquement

//--------------------------------------------------------



var timeoutDelay = 2000; //temps en milliseconde avant la fermeture du popup  

//chargement des images



var imgUp = new Image(8,12);

imgUp.src = '/images/btn/up.gif';

var imgDown = new Image(8,12);

imgDown.src = '/images/btn/down.gif';

// utilisé pour le délai avant fermeture automatique

var timeoutId = false;

// détection du navigateur





function Browser()

{

	this.dom = document.getElementById?1:0;

	this.ie4 = (document.all && !this.dom)?1:0;

	this.ns4 = (document.layers && !this.dom)?1:0;

	this.ns6 = (this.dom && !document.all)?1:0;

	this.ie5 = (this.dom && document.all)?1:0;

	this.ok = this.dom || this.ie4 || this.ns4;

	this.platform = navigator.platform;

}

var browser = new Browser();

// dom browsers require this written to the HEAD section



if (browser.dom || browser.ie4)

{

	document.writeln('<style>');

        document.writeln('#container {');

        document.writeln('position : absolute;');

        document.writeln('left : 100px;');

        document.writeln('top : 100px;');

        document.writeln('width : 124px;');;

        document.writeln('height : 145px;');

        document.writeln('clip:rect(0px 124px 145px 0px);');

        document.writeln('visibility : hidden;');

        document.writeln('background-color : #000000');

        document.writeln('}');

        document.writeln('</style>')



        document.write('<div id="container"');

        if (timeoutDelay) document.write(' onmouseout="calendarTimeout();" onmouseover="if (timeoutId) clearTimeout(timeoutId);"');

        	document.write('></div>');

}



var g_Calendar;  // Variable global retenant les references du calendrier



function calendarTimeout()

{

	if (browser.ie4 || browser.ie5)

	{

      	if (window.event.srcElement && window.event.srcElement.name!='month') 

			timeoutId=setTimeout('g_Calendar.hide();',timeoutDelay);

  	}

  	if (browser.ns6 || browser.ns4)

	{

		timeoutId=setTimeout('g_Calendar.hide();',timeoutDelay);

  	}

}



// constructor for calendar class

function Calendar()

{

	g_Calendar = this;



    //Constante nécessaire au programme

    this.daysOfWeek = new Array("Di","Lu","Ma","Me","Je","Ve","Sa");

		  

    this.months = new Array("01 Jan","02 Fev","03 Mar","04 Avr","05 Mai","06 Juin","07 Juil","08 Aout","09 Sept","10 Oct","11 Nov","12 Dec");

    this.daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);



    if (browser.ns4)

	{

	    var tmpLayer = new Layer(124);

         if (timeoutDelay)

		 {

         	tmpLayer.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);

            tmpLayer.onmouseover = function(event) { if (timeoutId) clearTimeout(timeoutId); };

            tmpLayer.onmouseout = function(event) { timeoutId=setTimeout('g_Calendar.hide()',timeoutDelay);};

         }

         tmpLayer.x = 100;

         tmpLayer.y = 100;

         tmpLayer.bgColor = "#ffffff";

    }

    if (browser.dom || browser.ie4)

	{

 	   var tmpLayer = browser.dom?document.getElementById('container'):document.all.container;

	}

    this.containerLayer = tmpLayer;

          /*if (browser.ns4) {

            this.containerLayer.clip.height=127;

            this.containerLayer.clip.width=126;

          }*/



}



Calendar.prototype.getFirstDOM = function()

{

	var thedate = new Date();

    thedate.setDate(1);

    thedate.setMonth(this.month);

    thedate.setFullYear(this.year);

    return thedate.getDay();

}



Calendar.prototype.getDaysInMonth = function ()

{

	if (this.month!=1)

	{

    	return this.daysInMonth[this.month]

    }

	else

	{

    	// is it a leap year

        if (this.isLeapYear(this.year))

		{

 	       return 29;

        }

        else

		{

 	       return 28;

        }

    }

}



Calendar.prototype.isLeapYear = function()

{

          if (this.year%4==0 && ((this.year%100!=0) || (this.year%400==0))) return true; else return false;

}



Calendar.prototype.buildString = function()

{

          var tmpStr = '<form onSubmit="this.year.blur();return false;"><table width="100%" border="0" cellspacing="0" cellpadding="2" class="calBorderColor"><tr><td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="1" class="calBgColor">';

          tmpStr += '<tr>';

          tmpStr += '<td width="60%" class="cal" align="left">';

          if (this.hasDropDown) {

            tmpStr += '<select class="month" name="month" onchange="g_Calendar.selectChange();">';

                for (var i=0;i<this.months.length;i++){

              tmpStr += '<option value="' + i + '"'

                  if (i == this.month) tmpStr += ' selected';

                  tmpStr += '>' + this.months[i] + '</option>';

            }

            tmpStr += '</select>';

          } else {

            tmpStr += '<table border="0" cellspacing="0" cellpadding="0"><tr><td><a href="javascript: g_Calendar.changeMonth(-1);"><img name="calendar" src="/images/btn/down.gif" width="8" height="12" border="0" alt=""></a></td><td class="cal" width="100%" align="center">' + this.months[this.month] + '</td><td class="cal"><a href="javascript: g_Calendar.changeMonth(+1);"><img name="calendar" src="/images/btn/up.gif" width="8" height="12" border="0" alt=""></a></td></tr></table>';

          }

          tmpStr += '</td>';

          /* observation : for some reason if the below event is changed to 'onChange' rather than 'onBlur' it totally crashes IE (4 and 5)!

          */

          tmpStr += '<td width="40%" align="right">';



          if (this.hasDropDown) {

            tmpStr += '<input class="year" type="text" size="';

            // get round NS4 win32 lenght of year input problem

            (browser.ns4 && browser.platform=='Win32')?tmpStr += 1:tmpStr += 4;

          tmpStr += '" name="year" maxlength="4" onBlur="g_Calendar.inputChange();" value="' + this.year + '">';

          } else {

          tmpStr += '<table border="0" cellspacing="0" cellpadding="0"><tr><td><a href="javascript: g_Calendar.changeYear(-1);"><img name="calendar" src="/images/btn/down.gif" width="8" height="12" border="0" alt=""></a></td><td class="cal" width="100%" align="center">' + this.year + '</td><td class="cal"><a href="javascript: g_Calendar.changeYear(+1);"><img name="calendar" src="/images/btn/up.gif" width="8" height="12" border="0" alt=""></a></td></tr></table>'

          }

          tmpStr += '</td>';

          tmpStr += '</tr>';

          tmpStr += '</table>';

          var iCount = 1;

          var iFirstDOM = this.getFirstDOM(); // to prevent calling it in a loop

          var iDaysInMonth = this.getDaysInMonth(); // to prevent calling it in a loop



          tmpStr += '<table width="100%" border="0" cellspacing="0" cellpadding="1" class="calBgColor">';

          tmpStr += '<tr>';

            for (var i=0;i<this.daysOfWeek.length;i++){

                  tmpStr += '<td align="center" class="calDaysColor">' + this.daysOfWeek[i] + '</td>';

                }

          tmpStr += '</tr>';

          var tmpFrom = parseInt('' + this.dateFromYear + this.dateFromMonth + this.dateFromDay,10);

          var tmpTo = parseInt('' + this.dateToYear + this.dateToMonth + this.dateToDay,10);

          var tmpCompare;

          for (var j=1;j<=6;j++){

             tmpStr += '<tr>';

             for (var i=1;i<=7;i++){

                   tmpStr += '<td width="16" align="center" '

                   if ( (7*(j-1) + i)>=iFirstDOM+1  && iCount <= iDaysInMonth){

                     if (iCount==this.day && this.year==this.oYear && this.month==this.oMonth) tmpStr += 'class="calHighlightColor"';

                         else {

                            if (i==1 || i==7) tmpStr += 'class="calWeekend"';

                                else tmpStr += 'class="cal"';

                         }

                     tmpStr += '>';

                         /* could create a date object here and compare that but probably more efficient to convert to a number

                           and compare number as numbers are primitives */

                         tmpCompare = parseInt('' + this.year + padZero(this.month) + padZero(iCount),10);

                         if (tmpCompare >= tmpFrom && tmpCompare <= tmpTo) {

                           tmpStr += '<a class="cal" href="javascript: g_Calendar.clickDay(' + iCount + ');">' + iCount + '</a>';

                         } else {

                           tmpStr += '<span class="disabled">' + iCount + '</span>';

                         }

                         iCount++;

                   } else {

                     if  (i==1 || i==7) tmpStr += 'class="calWeekend"';

                         tmpStr += '>&nbsp;';

                   }

                   tmpStr += '</td>'

                 }

                 tmpStr += '</tr>'

          }

          tmpStr += '</table></td></tr></table></form>'

          return tmpStr;

}



Calendar.prototype.selectChange = function()

{



          this.month = browser.ns6?this.containerLayer.ownerDocument.forms[0].month.selectedIndex:this.containerLayer.document.forms[0].month.selectedIndex;

          this.writeString(this.buildString());

}



Calendar.prototype.inputChange = function()

{

          var tmp = browser.ns6?this.containerLayer.ownerDocument.forms[0].year:this.containerLayer.document.forms[0].year;

          if (tmp.value >=1900 || tmp.value <=2100){

            this.year = tmp.value;

            this.writeString(this.buildString());

          } else {

            tmp.value = this.year;

          }

}



Calendar.prototype.changeYear = function(incr)

{



           (incr==1)?this.year++:this.year--;

           this.writeString(this.buildString());

}



Calendar.prototype.changeMonth = function(incr)

{



            if (this.month==11 && incr==1){

              this.month = 0;

                    this.year++;

            } else {

              if (this.month==0 && incr==-1){

                this.month = 11;

                    this.year--;

              } else {

                    (incr==1)?this.month++:this.month--;

                  }

                }

                this.writeString(this.buildString());

}







	



Calendar.prototype.clickDay = function(day)

{

           var tmp = eval('document.' + this.target);



// Rajout un 0 pour les dates dont la forme est ex 1/01/2002 pour les mettres sous la forme 01/01/2002

	if (day<10)day="0"+day;

 



           if (this.dateFormat=='dd-mm-yyyy') tmp.value = day + this.dateDelim + this.months[this.month].substr(0,2) + this.dateDelim + this.year;

           if (this.dateFormat=='dd/mm/yyyy') tmp.value = day + this.dateDelim + (this.month+1) + this.dateDelim + this.year;

           if (this.dateFormat=='mm/dd/yyyy') tmp.value = (this.month+1) + this.dateDelim + day + this.dateDelim + this.year;

		   // YQ : mise à jour des listes déroulantes en fonction du choix de la date

		   // !! que pour mbv2 (version=true)

		   if (this.version)

		   {

		   document.form1.startDay.selectedIndex = day-1;

		   document.form1.startMonth.selectedIndex = (this.month);

		   document.form1.startYear.selectedIndex = this.year-2004;

		   }





            if (browser.ns4) this.containerLayer.hidden=true;

            if (browser.dom || browser.ie4){

              this.containerLayer.style.visibility='hidden'

            }

}



Calendar.prototype.writeString = function(str)

{

          if (browser.ns4){

            this.containerLayer.document.open();

            this.containerLayer.document.write(str);

            this.containerLayer.document.close();

          }

          if (browser.dom || browser.ie4){

            this.containerLayer.innerHTML = str;

          }

}



Calendar.prototype.changeLangue = function(langue)

{



		if (langue == 1) {// anglais

		     g_Calendar.daysOfWeek = new Array("Su","Mo","Tu","We","Th","Fr","Sa");

             g_Calendar.months = new Array("01 Jan","02 Feb","03 Mar","04 Apr","05 May","06 June","07 July","08 Aug","09 Sept","10 Oct","11 Nov","12 Dec");

		}

		if (langue == 6) {// usa

		     g_Calendar.daysOfWeek = new Array("Su","Mo","Tu","We","Th","Fr","Sa");

             g_Calendar.months = new Array("01 Jan","02 Feb","03 Mar","04 Apr","05 May","06 June","07 July","08 Aug","09 Sept","10 Oct","11 Nov","12 Dec");

		}

 		if (langue == 5) {// espagnol

		     g_Calendar.daysOfWeek = new Array("Su","Mo","Tu","We","Th","Fr","Sa");		

             g_Calendar.months = new Array("01 Jan","02 Feb","03 Mar","04 Apr","05 May","06 June","07 July","08 Aug","09 Sept","10 Oct","11 Nov","12 Dec");

		}

 		if (langue == 4) {// italien

		     g_Calendar.daysOfWeek = new Array("Do","Lu","Ma","Me","Gi","Ve","Sa");		

             g_Calendar.months = new Array("01 Jan","02 Feb","03 Mar","04 Apr","05 May","06 June","07 July","08 Aug","09 Sept","10 Oct","11 Nov","12 Dec");

		}

 		if (langue == 3) { // allemand

		     g_Calendar.daysOfWeek = new Array("So","Mo","Di","Mi","Do","Fr","Sa");		

             g_Calendar.months = new Array("01 Jan","02 Feb","03 Mär","04 Apr","05 May","06 Jun","07 Jul","08 Aug","09 Sep","10 Okt","11 Nov","12 Dez");

		}

		if (langue == 2) {// france

          	 g_Calendar.daysOfWeek = new Array("Di","Lu","Ma","Me","Je","Ve","Sa");

             g_Calendar.months = new Array("01 Jan","02 Fev","03 Mar","04 Avr","05 Mai","06 Juin","07 Juil","08 Aout","09 Sept","10 Oct","11 Nov","12 Dec");

		}

}





Calendar.prototype.show = function(event, target, bHasDropDown, dateFormat, dateFrom, dateTo,version)

{

        // calendar can restrict choices between 2 dates, if however no restrictions

        // are made, let them choose any date between 1900 and 3000

		this.version=version; //YQ

        if (dateFrom) this.dateFrom = dateFrom; else this.dateFrom = new Date(1900,0,1);

        this.dateFromDay = padZero(this.dateFrom.getDate());

        this.dateFromMonth = padZero(this.dateFrom.getMonth());

        this.dateFromYear = this.dateFrom.getFullYear();

        if (dateTo) this.dateTo = dateTo; else this.dateTo = new Date(3000,0,1);

        this.dateToDay = padZero(this.dateTo.getDate());

        this.dateToMonth = padZero(this.dateTo.getMonth());

        this.dateToYear = this.dateTo.getFullYear();

        this.hasDropDown = bHasDropDown;

        if (dateFormat) this.dateFormat = dateFormat; else this.dateFormat = 'dd-mm-yyyy';//mmm

        switch (this.dateFormat){

          case 'dd-mm-yyyy'://mmm

            //this.dateDelim = '-';

            this.dateDelim = '/';

                break;

          case 'dd/mm/yyyy':

          case 'mm/dd/yyyy':

            this.dateDelim = '/';

                break;

        }



          if (browser.ns4) {

            if (!this.containerLayer.hidden) {

                  this.containerLayer.hidden=true;

                  return;

                }

           }

          if (browser.dom || browser.ie4){

            if (this.containerLayer.style.visibility=='visible') {

                  this.containerLayer.style.visibility='hidden';

                  return;

                }

          }



          if (browser.ie5 || browser.ie4){

            var event = window.event;

          }

          if (browser.ns4){

            this.containerLayer.x = event.x+10;

            this.containerLayer.y = event.y-5;

          }

          if (browser.ie5 || browser.ie4){

            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;



        this.containerLayer.style.left = x+35;

                if (event.y>0)this.containerLayer.style.top = y;

          }

          if (browser.ns6){

            this.containerLayer.style.left = event.pageX+10;

                this.containerLayer.style.top = event.pageY-5;

          }

          this.target = target;

          var tmp = eval('document.' + this.target);

          if (tmp && tmp.value && tmp.value.split(this.dateDelim).length==3){

            var atmp = tmp.value.split(this.dateDelim)

                this.day = this.oDay = this.dateFormat.substr(0,2)=='dd'?parseInt(atmp[0],0):parseInt(atmp[1],0);

                if (this.dateFormat=='dd-mm-yyyy'){//mmm

                  for (var i=0;i<this.months.length;i++){

                    if (atmp[1].toLowerCase()==this.months[i].substr(0,2).toLowerCase()){

                      this.month = this.oMonth = i;

                          break;

                    }

                  }

                } else {

                  if (this.dateFormat.substr(0,2)=='dd') this.month = this.oMonth = parseInt(atmp[1]-1,0);

                  else this.month = this.oMonth = parseInt(atmp[0]-1,0);

                }

                this.year= this.oYear = parseInt(atmp[2],10);

          } else { // no date set, default to today

            var theDate = new Date();

                   this.year = this.oYear = theDate.getFullYear();

             this.month = this.oMonth = theDate.getMonth();

             this.day = this.oDay = theDate.getDate();

          }

          this.writeString(this.buildString());



          // and then show it!

           if (browser.ns4) {

           this.containerLayer.hidden=false;

           }

          if (browser.dom || browser.ie4){

              this.containerLayer.style.visibility='visible';

          }

}



Calendar.prototype.hide = function()

{

          if (browser.ns4) this.containerLayer.hidden = true;

          if (browser.dom || browser.ie4){

            this.containerLayer.style.visibility='hidden';

          }

}



// events capturing

window.onload=doCalendar;



window.document.onclick=handleDocumentClick



function handleDocumentClick(e)

{

          if (browser.ie4 || browser.ie5) e = window.event;



          if (browser.ns6){

         //   var bTest = (e.pageX > parseInt(g_Calendar.containerLayer.style.left,10) && e.pageX <  (parseInt(g_Calendar.containerLayer.style.left,10)+125) && e.pageY < (parseInt(g_Calendar.containerLayer.style.top,10)+125) && e.pageY > parseInt(g_Calendar.containerLayer.style.top,10));

         //   if (e.target.name!='imgCalendar' && e.target.name!='month'  && e.target.name!='year' && e.target.name!='calendar' && !bTest){

         //         g_Calendar.hide();

          //      }

          }

          if (browser.ie4 || browser.ie5){

                // extra test to see if user clicked inside the calendar but not on a valid date, we don't want it to disappear in this case

           //var bTest = (e.x > parseInt(g_Calendar.containerLayer.style.left,10) && e.x <  (parseInt(g_Calendar.containerLayer.style.left,10)+125) && e.y < (parseInt(g_Calendar.containerLayer.style.top,10)+125) && e.y > parseInt(g_Calendar.containerLayer.style.top,10));

            //if (e.srcElement.name!='imgCalendar' && e.srcElement.name!='month' && e.srcElement.name!='year' && !bTest & typeof(e.srcElement)!='object'){

           //       g_Calendar.hide();

           //     }

          }

       //   if (browser.ns4) g_Calendar.hide();

}





function doCalendar()

{

           //var aCalendar = new Calendar(new Date(2001,1,13));

           var aCalendar = new Calendar(new Date());

}





// utility function

function padZero(num)

{

          return ((num <= 9) ? ("0" + num) : num);

}

        

function addDays(startDate,addition)

{

                var accumulate    = new Array(0,31, 59, 90,120,151,181,212,243,273,304,334);

                var accumulateLY  = new Array(0,31, 60, 91,121,152,182,213,244,274,305,335);



            var year = startDate.getFullYear();

                var month = startDate.getMonth();

                var day = startDate.getDate();



                if (isLeapYear(year)) var number = day + accumulateLY[month] + addition;

            else                var number = day + accumulate[month]   + addition;

            var days = daysinyear(year);



            while (number > days) {

                number -= days;

                days = daysinyear(++year);

            }



            while (number < 1) {

                days = daysinyear(--year);

                number += days;

            }



            month = 0;



            if (isLeapYear(year)) {

                while (number > accumulateLY[month]) { month++; }

                day = number - accumulateLY[--month];

            }

            else {

                while (number > accumulate[month]) { month++; }

                day = number - accumulate[--month];

            }

                return new Date(year,month,day);

}



function daysinyear(year) { if (isLeapYear(year)) return 366; else return 365; }

function isLeapYear(year) { if (year%4==0 && ((year%100!=0) || (year%400==0))) return true; else return false; }













//---------------------------------------l'autre popup ----



function show_calendar2(str_target, str_datetime,str_startDay,str_startMonth,str_startYear) {

        var arr_months = ["Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin",

                "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"];

        var week_days = ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"];

        var n_weekstart = 1; // day week starts from (normally 0 or 1)

        var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt2(str_datetime));

        var dt_prev_month = new Date(dt_datetime);

        dt_prev_month.setMonth(dt_datetime.getMonth()-1);

        var dt_next_month = new Date(dt_datetime);

        dt_next_month.setMonth(dt_datetime.getMonth()+1);

        var dt_firstday = new Date(dt_datetime);

        dt_firstday.setDate(1);

        dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);

        var dt_lastday = new Date(dt_next_month);

        dt_lastday.setDate(0);



        // html generation (feel free to tune it for your particular application)

        // print calendar header

        var str_buffer = new String (

                "<html>\n"+

                "<head>\n"+

                "        <title>Calendar</title>\n"+

                "</head>\n"+

                "<body bgcolor=\"White\">\n"+

                "<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+

                "<tr><td bgcolor=\"#8999A5\">\n"+

                "<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+

                "<tr>\n        <td bgcolor=\"#8999A5\"><a href=\"javascript:window.opener.show_calendar2('"+

                str_target+"', '"+ dt2dtstr2(dt_prev_month)+((str_startDay!=null)?("', '"+str_startDay):"")+((str_startMonth!=null)?("', '"+str_startMonth):"")+((str_startYear!=null)?("', '"+str_startYear):"")+"');\">"+

                "<img src=\"/images/btn/down.gif\" border=\"0\""+

                " alt=\"mois precedent \"></a></td>\n"+

                "        <td bgcolor=\"#8999A5\" colspan=\"5\">"+

                "<font color=\"white\" face=\"tahoma, verdana\" size=\"2\"><center>"

                +arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</font></td>\n"+

                "        <td bgcolor=\"#8999A5\" align=\"right\"><a href=\"javascript:window.opener.show_calendar2('"

                +str_target+"', '"+dt2dtstr2(dt_next_month)+((str_startDay!=null)?("', '"+str_startDay):"")+((str_startMonth!=null)?("', '"+str_startMonth):"")+((str_startYear!=null)?("', '"+str_startYear):"")+"');\">"+

                "</center><img src=\"/images/btn/up.gif\"  border=\"0\""+

                " alt=\"mois suivant\"></a></td>\n</tr>\n"

        );



        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=\"#D3E0E6\">"+

                "<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 heder

                str_buffer += "<tr>\n";

                for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {

                                if (dt_current_day.getDate() == dt_datetime.getDate() &&

                                        dt_current_day.getMonth() == dt_datetime.getMonth())

                                        // print current date

                                        str_buffer += "        <td bgcolor=\"#D3E0E6\" align=\"right\">";

                                else if (dt_current_day.getDay() == 6)

                                        // weekend days

                                        str_buffer += "        <td bgcolor=\"#D3E0E6\" align=\"right\">";

                                else

                                        // print working days of current month

                                        str_buffer += "        <td bgcolor=\"white\" align=\"right\">";



                                if (dt_current_day.getMonth() == dt_datetime.getMonth())

								{

                                        str_buffer += "<a href=\"javascript:window.opener."+str_target+

                                        ".value='"+dt2dtstr2(dt_current_day)+"';";

										if (str_startDay!=null)

											str_buffer += "window.opener."+str_startDay+".selectedIndex='"+(dt_current_day.getDate()-1)+"';";

										if (str_startMonth!=null)

											str_buffer += "window.opener."+str_startMonth+".selectedIndex='"+dt_current_day.getMonth()+"';";

										if (str_startYear!=null)

											str_buffer += "window.opener."+str_startYear+".selectedIndex='"+(dt_current_day.getFullYear()-2004)+"';";

										str_buffer += "window.close();\">"+

                                        "<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";

                                }

								else

                                {

								        // print days of other months

                                        str_buffer += "<a href=\"javascript:window.opener."+str_target+

                                        ".value='"+dt2dtstr2(dt_current_day)+"';";

										if (str_startDay!=null)

											str_buffer += "window.opener."+str_startDay+".selectedIndex='"+(dt_current_day.getDate()-1)+"';";

										if (str_startMonth!=null)

											str_buffer += "window.opener."+str_startMonth+".selectedIndex='"+dt_current_day.getMonth()+"';";

										if (str_startYear!=null)

											str_buffer += "window.opener."+str_startYear+".selectedIndex='"+(dt_current_day.getFullYear()-2004)+"';";

										str_buffer += "window.close();\">"+

                                        "<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 +=

                "</table>\n" +

                "</tr>\n</td>\n</table>\n" +

                "</body>\n" +

                "</html>\n";



        var vWinCal = window.open("", "Calendar",

                "width=200,height=200,status=no,resizable=yes,top=200,left=200");

        vWinCal.opener = self;

        vWinCal.focus();

        var calc_doc = vWinCal.document;

        calc_doc.write (str_buffer);

        calc_doc.close();

}

// datetime parsing and formatting routimes. modify them if you wish other datetime format

function str2dt2 (str_datetime) {

        var re_date = /^(\d+)\/(\d+)\/(\d+)$/;

	

	

        if (!re_date.exec(str_datetime))

                return alert("Invalid Datetime format: "+ str_datetime);

				

		//on verifie que le format est yyyy et non yy

		if(RegExp.$3 > 1900)

        	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1));

		else

			return (new Date (eval(20+RegExp.$3), RegExp.$2-1, RegExp.$1));		

				

        

}

function dt2dtstr2 (dt_datetime) {

return(new String(((dt_datetime.getDate()<10)?"0":"")+dt_datetime.getDate()

+"/"+(((dt_datetime.getMonth()+1)<10)?"0":"")+(dt_datetime.getMonth()+1)+"/"+dt_datetime.getFullYear()));}







function show_calendar2_us(str_target, str_datetime,str_startDay,str_startMonth,str_startYear) {

        

			var arr_months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

        

			var week_days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

		

        var n_weekstart = 1; // day week starts from (normally 0 or 1)

        var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt2_us(str_datetime));

        var dt_prev_month = new Date(dt_datetime);

        dt_prev_month.setMonth(dt_datetime.getMonth()-1);

        var dt_next_month = new Date(dt_datetime);

        dt_next_month.setMonth(dt_datetime.getMonth()+1);

        var dt_firstday = new Date(dt_datetime);

        dt_firstday.setDate(1);

        dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);

        var dt_lastday = new Date(dt_next_month);

        dt_lastday.setDate(0);



        // html generation (feel free to tune it for your particular application)

        // print calendar header

        var str_buffer = new String (

                "<html>\n"+

                "<head>\n"+

                "        <title>Calendar</title>\n"+

                "</head>\n"+

                "<body bgcolor=\"White\">\n"+

                "<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+

                "<tr><td bgcolor=\"#B3554D\">\n"+

                "<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+

                "<tr>\n        <td bgcolor=\"#B3554D\"><a href=\"javascript:window.opener.show_calendar2_us('"+

                str_target+"', '"+ dt2dtstr2_us(dt_prev_month)+((str_startDay!=null)?("', '"+str_startDay):"")+((str_startMonth!=null)?("', '"+str_startMonth):"")+((str_startYear!=null)?("', '"+str_startYear):"")+"');\">"+

                "<img src=\"/images/btn/down.gif\" border=\"0\""+

                " alt=\"mois precedent \"></a></td>\n"+

                "        <td bgcolor=\"#B3554D\" colspan=\"5\">"+

                "<font color=\"white\" face=\"tahoma, verdana\" size=\"2\"><center>"

                +arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</font></td>\n"+

                "        <td bgcolor=\"#B3554D\" align=\"right\"><a href=\"javascript:window.opener.show_calendar2_us('"+

                str_target+"', '"+dt2dtstr2_us(dt_next_month)+((str_startDay!=null)?("', '"+str_startDay):"")+((str_startMonth!=null)?("', '"+str_startMonth):"")+((str_startYear!=null)?("', '"+str_startYear):"")+"');\">"+

                "</center><img src=\"/images/btn/up.gif\"  border=\"0\""+

                " alt=\"mois suivant\"></a></td>\n</tr>\n"

        );



        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=\"#8999A5\">"+

                "<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 heder

                str_buffer += "<tr>\n";

                for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {

                                if (dt_current_day.getDate() == dt_datetime.getDate() &&

                                        dt_current_day.getMonth() == dt_datetime.getMonth())

                                        // print current date

                                        str_buffer += "        <td bgcolor=\"#C37670\" align=\"right\">";

                                else if (dt_current_day.getDay() == 6)

                                        // weekend days

                                        str_buffer += "        <td bgcolor=\"#D9D9D9\" align=\"right\">";

                                else

                                        // print working days of current month

                                        str_buffer += "        <td bgcolor=\"white\" align=\"right\">";



                                if (dt_current_day.getMonth() == dt_datetime.getMonth())

								{

                                        str_buffer += "<a href=\"javascript:window.opener."+str_target+

                                        ".value='"+dt2dtstr2_us(dt_current_day)+"';";

										if (str_startDay!=null)

											str_buffer += "window.opener."+str_startDay+".selectedIndex='"+(dt_current_day.getDate()-1)+"';";

										if (str_startMonth!=null)

											str_buffer += "window.opener."+str_startMonth+".selectedIndex='"+dt_current_day.getMonth()+"';";

										if (str_startYear!=null)

											str_buffer += "window.opener."+str_startYear+".selectedIndex='"+(dt_current_day.getFullYear()-2004)+"';";

										str_buffer += "window.close();\">"+

                                        "<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";

                                }

								else

                                {

								        // print days of other months

                                        str_buffer += "<a href=\"javascript:window.opener."+str_target+

                                        ".value='"+dt2dtstr2_us(dt_current_day)+"';";

										if (str_startDay!=null)

											str_buffer += "window.opener."+str_startDay+".selectedIndex='"+(dt_current_day.getDate()-1)+"';";

										if (str_startMonth!=null)

											str_buffer += "window.opener."+str_startMonth+".selectedIndex='"+dt_current_day.getMonth()+"';";

										if (str_startYear!=null)

											str_buffer += "window.opener."+str_startYear+".selectedIndex='"+(dt_current_day.getFullYear()-2004)+"';";

										str_buffer += "window.close();\">"+

                                        "<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 +=

                "</table>\n" +

                "</tr>\n</td>\n</table>\n" +

                "</body>\n" +

                "</html>\n";



        var vWinCal = window.open("", "Calendar",

                "width=230,height=200,status=no,resizable=yes,top=200,left=200");

        vWinCal.opener = self;

        vWinCal.focus();

        var calc_doc = vWinCal.document;

        calc_doc.write (str_buffer);

        calc_doc.close();

}

// datetime parsing and formatting routimes. modify them if you wish other datetime format

function str2dt2_us (str_datetime) {

        var re_date = /^(\d+)\/(\d+)\/(\d+)$/;

		

        if (!re_date.exec(str_datetime))

                return alert("Invalid Datetime format: "+ str_datetime);

			

		//on verifie que le format est yyyy et non yy

		if(RegExp.$3 > 1900)

        	return (new Date (RegExp.$3, RegExp.$1-1, RegExp.$2));

		else

			return (new Date (eval(20+RegExp.$3), RegExp.$1-1, RegExp.$2));	

		

}

function dt2dtstr2_us (dt_datetime) {

	

	return((((dt_datetime.getMonth()+1)<10)?"0":"")+(dt_datetime.getMonth()+1)+"/"+new String(((dt_datetime.getDate()<10)?"0":"")+dt_datetime.getDate()

	+"/"+dt_datetime.getFullYear()));



}



