jQuery().ready(function() {
						
	jQuery.validator.addMethod("zip", function(value, element) {
                        return this.optional(element) || value.match(/^((\d{5}-\d{4})|(\d{5})|([a-z]\d[a-z]\s?\d[a-z]\d))$/i);
                }, "US or Canadian postal code only") 
	
		$("#computeButton").click(function() {
			
			t = computeTabTotal("revenus");
		
        	if (t > 0) 
				{			
				$("#nom").attr("readonly", "");
				$("#courriel").attr("readonly", "");
				$("#nom2").attr("readonly", "");
				$("#courriel2").attr("readonly", "");
				$("#envoyer").attr("readonly", "");
				$("#message").attr("readonly", "");
				$("#envoyer").attr("disabled", "");
				$("#votrenom").attr("class", "");
				$("#votrecourriel").attr("class", "");
				$("#votrenom2").attr("class", "");
				$("#votrecourriel2").attr("class", "");
				$("#votremessage").attr("class", "");
				$("#message").attr("class", "");
				}
	});

	// Configuration de la validation
	$("#budgetForm").validate({
		
		showErrors: function(errorMap, errorList) {
			this.defaultShowErrors();
		},
		
		// Conteneur de la liste d'erreurs
		errorLabelContainer: "#errorsBox2 ul",
		wrapper: "li", 
		
		highlight: function(element, errorClass) {
			if ($(element).attr("id") == "noTel1" || $(element).attr("id") == "noTel2" || $(element).attr("id") == "noTel3") {
				$("label[for=noTel]").addClass(errorClass);
			} else {
				$("label[for=" + element.name + "]").addClass(errorClass);
			}
		},
		
		unhighlight: function(element, errorClass) {
			if ($(element).attr("id") == "noTel1" || $(element).attr("id") == "noTel2" || $(element).attr("id") == "noTel3") {
				$("label[for=noTel]").removeClass(errorClass);
			} else {
				$("label[for=" + element.id + "]").removeClass(errorClass);
			}
		},
		
		rules: {	
			nom : "required",
			courriel: {
				required: true, 
                email: true 
			},
			courriel2: {
                email: true 
			},
			Postal: {
				required: true, 
                zip: true 
			}
			
		},
		
		messages: {
			nom : "Votre nom est requis.",
			courriel: {
				required: "Votre courriel est requis.",
				email: "Votre courriel n'est pas valide."
			},
			Postal: {
				required: "Votre code postal est requis.",
				zip: "Votre code postal n'est pas valide."
			}
			
		}
		
	});

});

/**
 * Calcule le total d'une section selon son type
 * (simple ou détaillé).
 */
function computeTabTotal(idTab)
{
	if (getSpecifiedType(idTab) == "simple") {
		return computeTotal($("#"+idTab+" .fieldsetSimple"));
	} else {
		return computeTotal($("#"+idTab+" .fieldsetDetail"));
	}
}

/**
 * Calcule et affiche le total d'une section et du 
 * type sélectionné (simple ou détaillé?).
 */
function computeTotal(fieldsetElement)
{
	var total = 0;
	var factor = new Array(4, 26/12, 1, 1/12, 1/3, 1/6); //Transformation vers mensuel selon la fréquence
	
	fieldsetElement.find(":text").each(function(){
		if ( !isNaN(parseFloat($(this).val())) ) {
			if ( $("#freq"+toUCFirst($(this).attr("id"))).length != 0 ) {
				total += parseFloat($(this).val()) * factor[$("#freq"+toUCFirst($(this).attr("id"))).val()];
			} else {
				total += parseFloat($(this).val());
			}
		}
	});
	
	total = roundNumber(total, 3)
	
	fieldsetElement.find(".total").html("<strong>Total mensuel</strong>: " + total + " $");
	
	return total;
}

/**
 * Retourne la chaîne reçue en paramètre avec la première 
 * lettre en majuscule.
 */
function toUCFirst(string)
{
	return string.substring(0, 1).toUpperCase() + string.slice(1);
}