jQuery.noConflict();

jQuery(document).ready(function($) {
	
	/**
	 * Retourne la date courante sous la forme jj/mm/aaaa
	 */
	function getDateString() {
		var t = new Date();
		var m = (t.getMonth() + 1).toString();
		var d = t.getDate().toString();
		var y = t.getFullYear();
		
		if (m.length == 1) m = "0" + m;
		if (d.length == 1) d = "0" + d;
		
		return d + "/" + m + "/" + y;
	}
	
	/**
	 * Initialisation du formulaire de reservation de salles
	 */
	$.fn.setuptMeetingRoomForm = function() {
		
		// Ajout d'une ligne de reservation de salle
		function addMeetingRoom() {
			var $row = $("<tr></tr>");
			var $trash = $("<a class=\"corbeille\" href=\"#\" title=\"Supprimer\"><span class=\"hidden\">Supprimer</span></a>");
			$trash.click(function(event) {
				$row.remove();
				event.stopPropagation();
				event.preventDefault();
				return false;
			});
						
			$row.append(
				"<td><input name=\"arrivalDate[]\" class=\"texte date etroit\"  type=\"text\" size=\"10\" value=\"" + getDateString() + "\" /></td>" +
				"<td><input name=\"departureDate[]\" class=\"texte date etroit\" type=\"text\" size=\"10\" value=\"" + getDateString() + "\" /></td>" +
				"<td><input name=\"peopleNumber[]\" class=\"texte etroit\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"\" /></td>" +
				"<td><select name=\"roomType[]\"><option value=\"Principale\">Principale</option><option value=\"Pleniere\">Pl\u00e9ni\u00e8re</option></select></td>" +
				"<td><select name=\"roomConfiguration[]\"><option value=\"DEFAULT\">Sans pr\u00e9f\u00e9rence</option><option value=\"BOARD_ROOM\">Board Room</option><option value=\"U\">Salle en U</option><option value=\"CLASS_ROOM\">Salle de classe</option><option value=\"THEATER\">Th\u00e9\u00e2tre</option></select></td>",
				$("<td></td>").append($trash)
			);
			$("#meetingRoomReservation > tbody").append($row);
			
			$('.date').datepicker();
		};
		
		// Case a cocher reservation de salle
		var $checkbox = $("#meetingRoom");
		$checkbox.click(function() {
			if ( $(this).is(":checked") ) {
				$("#meetingRoomReservation").show();
			} else {
				$("#meetingRoomReservation").hide();
			}
		});
		if ( $checkbox.is(":checked") ) {
			$("#meetingRoomReservation").show();
		} else {
			$("#meetingRoomReservation").hide();
		}
		
		// Bouton "+ de salles"
		var button = $("#meetingRoomReservation .boutonPlus");
		$(button).click(function(event) {
			addMeetingRoom();
			event.stopPropagation();
			event.preventDefault();
			return false;
		});
	};
	
	/**
	 * Initialisation du formulaire de reservation de chambres
	 */
	$.fn.setupRestingRoomForm = function() {
		
		// Ajout d'une ligne de reservation de chambre
		function addRestingRoom() {
			var $row = $("<tr></tr>");
			var $trash = $("<a class=\"corbeille\" href=\"#\" title=\"Supprimer\"><span class=\"hidden\">Supprimer</span></a>");
			$trash.click(function(event) {
				$row.remove();
				event.stopPropagation();
				event.preventDefault();
				return false;
			});
			$row.append(
				"<td><input name=\"restingRoomArrival[]\" class=\"texte date etroit\" size=\"10\" type=\"text\" value=\"" + getDateString() + "\" /></td>" +
				"<td><input name=\"restingRoomSingle[]\" class=\"texte etroit restingRoomSingle\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"\" /></td>" +
    			"<td><input name=\"restingRoomDouble[]\" class=\"texte etroit restingRoomDouble\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"\" /></td>" +
				"<td><input name=\"restingRoomTotal[]\"  class=\"texte etroit inactif restingRoomTotal\" type=\"text\" value=\"\" disabled=\"disabled\" /></td>",
				$("<td></td>").append($trash)
			);
			$("#restingRoomReservation > tbody").append($row);
			
			$('.date').datepicker();
			$(".restingRoomSingle").keyup(function() { $(this).updateRoomTotal(); });
			$(".restingRoomDouble").keyup(function() { $(this).updateRoomTotal(); });
		};
		
		// Case a cocher reservation de chambre
		var $checkbox = $('#restingRoom');
		
		$checkbox.click(function() {
			if ( $(this).is(":checked") ) {
				$("#restingRoomReservation").show();
			} else {
				$("#restingRoomReservation").hide();
			}
		});
		
		if ( $checkbox.is(":checked") ) {
			$("#restingRoomReservation").show();
		} else {
			$("#restingRoomReservation").hide();
		}
		
		// Bouton "+ de chambres"
		var button = $("#restingRoomReservation .boutonPlus");
		$(button).click(function(event) {
			addRestingRoom();
			event.stopPropagation();
			event.preventDefault();
			return false;
		});
	}
	
	$("#meetingRoom").setuptMeetingRoomForm();
	$("#restingRoom").setupRestingRoomForm();
	
	/* calcul des totaux chambres
	 */
	$.fn.updateRoomTotal = function() {
		var $inputs = $(this).parents().filter( "tr" ).Children().Children();
		var ns = parseInt( $inputs.filter( ".restingRoomSingle" ).val() ) | 0;
		var nd = parseInt( $inputs.filter( ".restingRoomDouble" ).val() ) | 0;
		$inputs.filter( ".restingRoomTotal" ).val( ns + nd );
	}
	
	$(".restingRoomSingle").keyup(function() {
		$(this).updateRoomTotal();
	});
	
	$(".restingRoomDouble").keyup(function() {
		$(this).updateRoomTotal();
	});
	 
	// Initialisation des champs de date
	$("input.date").each(function() {
		if ( $(this).val() == "" ) {
			$(this).val( getDateString() );
		}
	});
	
	/*
	   Réglage du calendrier :
		- Sélection de la langue française
		- Afficher l'année après le mois
		- Retourner une date au format jj/mm/aaaa
		- Pas de date inférieure à la date du jour
		- Ouverture du calendrier en cliquant sur une icône
	*/
	$.datepicker.setDefaults($.extend(
		$.datepicker.regional['fr'],
		{	showMonthAfterYear: false,
			dateFormat: 'dd/mm/yy',
			minDate: new Date(),
			showOn: 'button',
			buttonImage: 'images/calendrier.gif',
			buttonImageOnly: true,
			buttonText: 'S\u00e9lectionner une date'
		}
	));
	$('.date').datepicker();
	
	/*
	 * Validation du formulaire
	 */
	$("#reservationForm").validate({
		// Règles de validation
		rules: {
			"personnes":        { required: true, digits: true },
			"evenement":        { required: true },
			"company":          { required: true },
			"contactFirstname": { required: true },
			"contactLastname":  { required: true },
			"email":            { required: true, email: true },
			"address":          { required: true },
			"zipCode":          { required: true, digits: true },
			"city":             { required: true },
			"country":          { required: true },
			"phoneNumber":      { required: true, digits: true }
		},
		// Messages d'erreur
		messages: {
			"personnes":        { required: "Field required", digits: "Numeric field" },
			"evenement":        { required: "Please choose an event type" },
			"company":          { required: "Field required" },
			"contactFirstname": { required: "Field required" },
			"contactLastname":  { required: "Field required" },
			"email":            { required: "Field required", email: "Your email adresse is invalid" },
			"address":          { required: "Field required" },
			"zipCode":          { required: "Field required", digits: "Numeric field" },
			"city":             { required: "Field required" },
			"country":          { required: "Field required" },
			"phoneNumber":      { required: "Field required", digits: "Numeric field" }
		},
 		submitHandler: function(form) {
   		form.submit();
		}
	});
});
