

/**
 * objet Date : Extension de la classe Date
 */
(function () {
	var window = this,
			document = window.document,
			ev = window.ev,
			Date = window.Date;

	/**
	 * Convertit les valeurs des selecteurs de date des formulaires MEH
	 * en date sous forme texte au format fr_FR (dd/m/yyyy)
	 *
	 * @param {Object} daySelectorId
	 * @param {Object} monthYearSelectorId
	 */
	Date.convertSelectorToStringFr = function(daySelectorId, monthYearSelectorId) {
		var selector = document.getElementById(daySelectorId);
		var day = selector.options[selector.selectedIndex].value;
	
		selector = document.getElementById(monthYearSelectorId);
		var monthYear = selector.options[selector.selectedIndex].value;
		var monthYearArray = monthYear.split('/');
		var year = parseInt(monthYearArray[1], 10);
		// Supprimer le zéro de début pour permettre le parsing d'un entier
		var month = parseInt(monthYearArray[0], 10);
		if (month < 10) {
			return day + '/0' + month + '/' + year;
		}
		return day + '/' + month + '/' + year;
	};
	
	
	/**
	 * Convertit les valeurs des selecteurs de date des formulaires MEH
	 * en date sous forme texte au format fr_FR (dd/mm/yyyy)
	 *
	 * @param {Object} daySelectorId
	 * @param {Object} monthYearSelectorId
	 */
	Date.convertSelectorToStringFormatFr = function(daySelectorId, monthYearSelectorId) {
	
		var selector = document.getElementById(daySelectorId);
		var day = selector.options[selector.selectedIndex].value;
	
		selector = document.getElementById(monthYearSelectorId);
		var monthYear = selector.options[selector.selectedIndex].value;
		var monthYearArray = monthYear.split('/');
		var year = parseInt(monthYearArray[1], 10);
		// Supprimer le zéro de début pour permettre le parsing d'un entier
		var month = parseInt(monthYearArray[0], 10);
		if (month < 10) {
			return day + '/0' + month + '/' + year;
		}
		return day + '/' + month + '/' + year;
	};
	
	
	/**
	 * Initialise les selecteurs jour et moisAnneee d'un formulaire MEH
	 * ŕ partir d'une date javascript
	 *
	 * @param {Date} date
	 * @param {Object} daySelectorId
	 * @param {Object} monthYearSelectorId
	 */
	Date.convertDateToSelector = function(date, daySelectorId, monthYearSelectorId) {
		if (typeof(date) !== 'undefined') {
			var day = date.getDate(),
					month = date.getMonth() + 1,
					year = date.getFullYear(),	
					daySelector = document.getElementById(daySelectorId),
					selector = document.getElementById(monthYearSelectorId),
					i, j;
			for (j = 0; j < daySelector.options.length; j++) {
				if (parseInt(daySelector.options[j].value, 10) === day) {
					daySelector.selectedIndex = j;
					break;
				}
			}
			if (month < 10) {
				month = '0'+ month;
			}
			month = month + '/' + year;
			for (i = 0; i < selector.options.length; i++) {
				if (selector.options[i].value === month) {
					selector.selectedIndex = i;
					break;
				}
			}
		}
	};
	
	
	/**
	 * Convertit une date texte au format fr_FR (dd/mm/yyyy)
	 * en une Date javascript
	 *
	 * @param {Object} dateText
	 */
	Date.convertStringFrToDate = function(d) {
		d = d.split('/');
		if (d.length < 3) {
			ev.log.error('Mauvais format de date : \'' + d + '\'');
			return null;
		}
		var tmp = new Date();
		tmp.setFullYear(d[2], parseInt(d[1], 10) - 1, d[0]);
		return tmp;
	};
}());

