/*|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|                          FORMATAGE DES DONNEES                            |
|---------------------------------------------------------------------------|
|                                                                           |
|                                                                           |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|                                            Benjamin COIFFARD - avril 2007 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/


/* MISE EN FORME
----------------------------------------------------------------------------
	Fonction plus générique que forme
---------------------------------------------------------------------------*/
function formatage(type, id) {
	
	if (type == 'maj')
		document.getElementById(id).value = document.getElementById(id).value.toUpperCase();
		
}


/* SUPPRIME UNE VALEUR D'UN TABLEAU
----------------------------------------------------------------------------
	Cette fonction ne fonctionne qu'avec des tableaux à une dimension. Elle
	retourne le tableau passé en paramètre, la case contenant la valeur
	passé en paramètre en moins.
---------------------------------------------------------------------------*/
function enleveValTab(tab, val) {
	
	var resultat = new Array();
	
	for (var i=0; i<tab.length; i++) 
		if (tab[i] != val) 
			resultat.push(tab[i]);
	
	return resultat;
	
}


/* TRANSFORME UNE VALEUR BDD / CONVIVIALE
----------------------------------------------------------------------------
	La notation en base de données peut perfois être peu conviviale. On
	utilise donc dans les formulaires une notation dite conviviale. Il est
	cependant nécessaire de faire le lien entre les 2 notations.
	Le troisième paramètre indique le sens de transformation :
		- 1 : de BDD à convivial
		- 2 : de convivial à BDD
---------------------------------------------------------------------------*/
function notationBDD(valeur, type, mode) {
	
	if (valeur == '') return '';
	
	for (var i=0; i<listeChoix[type].length; i++) {
		
		if (listeChoix[type][i] == valeur && mode == '2')
			return listeChoix[type][i+1];
			
		else if (listeChoix[type][i] == valeur && mode == '1')
			return listeChoix[type][i-1];
		
	}
		
}


/* 
----------------------------------------------------------------------------

---------------------------------------------------------------------------*/
function format(chaine, mode) {
	
	chaine = tronque(chaine, mode);
	
	return forme(chaine, mode);

}


function forme(chaine, mode) {
	
	if (mode == 'date')
		return dateFrancais(chaine);

	if (mode == 'enregistrement')
		return dateFrancaisAvecHMS(chaine);

	/*if (mode == 'etape')
		return 'img';*/
		
	if (mode == 'photo') {
		if (chaine == '-')
			return 'non';
		else return 'oui';
	}

	return chaine;

}

/* Supprime les espaces en début et fin de chaîne
---------------------------------------------------------------------------*/
function trim(s) {
    return s.replace(/^\s+/, '').replace(/\s+$/, '');
}

/* Supprime les espaces en début de chaîne
---------------------------------------------------------------------------*/
function ltrim(s) {
    return s.replace(/^\s+/, '');
}

/* Supprime les espaces en fin de chaîne
---------------------------------------------------------------------------*/
function rtrim(s) {
    return s.replace(/\s+$/, '');
}



function dateFrancais(date) {
	var annee = date.substr(0, 4);
	var mois = date.substr(5, 2);
	var jour = date.substr(8, 2);
	
	if (jour.substr(0, 1) == 0) jour = jour.substr(1, 1);
	
	switch (mois) {
		case ('01') : mois = 'janvier'; break;
		case ('02') : mois = 'février'; break;
		case ('03') : mois = 'mars'; break;
		case ('04') : mois = 'avril'; break;
		case ('05') : mois = 'mai'; break;
		case ('06') : mois = 'juin'; break;
		case ('07') : mois = 'juillet'; break;
		case ('08') : mois = 'août'; break;
		case ('09') : mois = 'septembre'; break;
		case ('10') : mois = 'octobre'; break;
		case ('11') : mois = 'novembre'; break;
		case ('12') : mois = 'décembre'; break;
	}
	
	return jour + ' ' + mois + ' ' + annee;
}

function dateFrancaisAvecHMS(date) {
	
	var jour = dateFrancais(date.substr(0, 10));
	
	var heure = date.substr(11, 2);
	var minute = date.substr(14, 2);
	var seconde = date.substr(17, 2);
	
	return jour + ' à ' + heure + 'h' + minute;

}

function sur2Chiffres(chiffre) {
	
	if (chiffre<10) return '0'+chiffre
	else return chiffre;
	
}

function tronque(chaine, type) {
	
	var t = taille[type];

	if (chaine.length > t)
		return chaine.substring(0, (t-3)) + '...';
	
	else return chaine;
	
}

function sansAccent(chaine) {

	var resultat = "";
	var accents = new Array("é", "è", "ê", "ë", "ç", "à", "â", "ä", "î", "ï", "ù", "ô", "ó", "ö");
	var lettres = new Array("e", "e", "e", "e", "c", "a", "a", "a", "i", "i", "u", "o", "o", "o");
	if (chaine && chaine != "") {
		resultat = remplace(accents, lettres, chaine);
	}
	return resultat;

}

