var re_email = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/;
var last_autocompleted = "";

function isInteger(s) {
	return (s.toString().search(/^-?[0-9]+$/) == 0);
}

function check_valide() {
	$("#inscription_validator").css("background-image", "url(./public/images/inscription/bouton_valide.png)");
	if($("#checkbox_livraison").is(":checked"))
		selector = ".validate";
	else
		selector = ".validate.simple";
	$(selector).next().each(function(){
		if($(this).attr("is_good") == 0)
			$("#inscription_validator").css("background-image", "url(./public/images/inscription/bouton_nonvalide.png)");
	});
}

$(document).ready(function() {
	var non_valide = new Image();
	non_valide.src = "./public/images/inscription/bouton_nonvalide.png";

	$("#check_livraison").click(function() {
		if($("#checkbox_livraison").is(":checked"))
			$("#inscription_livraison").slideDown("normal");
		else {
			$("#inscription_livraison").slideUp("normal");
			check_valide();
		}
	});
	
	$(".validate").focus(function(){
		text_alert = $(this).attr("tooltip_text");
		$("#tooltip_label").html("<p>"+text_alert+"</p>");
		var height = $(this).height();
		var width = $(this).width();
		var offset = $(this).offset();
		
		var from_left = offset.left+width+3;
		var from_top = offset.top-1;
		
		$("#tooltip_box").css("top", from_top).css("left", from_left);
		$("#tooltip_box").fadeIn();
	});
	
	$(".validate").blur(function(){
		$("#tooltip_box").hide();
		if($(this).attr('validate') != null){
			var to_valid = $(this).attr('validate').split(',');
			var text = $(this).val();
			var cnt1 = cnt2 = 0;
			for(var i=0; i<to_valid.length; i++){
				cnt1++;
				switch(to_valid[i]){
					case "minlength":
						if(text.length >= $(this).attr("minlength"))
							cnt2++;
						break;
					case "int":
						if(isInteger(text))
							cnt2++;
						break;
					case "email":
						if(re_email.test(text))
							cnt2++;
						break;
					case "c_postaux":
						var cp_no_authorized = ["97", "98"];
						if($.inArray(text.substr(0, 2), cp_no_authorized) == -1)
							cnt2++;
						break;
				}
			}
			if(cnt1 != cnt2){
				$(this).next().css("background-image", "url(./public/images/inscription/croix_nonvalide.png)").css("display", "block");
				$(this).next().attr("is_good", 0);
			}
			else {
				$(this).next().css("background-image", "url(./public/images/inscription/croix_valide.png)").css("display", "block");
				$(this).next().attr("is_good", 1);
			}
			check_valide();
		}
	});
	
	$("#nom").keyup(function(){
		if($("#nom_facturation").val() == "" || $("#nom_facturation").val() == last_autocompleted){
			$("#nom_facturation").val($(this).val() + " " + $("#prenom").val());
			last_autocompleted = $(this).val() + " " + $("#prenom").val();
		}
		if($(this).val() != "" && $(this).next().attr("is_good") == 1 && $("#prenom").val() != "" && $("#prenom").next().attr("is_good") == 1) {
			$("#nom_facturation").next().css("background-image", "url(./public/images/inscription/croix_valide.png)").css("display", "block");
			$("#nom_facturation").next().attr("is_good", 1);
		}
	});
	
	$("#nom").blur(function(){
		if($(this).next().attr("is_good") != 1 || $("#prenom").next().attr("is_good") != 1) {
			if($("#nom_facturation").val() == $(this).val() + " " + $("#prenom").val()){
				$("#nom_facturation").next().css("background-image", "url(./public/images/inscription/croix_nonvalide.png)").css("display", "block");
				$("#nom_facturation").next().attr("is_good", 0);
			}
		}
	});
	
	$("#prenom").keyup(function(){
		if($("#nom_facturation").val() == "" || $("#nom_facturation").val() == last_autocompleted){
			$("#nom_facturation").val($("#nom").val() + " " + $(this).val());
			last_autocompleted = $("#nom").val() + " " + $(this).val();
		}
		if($(this).val() != "" && $(this).next().attr("is_good") == 1 && $("#nom").val() != "" && $("#nom").next().attr("is_good") == 1) {
			$("#nom_facturation").next().css("background-image", "url(./public/images/inscription/croix_valide.png)").css("display", "block");
			$("#nom_facturation").next().attr("is_good", 1);
		}
	});
	
	$("#prenom").blur(function(){
		if($(this).next().attr("is_good") != 1 || $("#nom").next().attr("is_good") != 1) {
			if($("#nom_facturation").val() == $("#nom").val() + " " + $(this).val()){
				$("#nom_facturation").next().css("background-image", "url(./public/images/inscription/croix_nonvalide.png)").css("display", "block");
				$("#nom_facturation").next().attr("is_good", 0);
			}
		}
	});
	
	$("#inscription_validator").mouseover(function(){
		check_valide();
	});

	$("#inscription_validator").click(function(){
		if($("#checkbox_livraison").is(":checked"))
			selector = ".validate";
		else
			selector = ".validate.simple";
		var global_counter = 0;
		var global_valid = $(selector).size();
		$(selector).each(function(){
			if($(this).attr('validate') != null){
				var to_valid = $(this).attr('validate').split(',');
				var text = $(this).val();
				var cnt1 = cnt2 = 0;
				for(var i=0; i<to_valid.length; i++){
					cnt1++;
					switch(to_valid[i]){
						case "minlength":
							if(text.length >= $(this).attr("minlength"))
								cnt2++;
							break;
						case "int":
							if(isInteger(text))
								cnt2++;
							break;
						case "email":
							if(re_email.test(text))
								cnt2++;
							break;
						case "c_postaux":
							var cp_no_authorized = ["97", "98"];
							if($.inArray(text.substr(0, 2), cp_no_authorized) == -1)
								cnt2++;
							break;
					}
				}
				if(cnt1 != cnt2){
					$(this).next().css("background-image", "url(./public/images/inscription/croix_nonvalide.png)").css("display", "block");
					$(this).next().attr("is_good", 0);
				}
				else {
					$(this).next().css("background-image", "url(./public/images/inscription/croix_valide.png)").css("display", "block");
					$(this).next().attr("is_good", 1);
					global_counter++;
				}
			}
			else
				global_valid--;
		});
		
		if(global_counter == global_valid)
			$("#form_inscription").submit();
		else {
			check_valide();
			//alert(global_counter + " != " + global_valid);
		}
	});
	
	$("#raison_sociale").keyup(function(){
		if($("#r_sociale_facturation").val() == last_autocompleted){
			$("#r_sociale_facturation").val($(this).val());
			last_autocompleted = $(this).val();
		}
	});		
	
	$("#raison_sociale").blur(function(){
		if($(this).val().length >= $(this).attr("minlength") || $("#r_sociale_facturation").val().length >= $(this).attr("minlength")) {
			$("#r_sociale_facturation").next().css("background-image", "url(./public/images/inscription/croix_valide.png)").css("display", "block");
			$("#r_sociale_facturation").next().attr("is_good", 1);
		}
		else {
			$("#r_sociale_facturation").next().css("background-image", "url(./public/images/inscription/croix_nonvalide.png)").css("display", "block");
			$("#r_sociale_facturation").next().attr("is_good", 0);
		}
	});
	
	$(".only_numbers").keyup(function(){
		var reg = new RegExp("[ .&~^$,;:!<>µ%£¤¨\(\)\\[\\]\\\\@/_\-a-zA-Z]+", "gi");
		var reg2 = new RegExp("\\*", "gi");
		var reg3 = new RegExp("\\+", "gi");
		$(this).val($(this).val().replace(reg, '').replace(reg2, '').replace(reg3, ''));
	});
	
	$(".telephones").blur(function(){
		if($(this).attr('validate') != null){
			var tel_authorized = ["01", "02", "03", "04", "05", "06", "07", "08", "09"];
			if($.inArray($(this).val().substr(0, 2), tel_authorized) == -1){
				$(this).next().css("background-image", "url(./public/images/inscription/croix_nonvalide.png)").css("display", "block");
				$(this).next().attr("is_good", 0);
			}
		}
	});
	
	$(".c_postaux").blur(function(){
		if($(this).attr('validate') != null){
			var cp_no_authorized = ["97", "98"];
			if($.inArray($(this).val().substr(0, 2), cp_no_authorized) != -1){
				$(this).next().css("background-image", "url(./public/images/inscription/croix_nonvalide.png)").css("display", "block");
				$(this).next().attr("is_good", 0);
			}
		}
	});

/*
	$("#nom_facturation").focus(function() {
		var nom = $("#nom").val();
		var prenom = $("#prenom").val();
		if (nom && prenom && !this.value) {
			this.value = prenom + " " + nom;
		}
	});
*/
});

