// Initialisation de l'objet request
function initRequest() {
	var request;

	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
	}
	else {
		request = new ActiveXObject('Msxml2.XMLHTTP');

		if (!request) {
			request = new ActiveXObject('Microsoft.XMLHTTP');
		}
	}

	return request;
}

// Fonction de traitement des erreurs
function traiteErreur(message) {
	//alert(message);
}

// Envoi d'une requête
function sendRequest(type, url, async, asyncCall) {
	try {
		var request = initRequest();

		if (!request) {
			throw new Error('Votre navigateur ne permet pas d\'utiliser toutes les fonctionnalités de ce site. Pensez à le mettre à jour.');
		}

		// Chaîne pour le passage en mode POST
		var queryString = null;

		request.onreadystatechange = function() { asyncCallBack(request, asyncCall); };
		request.open(type, url, async);

		if (type.toLowerCase() == 'post' && arguments[4] != null && arguments[4].length > 0) {
			queryString = arguments[4];
			request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		}

		request.send(queryString);
	}
	catch (e) {
		traiteErreur(e.message);
	}
}

// Fonction de traitement des retours
function asyncCallBack(request, callBack) {
	try {
		switch (request.readyState) {
			case 0:
				// Traitement pour une requête non initalisée
				break;

			case 1:
				// Traitement pour une requête en cours de transfert
				break;

			case 2:
				// Traitement pour une requête transférée.
				break;

			case 3:
				// Traitement lorsqu'une partie de la réponse est accessible.
				break;

			case 4:
				if (request.status == 200) {
					var html = request.responseText;
					callBack(html);
				}
				else {
					throw new Error('Le serveur n\'a pas pu traiter la requête. Réponse HTTP: ' + request.status + '.');
				}
			break;
		}
	}
	catch (e) {
		traiteErreur(e.message);
	}
}

// Retourne true si la touche entrée a été pressée
function returnKeyPressed(evenement) {
   var key;

	if (window.event) {
		key = evenement.keyCode;
	}
	else {
		key = evenement.which;
	}

   return key == 13;
}

// Vérification et aide à la saisie de date
/*function verifDate(champDate) {
	champDate.value.replace('[^0-9/]', '');
	var joursParMois = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	var joursParMoisBissextile = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	var tabDate = champDate.value.split('/');
	var leapYear = false;
	var jourMax;

	switch (tabDate.length) {
		case 0:
			break;

		case 1:
			break;

		case 2:
			break;

		default:
			tabDate = [tabDate[0], tabDate[1], tabDate[2]];
			break;
	}

	if (tabDate[2].length == 2) {
		tabDate[2] = '20' + tabDate[2];
	}

	if (tabDate[2] % 4 == 0 && ((tabDate[2] % 100 == 0 && tabDate[2] % 400 == 0) || (tabDate[2] % 100 != 0 && tabDate[2] % 400 != 0))) {
		leapYear = true;
	}

	if (leapYear) {
		jourMax = joursParMoisBissextile[tabDate[1]];
	}
	else {
		jourMax = joursParMois[tabDate[1]];
	}

	if (isNaN(tabDate[1]) || tabDate[1] < 1) {
		tabDate[1] = '1';
	}
	else if (tabDate[1] > jourMax) {
		tabDate[1] = jourMax;
	}

	if (tabDate[0].length == 1) {
		tabDate[0] = '0' + tabDate[0];
	}

	if (tabDate[1].length == 1) {
		tabDate[1] = '0' + tabDate[1];
	}

	champDate.value = tabDate[0] . '/' . tabDate[1] . '/' . tabDate[2];
}*/

Object.extend(String, {
		escape: function(str) {
			return str.valueOf().replace('\'', '\\\'');
		}
	}
);

function checkReponse(valeur) {
	for (var i = 0; i < 6; ++i) {
		if ($('reponse' + i) != undefined && i == valeur) {
			$('reponse' + i).src = 'images/on.gif';
		}
		else if ($('reponse' + i) != undefined) {
			$('reponse' + i).src = 'images/off.gif';
		}
	}

	$('reponse').value = valeur;
}

