// *****************************************************************************
//								FONCTIONS JAVASCRIPT
// *****************************************************************************




// *****************************************************************************
//							FONCTIONS POUR LES FORMULAIRES
// *****************************************************************************

// *****************************************************************************
// Fonction : spin_up
// Valide le formulaire
// *****************************************************************************
function spin_up(form,objet){
    if (document[form][objet].value >= 1){
        document[form][objet].value ++;
    }else{
        document[form][objet].value = 1;
    }
    document[form].submit();
}
    
// *****************************************************************************
// Fonction : spin_down
// 
// *****************************************************************************
function spin_down(form,objet){
    if (document[form][objet].value > 1){
        document[form][objet].value --;
    }else{
        document[form][objet].value = 1;
    }
    document[form].submit();
}

// *****************************************************************************
// Fonction : spin_upNorm
// Ne valide pas le formulaire
// *****************************************************************************
function spin_upNorm(form,objet){
    if (document[form][objet].value >= 1){
        document[form][objet].value ++;
    }else{
        document[form][objet].value = 1;
    }
}
  
// *****************************************************************************
// Fonction : spin_downNorm
// 
// *****************************************************************************
function spin_downNorm(form,objet){
    if (document[form][objet].value > 1){
        document[form][objet].value --;
    }else{
        document[form][objet].value = 1;
    }
}

// *****************************************************************************
// Fonction : verifQte
// 
// *****************************************************************************
function verifQte(form, objet){

    var valeur = document[form][objet].value;
    if (checkNumericField(valeur)){
        if (document[form][objet].value < 0){
            document[form][objet].value = 1;
        }
    }else{
        document[form][objet].value = 1;
    }
    document[form].submit();
}
// *****************************************************************************
// Fonction : affiche
// 
// *****************************************************************************
function formateQte(leReel) {
	if (!checkRealField(leReel)) return '';
	if (Math.floor(leReel) == leReel) {return leReel;}
	else {return formatePrix(round(leReel,2));}
	
}
// arrondi à X chiffres apres la virgule
function round(number,X) {
	// arrondir un nombre décimal
	return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}
// formate un prix
function formatePrix(chiffre) {
	if (!checkRealField(chiffre)) return '';
	var txtNumber = '' + chiffre;
	var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][ .])');
	var arrNumber = txtNumber.split('.');
	arrNumber[0] += '.';
	do {
		arrNumber[0] = arrNumber[0].replace(rxSplit, '$1 $2');
	} while (rxSplit.test(arrNumber[0]));
	
	if (arrNumber.length > 1) {
		// des chiffres apres la virgule
		// si on a qu'un chiffre apres la virgule, on rajoute 0
		if (arrNumber[1].length==1) arrNumber[1]=arrNumber[1]+"0";
		res= arrNumber.join('');
	}
	else { // pas de chiffre apres la virgule
		res= arrNumber[0].split('.')[0] + ".00";
	}
	
	return res.replace(/\./, ",");
}

// renvoie un reel
function toReal(chiffre) {
	chiffre = chiffre.replace(/\,/, ".");
	chiffre = chiffre.replace(/ /, "");
	if (checkRealField(chiffre)) return chiffre;
	else return "";
}
// renvoie un real en notation française avec 3 chiffre apres la virgule max
function toFrenchFloat(chiffre) {
	chiffre = round(chiffre,3);
	return (formatePrix(chiffre));
}
// renvoie le montant ttc
// necessite la variable globale tauxTVA
function toTTC(chiffre) {
	if (!tauxTVA || !chiffre) return "";
	chiffre=toReal(chiffre);
	resultat = chiffre * (1+tauxTVA/100);
	return toFrenchFloat(resultat);
}
// renvoie le montant HT
// necessite la variable globale tauxTVA
function toHT(chiffre) {
	if (!tauxTVA || !chiffre) return "";
	chiffre=toReal(chiffre);
	resultat = chiffre / (1+tauxTVA/100);
	return toFrenchFloat(resultat);
}

