
function sortSelectOptions(selectName) {
	// récupération de l'élément select à trier
	selectElem = $(selectName);
	
	// et du nombre d'éléments options qu'il contient
	nbOptions = selectElem.options.length;

	// récupération dans 2 tableaux des valeurs (attribut value) et des textes (affiché dans la liste)
	valuesArray = new Array();
	textsArray = new Array();
	selectedValue = undefined;
	for (i = 0; i < nbOptions; i++) {
		valuesArray.push(selectElem.options[i].value);
		textsArray.push(selectElem.options[i].text);
		if (selectElem.selectedIndex == i) {
			selectedValue = selectElem.options[i].value;
		}
	}

	// tri des textes
	sortedTextsArray = textsArray.clone().sort();
	
	// vidage du select
	selectElem.length = 0;
	
	// on ajoute les options dans l'ordre alphabétique
	for (i = 0; i < nbOptions; i++) {
		// texte à afficher dans la liste
		text = sortedTextsArray[i];
		
		// indice de ce texte dans le tableau non trié
		j = textsArray.indexOf(text);
		
		// valeur positionnée à cet indice dans le tableau des valeurs
		value = valuesArray[j];
		
		// ajout de l'élément à la liste
		selectElem.insert(new Element('option', {'value': value}).update(text));
		
		if (value == selectedValue) {
			selectElem.selectedIndex = i;
		}
	}
}

// affiche une image d'attente
function addLoadingImage(element, imageName) {
	if (!imageName) { //  != undefined ?
		imageName = 'wait.gif';
	}

	element.up().insert(new Element('img', {
		'class': 'loading',
		'src': _fxcv4_url_root + '/' + _fxcv4_images_folder + '/' + imageName,
		'alt': '' }));
}

// supprime une image d'attente
function deleteLoadingImage(element) {
	element.up().down('img.loading').remove();
}
