$(function() {

	// --------------------------------------------
	// Etape 1
	// --------------------------------------------

	$('#nb_enfants').change(
		function() {
			$('.enfant').hide();
			for (var i = 1 ; i <= $('#nb_enfants').val() ; i++) {
				$('#zenfant' + i).show();
			}
		}
	);
	$('#nb_enfants').change();

	$('.date, .date_required, .date_not_required').focus(
		function() {
			if ($(this).val() == 'jj/mm/aaaa') $(this).val(''); 	
		}
	).blur(
		function() {
			if ($(this).val() == '') $(this).val('jj/mm/aaaa'); 	
		}
	);

	toggleStatut('date_de_naissance', 'zstatut', false);
	toggleStatut('date_de_naissance_conjoint', 'zstatut_conjoint', false);
	toggleStatut('enfant1', 'zstatut_enfant1', true);
	toggleStatut('enfant2', 'zstatut_enfant2', true);
	toggleStatut('enfant3', 'zstatut_enfant3', true);
	toggleStatut('enfant4', 'zstatut_enfant4', true);
	toggleStatut('enfant5', 'zstatut_enfant5', true);
	toggleStatut('enfant6', 'zstatut_enfant6', true);
	toggleStatut('enfant7', 'zstatut_enfant7', true);
	toggleStatut('enfant8', 'zstatut_enfant8', true);
	toggleMessageEnfants();
	
	$('#formDevis1').validate(
		{
            errorClass: "validation_error",
			rules: {
				code_postal: 'code_postal',
				date_de_naissance: 'date_required',
				date_de_naissance_conjoint: 'date_not_required',
				enfant1: 'date_enfant',
				enfant2: 'date_enfant',
				enfant3: 'date_enfant',
				enfant4: 'date_enfant',
				enfant5: 'date_enfant',
				enfant6: 'date_enfant',
				enfant7: 'date_enfant',
				enfant8: 'date_enfant'
			}
		}
	);
	
	// --------------------------------------------
	// Etape 2
	// --------------------------------------------
	
	$("#rescouv1_1, #rescouv2_1, #rescouv3_1").hide();
	$("#zrescouv2_2").hide();
	$("#zrescouv3").hide();
	
	// ***************** Couv 1 ********************
	$("#star1_1").click(
		function() {
			$("#garantie_niv1").val(1);
			$(this).addClass("active");
			$("#star2_1, #star3_1").removeClass("active");
			$(".star_content1").removeClass("star2").removeClass("star3").addClass("star1");
			$("#rescouv1_1").show();
			$("#rescouv2_1, #rescouv3_1").hide();
			
			if (!$("#zrescouv2_1").is(":visible"))
			{
				$("#zrescouv2_1").show();
				$("#zrescouv2_2").hide();
				$("#zrescouv3").hide();
			}
		}
	);
	$("#star2_1").click(
		function() {
			$("#garantie_niv1").val(2);
			$(this).addClass("active");
			$("#star1_1, #star3_1").removeClass("active");
			$(".star_content1").removeClass("star1").removeClass("star3").addClass("star2");
			$("#rescouv2_1").show();
			$("#rescouv1_1, #rescouv3_1").hide();
			
			if ($("#zrescouv2_1").is(":visible"))
			{
				$("#zrescouv2_2").show();
				$("#zrescouv2_1").hide();
				$("#zrescouv3").show();
				$("#rescouv1_2_2, #rescouv2_2_2, #rescouv3_2_2").hide();
			}
		}
	);
	$("#star3_1").click(
		function() {
			$("#garantie_niv1").val(3);
			$(this).addClass("active");
			$("#star1_1, #star2_1").removeClass("active");
			$(".star_content1").removeClass("star1").removeClass("star2").addClass("star3");
			$("#rescouv3_1").show();
			$("#rescouv1_1, #rescouv2_1").hide();
			
			if ($("#zrescouv2_1").is(":visible"))
			{
				$("#zrescouv2_2").show();
				$("#zrescouv2_1").hide();
				$("#zrescouv3").show();
				$("#rescouv1_2_2, #rescouv2_2_2, #rescouv3_2_2").hide();
			}
		}
	);
	
	// *********************************************
	
	// ***************** Couv 2 ********************
	$("#star1_2_1").click(
		function() {
			$("#garantie_niv2").val(1);
			$(this).addClass("active");
			$("#star2_2_1").removeClass("active");
			$(".star_content2_1").removeClass("star2").removeClass("star3").addClass("star1");
			$("#rescouv1_2_1").show();
			$("#rescouv2_2_1").hide();
		}
	);
	$("#star2_2_1").click(
		function() {
			$("#garantie_niv2").val(2);
			$(this).addClass("active");
			$("#star1_2_1").removeClass("active");
			$(".star_content2_1").removeClass("star1").removeClass("star3").addClass("star2");
			$("#rescouv2_2_1").show();
			$("#rescouv1_2_1").hide();
		}
	);
	$("#star1_2_2").click(
		function() {
			$("#garantie_niv2").val(3);
			$(this).addClass("active");
			$("#star2_2_2, #star3_2_2").removeClass("active");
			$(".star_content2_2").removeClass("star2").removeClass("star3").addClass("star1");
			$("#rescouv1_2_2").show();
			$("#rescouv2_2_2, #rescouv3_2_2").hide();
		}
	);
	$("#star2_2_2").click(
		function() {
			$("#garantie_niv2").val(4);
			$(this).addClass("active");
			$("#star1_2_2, #star3_2_2").removeClass("active");
			$(".star_content2_2").removeClass("star1").removeClass("star3").addClass("star2");
			$("#rescouv2_2_2").show();
			$("#rescouv1_2_2, #rescouv3_2_2").hide();
		}
	);
	$("#star3_2_2").click(
		function() {
			$("#garantie_niv2").val(5);
			$(this).addClass("active");
			$("#star1_2_2, #star2_2_2").removeClass("active");
			$(".star_content2_2").removeClass("star1").removeClass("star2").addClass("star3");
			$("#rescouv3_2_2").show();
			$("#rescouv1_2_2, #rescouv2_2_2").hide();
		}
	);
	
	// *********************************************
	
	// ***************** Couv 3 ********************
	$("#star1_3").click(
		function() {
			$("#garantie_niv3").val(1);
			$(this).addClass("active");
			$("#star2_3").removeClass("active");
			$(".star_content3").removeClass("star2").addClass("star1");
			$("#rescouv1_3").show();
			$("#rescouv2_3").hide();
		}
	);
	$("#star2_3").click(
		function() {
			$("#garantie_niv3").val(2);
			$(this).addClass("active");
			$("#star1_3").removeClass("active");
			$(".star_content3").removeClass("star1").addClass("star2");
			$("#rescouv2_3").show();
			$("#rescouv1_3").hide();
		}
	);
	
	// *********************************************
	
	if ($("#garantie_niv1").val() != "") $("#star" + $("#garantie_niv1").val() + "_1").click();
	if ($("#garantie_niv2").val() == "1") $("#star1_2_1").click();
	if ($("#garantie_niv2").val() == "2") $("#star2_2_1").click();
	if ($("#garantie_niv2").val() == "3") $("#star1_2_2").click();
	if ($("#garantie_niv2").val() == "4") $("#star2_2_2").click();
	if ($("#garantie_niv2").val() == "5") $("#star3_2_2").click();
	if ($("#garantie_niv3").val() != "") $("#star" + $("#garantie_niv3").val() + "_3").click();
		
	// --------------------------------------------
	// Etape 3
	// --------------------------------------------
	
	$('#tel').focus(
		function() {
			if ($(this).val() == 'ex: 0123456789') $(this).val(''); 	
		}
	).blur(
		function() {
			if ($(this).val() == '') $(this).val('ex: 0123456789'); 	
		}
	);
	
	$('#formDevis3').validate(
		{
            errorClass: "validation_error",
			rules: {
			    civilite: { required: true },
				tel: 'tel'
			}
		}
	);
	
	// --------------------------------------------
	// Etape 4
	// --------------------------------------------
	$('#agence').click(
		function() {
			Fenetre($(this).attr('href'), 'adresses', '490', '560')
			return false;		
		}
	);
	
});

