//si valeur est dans le tableau "tableau", on retourne true, sinon false
function in_array(valeur, tableau){
	var inArray = false;
	
	for(i=0; i<tableau.length; i++){
		if(tableau[i] == valeur){
			inArray = true;
		}
	}
	return inArray;
}


//ces 2 fonctions permettent de retourner la position d'un objet
//il faut appeler get_full_position en lui passant l'id de l'objet
function get_offset(elem, pos)
{
    var offset = 0;
    while(elem) {
        offset += elem[pos];
        elem = elem.offsetParent;
    }
    return offset;
}


//voir ^
function get_full_position(id)
{
    var d = document.getElementById(id);
    var offsets = new Object;
    offsets.top 	= get_offset(d, "offsetTop");
    offsets.left 	= get_offset(d, "offsetLeft");
    offsets.width 	= d.clientWidth;
    offsets.height 	= d.clientHeight;
    return offsets;
}


//supprime le noeud definit par nodeId
function removeNode(nodeId){
	if (document.getElementById(nodeId)){
		document.getElementById(nodeId).parentNode.removeChild(document.getElementById(nodeId));
	}	
}


//netoie un noeud definit par l'ID nodeId 
function clearNode(nodeId){
	if (document.getElementById(nodeId)){
		var node = document.getElementById(nodeId);
		if(node.hasChildNodes()){
			var liste = node.childNodes;		
			//alert(liste[0]);
			for (var i=liste.length-1; i>=0; i--) document.getElementById(nodeId).removeChild(liste[i]);
		}
	}else alert("Auncun element détecté avec l'id "+nodeId);	
}


//retourne la chaine de caractere passée en paramètre avec max caratère suivi de ...
function stringCut(str, max){
	
	if(str.length>max){
		//on recherche le premier espace avant MAX caractères
		str = str.substring(0, str.indexOf(" ",max));
		str = str.substring(0, str.lastIndexOf(" "));
		str += "...";
	}
	
	return str;
}



//si la valeur de l'objet input est identique à str, alros on vide le champs texte
function inputSwitch(obj, str){
	if(obj.value == str) obj.value = "";
}



function erase_combo(id){
	var lg = document.getElementById(id).length;
	for (var i=(lg-1); i>=0; i--){
		document.getElementById(id).options[i] = null;
	}
	document.getElementById(id).length = 0;
	
	var temp = document.getElementById(id).childNodes;	
	for (var i=(temp.length-1); i>=0; i--){
		disparu = document.getElementById(id).removeChild(temp[i]);
	}
}


function addOptionGroup(combo, label){
	var combox 	= document.getElementById(combo);
	var opt   	= document.createElement("OPTGROUP");
	var lab		= document.createAttribute("label");
	lab.nodeValue = label;
	opt.setAttributeNode(lab);
	combox.appendChild(opt);
	return opt;
}

function addOption(optGroup, label, value){
	var option	= document.createElement("OPTION");
	var val		= document.createAttribute("value");
	var txt		= document.createTextNode(label);
	val.nodeValue= value;
	
	option.appendChild(txt);
	option.setAttributeNode(val);	
	optGroup.appendChild(option);
}

function addOptionOnly(label, value){
	var option	= document.createElement("OPTION");
	var val		= document.createAttribute("value");
	var txt		= document.createTextNode(label);
	val.nodeValue= value;
	
	option.appendChild(txt);
	option.setAttributeNode(val);	
	return option;
}



// ***** [FONCTIONS JQUERY] *****

// Fonction qui retourne le padding nécessaire à un conteneur pour 
// centrer son contenu horizontalement et verticalement.

// Paramètres d'entrée : 
// => img 	: [objet] contenu,
// => max_w : [int] largeur du conteneur
// => max_h : [int] hauteur du conteneur

// Paramètre de sortie : 
// un objet ayant 2 propriétés : une largeur et une hauteur

function getMarges(img, max_w, max_h){
		
	var padding = new Object;
	padding.w = 0;
	padding.h = 0;
	
	// Pour les éléments cachés (display:none;), .width() et .height() seront nuls
	// La technique consiste à cloner l'élément analysé et le cacher pour déterminer ses dimensions
	// Ses dernières récupérées, l'élément sera detruit
	
	img.clone(true).css({
		position : 'absolute',
		top : -9999,
		display : 'block'
	}).addClass('testTemporaire').appendTo('body');
	
	var largeur_image = $(".testTemporaire").width();
	var hauteur_image = $(".testTemporaire").height();
	
	$(".testTemporaire").remove();
	
	padding.w = Math.floor((max_w - largeur_image)/2);
	padding.h = Math.floor((max_h - hauteur_image)/2);
	
	if(padding.w < 0) padding.w = 0;
	if(padding.h < 0) padding.h = 0;
	
	return padding;
}


// Fonction qui permet de créer un cookie
function setCookie(nom,valeur,jours){
	var expDate = new Date();
	expDate.setTime(expDate.getTime() + (jours * 24 * 3600));
	document.cookie = nom + "=" + escape(valeur) + ";expires=" + expDate.toGMTString();
}


/***** Fonction chargée de splitter une chaine et de retourner la valeur *****/
/***** correspondant à l'index du tableau résultant du split() *****/
function split_and_get_value(str,motif,index){
	
	var tab_split = str.split(motif);
	return tab_split[index];
}


/***** Fonction chargée retourner une valeur typée Float *****/
function virgule_to_point(str){

	return parseFloat(str.replace(',','.'));
}


/***** Retourne une portion de tableau *****/
function array_slice(tab,a_start,a_length){

	var tab_retour = new Array();
	
	for(var cpt=0; cpt<tab.length; cpt++){
		if(cpt >= a_start && cpt < a_length) tab_retour.push(tab[cpt]);
	}
	
	return tab_retour;
}


/***** Calcule l'intersection de tableaux *****/
function array_intersect(array_1,array_2){

	var tab_retour = new Array();
	
	for(var cpt=0; cpt<array_1.length; cpt++){
		for(var cpt2=0; cpt2<array_2.length; cpt2++){
			if(array_1[cpt] == array_2[cpt2]){
				tab_retour.push(array_2[cpt2]);
			}
		}
	}
	
	return tab_retour;
}


/***** fonction qui permet d'afficher le contenu d'un objet. *****/
function alerte(obj) {
	if (typeof obj == 'object') {
		var foo = '';
		for (var i in obj) {
			if (obj.hasOwnProperty(i)) {
				foo += '[' + i + '] => ' + obj[i] + '\n';
			}
		}
		alert(foo);
	}
	else {
		alert(obj);
	}
}


//équivalent à number_format PHP
function number_format(number, decimals, dec_point, thousands_sep) {
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');    }
    return s.join(dec);
}


//retourne la chaine de selection pour un select
function isChecked(a, b){
	if(a == b) return ' checked="checked"';
}

//retourne la chaine de selection pour un select
function isSelected(a, b){
	if(a == b) return ' selected="selected"';
}