function remplace(tableauInitial, tableauSubstitition, chaine) {

	var resultat = String (chaine);
	for (i=0; i<tableauInitial.length; i++) {
		var regExp= RegExp(tableauInitial[i], "gi");
		var remplacement = tableauSubstitition[i];
		resultat = resultat.replace (regExp, remplacement);
	}
	return resultat;

}


/* MISE EN FORME
----------------------------------------------------------------------------
	Fonction plus générique que forme
---------------------------------------------------------------------------*/
function formatConvivial(type, valeur) {

	switch(type) {
	
		case 'tel':
			return valeur.substr(0,2)+' '+valeur.substr(2,2)+' '+valeur.substr(4,2)
				+' '+valeur.substr(6,2)+' '+valeur.substr(8,2);
			break;
	
		default:
			return valeur;
			break;

	}

}


/* REMPLACE LE TIRET PAR RIEN
----------------------------------------------------------------------------
	Pour des raisons de compatibilité, certains champs ne peuvent rester
	vides : un tiret est ajouté. Ce tiret n'a pas a figurer dans la base de
	données. Il faut donc le supprimer
---------------------------------------------------------------------------*/
function sansTiret(valeur) {

	if (valeur == '-') return '';
	else return valeur;

}


/* EXTRAIT LE NOM D'UN FICHIER A PARTIR DE SON ADRESSE
----------------------------------------------------------------------------
	L'adresse d'un fichier contient le nom du fichier ainsi que le chemin
	pour y parvenir.
	Cette fonction extrait le nom du fichier de l'adresse complète
---------------------------------------------------------------------------*/
function extraitNomFichier(adresse) {

	var dernierSlash = adresse.lastIndexOf('/', adresse.length) + 1;
	
	if (dernierSlash == -1)
		return adresse
	else return adresse.substring(dernierSlash, adresse.length);

}


/* EXTRAIT LE NOM D'UN FICHIER A PARTIR DE SON ADRESSE
----------------------------------------------------------------------------
	L'adresse d'un fichier contient le nom du fichier ainsi que le chemin
	pour y parvenir.
	Cette fonction extrait le nom du fichier de l'adresse complète
---------------------------------------------------------------------------*/
function dateActuelleSQL(type) {

	var aujourdhui = new Date();
	
	var annee = aujourdhui.getFullYear();
	var mois = sur2Chiffres((aujourdhui.getMonth())+1);
	var jour = sur2Chiffres(aujourdhui.getDate());
	var heure = sur2Chiffres(aujourdhui.getHours());
	var minute = sur2Chiffres(aujourdhui.getMinutes());
	var seconde = sur2Chiffres(aujourdhui.getSeconds());
	
	switch (type) {
	
		case 'AAAA-MM-JJ HH:MM' :
			return annee+'-'+mois+'-'+jour+' '+heure+':'+minute;
			break;
		
		case 'AAAA-MM-JJ HH:MM:SS' :
			return annee+'-'+mois+'-'+jour+' '+heure+':'+minute+':'+seconde;
			break;
	
	}
	
}


function surligneBlanc(idSurligne, idPasSurligne) {
	document.getElementById(idSurligne).style.color = "#000";
	document.getElementById(idSurligne).style.backgroundColor = "#fff";
	document.getElementById(idPasSurligne).style.color = "#fff";
	document.getElementById(idPasSurligne).style.backgroundColor = "#000";
}


/* MODIFIE LA COULEUR DES BOUTONS DU MENU
----------------------------------------------------------------------------
	Lorsque la souris survole l'un des élément du menu, la pastille associée
	change de couleur. C'est le code ci-dessous qui le permet.
---------------------------------------------------------------------------*/

function coulMen(cible) {
	var lien = document.getElementById(cible);
	var image = lien.getElementsByTagName('img')[0];
	image.setAttribute("src", sic_racine+"image/general/point2.gif", "false");
}

function coulMen2(cible) {
	var lien = document.getElementById(cible);
	var image = lien.getElementsByTagName('img')[0];
	image.setAttribute("src", sic_racine+"image/general/point1.gif", "false");
}


/* MODIFIE LA COULEUR D'UN TEXTE
----------------------------------------------------------------------------
	Lorsque la souris survole l'un des élément du menu, la pastille associée
	change de couleur. C'est le code ci-dessous qui le permet.
---------------------------------------------------------------------------*/

function changeCouleur(cible, couleur) {
	document.getElementById(cible).style.color = couleur;
}

function changeImage(cible, nouvelleImage) {
	var image = document.getElementById(cible);
	image.setAttribute("src", nouvelleImage, "false");
}


