	//submit la page en cours vers l'action choisie 
	function doAction(theAction)
	{
		if (document.getElementById("action")==null)
		{
			alert("Il faut rajouter un input type hidden 'action' dans la page");
		}
		else
		{
			document.getElementById("action").value= theAction;
			document.forms[0].submit();
		}
	}

	//property : string indiquant le nom du composant dont il faut appeler le onChange. # autoris�.
	function callOnChange(property) {
		current = 0;
		compName = replaceSharp(property, current);
		while (document.forms[0].elements[compName] != null)
		{
			document.forms[0].elements[compName].onchange();
			current++;
			compName = replaceSharp(property, current);
		}	
	}

	//compRadio : le composant radio de formulaire
	//divProp : le nom du div, premier # remplac� par num de ligne, second # remplac� par valeur du radio
	function showRadioDiv(compRadioName, divProp) {
		radios = extractComponents(compRadioName);
		idx = extractIndex(compRadioName)
		divName = divProp;		
		if ((idx != null) && (idx != "")) {
			divName = replaceSharp(divName,idx);
		}
		for (i=0;i<radios.length;i++) {
			currentDiv = replaceSharp(divName, radios[i].value);
			daDiv = document.getElementById(currentDiv);
			if (radios[i].checked) {
				daDiv.style.visibility = 'visible';
			} else {
				daDiv.style.visibility = isIE()?'hide':'hidden';
			}
		}
	}		
	
	function initAllRadioDiv(compRadioMask, divProp) {
		currentIdx = 0;
		radioName = replaceSharp(compRadioMask,currentIdx);
		radios = extractComponents(radioName);
		while (radios.length>0){
			showRadioDiv(radioName, divProp);
			currentIdx++;
			radioName = replaceSharp(compRadioMask,currentIdx);
			radios = extractComponents(radioName);
			
		}
	}		

	// property = nom du champ HTML tel que vu avec "voir source" de la page, 
	// avec un # � la place de [1] 
	// coche prend true ou false
	function selectAll(property, coche)
	{
		i = 0;
		compName = replaceSharp(property, i);		
		while (document.forms[0].elements[compName] != null)
		{
			document.forms[0].elements[compName].checked = coche?"checked":"";
			i++;
			compName = replaceSharp(property, i);
		}
	}
	
	// appelant : l'objet SELECT du formulaire sur lequel est plac� le onChange.
	// modifie : une chaine avec un # � la place de [] pour indiquer le nom de la liste � changer.
	// combos : un tablo � 2 dimension (n x 3) d�terminant les menus, leurs valeurs, et les liaisons.
	function linkCombos(appelant, modifie, combos) {
		current = extractIndex(appelant.name);
		destination = document.forms[0].elements[replaceSharp(modifie,current)];
		destination.length=0;
		for (i=0; i<combos.length;i++) {
			if (combos[i][0] == appelant.value){
				destination.options[destination.length]=new Option(combos[i][1],combos[i][2]);
			}
		}
	}
	
	function extractComponents(beginName) {
		var res = new Array();
		j = 0;
		for (i=0;i<document.forms[0].length;i++) {
			if (document.forms[0].elements[i].name.indexOf(beginName)==0)
			{
				res[j] = document.forms[0].elements[i];
				j++;
			}
		}
		return res;
	}
	
	function extractIndex(nom) {
		debut = nom.indexOf("[");
		fin = nom.indexOf("]");
		return nom.substring(debut + 1 ,fin);
	}
	
	function replaceSharp(chaine, idx)
	{
		avant = chaine.substring(0,chaine.indexOf("#"));
		apres = chaine.substring(chaine.indexOf("#") + 1, chaine.length);
		crochets = "[" + idx + "]";
		return avant + crochets + apres;
	}
	
	function isIE() {
		return !(navigator.appName=="Netscape");
	}
	
	function getForm(formName){
		return document.getElementById(formName);
	}
	
	
function showQuantityCombo(idx){
	document.getElementById('quantityCombo'+idx).style.display='inline';  
	document.getElementById('quantityText'+idx).style.display='none';  
}
