var URI_PUBLIC = '/';



/**
* @name estCeUnMail
*
* @param    Le champ de formulaire comprenant l'adresse email
*
* @return   Booléen : est-ce un mail oui ou non ?
*
*/
function estCeUnMail(champs) {
	var mailRegexp = /^[\w\-]+(\.[\w\-]+)*@[\w\-]+(\.[\w\-]+)*\.[\w\-]{2,}$/;
	reponse=mailRegexp.test(champs)
	if (reponse) {
		return true;
	} else {
		return false;
	}
}



/**
* @name CharEvent
*
* @param    L'evenement clavier
*
* @return   Le code clavier selon le navigateur
*
*/
function CharEvent(e) {
	if( window.event ) {
		// pour IE
		return String.fromCharCode( e.keyCode );
	}
	// pour NS
	return String.fromCharCode( e.charCode );
}

/**
* @name QueNum
*
* @param    Le code clavier retourné par CharEvent
*
* @return   Un booléen qu indique si le caractère saisi est un chiffre
*
*/
function QueNum(e) {
	char = CharEvent( e );
	if( char < "0" || char > "9" ) {
		return false;
	}
	return true;
}


/**
* @name EstSirenValide
* 
* @param 	Le code SIREN dont on veut vérifier la validité.
* 
* @return 	Un booléen qui vaut 'true' si le code SIREN passé en 
*                           paramètre est valide, false sinon.
*/
function EstSirenValide(siren) {
	var estValide;
	if ( (siren.length != 9) || (isNaN(siren)) )
		estValide = false;
	else {
		// Donc le SIREN est un numérique à 9 chiffres
		var somme = 0;
		var tmp;
		for (var cpt = 0; cpt<siren.length; cpt++) {
			if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
			tmp = siren.charAt(cpt) * 2; // On le multiplie par 2
			if (tmp > 9) 
				tmp -= 9;	// Si le résultat est supérieur à 9, on lui soustrait 9
			}
			else
				tmp = siren.charAt(cpt);
			somme += parseInt(tmp);
		}
		if ((somme % 10) == 0)
			estValide = true;	// Si la somme est un multiple de 10 alors le SIREN est valide 
		else
			estValide = false;
	}
	return estValide;
}

/**
* @name EstSiretValide
* 
* @param 	Le code SIRET dont on veut vérifier la validité.
* 
* @return 	Un booléen qui vaut 'true' si le code SIRET passé en
*                           paramètre est valide, false sinon.
*/
function EstSiretValide(siret) {
	var estValide;
	if ( (siret.length != 14) || (isNaN(siret)) )
		estValide = false;
	else {
		// Donc le SIRET est un numérique à 14 chiffres
		// Les 9 premiers chiffres sont ceux du SIREN (ou RCS), les 4 suivants
		// correspondent au numéro d'établissement
		// et enfin le dernier chiffre est une clef de LUHN. 
		var somme = 0;
		var tmp;
		for (var cpt = 0; cpt<siret.length; cpt++) {
			if ((cpt % 2) == 0) { // Les positions impaires : 1er, 3è, 5è, etc... 
			tmp = siret.charAt(cpt) * 2; // On le multiplie par 2
			if (tmp > 9) 
				tmp -= 9;	// Si le résultat est supérieur à 9, on lui soustrait 9
			}
			else
				tmp = siret.charAt(cpt);
			somme += parseInt(tmp);
		}
		if ((somme % 10) == 0)
			estValide = true; // Si la somme est un multiple de 10 alors le SIRET est valide 
		else
			estValide = false;
	}
	return estValide;
}


/**
* @name verifFormPro
* 
* @param 	Le formulaire testé
* 
* @return 	Booléen :
*           Soit un false bloquant le formulaire avec le message d'erreur,
*           soit un true pour le lancement du formulaire
*/
function verifFormPro(formulaire) {
 	ok = false;
	ok = estCeUnMail(formulaire.email.value);
	if (!ok) {
		alert("Adresse mail invalide");
		formulaire.email.focus();
		return false;
	}
	if (formulaire.siret.value.length==9) {
		ok = EstSirenValide(formulaire.siret.value);
		if (!ok) {
			alert("SIREN invalide");
			formulaire.siret.focus();
			return false;
		}
	} else if (formulaire.siret.value.length==14) {
		ok = EstSiretValide(formulaire.siret.value);
		if (!ok) {
			alert("SIRET invalide");
			formulaire.siret.focus();
			return false;
		}
	} else {
		alert("SIRET / SIREN invalide");
		formulaire.siret.focus();
		return false;
	}
	return true;
}


var DevisCalcul = true;


function calculerDevis() {
	if (DevisCalcul) {
		$("#ValiderDevis").fadeIn('slow');
		$.ajax({
			type:     'POST',
			url:      URI_PUBLIC + 'espace-pro/devis/resultats.html',
			dataType: 'json',
			data:     $("form#Devis").serializeArray(),
			complete: function(ze_end) {
				var valeurs = jQuery.parseJSON(ze_end.responseText);
				for (var champs in valeurs) {
					$('#'+champs).html(valeurs[champs]);
				}
				$("#tbl2").slideDown("slow");
			}
		});
	}
}


function envoyerCommande() {
	// $("#ValiderCommande").fadeOut('slow');
	$.ajax({
		type:     'POST',
		url:      URI_PUBLIC + 'espace-pro/devis/commande.html',
		dataType: 'json',
		data:     $("form#Commande").serializeArray(),
		complete: function(ze_end) {
			$("form#Commande").slideUp("slow");
		}
	});
	console.log($("form#Commande").serializeArray());
}


$(document).ready(function() {

	$("#DevisExplication1").show();
	$("#DevisExplication2").hide();
	$("#DevisExplication3").hide();

	$("li#MenuNewsletter form").submit(function() {
		if (!estCeUnMail(this.email.value)) {
			alert('Adresse email invalide.');
			return false;
		} else {
			return true;
		}
	});

	if ($("form#Devis")) {

		$("form#Commande").hide();
		$("#tbl2").hide();
		$("#ValiderDevis").hide();
		$("form#Devis tr td.Nb input").keyup(function() {
			calculerDevis();
		});
		$("form#Devis input").change(function() {
			calculerDevis();
		});
		$("form#Devis").submit(function() {
			calculerDevis();
			return false;
		});

		$("#ValiderDevis input[type=submit]").click(function() {
			$("#DevisExplication1").slideUp('slow', function() {
				$("#DevisExplication2").slideDown('slow');
			});
			DevisCalcul = false;
			$(this).fadeOut('slow');
			$("#DevisPort").slideUp('slow');
			$("#DevisDetail input").each(function() {
				var TMPMP = $(this).val();
				$(this).parent('span').text(TMPMP);
			});

			var TMPMP = $("#DevisDetail").html();
			$("#TMPMP").html(TMPMP);
			$("form#Commande input[name=devis]").val(TMPMP);
			$("form#Devis").slideUp('slow', function() {
				$("form#Commande").slideDown('slow');
			});
			return false;
		});
		$("#ValiderCommande input[type=submit]").click(function() {
			envoyerCommande();
			$("#DevisExplication2").slideUp('slow', function() {
				$("#DevisExplication3").slideDown('slow');
			});
			return false;
		});
	}
});




