// Cache tous les éléments avec le tag passé en paramètre
function hideAll(tag)
{
	var tagTable = document.getElementsByTagName(tag);
	var tableLength = tagTable.length

	for (var i = 0; i < tableLength; i++)
	{
		tagTable[i].style.display = "none";
	}
}

// Soumission de formulaires
function submit(form)
{
	document.getElementById(form).submit();
}

// Confirmation de suppression pour un objet quelconque
function supprimer(texte)
{
	return confirm(texte);
}

// Montrer un objet
function show(objet)
{
	document.getElementById(objet).style.display = "block";
}

// Montre un objet, selectionne son contenu et focus
function showFocusSelect(objet)
{
	var input = document.getElementById(objet);
	input.style.display = "inline";
	input.focus();
}

// Cacher un objet
function hide(objet)
{
	document.getElementById(objet).style.display = "none";
}

function showHide(objet)
{
	obj = document.getElementById(objet);

	if (obj.style.display == "block")
		obj.style.display = "none";
	else
		obj.style.display = "block";
}

function changeHTML(objet, html)
{
	document.getElementById(objet).innerHTML = html;
}

function changeValue(objet, value)
{
	document.getElementById(objet).value = value;
}

function changeClass(objet, value)
{
	document.getElementById(objet).className = value;
}

function changeHref(objet, value)
{
	document.getElementById(objet).href = value;
}

function switchHrefToValue(select, anchor)
{
	var s = document.getElementById(select);

	changeHref(anchor, s.options[s.selectedIndex].value);
}

// Changer les jours pour le mois sélectionné
function changeJours(prefix)
{
	var anneeSelect = document.getElementById('select'+prefix+'Annee');
	var annee = anneeSelect.options[anneeSelect.selectedIndex].value;
	
	var jours = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	if ((annee % 4 == 0 && annee % 100 != 0) || annee % 400 == 0)
	{
		jours[1] = 29;
	}
	
	var mois = document.getElementById('select'+prefix+'Mois').selectedIndex;
	var select = document.getElementById('select'+prefix+'Jour');
	var selected = select.selectedIndex;
	select.length = 0;

	var nbJours = jours[mois];
	for (var i = 0; i < nbJours; i++)
		select.options[i] = new Option(i + 1, i + 1);
	

	// Si le jour sélectionné précédemment dépasse le nombre de jours du mois courant on prend le dernier jour du mois
	if (select.length <= selected)
		select.selectedIndex = select.length - 1;
	// Sinon on garde la sélection
	else
		select.selectedIndex = selected;
}

// Tri par défaut
var tri = "nom_asc";

// Fonction de tri du tableau des inscriptions
function trierTableau(type, tableau, nombres)
{
	// Si le tableau est déjà trié par cette colonne
	if (tri.indexOf(type) != -1)
		// Inverse le tri
		tri = (tri == type + "_desc") ? type + "_asc" : type + "_desc";

	// Sinon on assume tjrs de trier en ordre croissant en premier
	else
		tri = type + "_asc";

	// Fetch l'ordre associé
	var ordre = tri.split('_')[1];

	// Maintenant on tri le tableau !!!
	var tds = document.getElementsByTagName('td');
	var nbTds = tds.length;

	// Tableaux de valeurs
	var trs = new Array();
	var trsInner = new Array();
	var values = new Array();

	// Enlève le text-underline de tous les liens dans les th
	var ths = document.getElementsByTagName('th');
	var nbThs = ths.length;

	// Parcourt des table heads
	for (var i = 0; i < nbThs; i++)
	{
		var th = ths[i];

		// Pour tous les ths du tableau concerné
		if (th.parentNode.parentNode.parentNode.id == tableau)
		{
			var nbChild = th.childNodes.length;

			// Pour tous les noeuds enfants du table head
			for (var j = 0; j < nbChild; j++)
			{
				child = th.childNodes[j];

				// Enlève les classes des liens concernés
				if (child.tagName == "A" && child.href.indexOf(type) == -1)
					child.className = "";
			}
		}
	}

	// Parcourt tous les tds Pour garder les 
	for (var i = 0; i < nbTds; i++)
	{
		var td = tds[i];

		// Si c'est td dans le bon tableau et qu'on est dans la cellule de tri
		if (td.parentNode.parentNode.parentNode.id == tableau && td.className.indexOf(type) != -1)
		{
			// Envoie les nodes des tr dans un tableau
			trs.push(td.parentNode);
			trsInner.push(td.parentNode.cloneNode(true));

			if (nombres)
				values.push(parseInt(td.innerHTML.replace(/<\/?[^><]+>/, "")) + '.'+ (i++));
			else
				values.push(td.innerHTML.replace(/<\/?[^><]+>/, "") + '.'+ (i++));
		}
	}

	var valuesLength = values.length;
	// Création d'une copie pour connaître l'emplacement des valeurs non triées
	var valuescopy = values.slice();

	// Tri le tableau de valeurs en ordre alphabétique
	if (nombres)
		values.sort(sortNumber);
	else
		values.sort();
		
	// Inverse l'ordre si c'est requis
	if (ordre == "desc")
		values.reverse();

	// Parcours des éléments du tableau
	for (var i = 0; i < valuesLength; i++)
	{
		for (var j = 0; j < valuesLength; j++)
		{
			// Si on a une correspondance entre les deux tableaux
			if (values[i] == valuescopy[j])
			{
				var childLength = trs[i].childNodes.length

				// Remplace chacun des td un à la fois
				for (var k = 0; k < childLength; k++)
				{
					var child = trs[i].childNodes[k];

					// Si le child est un td
					if (child.tagName == "TD")
					{
						// Cherche le node équivalent dans l'autre tableau
						for (var m = 0; m < trsInner[j].childNodes.length; m++)
						{
							var childCp = trsInner[j].childNodes[m];

							// Si c'est le bon node
							if (childCp.className == child.className)
							{
								// Remplace le node
								trs[i].replaceChild(childCp, child);
								break;
							}
						}
					}
				}
			}
		}
	}
}

// Fonctions de sort pour les nombres
function sortNumber(a, b)
{
	return a - b;
}

// Images de background à préloader
pic2= new Image(89, 21); 
pic2.src = "/images/connexion.gif"; 
