function changeInputs()
{
	var els = document.getElementsByTagName('input');
	var elsLen = els.length;
	var i = 0;
	for(i = 0; i < elsLen ; i++) {
		if(els[i].getAttribute('type')) {
			els[i].className += ' ' + els[i].getAttribute('type');
		}
	}
}


// Calcule la position d'un objet
function calcPos(obj) {
	
	var curtop = 0;
	var curleft = 0;
	
	if (obj.offsetParent) {
		curtop = obj.offsetTop;
		curleft = obj.offsetLeft;
		while (obj = obj.offsetParent) {
			curtop += obj.offsetTop;
			curleft += obj.offsetLeft;
		}
	}
	
	return new Array(curtop, curleft);
	
}


// Liste des DIVs
var divs = new Array();


// Associe à chaque couple d'ancres la liste des DIVs à afficher/masquer
function initDivs()
{
	
	changeInputs();
	
	// Crée un tableau contenant toutes les balises masquables
	var tagsDIV = document.getElementsByTagName("DIV");
	var tagsP = document.getElementsByTagName("P")
	for (var i = 0; i < tagsDIV.length; i++) {
		divs.push(tagsDIV[i]);
	}
	for (var i = 0; i < tagsP.length; i++) {
		divs.push(tagsP[i]);
	}
	
	// Liste des ancres ouvrantes et fermantes
	var ancresDeb = document.getElementsByName("question");
	var ancresFin = document.getElementsByName("fin_reponse");
	
	// Liste des positions des balises
	var posDivs = new Array(divs.length);
	var posAncresDeb = new Array(ancresDeb.length);
	var posAncresFin = new Array(ancresFin.length);
	
	// Calcule les positions initiales des balises
	for (var i = 0; i < divs.length; i++) {
		posDivs[i] = calcPos(divs[i]);
	}
	for (var i = 0; i < ancresDeb.length; i++) {
		posAncresDeb[i] = calcPos(ancresDeb[i]);
	}
	for (var i = 0; i < ancresFin.length; i++) {
		posAncresFin[i] = calcPos(ancresFin[i]);
	}
	
	// Pour chaque ancre ouvrante de la page
	for (var a = 0; a < ancresDeb.length; a++) {

		// Initialise le numéro de l'ancre fermante la plus proche
		var b = -1;
		
		// Pour chaque ancre fermante
		for (var k = 0; k < ancresFin.length; k++) {
			
			// Si l'ancre fermante est en dessous de l'ancre ouvrante
			if (posAncresFin[k][0] > posAncresDeb[a][0]) {
				
				// Si c'est l'ancre fermante la plus proche
				if (b == -1 || posAncresFin[k][0] < posAncresFin[b][0]) {
					// On retient le numéro de cette ancre
					b = k;
				}
				
			}
			
		}
		
		// Initiliase la liste des DIVs associée au couple d'ancres
		var indexDivs = new String();
		
		// Pour chaque DIV
		for (var i = 0; i < divs.length; i++) {
			
			// Si la DIV est entre l'ancre ouvrante et l'ancre fermante
			if (posDivs[i][0] > posAncresDeb[a][0] && posDivs[i][0] < posAncresFin[b][0] && posDivs[i][1] >= Math.min(posAncresDeb[a][1], posAncresDeb[b][1])) {
				
				// Ajoute cette DIV à la liste
				indexDivs += (indexDivs.length == 0 ? "" : ",") + i;
				
				// Masque la DIV
				divs[i].style.display = 'none';
				
			}
			
		}

		// Définit le lien de l'ancre ouvrante
		ancresDeb[a].href = "javascript:montreCache(" + indexDivs + ");";
		
	}
	
}


// Affiche/masque une liste de DIVs
function montreCache()
{
	for (var i = 0; i < arguments.length; i++) {
		if (arguments[i] != -1) {
			divs[arguments[i]].style.display = (divs[arguments[i]].style.display == 'none' ? '' : 'none');
		}
	}
}

// affiche / cache un objet
function montreCache2( objet )
{
    objet.style.display = (objet.style.display == 'none')?'':'none';
}

// active / cache un objet
function activeDesactive( objet )
{
    objet.disabled = !objet.disabled;
}