/**
 * Useful scripts & functions
 */

/**
 * Use a list of <select> to create a datepicker
 * @author s.collado@gmail.com
 * @param IDselectDay string
 * @param IDselectMonth string
 * @param IDselectYear string
 */
function bjnDatePicker(IDselectDay, IDselectMonth, IDselectYear, IDresultField) {
	this.selectDay		= $('#' + IDselectDay);
	this.selectMonth	= $('#' + IDselectMonth);
	this.selectYear		= $('#' + IDselectYear);
	this.resultField	= $('#' + IDresultField);

	this.selectDay.change(function(e) {
		updateDate();
	});
	this.selectMonth.change(function(e) {
		updateDate();
	});
	this.selectYear.change(function(e) {
		updateDate();
	});
	function updateDate() {

		var yearVal =  Number($('#' + IDselectYear + ' option:selected').val());
		var monthVal = Number($('#' + IDselectMonth + ' option:selected').val());
		var dayVal = Number($('#' + IDselectDay + ' option:selected').val());

		var days = 31;

		// Mois avec 30 jours
		if (monthVal == 4 || monthVal == 6 || monthVal == 9 || monthVal == 11) {
			days = 30;
		}// Année bissextile ?
		else if (monthVal == 2) {
			if ( (Math.floor(yearVal/4) == (yearVal/4)) && ( (Math.floor(yearVal/100) != (yearVal/100)) || (Math.floor(yearVal/400) == (yearVal/400)) ) ) {
				days = 29;
			}
			else {
				days = 28;
			}
		}

		// manque des jours
		if (days > $('#' + IDselectDay + ' option').length) {
			for (var i = $('#' + IDselectDay + ' option').length; i < days; i++) {
				var option = document.createElement('option');
				option.text = i+1;
				option.value = i+1;
				this.selectDay.append(option);
			}
		}

		//jours en trop
		if (days < $('#' + IDselectDay + ' option').length) {
			$('#' + IDselectDay + ' option').each(function(){
				if ( Number(this.value) > days ) {
					$(this).remove();
				}
			})
		}
		// Mise à jour du champs pour le submit
		this.resultField.val(String(dayVal) + '/' + String(monthVal) + '/' + String(yearVal));
	}
}
