function MyCalendar(domId, buttomId, translate) {
        var cal = new YAHOO.widget.Calendar(
            domId,
            buttomId,
            {
                LOCALE_WEEKDAYS:"short",
                MULTI_SELECT: false
            }
        );

        this.selectEvent = cal.selectEvent;
        this.renderEvent = cal.renderEvent;

        if(translate)
        {
            cal.cfg.setProperty("START_WEEKDAY", 1);

            cal.cfg.setProperty("DATE_FIELD_DELIMITER", "/");

            cal.cfg.setProperty("MDY_DAY_POSITION", 1);
            cal.cfg.setProperty("MDY_MONTH_POSITION", 2);
            cal.cfg.setProperty("MDY_YEAR_POSITION", 3);

            cal.cfg.setProperty("MD_DAY_POSITION", 1);
            cal.cfg.setProperty("MD_MONTH_POSITION", 2);

            cal.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Féb", "Mar", "Avr", "Mai", "jui", "Jui", "Aou", "Sep", "Oct", "Nov", "Dec"]);
            cal.cfg.setProperty("MONTHS_LONG",    ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Decembre"]);
            cal.cfg.setProperty("WEEKDAYS_1CHAR", ["D", "L", "M", "M", "J", "V", "S"]);
            cal.cfg.setProperty("WEEKDAYS_SHORT", ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"]);
            cal.cfg.setProperty("WEEKDAYS_MEDIUM",["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"]);
            cal.cfg.setProperty("WEEKDAYS_LONG",  ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"]);
        }

        this.dateToLocaleString = function(date)
        {
                var wStr = cal.cfg.getProperty("WEEKDAYS_LONG")[date.getDay()];
                var dStr = date.getDate();
                var mStr = cal.cfg.getProperty("MONTHS_LONG")[date.getMonth()];
                var yStr = date.getFullYear();
                return (wStr + ", " + dStr + " " + mStr + " " + yStr);
        };

        myCustomRenderer = function(workingDate, cell) {
            cell.innerHTML = "<div id=\"calendar"+ workingDate.getFullYear() + (workingDate.getMonth()+1) + workingDate.getDate() +"\">" + workingDate.getDate() + "</div>";
			//if(workingDate.getMonth()==9) alert(workingDate.getFullYear() + (workingDate.getMonth()+1) + workingDate.getDate());
            return YAHOO.widget.Calendar.STOP_RENDER  ;
		};

        this.cleanRender = function(myCustomRenderer)
        {
            for(i=1; i<8; i++)
            {
                cal.addWeekdayRenderer(i, myCustomRenderer);
            }
            cal.addRenderer('1/10/2009-30/10/2009' ,myCustomRenderer);
        };

        this.addEvent = function(date)
        {
            cal.addRenderer(date, cal.renderCellStyleHighlight1);
        };

        this.render = function()
        {
            cal.render();
        };

        this.updateDate = function(day, month, year) {
            if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) {
                var date = month + "/" + day + "/" + year;

                cal.select(date);
                cal.cfg.setProperty("pagedate", month + "/" + year);
                cal.render();
            }
        };

        this.addSelectHandler = function(handler)
        {
            cal.selectEvent.subscribe(handler, cal, true);
        };
        
        this.addDeselectHandler = function(handler)
        {
            cal.deselectEvent.subscribe(handler, cal, true);
        };

        this.addPageHandler = function(handler)
        {
            cal.changePageEvent.subscribe(handler, cal, true);
        };

        this.getMonth = function()
        {
            return cal.getMonth();
        };
    };
