/**
* Fichier.....: fonctions.js
* Crée le.....: 15/09/2007
* Modifié le..: inconnu
* Version.....: 1.0
* Auteur......: Pierre-Etienne RABY
* Licence.....: GPL
* Fonctions utiles
*/

/*--------------------------*/
/*  Diminutif document.get  */
/*--------------------------*/
function $(string){ 
	
	if( document.getElementById(string) != undefined ){
		return document.getElementById(string);
	}else if( document.getElementsByName(string) != undefined ){
		return document.getElementsByName(string);
	}else if( document.getElementsByTagName(string) != undefined ){
		return document.getElementsByTagName(string);
	}else{
		return false;
	}
}

/*----------------------------------*/
/* Remplir un champ automatiquement */
/*----------------------------------*/
function RemplirChamp(id, champ){
  
  if((champ.value != '') && ($(id).value == '')){
    $(id).value = champ.value;
  }
}

/*-----------------------------------------*/
/* Sélectionner une option automatiquement */
/*-----------------------------------------*/
function SelectionnerOption(id, select){
	
	if((select.value != '')){
		listeOption = $(id).getElementsByTagName('option');
		for(i=0;i<listeOption.length;i++){
			if(listeOption[i].value == select.value){
				listeOption[i].setAttribute('selected', 'selected');
			}
		}
	}
}

/*------------------------------*/
/*  Afficher ou cacher un bloc  */
/*------------------------------*/
function getDisplay(id){
	
	if ($(id).style.display == 'none'){
		$(id).style.display = 'block';
	}else{
		$(id).style.display = 'none';
	}
}

/*------------------------------*/
/*  Bloc un champ en lecture    */
/*------------------------------*/
function verouille(id){
	if(document.getElementById(id).getAttribute('readonly', 'readonly') == 'readonly'){
		document.getElementById(id).removeAttribute('readonly');
	}else{
		document.getElementById(id).setAttribute('readonly', 'readonly');
	}
}

/*------------------------------------*/
/*  Vérifie si une variable est vide  */
/*------------------------------------*/
function empty(variable){

	if (variable === "" || variable === 0  || variable === "0"|| variable === null || variable === false || variable === undefined  || ((typeof variable == 'array' || typeof variable == 'object') && variable.length === 0) ){
		return true;
	}
	return false;
}

/*------------------------------------*/
/*  Afficher le statut de la requête  */
/*------------------------------------*/
function statut(cible, text, image){
	$(cible).innerHTML = '<img src="/admin/images/icones/'+image+'.gif" alt="statut" id="status" /> '+text;
}

/*------------------------------------------*/
/*  Création d'une instance XMLHttpRequest  */
/*------------------------------------------*/
function xmlGetObject(){
	
  var oXhr = null;
  
  if( window.XMLHttpRequest ){ //Firefox, Opéra
  
		oXhr = new XMLHttpRequest();
		if( oXhr.overrideMimeType ){
			oXhr.overrideMimeType('text/html');
		}
	} 
	else if( window.ActiveXObject ){ //Internet Explorer
		
		try{
			oXhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			try{
				oXhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){
				alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest !");
			}
		}
  }
  return oXhr;
}

/*--------------------------*/
/*  Executer un script PHP  */
/*--------------------------*/
function execute(url, data, cible, async){
	
	//Initialisation
	var param = "";
	var method = "";
	
	//Parametres de la requete
	if( !empty(data) ){
		
		for (var i=0; i<data.length; i++){
			
			if( i == data.length-1 ){
				param += data[i];
			}else{
				param += data[i]+'&';
			}
		}
		method = 'POST';
	}
	else{
		method = 'GET';
		param = null;
	}
  
	//Traitement
	if( async == false){
  	
	  	var oXgo = xmlGetObject();
	  	
	  	oXgo.open(method, url, false);
	  	oXgo.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	  	oXgo.send(param);
	  	
	    return( oXgo.responseText );
	}
	else if( async == true ){
		
		var xhro = xmlGetObject();
		
		xhro.open(method, url, true);
		xhro.onreadystatechange = function(){
		
			if(xhro.readyState == 4){ //4 = Requête terminée
				
				if( xhro.status == 200 ){ //200 = HTTP OK
					if( !empty(cible) ){
						
						$(cible).innerHTML = xhro.responseText;
					}else{
						
						return( xhro.responseText );
					}
				}else{
					return( alert("Erreur HTTP :: "+xhro.responseText) );
				}
			}else{
				if( !empty(cible) ){
					$(cible).innerHTML = '<img src="/admin/images/handle.gif" alt="handle" /> Chargement en cours...';
				}
			}
		}
		xhro.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xhro.send(param);
	}
}

/**
 *@desc	 	Equivalent de number_format() en php
 *@param	float, int, string, string 
 *@return	un nombre formaté
 */ 
function number_format( number, decimals, dec_point, thousands_sep ) { 
	
	//Source : http://kevin.vanzonneveld.net
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}
