/** 
 * Fonctions usuelles JavaScript 
 */

/**
 * Retourne la date en francais
 */
function dateEn2Fr(dateEn)
{
	var newValue = dateEn.split("/");
	var dateFr = newValue[2] + "/" + newValue[1] +"/" + newValue[0];
	return dateFr;
}

/**
 * Retourne la date en englais
 */
function dateFr2En(dateFr)
{
	var newValue = dateFr.split("/");
	var dateEn = newValue[2] + "/" + newValue[1] +"/" + newValue[0];
	return dateEn;
}

/**
 * enleve tout caracteres superflus et ne garde que les chiffres.a utiliser avec onkeyup.
 * ex 654df45df45   ->6544545
 */
function forceDate(num)
{
	var id=0;
	var strTmp="";
	var charTmp="";
	num=num.toString();
	for (id=0;id<num.length;id++)
	{
		charTmp=num.charAt(id);
		if(charTmp<='9' && charTmp>='0')
		strTmp=strTmp+charTmp;
	}
	return strTmp;
}

/**
 * Permet de formater la date avec une saisie assistée : 31022006 => 31/02/2006
 */
function formatDateAuto(textBox)
{
	var tmpDate = textBox.value;
	tmpDate = forceDate(tmpDate);
	tmpDate = tmpDate.toString();
	tmpDate = tmpDate.replace("/\//i", "");
	tmpDate = tmpDate.replace("/-/i", "");
	var tmp1 = tmpDate.substr(0,2);
	var tmp2 = tmpDate.substr(2,2);
	var tmp3 = tmpDate.substr(4,4);
	textBox.value = tmp1 + "/" + tmp2 + "/" + tmp3;
	return true;
}

/**
 * Permet de formater la date avec une saisie assistée : 310206 => 31/02/06
 */
function formatDateAuto2(textBox)
{
	var tmpDate = textBox.value;
	tmpDate = forceDate(tmpDate);
	tmpDate = tmpDate.toString();
    if (tmpDate.length > 0)
    {
        tmpDate = tmpDate.replace("/\//i", "");
        tmpDate = tmpDate.replace("/-/i", "");
        var tmp1 = tmpDate.substr(0,2);
        var tmp2 = tmpDate.substr(2,2);
        var tmp3 = tmpDate.substr(4,2);
        textBox.value = tmp1 + "/" + tmp2 + "/" + tmp3;
    }
	return true;
}

/**
 *
 */
function verifDate(textBox)
{
	separator = "/";
	var myVal = textBox.value;
    if (myVal != "")
    {
        if(myVal.indexOf(separator) != 2 || myVal.lastIndexOf(separator) != 5)
        {
            alert("Le format de la date est \"jj" + separator + "mm" + separator + "yyyy\".");
            textBox.focus();
    /*		var el = document.getElementById(textBox).getAttribute("id");
            el.focus()
    */		return false;
        }
        else
        {
            return true;
        }
    }
    return true;
}

/**
 *
 */
function verifDate2(textBox)
{
	separator = "/";
	var myVal = textBox.value;
    if (myVal != "")
    {
        if(myVal.indexOf(separator) != 2 || myVal.lastIndexOf(separator) != 5)
        {
            alert("Le format de la date est jj/mm/yy.");
            textBox.focus();
    /*		var el = document.getElementById(textBox).getAttribute("id");
            el.focus();
    */		
            return false;
        }
        else
        {
            return true;
        }
    }
    return true;
}


/**
 * Fonctions date
 */

function DecomposeDate(LeParam1){ 

	// Sépare les jours, les mois et les années dans une date de type "22/05/1981"
	// Renvoye le tout dans un tableau de taille 3
	
	LeRetour = new Array(3);
	LeJour="";
	LeMois="";
	LeAnnee="";
	
	LeParam1 = LeParam1.toString();
	
	// Extraction du jour
	i=0;
	while((LeParam1.charAt(i)!="/")&&(i<10))
	{
		LeJour+=LeParam1.charAt(i);
		i++;
	}
	
	if(LeJour.charAt(0)=="0")
	{
		LeJour=LeJour.charAt(1);
	}
	LeParam1=LeParam1.substring(i+1,LeParam1.length);
	
	// Extraction du mois
	i=0;
	while((LeParam1.charAt(i)!="/")&&(i<10))
	{
		LeMois+=LeParam1.charAt(i);
		i++;
	}
	if(LeMois.charAt(0)=="0"){
		LeMois=LeMois.charAt(1);
	}
	LeParam1=LeParam1.substring(i+1,LeParam1.length);
	
	
	// Extraction de l'année
	LeAnnee=LeParam1;
	LeRetour[0]=LeJour;
	LeRetour[1]=LeMois;
	LeRetour[2]=LeAnnee;
	return LeRetour;
}
 
function DateMachine(LeParam1){

	// Renvoye une date sans les 0 dans les mois ou les jours "02/03/1981" -> "2/3/1981"
	LaDate = new Array(3);
	LaDate = DecomposeDate(LeParam1);
	LeRetour = LaDate[0]+"/"+LaDate[1]+"/"+LaDate[2];
	return LeRetour;
}

