// Créateur : Philippe FOGUENNE.
// Dernière modification le 08/12/2005.

/* Fonctions présentes dans ce fichier:

	 f_qsExistsElement(strQuerystring, elementName)
	 f_qsGetElementValue(strQuerystring, elementName)
	 f_qsSetElementValue(strQuerystring, elementName, elementValue)
*/


// --------------------------------------------------------------------------------
// f_qsExistsElement(strQuerystring, elementName)
// --------------------------------------------------------------------------------
// Fonction : Détecte la présence ou non d'un élément dans le querystring.
// Entrée : strQuerystring = la valeur de la propriété document.location.search ou document.location.href d'une fenêtre.
//          elementName = nom de l'élément recherché dans le querystring.
// Sortie : true si l'élément est trouvé dans le querystring; false sinon.

function f_qsExistsElement(strQuerystring, elementName) {
	var reg = new RegExp('^.*[?&]{1}' + elementName + '[=]{1}[^&]*[&]?.*$', 'g');
	return reg.test(strQuerystring);
}


// --------------------------------------------------------------------------------
// f_qsGetElementValue(strQuerystring, elementName)
// --------------------------------------------------------------------------------
// Fonction : Retourne la valeur d'un élément du querystring.
// Entrée : strQuerystring = la valeur de la propriété document.location.search ou document.location.href d'une fenêtre.
//          elementName = nom de l'élement du querystring pour lequel il faut retourner la valeur.
// Sortie : la valeur de l'élément si celui-ci est trouvé dans le querystring; une chaîne vide sinon.

function f_qsGetElementValue(strQuerystring, elementName) {
	if (!f_qsExistsElement(strQuerystring, elementName)) {
		return '';
	} else {
		var reg = new RegExp('^.*[?&]{1}' + elementName + '[=]{1}([^&]*)[&]?.*$', 'g');
		return strQuerystring.replace(reg, '$1');
	}
}


// --------------------------------------------------------------------------------
// f_qsSetElementValue(strQuerystring, elementName, elementValue)
// --------------------------------------------------------------------------------
// Fonction : Modifie la valeur d'un élement du querystring.
// Entrée : strQuerystring = la valeur de la propriété document.location.search ou document.location.href d'une fenêtre.
//          elementName = nom de l'élement du querystring pour lequel il faut modifier la valeur.
// Sortie : Le querystring complet est retourné avec la nouvelle valeur de l'élément.
//          Si l'élément n'a pas été trouvé dans le querystring, alors l'élément est ajouté au querystring.

function f_qsSetElementValue(strQuerystring, elementName, elementValue) {
	var strNewQs = strQuerystring;

	if (f_qsExistsElement(strNewQs, elementName)) {
		var reg = new RegExp('^(.*[?&]{1}' + elementName + '[=]{1})[^&]*([&]?.*)$', 'g');
		strNewQs = strNewQs.replace(reg, '$1' + elementValue + '$2');
	} else {
		// Suppression d'un éventuel '&', '?', '/' ou '\' en fin de chaîne.
		var regRemoveEndingSeparator = new RegExp('^(.*[^?&\\\\/]{1})[?&\\\\/]*$', 'g');
		strNewQs = strNewQs.replace(regRemoveEndingSeparator, '$1');

		// Ajout du nouvel élément.
		if (strNewQs.indexOf('?', 0) != -1) {
			strNewQs += '&' + elementName + '=' + elementValue;
		} else {
			strNewQs += '?' + elementName + '=' + elementValue;
		}
	}

	return strNewQs;
}