Verifications_dates_materiels.js 5.03 KB
$(document).ready(function () {
	/**
	 * Event Mail change
	 */
	$("#nom-responsable").bind("change", function(event) {
		if ($("#nom-responsable").val() == "") {
			$("#email-responsable").val("");
		} else {
			var url = document.URL;
			var reg = new RegExp("(materiels).*$", "g");
			var emailUrl = url.replace(reg, "Users/getLdapEmail/");
			$.ajax({
				url: emailUrl + $("#nom-responsable").val()
			}).done(function(data) {
				$("#email-responsable").val(data)
			});
		}
	});


	/**
	 * Event calcul date fin de garantie
	 */
	/* On formatte COMME IL FAUT les dates des formulaires */
	/* EP deactivated, works but no more necessary ?*/
	$('.datepicker').each(function(){
		this.value = this.value.replace(/\//g, "-");
		this.value = twoToFour(this.value);
	});

	/* Puis si nécessaire on update la date de fin de gurantie au chargement de la page */
	if ($("#date-fin-garantie")[0].value != "") date_fin_garantie_update();

	/* Et enfin les events purs */
	/*
	$("#date-reception").change(
		function(event) { date_fin_garantie_update(); }
	);
	*/
	$("#date-reception").change(
		function(event) { 
			if(!checkDate(this.value)) {
			    	alert("Les dates doivent être de la forme dd-mm-YYYY");
				event.preventDefault();
			}
			else {
				date_fin_garantie_update(); 
			}
		}
	);
	$("#duree-garantie").bind("change", function(event) { date_fin_garantie_update(); });
	$("#unite-duree-garantie").bind("change", function(event) { date_fin_garantie_update(); });
	/*$("#date-fin-garantie").bind("change", function(event) { $("#duree-garantie")[0].value = "" });*/
	$("#date-fin-garantie").change(
			function(event) { 
				if(!checkDate(this.value)) {
				    	alert("Les dates doivent être de la forme dd-mm-YYYY");
					event.preventDefault();
				}
				else {
					$("#duree-garantie")[0].value = ""; 
				}
			}
		);

	/**
	 * Event - à la validation, on vérifie les dates
	 */
	$( ".form" ).submit(function( event ) {
		s1 = $("#date-acquisition")[0].value;
		s2 = $("#date-reception")[0].value;
		s3 = $("#date-fin-garantie")[0].value;
// 		if () {
// 			alert("Les dates doivent être de la forme dd-mm-YYYY");
// 			event.preventDefault();
// 		}
		
		/* EP deactivated, works but no more necessary
		$bool = false;
		$('.datepicker').each(function(){
			if(this.value != "" && $bool == false) {
				console.log(this.value);
			    if(!checkDate(this.value)){
			    	$bool = true;
			    	alert("Les dates doivent être de la forme dd-mm-YYYY");
					event.preventDefault();
			    }
			}
		});
		*/
		
		d1 = toDate($("#date-acquisition")[0].value); 	/* Date de la commande */
		d2 = toDate($("#date-reception")[0].value); 	/* Date de réception */
		d3 = toDate($("#date-fin-garantie")[0].value); 	/* Date fin de garantie */
		
		/* EP deactivated, works but no more necessary
		if($("#date-reception")[0].value != undefined){
			if(d1 > d2) {
				alert("Les dates ne correspondent pas, la date de réception doit être supérieure à la date de commande.");
				event.preventDefault();
			}
		}
		*/

		if($("#date-reception")[0].value != undefined){
			if(d2 > d3) {
				alert("Les dates ne correspondent pas, la date de fin de garantie doit être supérieure à la date de réception.");
				event.preventDefault();
			}
		}
		
	}); /* On SUBMIT */
});

/**
 * Fonction qui vérifie que la date en parametre soit bien au format dd-mm-YYYY ou d-m-YYYY
 */
function checkDate(str) {
  //return str.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/);
  return str.match(/^(\d{2})-(\d{2})-(\d{4})$/);
}

/**
 * Fonction qui passe l'année de deux à quatres chiffres
 */
function twoToFour(str) {
	if (str.match(/^(\d{1,2})-(\d{1,2})-(\d{2})$/)) {
		tabStr = str.split("-");
		tabStr[2] = "20"+tabStr[2];
		str = tabStr[0]+"-"+tabStr[1]+"-"+tabStr[2];
	}
	return str;
}

/**
* Fonction de mise à jour de la date de fin de guarantie
*/
function date_fin_garantie_update() {
	if ($("#date-reception").val() != "" && $("#duree-garantie").val() != "") {
		/* EP added this : 
		$('.datepicker').each(function(){
			this.value = this.value.replace(/\//g, "-");
			this.value = twoToFour(this.value);
		});
		*/
		$("#date-reception").each(function(){
			this.value = twoToFour(this.value);
		});
		
		var url = document.URL;
		var reg = new RegExp("(materiels).*$", "g");
		var dateUrl = url.replace(reg, "Materiels/getDateGarantie/");
		$.ajax({
			url: dateUrl + $("#date-reception").val() + "/" + $("#duree-garantie").val() + "/" + $("#unite-duree-garantie").val()
		}).done(function(data) {
			$("#date-fin-garantie").val(data)
		});
	}
}

/**
* Fonction qui transforme la chaine de format dd-mm-YYYY en date js pour pouvoir être comparée par la suite
*/
function toDate(str) {
	var DateString = str.split("-");
	return new Date(parseInt(DateString[2]), parseInt(DateString[1]) + 1, parseInt(DateString[0]), 12, 00, 00);
	/* 	new Date(YYYY, mm+1, dd, 12, 00, 00)
		Le +1 du mois est nécessaire car les mois commencent à 0 en JS
		les 3 derniers chiffres ne sont pas nécessaires, mais si on les retire ça bug uniquement sous firefox (il est plus strict que chrome paar exemple)
		et la date devient du grand n'importe quoi 
	*/
}