// *****************************************************************************
// Fonction : afficherEnfants
// Affiche les zones de saisie pour le nombre d'enfants sélectionné 
// (particulier.form.php)
// *****************************************************************************
function afficherEnfants(){
	var i = 0;
	var enfantCourant = "";
	var nbEnfant = 	document.getElementById('client_nb_enfant').value;

	for(i=1;i<=10;i++){
		enfantCourant = 'enfant'+i;
		if(i>nbEnfant){
			document.getElementById(enfantCourant).style.display='none'; 
		}
		else{	
			document.getElementById(enfantCourant).style.display='block';
		}
	}
}



// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//							FONCTIONS POUR LES CHAMPS
// *****************************************************************************

// *****************************************************************************
// Fonction : checkNumericField
// Teste si le champ est composé de caractères numériques
// Renvoie true si le champ est numerique
// Renvoie false si le champ est vide ou non numerique
// *****************************************************************************
function checkNumericField(theField) {
    re=/^[+-]*\d+$/;
    return (re.test(theField));
}

// *****************************************************************************
// Fonction : checkRealField
// teste si le champ est composé de caracteres numeriques ou point
// renvoie true si le champ est numerique
// renvoie false si le champ est vide ou non numerique
// *****************************************************************************
function checkRealField(theField) {
	re=/^[+-]*[\d.]+$/;
	return (re.test(theField));
}

// *****************************************************************************
// Fonction : checkNotEmptyField
// Teste si le champ n'est pas vide ("", espace, tab, retour chariot interdit)
// renvoie true si le champ est correct
// renvoie false si le champ est vide ou espaces
// *****************************************************************************
function checkNotEmptyField(theField) {
    if (!theField) return false;
    re=/^\s+$/;
    return !(re.test(theField));
}

// *****************************************************************************
// Fonction : champNonModifiable
// A chaque fois que l'utilisateur tentera de modifier un champ protégé, 
// le focus sera placé sur le controle Ctrl du formulaire form
// *****************************************************************************
function champNonModifiable(form, Ctrl){
    document[form][Ctrl].focus();
}

// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//							FONCTIONS POUR LE PANIER
// *****************************************************************************

// *****************************************************************************
// Fonction : supprimerProduit
// Demande confirmation avant de supprimer un produit du panier
// *****************************************************************************
function supprimerProduit(idPanier, nomProduit) {
    if (confirm('Etes-vous sûr de vouloir enlever le produit "'+nomProduit+'" de votre panier?')) {
        window.location.href = "modif_panier.php?idPanier="+idPanier;
    }
}

// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//						  FONCTIONS POUR LES MAILS
// *****************************************************************************

// *****************************************************************************
// Fonction : isMail
// Si le champ est rempli verifie si le format  comporte l'@ et le .
// Renvoie true  si oui ou si vide
// Renvoie false  si non
// *****************************************************************************
function isMail(mail) {
    if (mail.search(/^[a-zA-Z0-9\.\-_]+@[a-zA-Z0-9\.\-_]+\.[a-zA-Z0-9\.\-]+$/) == -1){
        return false;
    }else{
        return true;
    }
}

// *****************************************************************************
// *****************************************************************************



// *****************************************************************************
//						  FONCTIONS POUR LA LIVRAISON
// *****************************************************************************

// *****************************************************************************
// Fonction : cocheLivraion
// Prend en argument l'id du système de livraison à sélectionner, 
// et le sélectionne
// *****************************************************************************
function cocheLivraison(idLivraison){
    for (var i=0; i < document.livraison.transport_id.length;i++) {
        if (document.livraison.transport_id[i].value == idLivraison){
            document.livraison.transport_id[i].checked = true;
            document.livraison.submit();
        }
    }
}