/* Retourne une somme mise en forme à la française : 12 300.12 €
-----------------------------------------------------------------------
	Le paramètre profondeur permet de régler le nombre de décimales.
	Cette fonction n'admet en entrée qu'un entier ou un flottant.
	On commence par séparer les entiers et les décimales.
	Le traitement des décimales est simple, on ne garde que les x
	premiers chiffres, x étant déterminé par le paramètre profondeur.
	
	Pour les entiers, s'il y en a plus de 3, on ajout un espace entre
	chaque groupe de 3 chiffres. Le nombre de chiffres du premier groupe
	est déterminé par l'équation groupe1 = nombreDeChiffres % 3
---------------------------------------------------------------------*/
function formatFinancier(valeur) {
	
// Position de la virgule
	var valeur = valeur.toString();
	var posVirg = valeur.lastIndexOf('.');

// Pas de virgule : pas de décimales
	if (posVirg == -1) {
		var dec = '.00';
		var ent = valeur;
	}
// Séparation de la chaîne initiale en chaîne de décimale et chaîne d'entier
	else {
		var dec = valeur.substr(posVirg, valeur.length);
		var ent = valeur.substring(0, posVirg);
		if (dec.length > 3) dec = dec.substr(0, 3);
	}

// On ajoute 1 zéro si la décimale n'a qu'un chiffre
	if (dec.length == 2) dec += '0';

/* Traitement des entiers :
	par groupe de 3 chiffres */
	
// Nombre de chiffres, et nombre de chiffres déjà copiés
	var n = ent.length;
	var c = 0;

// Si la chaîne est vide, c'est qu'elle vaut 0
	if (ent == '') return '0'+dec;

// S'il n'y a que 3 entiers, aucun traitement n'est nécessaire
	if (n < 4) return ent+dec;

// Nombre de chiffres du premier groupe
	var g1 = n%3;
	c = g1;
	
// Premier groupe
	var entier = ent.substr(0, g1)+' ';
	
// Nombre de groupes de 3 chiffres
	var g2 = Math.floor(n/3);
	
// Groupes suivants
	for (var i=0; i<g2; i++){
		entier += ent[c];
		entier += ent[c+1];
		entier += ent[c+2];
		c += 3;
		entier += ' ';
	}
	
// Suppression du dernier espace
	entier = trim(entier);
	
	return entier+dec;

}


function moisFrancais(chiffre) {
	
	switch (chiffre) {
		case (1) : var mois = 'Janvier'; break;
		case (2) : var mois = 'Février'; break;
		case (3) : var mois = 'Mars'; break;
		case (4) : var mois = 'Avril'; break;
		case (5) : var mois = 'Mai'; break;
		case (6) : var mois = 'Juin'; break;
		case (7) : var mois = 'Juillet'; break;
		case (8) : var mois = 'Août'; break;
		case (9) : var mois = 'Septembre'; break;
		case (10) : var mois = 'Octobre'; break;
		case (11) : var mois = 'Novembre'; break;
		case (12) : var mois = 'Décembre'; break;
		case ('01') : var mois = 'Janvier'; break;
		case ('02') : var mois = 'Février'; break;
		case ('03') : var mois = 'Mars'; break;
		case ('04') : var mois = 'Avril'; break;
		case ('05') : var mois = 'Mai'; break;
		case ('06') : var mois = 'Juin'; break;
		case ('07') : var mois = 'Juillet'; break;
		case ('08') : var mois = 'Août'; break;
		case ('09') : var mois = 'Septembre'; break;
		case ('10') : var mois = 'Octobre'; break;
		case ('11') : var mois = 'Novembre'; break;
		case ('12') : var mois = 'Décembre'; break;
		case ('1') : var mois = 'Janvier'; break;
		case ('2') : var mois = 'Février'; break;
		case ('3') : var mois = 'Mars'; break;
		case ('4') : var mois = 'Avril'; break;
		case ('5') : var mois = 'Mai'; break;
		case ('6') : var mois = 'Juin'; break;
		case ('7') : var mois = 'Juillet'; break;
		case ('8') : var mois = 'Août'; break;
		case ('9') : var mois = 'Septembre'; break;

		default : var mois = 'inconnu';

	}
	
	return mois;

}


/* Transforme une chaîne en nombre flottant (float)
-----------------------------------------------------------------------
	La chaîne passée en paramètre peut utiliser la virgule ou le point
	comme séparateur : le résultat retourné par la fonction sera
	toujours un float.
---------------------------------------------------------------------*/
function vEP(chiffre){
	
	chiffre = chiffre.replace(',', '.');
	return chiffre;

}


/* Formatte une chaîne de caractère au format prénom
-----------------------------------------------------------------------
	Un prénom s'écrit avec une majuscule en début de mot. Même s'il y
	a un tiret, tous les noms prennent une majuscule
---------------------------------------------------------------------*/
function MajPrenom(texte) {
	var t = new Array();
	for(j=0; j<texte.length; j++) {
		if (j == 0)
			t[j] = texte.substr(j,1).toUpperCase();
		else t[j] = texte.substr(j,1).toLowerCase();
	}
  	return t.join('');
}