$.validator.addMethod('code_postal', function(value) {
	var regexp = new RegExp('^([0-9]{5})$');
	return regexp.test(value);
}, 'Veuillez entrer un code postal valide');

$.validator.addMethod('date_required', function(value) {
	if ((value != '') && (value != 'jj/mm/aaaa'))
		return o2s.isDate(value) && (dateDiffFromToday(value, 'days') > 0);
	else
		return false;
}, 'Veuillez entrer une date valide');

$.validator.addMethod('date_not_required', function(value) {
	if ((value != '') && (value != 'jj/mm/aaaa'))
		return o2s.isDate(value) && (dateDiffFromToday(value, 'days') > 0);
	else
		return true;
}, 'Veuillez entrer une date valide');

$.validator.addMethod('date_enfant', function(value, element) {
	if ($('#nb_enfants').val() >= element.name.replace('enfant', ''))
		return o2s.isDate(value);
	else
		return true;
}, 'Veuillez entrer une date valide');

$.validator.addMethod('tel', function(value) {
	var regexp = new RegExp('^([0-9]{10})$');
	return regexp.test(value);
}, 'Veuillez entrer votre n° de téléphone sous la forme : 0123456789');

toggleStatut = function(fieldDate, fieldStatut, fieldIsEnfant) {
	var ageMax = 27;
	var ageMin = 15;
	$('#' + fieldDate).blur(
		function() {
			var age = dateDiffFromToday($(this).val(), 'years');
			if (age != null) $('#' + fieldStatut).toggle(((!fieldIsEnfant) && (age < ageMax)) || ((fieldIsEnfant) && (age >= ageMin) && (age < ageMax)))   ; else $('#' + fieldStatut).hide();
			if (fieldIsEnfant) toggleMessageEnfants();
		}
	);
	$('#' + fieldDate).blur();
}