// Renvoye une date en format anglais avec le séparateur choisi "02/03/1981" -> "1981-3-2"
// Le premier paramètre est la date a convertir, le second est le caractère de séparation choisi
function DateAnglaise(LeParam1,LeParam2){

	LaDate = new Array(3);
	LaDate = DecomposeDate(LeParam1);
	LeRetour = "20" + LaDate[2]+"/"+LaDate[1]+"/"+LaDate[0];
	return LeRetour;
}

function ComparerDates(LeParam1,LeParam2){

	// Compare 2 dates au format jj/mm/aaaa
	// Renvoye 0 si égalité, 1 si la première est supérieure, sinon 2

	var LeParam1 = DateAnglaise(LeParam1,"/");// Ne pas oublier d'utiliser cette fonction
	// pour convertir en date anglaise, sinon le 05/07/2003 sera compris "7 mai 2003" par JavaScript
	
	var LeParam2 = DateAnglaise(LeParam2,"/");	
	LeParam1 = Date.parse(LeParam1);
	LeParam2 = Date.parse(LeParam2);
	
//	alert (LeParam1 + ' ' + LeParam2);
	
	if (LeParam1 == LeParam2) 
	{ 
		return 0;
	}
	
	if (LeParam1 > LeParam2)
	{
		return 1;
	}else{
		return 2;
	}
}

/**
 * Vérifie que le champ indiqué est bien renseigné. Alerte l'utilisateur et focus sinon.
 */

function numerique(champ)
{

	if (isNaN(champ.value))
	{
		
		alert ('Le champ ' + traduction[champ.id] + ' doit être numérique.');
		champ.focus();
		champ.select();
		return false;
	}
	else
	{
		return true;
	}
} 

var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE);

/*
 * Renvoie la chaine paramètre en mettant en majuscule le 1er caractère
 */
 
function ucFirst(chaine)
{
    return chaine.substr(0,1).toUpperCase() + chaine.substr(1,chaine.length);
}

/*
 * Renvoie la chaine paramètre en mettant en majuscule le 1er caractère de chacun de ses mots
 */
 
function ucAll(chaine)
{
    var parts = chaine.split(' ');
    var result = '';
    for (i = 0; i < parts.length; i++)
    {
        result = result + ucFirst(parts[i]) + ' ';
    }
    return result.substr(0, result.length - 1);
}

/*
 * Remplace la valeur du champ indiqué par la même chose en majuscules
 */

function majuscule(nom_champ)
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        var ancienne = champ.value 
        champ.value = ancienne.toUpperCase();
    }
}

/*
 * Remplace la valeur du champ indiqué par la même chose avec une majuscule sur le premier caractère de chaque mot
 */

function majusculePremier(nom_champ)
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        var ancienne = champ.value 
        champ.value = ucAll(ancienne);
    }
}

/*
 * Returne true si le champ est alphabétique (sans chiffre ni caractère spécial), false sinon
 */

function alpha(nom_champ, message)
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        var motif = /^[a-z\_A-Z\-éèeàâëäïîüûöôç\ ']*$/;
        if (motif.test(champ.value)) {
            return true;
        }
        else
        {
            alert(message);
            champ.focus();
            return false;
        }
    }
}


function numerique(nom_champ, message) 
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        if (isNaN(champ.value))
        {
            alert(message);
            champ.focus();
            return false;
        }
        else
        {
            return true;
        }
    }
    return true;
}


function obligatoire(nom_champ, message)
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        if (champ.value == null || champ.value == "")
        {
            alert(message);
            champ.focus();
            return false;
        }
        else
        {
            return true;
        }
    }
    return false;
}


function verifPrefixe(nom_champ, prefixe, message)
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        //alert (prefixe + ' vs. ' + champ.value.substring(0, prefixe.length));
        if (champ.value.substring(0, prefixe.length) != prefixe)
        {
            alert(message);
            champ.focus();
            return false;
        }
        else
        {
            return true;
        }
    }
    return false;
}


function testEmail(nom_champ, message) 
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        var pattern = /^[a-z_A-Z0-9\-\.]+\@[a-zA-Z0-9_\-\.]+\.([a-zA-Z]{2,3})$/;
        if (pattern.test(champ.value)) {
            return true;
        }
        else {
            alert(message);
            champ.focus();
            return false;
        }
    }
}

function testTaille(nom_champ, nombre, mode, message)
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        switch(mode)
        {
            case 'egal':
                if (champ.value.length == nombre)
                {
                    return true;
                }
                else
                {
                    alert (message);
                    champ.focus();
                    return false;
                }
                break;
            
            case 'mini':
                if (champ.value.length >= nombre)
                {
                    return true;
                }
                else
                {
                    alert (message);
                    champ.focus();
                    return false;
                }
                break;
                
            case 'maxi':
                if (champ.value.length <= nombre)
                {
                    return true;
                }
                else
                {
                    alert (message);
                    champ.focus();
                    return false;
                }
                break;
        }
    }
}

/**
 * @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;
}

function testSiret(nom_champ, message)
{
    var champ = document.getElementById(nom_champ);
    if (champ != null)
    {
        if (EstSiretValide(champ.value))
        {
            return true;
        }
        else
        {
            alert (message);
            champ.focus();
            return false;            
        }
    }
}