function switchQuestion(idQuestion) {
	var valeur = encodeURIComponent($F('reponse'));

	if (valeur == -1) {
		alert('Il est nécessaire de choisir une réponse avant de continuer le questionnaire.');
		return;
	}

	var id = encodeURIComponent(idQuestion);
	var idEnCours = encodeURIComponent($F('id_question'));

	var url = "show_question.php5?id_question=" + id + "&reponse=" + valeur + "&question_en_cours=" + idEnCours;

	url += (arguments[1]) ? '&back' : '';

	//Effect.Fade('corps');
	sendRequest('GET', url, true, afficheCorps);
}

function afficheCorps(html) {
	$('corps').innerHTML = html;
	//Effect.Appear('corps');
}

function switchCompetence(idCompetence) {
	var valeur = encodeURIComponent($F('reponse'));

	if (valeur == -1) {
		alert('Il est nécessaire de choisir une réponse avant de continuer le questionnaire.');
		return;
	}

	var commentaire = encodeURIComponent($('commentaire').value);
	var id = encodeURIComponent(idCompetence);
	var idEnCours = encodeURIComponent($F('id_competence'));
	var url = "show_competence.php5?id_competence=" + id + "&evaluation=" + valeur + "&commentaire=" + commentaire + "&competence_en_cours=" + idEnCours;

	url += (arguments[1]) ? '&back' : '';

	//Effect.Fade('corps');
	sendRequest('GET', url, true, afficheCorps);
}

function makeListeSortable(listeId, callBack) {
	var options = { dropOnEmpty: true, containment: [listeId], constraint: false, onUpdate: callBack };
	Sortable.create(listeId, options);
}

function makeListeSwappable(firstListeId, secondListeId, callBack) {
	var options = { dropOnEmpty: true, containment: [firstListeId, secondListeId], constraint: false, onUpdate: callBack };
	Sortable.create(firstListeId, options);
	Sortable.create(secondListeId, options);
}

function modifOrdreCompetences() {
	var ordre = '';
	var lignes = $('liste_competences').getElementsByTagName('li');

	for (var i = 0; i < lignes.length; ++i) {
		ordre += (ordre != '') ? ';' : '';
		ordre += lignes[i].id.substring(lignes[i].id.lastIndexOf('_') + 1)
	}

	$('ordre_competences').value = ordre;
}

function modifOrdreQuestions() {
	var ordre = '';
	var lignes = $('liste_questions').getElementsByTagName('li');

	for (var i = 0; i < lignes.length; ++i) {
		ordre += (ordre != '') ? ';' : '';
		ordre += lignes[i].id.substring(lignes[i].id.lastIndexOf('_') + 1)
	}

	$('ordre_questions').value = ordre;
}

function verifEvaluation() {
	var valeur = encodeURIComponent($F('reponse'));

	if (valeur == -1) {
		alert('Il est nécessaire de choisir une réponse avant de continuer le questionnaire.');
		return false;
	}

	return true;
}

function modifParentsFormation() {
	var parents = '';
	var lignes = $('liste_parents_formation').getElementsByTagName('li');

	for (var i = 0; i < lignes.length; ++i) {
		parents += (parents != '') ? ';' : '';
		parents += lignes[i].id.substring(lignes[i].id.lastIndexOf('_') + 1)
	}

	$('parents_formation').value = parents;
}

function imprimeSelection() {
    if (typeof(window.print) != 'undefined') {
        window.print();
    }

    return false;
}

function checkBox(idBox) {
	$('selection_' + idBox).checked = !$('selection_' + idBox).checked;

	if ($('selection_' + idBox).checked) {
		$('img_check_' + idBox).src = 'images/coch_on.gif';
	}
	else {
		$('img_check_' + idBox).src = 'images/coch_off.gif';
	}
}

function changeImages() {
	var im = $('perso_Calque_1');

	if (im.src.substring((im.src.length - 9), im.src.length) == 'perso.gif') {
		im.src = 'images/perso_over.gif';
	}
	else {
		im.src = 'images/perso.gif';
	}
}

function toggleAide() {
	if ($('aide_contextuelle').style.display != 'none') {
		//$('aide_contextuelle').style.display = 'none';
		Effect.Fade('aide_contextuelle');
	}
	else {
		//$('aide_contextuelle').style.display = 'block';
		Effect.Appear('aide_contextuelle');
	}
}

function verif_profil() {
	return true;
}