/**
* Affiche ou cache un calque selon son état.
*
* @param String layerID Identitifant du calque à modifier
* @return String Etat du calque
*/
function displayHide(layerID) {
	var el = document.getElementById(layerID);
	
	if(el == undefined) {
		return 'none';
	}
	
	if (el.style.display == 'block')  {
		return el.style.display = 'none';
	}
	
	return el.style.display = 'block';
}

/**
* Replaces oldS with newS in the string fullS.
* Exemple venant du site officiel sur JavaScript.
*
* @param String oldS Sous-chaîne à remplacer
* @param String newS Sous-chaine de remplacement
* @param String fullS Chaîne dans laquelle faire le remplacement
* @access public
* @since 1.0
*/
function replaceString(oldS, newS, fullS) {
	for (var i = 0; i < fullS.length; i++) {
		if (fullS.substring(i, i + oldS.length) == oldS) {
			fullS = fullS.substring(0,i) + newS + fullS.substring(i + oldS.length, fullS.length)
		}
	}
	return fullS
}

/**
* Met le 1er caractère d'une chaîne en lettres capitales et supprime les espaces autour.
*
* @param String data Chaîne de caractères à modifier
* @return String  Chaîne de caractères modifiée
*/
function strToUpper(data) {
	var retour = data;
	var regExpBeginning = /^\s+/;
	var regExpEnd       = /\s+$/;
	retour = retour.replace(regExpBeginning, '') . replace(regExpEnd, '');
	return retour.toUpperCase();
}

/**
* Convertit un valeur quelconque en entier.
*
* @param Mixed val Valeur à convertir en entier
* @param Intger Réussite (1) ou échec (0) de l'opération
*/
function convertInt(val) {
	var convert = val;
	var retour = val;
	
	if(!isNaN(parseInt(convert))) {
		retour = parseInt(convert);
	}
	if(typeof(val) == "boolean") {
		retour = val ? 1 : 0;
	}
	
	return retour;
}

/**
* Initialise une entrée de formulaire.
*
* @param HTMLElement formEntry Entrée de formulaire à initaliser
* @param String value Valeur d'initialisation
*/
function initFormEntry(formEntry, value) {
	var indice;
	
	if(formEntry) {
		switch(formEntry) {
			case 'HTMLSelectElement' :
				for(var i = 0; i < formEntry.length; i++) {
					if(formEntry.options[i].value == value) {
						indice = i;
					}
				}
				
				formEntry.selectedIndex = indice;
				break;
			case 'HTMLTextAreaElement' :
				formEntry.innerHTML = value;
				break;
			case 'HTMLInputElement' :
			default :
				formEntry.value = value;
				break;
		}
	}
}

/**
* Vérifie l'existence d'une donnée.
*
* @param String data Donnée à vérifier
* @return Boolean La donnée existe (true) ou pas (false)
*/
function isDefined(data) {
	if(!data) {
		return false;
	}
	
	return true;
}

/**
* Vérifie la validité d'une adresse e-mail.
*
* @param String data Adresse e-mail à vérifier
* @return Boolean L'adresse e-mail est valide (true) ou invalide (false)
*/
function isEmail (data)  {
	var expr = new RegExp('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$',"i");
	return expr.test(data);
}

/**
* Vérifie la validité d'un entier.
*
* @param String data Donnée à vérifier
* @return Boolean La donnée est un entier (true) ou pas (false)
*/
function isInteger (data)  {
	var expr = new RegExp("^[0-9]*$", "gi"); // chiffres sans espaces
	
	results = data.match(expr);
	return (results == null);
}

/**
* Complète une URL avec un nouveal argument.
*
* @param String argumentName Nom de l'argument à ajouter
* @param String argumentValue Valeur de l'argument à ajouter
*/
function urlComplete(url, argumentName, argumentValue) {
	urlCompleted = '';
	
	if(url != undefined) {
		eval('urlCompleted = url.replace(/='  +  argumentName + '/, \'=\' + argumentValue);');
		urlCompleted = urlCompleted.replace(/&amp;/, '&');
	}
	
//alert('urlComplete(' + url + ', ' + argumentName + ', ' + argumentValue + ', ) = \n\nurlCompleted = url.replace(/='  +  argumentName + '/, \'=' + argumentValue + '\');\n\n' + urlCompleted);
	return urlCompleted;
}

/**
* Arrondit un nombre à la virgule près.
*
* @param Float number Nombre à arrondif
* @param Integer point Nombre de chiffres après la virgule
* @return Nombre arrondi
*/
function formatNumber(number, point) {
	if(point == undefined) {
		point = 2;
	}
	
	if(point == undefined) {
		point = 2;
	}
	
	if(typeof(point) == "number" && point > 1) {
		return parseFloat(Math.round(number * Math.pow(10, point)) / Math.pow(10, point));
	}
	
	return parseFloat(Math.round(number));
	
	/*exp = 10.00;
	exp = Math.pow(exp, point);
	
	return Math.round(number * exp) / exp;*/
}

/* Supprimer le 0 initial du mois ou du jour d'une date.
*
* @param String info_date Jour ou mois numérique (chaîne de caractères)
* @return Jour / mois modifié
* @access public
* @since 1.0
*/
function formatInfoDate(info_date) {
	if(info_date.length == 2 && info_date.charAt(0) == '0') {
		info_date = info_date.charAt(1);
	}
	
	return info_date;
}

/**
* Formate l'affichage d'un prix.
*
* @param String value Prix à formater
* @param Integer point Nombre de chiffres après la virgule
* @access public
* @since 1.0
*/
function formatPrice(value, point) {
	if(point == undefined) {
		point = 2;
	}
	value = formatNumber(value, point);
	
	var stringValue = value.toString();
	if(stringValue.match(/(\.[0-9]{2})$/i)) {
		return stringValue;
	}
	if(stringValue.match(/(\.[0-9])$/i)) {
		return stringValue + '0';
	}
	
	return stringValue + '.00';
}

/**
* Supprime l'action de la pression sur la touche " Enter ".
*/
function kH(e) {
	var pK = e ? e.which : window.event.keyCode;
	return pK != 13;
}
document.onkeypress = kH;
if (document.layers) {
	document.captureEvents(Event.KEYPRESS);
}