// *****************************************************************************
// Fonction : supprimerProduit
// Traitement du formulaire de coordonnées client
// Désactive tous les champs du formulaire d'adresse de livraison, 
// lors de l'ajout à la BD, ceux-ci seront remplacés par l'@ de facturation
// *****************************************************************************
function utiliserAddrFacturation(){
    if (document.adresses_cli.lameme.checked == true){
        //On désactive tout
        document.adresses_cli.livraison_civilite.disabled = true;
        document.adresses_cli.livraison_nom.disabled = true;
        document.adresses_cli.livraison_prenom.disabled = true;
        document.adresses_cli.livraison_societe.disabled = true;
        document.adresses_cli.livraison_adresse.disabled = true;
        document.adresses_cli.livraison_code_postal.disabled = true;
        document.adresses_cli.livraison_ville.disabled = true;
        document.adresses_cli.livraison_pays.disabled = true;
        document.adresses_cli.livraison_telephone.disabled = true;
        document.adresses_cli.livraison_email.disabled = true;
    }else{
        //On réactive tout
        document.adresses_cli.livraison_civilite.disabled = false;
        document.adresses_cli.livraison_nom.disabled = false;
        document.adresses_cli.livraison_prenom.disabled = false;
        document.adresses_cli.livraison_societe.disabled = false;
        document.adresses_cli.livraison_adresse.disabled = false;
        document.adresses_cli.livraison_code_postal.disabled = false;
        document.adresses_cli.livraison_ville.disabled = false;
        document.adresses_cli.livraison_pays.disabled = false;
        document.adresses_cli.livraison_telephone.disabled = false;
        document.adresses_cli.livraison_email.disabled = false;
    }
}

// *****************************************************************************
// Fonction : addCrenau
// 
// *****************************************************************************
function addCrenau(valeur){
    document.commande.date_livraison.value=valeur;
}

// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//						  FONCTIONS POUR LE CALENDRIER
// *****************************************************************************

// *****************************************************************************
// Fonction : fleches_calendrier
// Modifie l'attribut caché des flèches du calendrier, afin de voir les 2 semaines
// précédentes ou suivantes
// *****************************************************************************
function fleches_calendrier(semaine){
    document.getElementById("semaine").value += semaine;
    document.livraison.submit();
}

// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//						  FONCTIONS POUR LES DIV
// *****************************************************************************

// *****************************************************************************
// Fonction : complete
// Cache tous les div, et affiche (s'il est caché) ou cache (s'il est affiché) le div courant
// *****************************************************************************
function complete(lediv){

    cacheLesDiv();

    if (divIsOpen == lediv){
        lediv.style.visibility = "hidden";
        divIsOpen = null
    }else{
        lediv.style.visibility = "visible";
        divIsOpen = lediv;
    }
}

// *****************************************************************************
// Fonction : ajValeur
// Appelée lorsque l'utilisateur clique sur un lien dans le div, le texte est copié dans le textfield correspondant
// *****************************************************************************
function ajValeur(leChamp, laValeur){
    leChamp.value = laValeur;
    divIsOpen = null;
    cacheLesDiv();
}

// *****************************************************************************
// Fonction : cacheLesDiv
// Cache tous les div
// *****************************************************************************
function cacheLesDiv(){
	var tab2Div = new Array();
	
    for(i = 0; i < tab2Div.length; i++){
        var autreDiv = document.getElementById("div_"+tab2Div[i]);
        autreDiv.style.visibility = "hidden";
    }
}

// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//					  FONCTIONS POUR LES MOTS DE PASSE
// *****************************************************************************

// *****************************************************************************
// Fonction : verifChgtMdp
// 
// *****************************************************************************

