	//this is a global variable to have only one instance of the calendar
	var calendar = null;
	
	//@element   => is the <div> where the calender will be rendered by Scal.
	//@input     => is the <input> where the date will be updated.
	//@container => is the <div> for dragging.
	//@source    => is the img/button which raises up the calender, the script will locate the calenar over this control.
	function showCalendar(element, input, container, source, fieldformat)                        
	{
		if (!calendar){
		    container = $(container);
		    //the Draggable handle is hard coded to "rtop" to avoid other parameter.
		    new Draggable(container, {handle: "rtop", starteffect: Prototype.emptyFunction, endeffect: Prototype.emptyFunction});
		    
		    //The singleton calendar is created.
		    calendar = new scal(element, $(input), 
		    {
		        updateformat: 'dd/mm/yyyy', 
		        closebutton: '&nbsp;', 
				weekdaystart: 1,
		        wrapper: container
		    }); 
		}
		else {
		    calendar.updateelement = $(input);
		}
	
		var dateSeparator='/';
		if (fieldformat.match('-')=='-') {dateSeparator='-'};
		var dateStr = $F(input);
		var firstFormatChar = fieldformat.charAt(0).toLowerCase();
		if (firstFormatChar == 'd')
		{
			var arr1 = dateStr.split(dateSeparator);
			var arr2 = new Array(arr1[1],arr1[0],arr1[2]);
			var dateStr2 = arr2.join('/');
		}
		else
		{
			dateStr2 = dateStr1;
		};

		var date = new Date(dateStr2);	
		calendar.setCurrentDate(isNaN(date) ? new Date() : date);
		
		//Locates the calendar over the calling control  (in this example the "img").
		if (source = $(source))
		{
		    Position.clone($(source), container, {setWidth: false, setHeight: false, offsetLeft: source.getWidth() + 2});
		}
	
		//finally show the calendar =)
		calendar.openCalendar();
	};
	
	
	
	Object.extend(Date.prototype, {
		monthnames: ['Janvier','F&eacute;vrier','Mars','Avril','Mai','Juin','Juillet','Ao&ucirc;t','Septembre','Octobre','Novembre','D&eacute;cembre'],
		daynames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']
	});		