/** 
* Transforme un formulaire en un objet Javascript contenant le nom des champs 
* ainsi que pour chacun leur(s) valeur(s). Est prévu pour gérer les champs de type radio , 
* checkbox , listbox (avec choix multiples possibles) en les traitant uniquement 
* dans le cas ou au moins une valeur a été spécifiées pour un élément de formulaire. 
* Ne traite pas les éléments de type submit , reset ou button. 
* 
* @En entree : prend l'id du formulaire a traiter 
* 
* @Retourne un objet JavaScript avec une propriété pour chaque champ du formulaire à soumettre. 
* La valeur de chaque propriété de l'objet est un tableau contenant une ou plusieurs valeurs à soumettre 
*/ 
function PFW_getFormValuesAsMap(id_form) 
{ 
	var params = new Object(); 
	var inputs = document.getElementById(id_form).elements; 
	for (var i=0; i<inputs.length; i++) 
	{ 
		var input = inputs[i]; 
		if (input.type == "radio" || input.type == "checkbox") 
		{ 
			//Cas des radios et checkboxes, ne les traite que s'ils sont checked 
			if (input.checked == true) 
			{ 
				if (params[input.name] == null) 
				{ 
					params[input.name] = new Array(); 
				} 
				params[input.name].push(input.value); 
			} 
		} 
		else if (input.type == "select-multiple") 
		{ 
			//Cas des Select multiple 
			for (var j=0; j<input.options.length; j++) 
			{ 
				if (input.options[j].selected == true) 
				{ 
					if (params[input.name] == null) 
					{ 
						params[input.name] = new Array(); 
					} 
					params[input.name].push(input.options[j].value); 
				} 
			} 
		} 
		else if (input.type == "submit" || input.type == "button" || input.type == "reset") 
		{ 
			//On exclue les submit , reset , button 
		} 
		else if (input.name != undefined && input.value != undefined) 
		{ 
			//On traite tous les autres cas : text , hidden , textarea ... 
			if (params[input.name] == null) 
			{ 
				params[input.name] = new Array(); 
			} 
			params[input.name].push(input.value); 
		} 
	} 
	return params; 
} 


/** 
* Retourne la query string contenant tous les champs avec que leur valeur d'un formulaire à soumettre. 
* Chaque valeur est encodee avant d'etre ajoutée à la query string. 
* 
* @En entree : prend l'id du formulaire a traiter 
* 
* @Retourne une query string 
*/ 
function PFW_getQueryString(id_form) 
{ 
	var params = PFW_getFormValuesAsMap(id_form); 
	var queryString = ""; 
	for (var name in params) 
	{ 
		var values = params[name]; 
		for (var i=0; i<values.length; i++) 
		{ 
			queryString += name + "=" + encodeURIComponent(values[i]) + "&"; 
		} 
	} 
	return queryString.substring(0,queryString.length-1);
}