/*
	Crée un date picker en dessous de l'éléments qui déclenche l'evènement
	l'évènement est souvent déclenché lorsque qu'on clique sur un champ de saisi
*/

	function ViewDatePicker( event ) {
		/*
			Si le DIV qui contient le widget n'existe pas encore dans la page on le créé
		*/
		if( ! $("DN_DatePicker_142025") ) {
			document.body.insert({bottom:'<div style="display:none;position:absolute;z-index: 10;" id="DN_DatePicker_142025"><div id="DN_Calendar_142025"></div></div>'});
		}

		//__ si l'utilisateur entame une saisie au clavier dans le champs, on cache le DatePicker
			this.observe("keydown", function() {
				$("DN_DatePicker_142025").hide();
				$("DN_DatePicker_142025").stopObserving( "click" ); //__ annule l'écoute de onmouseout
				document.body.stopObserving( "click" );				//__ annule l'écoute de onmouseout
			});

		event.stop();



		var cal1 = new YAHOO.widget.Calendar("DN_Calendar_142025", {navigator:true,start_weekday:1});

		var _DateField = event.element().value;

		if( ! _DateField.empty() ) {
			var _tmp =	_DateField.split("-");

			cal1.cfg.setProperty("pagedate", _tmp[1]+"/"+_tmp[2] );
			cal1.cfg.setProperty("selected", _tmp[1]+"/"+_tmp[0]+"/"+_tmp[2] );
		}

		// Date labels for French locale
		cal1.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Fév", "Mars", "Avr", "Mai", "Juin", "Juil", "Août", "Sept", "Oct", "Nov", "Déc"]);
		cal1.cfg.setProperty("MONTHS_LONG",    ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"]);
		cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["D", "L", "M", "M", "J", "V", "S"]);
		cal1.cfg.setProperty("WEEKDAYS_SHORT", ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"]);
		cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"]);
		cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"]);


		cal1.render();

		var Original_Value = this.value ;

		cal1.selectEvent.subscribe(function( type, args, field ) {

			var selected = args[0];
			var _date = cal1.toDate( selected[0] );
			var _day = _date.getDate();
			_day = (( _day < 10 ) ? "0" : "" )+_day;
			var _month = _date.getMonth()+1;
			_month = (( _month < 10 ) ? "0" : "" )+_month;
			var _year = _date.getFullYear();

			field.value = _day+"-"+_month+"-"+_year;

			//__ déclenchement de l'evenement date:change si la valeur selectionnée est différente de la valuer actuelle du champ
			if( field.value != Original_Value ) {
				this.fire("date:change");
			}

			//__ redonne le focus au champs de saisie
			field.focus();

			$("DN_DatePicker_142025").hide();
			$("DN_DatePicker_142025").stopObserving( "click" ); //__ annule l'écoute de onmouseout
			document.body.stopObserving( "click" );			 //__ annule l'écoute de onmouseout
		}, this ,true); //__ this correspond au paramètre field


		var _height = this.getHeight();

		var cumulativeOffset = this.cumulativeOffset();

		var _top = cumulativeOffset.top + _height;
		var _left = cumulativeOffset.left;

		$("DN_DatePicker_142025").setStyle({
			"top": _top+"px",
			"left": _left+"px"
		});
		$("DN_DatePicker_142025").show();


		//__ simule un évènement clickoutside pour cacher le DatePicker
			$("DN_DatePicker_142025").observe("click", function( event ) {
				event.stop();
			});

			document.body.observe("click", function( event ) {
				if( $("DN_DatePicker_142025").visible() ) {
					$("DN_DatePicker_142025").hide();
				}
				event.stop();

				$("DN_DatePicker_142025").stopObserving( "click" );
				document.body.stopObserving( "click" );
			});
	}



/*
	Alias de document.location.href
*/

	function go( url ) {
		document.location.href = url;
	}



/*
	formate le contenu d'un champs texte contenant une heure en
	format compatible MySQL
	typiquement:
		10h32  -> 10:32
		10H32 -> 10:32
*/

	function FormateHeure ( event ) {
		var _value = event.findElement().value;

		if( _value == "" ) {
			return;
		}

		event.findElement().value = _value.replace( /(h)/i , ":");
	}


/*
	formate le contenu d'un champs texte contenant une date formatée
	typiquement: remplace 17/17/1981 par 07-07-1981
*/

	function FormateDate ( event ) {
		var _value = event.findElement().value;

		if( _value == "" ) {
			return;
		}

		//__ format 07 07 1981
		if( /[0-9]{2} [0-9]{2} [0-9]{4}/.test( _value ) ) {
			event.findElement().value = _value.split(" ").join("-");
			return;
		}

		//__ format 07/07/1981
		if( /[0-9]{2}\/[0-9]{2}\/[0-9]{4}/.test( _value ) ) {
			event.findElement().value = _value.split("/").join("-");
			return;
		}

		//__ format 7/7/1981
		if( /[0-9]{1}\/[0-9]{1}\/[0-9]{4}/.test( _value ) ) {
			_tmp = _value.split("/");
			event.findElement().value = "0"+_tmp[0]+"-0"+_tmp[1]+"-"+_tmp[2];
			return;
		}

		//__ format 7/7/81
		//__ format 7/7/03
		if( /[0-9]{1}\/[0-9]{1}\/[0-9]{2}/.test( _value ) ) {
			_tmp = _value.split("/");

			if( parseInt( _tmp[2] )  < 99 && parseInt( _tmp[2] )  > 50 ) {
				_tmp[2] = "19"+_tmp[2];
			} else if( parseInt( _tmp[2] )  >= 0 && parseInt( _tmp[2] )  < 50 ) {
				_tmp[2] = "20"+_tmp[2];
			}


			event.findElement().value = "0"+_tmp[0]+"-0"+_tmp[1]+"-"+_tmp[2];
			return;
		}

	}