toggleMessageEnfants = function() {
	var ageLimite = 28;
	var toggle = false;
	var naissance;
	for (var i = 1 ; i <= 8 ; i++)
	{
		naissance = $('#enfant' + i).val();
		if ((naissance != null) && (naissance != 'jj/mm/aaaa') && (dateDiffFromToday(naissance, 'years') > ageLimite)) toggle = true;
	}
	$('#msg_enfants').toggle(toggle);
}

dateDiffFromToday = function(date1, interval)  {
    var second = 1000, minute = second * 60, hour = minute * 60, day = hour * 24, week = day * 7;
    
    if (o2s.isDate(date1))
    {
        var parts = date1.split('/');
        date1 = new Date(parts[1] + '/' + parts[0] + '/' + parts[2]);
        date2 = new Date();
        var timediff = date2 - date1;
        if (isNaN(timediff)) return NaN;
        switch (interval) {
            case 'years': return date2.getFullYear() - date1.getFullYear();
            case 'months': return (
                ( date2.getFullYear() * 12 + date2.getMonth() )
                -
                ( date1.getFullYear() * 12 + date1.getMonth() )
            );
            case 'weeks'  : return Math.floor(timediff / week);
            case 'days'   : return Math.floor(timediff / day); 
            case 'hours'  : return Math.floor(timediff / hour); 
            case 'minutes': return Math.floor(timediff / minute);
            case 'seconds': return Math.floor(timediff / second);
            default: return undefined;
        }
    }
    else
        return undefined;
}