function verifChgtMdp(form){
	var msgErr = "";
	var mdp1 = 0;
	var mdp2 = 0;

	if (document[form].old_mdp.value == ""){
		msgErr += "Vous devez renseigner l'ancien mot de passe\n";
	}

	if (document[form].new_mdp.value == ""){
		msgErr += "Vous devez renseigner le nouveau mot de passe\n";
		mdp1 = 1;
	}

	if (document[form].new_mdp2.value == ""){
		msgErr += "Vous devez renseigner la confirmation du nouveau mot de passe\n";
		mdp2 = 1;
	}

	if ((document[form].new_mdp.value != document[form].new_mdp2.value) && (mdp1 == 0 && mdp2 == 0)){
		msgErr += "Le nouveau mot de passe et sa confirmation ne sont pas identiques\n";
	}
	
	if (msgErr == ""){
		return true;
	}else{
		window.alert(msgErr);
		return false;
	}
}

// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//					     FONCTIONS POUR LES STYLES
// *****************************************************************************

// *****************************************************************************
// Fonction : backLine
// Surligne
// *****************************************************************************
function backLine(ligne)
{
	ligne.style.background='#efecf7';
}

// *****************************************************************************
// Fonction : surligne
// Surligne
// *****************************************************************************
function surligne(ligne)
{
	ligne.style.background='#ffffff';
}

// *****************************************************************************
// Fonction : white
// Colore la ligne en blanc
// *****************************************************************************
function white(ligne)
{
  ligne.style.background='#FFE26D';
}

// *****************************************************************************
// Fonction : oldBackground
// Permet de revenir a l'ancinne couleur de ligne
// *****************************************************************************
function oldBackground(ligne,numero)
{
	if(numero%2 == 0)
	{
		ligne.style.background='#F9F8E5';
	}
	else ligne.style.background='#EDE9F5';
}

// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//					     FONCTIONS POUR LES DATES
// *****************************************************************************

// *****************************************************************************
// Fonction : isDate
// Teste la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
// renvoie true si le champ si oui
// renvoie false si le champ si non
// *****************************************************************************

function isDate(d) {
    
    if (d == "") // si la variable est vide on retourne true
        return true;
    
    e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
    
    if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
        return false; // Si pas bon, retourne faux

    // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
    j = parseInt(d.split("/")[0], 10); // jour
    m = parseInt(d.split("/")[1], 10); // mois
    a = parseInt(d.split("/")[2], 10); // année

    // Si l'année n'est composée que de 2 chiffres on complète automatiquement
    if (a < 1000) {
        if (a < 89)    a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
        else a+=1900;
    }

    // Définition du dernier jour de février
    // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
    if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
    else fev = 28;

    // Nombre de jours pour chaque mois
    nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

    // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
    return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}

// *****************************************************************************
// *****************************************************************************




// *****************************************************************************
//					     FONCTIONS POUR L'AUTHENTIFICATION
// *****************************************************************************

// *****************************************************************************
// Fonction : verifPseudo
// Teste la validité du pseudo et du mot de passe lors de l'authentification
// renvoie true si authentification correcte, false sinon
// *****************************************************************************

function verifPseudo(form){
	var msgErr = "";
            
    if (document[form].form_pseudo.value == ""){
		msgErr += "Vous devez renseigner un pseudo\n";
    }

    if (document[form].form_mdp.value == ""){
		msgErr += "Vous devez renseigner un mot de passe\n";
    }

    if (msgErr == ""){
		return true;
    }else{
		window.alert(msgErr);
		return false;
    }
}

// *****************************************************************************
// *****************************************************************************



// *****************************************************************************
// Fonction : affichePopup
// 
// *****************************************************************************
function affichePopup(page,largeur,hauteur){ 

    //On augmente la hauteur et la largeur à cause des ascenseurs
    largeur += 30;
    hauteur += 30;

    //Si l'image est plus grande que l'écran, on diminue la taille de la popup
    if (screen.width <= largeur)    {
        largeur = screen.width-50;
    }

    if (screen.height <= hauteur){
        hauteur = screen.height-100;
    }
    anOpenWindow=window.open(page,"popup","width="+largeur+",height="+hauteur+",screenX=20,screenY=20,toolbar=no,directories=no,status=no,scrollbars=yes,menubar=no,resizable=no");
}
