/*
 *		fonctionsGlobales.js
 *
 *		Auteur : Gyan <Gyan000@free.fr>
 *		Date modification : 01/05/2007
 *
 *		Fonction :
 *		- Ensemble de fonctions javascript.
 */

var img = null;

function ouvrirPopupGrand(url, nomSite) {
	img = new Image();
	img.src = url;
	waitForLoadingGrand(nomSite);
}

function waitForLoadingGrand(nomSite) {

	if (!img.complete) {
		setTimeout(waitForLoadingGrand, 30); return;
	}

	var lahauteur = img.height ;
	var lalargeur = img.width ;
	var haut = (screen.height-lahauteur)/2 ;  // Centrer selon la hauteur de l'écran
	var gauche = (screen.width-lalargeur)/2 ; // Centrer selon la largeur de l'écran

	var w = window.open('about:blank', 'monimage', 'left='+gauche+', top='+haut+', width='+lalargeur+',height='+lahauteur+', scrollbars=no');
	w.document.write('<html><head><title>'+nomSite+'</title></head><body style="margin: 0px;"><img src="'+img.src+'" alt="" /></body></html>');
}

function faq(valeurOption) {
	location.href='#'+valeurOption;
}

function supprimerChampDynamique(nomChamp, nomChampParent) {

	try {

		var image = document.getElementById(nomChamp);
		image.parentNode.removeChild(image);
	}
	catch (errv) {
		alert ('supprimerChampDynamique()\n\nDétails de l\'erreur : \n\n' + errv.message);
	}
}

function ajouterChampsDynamiques(nomChamp, script, largeurColonneGauche, largeurFormulaire, numeroChamp, param1) {

	try {
		var nbrChamps = document.getElementById('nbrChamps_'+nomChamp).value; // Nombre de champs

		httpRequest('POST', '/inclusions/'+script, true, afficherChampsDynamiques, 'nomChamp='+nomChamp+'&nbrChamps='+nbrChamps+'&largeurColonneGauche='+largeurColonneGauche+'&largeurFormulaire='+largeurFormulaire+'&numeroChamp='+numeroChamp+'&param1='+param1);
	}
	catch (errv) {
		alert ('ajouterChampsDynamiques()\n\nDétails de l\'erreur : \n\n' + errv.message);
	}
}

function afficherChampsDynamiques() {
	try {
		if (request.readyState == 4) {
			if (request.status == 200) {

				var docXML = request.responseXML;
				// Variable contenant le contenu à afficher.
				var contenuXML = docXML.getElementsByTagName('contenu');
				var contenu = contenuXML.item(0).firstChild.nodeValue;

				// Variable contenant le nom du DIV dans lequel il faut afficher la liste.
				var contenuIDXML = docXML.getElementsByTagName('contenuID');
				var contenuID = contenuIDXML.item(0).firstChild.nodeValue;

				// Variable contenant le nombre de champs incrémentés.
				var nbrChampsIncrementesXML = docXML.getElementsByTagName('nbrChampsIncrementes');
				var nbrChampsIncrementes = nbrChampsIncrementesXML.item(0).firstChild.nodeValue;

				// Variable contenant le nombre de champs.
				var nbrChampsXML = docXML.getElementsByTagName('nbrChamps');
				var nbrChamps = nbrChampsXML.item(0).firstChild.nodeValue;

				// Variable contenant l'URL vers le skin courant.
				var repSkinXML = docXML.getElementsByTagName('repSkin');
				var repSkin = repSkinXML.item(0).firstChild.nodeValue;

				// Variable contenant la largeur du formulaire.
				var largeurFormulaireXML = docXML.getElementsByTagName('largeurFormulaire');
				var largeurFormulaire = largeurFormulaireXML.item(0).firstChild.nodeValue;

				// Nombre de champs dynamiques.
				document.getElementById('nbrChamps_'+contenuID).value = nbrChampsIncrementes;

				// <TABLE> principal contenant tout les champs.
 				var table = document.getElementById('table_'+contenuID);

					// <TR> encadrant le groupe de champs qu'il faut rajouter aux DIV principal.
					var tr = document.createElement('tr');
					tr.id = 'tr_'+contenuID+'_'+nbrChamps;

						// <TD> encadrant le groupe de champs qu'il faut rajouter aux DIV principal.
						var td = document.createElement('td');
						td.span = 3;
						td.width = largeurFormulaire;
						td.className = 'encadrementEspacement';

							// <TABLE> contenant le groupe de champs et l'image de suppression.
							var sousTable = document.createElement('table');
							sousTable.cellPadding = 0;
							sousTable.cellSpacing = 0;
							sousTable.width = "100%";

									var sousTr = document.createElement('tr');

										// <TD> contenant le numéro de groupe de champs.
										var sousTd_0 = document.createElement('td');
										sousTd_0.className = 'encadrementNumeroChamps';
										sousTd_0.innerHTML = nbrChamps;

										// <TD> contenant le groupe de champs.
										var sousTd_1 = document.createElement('td');
										sousTd_1.className = 'encadrementGroupeChamps';
										sousTd_1.innerHTML = contenu;

										// <TD> contenant l'image et le lien de suppression.
										var sousTd_2 = document.createElement('td');
										sousTd_2.className = 'encadrementGroupeChampsSuppression';

											// <IMG> image de suppression de ce groupe de champs.
											var imageSuppression = document.createElement('img');
											imageSuppression.src = repSkin+'/images/no.png';
											imageSuppression.title = "Supprimer ce(s) groupe de champ(s).";

												// <A> lien de suppression de l'image.
												var lienSuppression = document.createElement('a');
												lienSuppression.href = "javascript:supprimerChampDynamique('tr_"+contenuID+"_"+nbrChamps+"', 'table_"+contenuID+"')";

											lienSuppression.appendChild(imageSuppression);

										sousTd_2.appendChild(lienSuppression);

									sousTr.appendChild(sousTd_0);
									sousTr.appendChild(sousTd_1);
									sousTr.appendChild(sousTd_2);

								sousTable.appendChild(sousTr);

							td.appendChild(sousTable);

						tr.appendChild(td);

					table.appendChild(tr);
			}

			else {
				alert ('afficherChampsDynamiques()\n\n Un problème de communication est survenu entre l\'objet XMLHttpRequest et le programme côté serveur.');
			}
		}
	}

	catch (errv) {
		alert ('afficherChampsDynamiques()\n\nL\'application ne parvient pas à contacter le serveur actuellement.\n Veuillez essayer à  nouveau dans quelques instants.\n Détails de l\'erreur : \n\n' + errv.message);
	}
}

function switcherCheckbox(nomChamp) {

	var elementCible = document.getElementById(nomChamp);

	if (elementCible.checked == false) elementCible.checked = true;
	else elementCible.checked = false;
}

function switcherRadio(nomChamp) {

	var elementCible = document.getElementById(nomChamp);

	elementCible.checked = true;
}

function attenteChargement() {

	if (document.getElementById) document.getElementById('attenteChargement').style.visibility = 'hidden';
	else {
		if (document.layers) document.hidepage.visibility = 'hidden';
		else document.all.hidepage.style.visibility = 'hidden';
   }
}

function visibilite(elementId) {

	var elementCible = document.getElementById(elementId);

	if (elementCible.style.display == 'none') elementCible.style.display = '';
	else elementCible.style.display = 'none';
}

function fixerVisibilite(elementId, affichage) {

	var elementCible = document.getElementById(elementId);
	elementCible.style.display = affichage;
}


function afficherTexte(elementId, texte) {
	document.getElementById(elementId).innerHTML = texte;
}

function changerOnglet(idOnglet) {

	var nbrOnglets = document.getElementById('nbrOnglets').value; // Nombre d'onglets total.

	// Switcher l'affichage des onglets.
	for(i=1; i<=nbrOnglets; i++) {

		var ongletContenuCible = document.getElementById('contenuOnglet_' + i); // ID du contenu de l'onglet.
		var ongletCible = document.getElementById('onglet_' + i); // ID de l'onglet.

		// Si i est l'onglet actif, on l'affiche et on active l'onglet correspondant.
		if (i == idOnglet) {
			ongletContenuCible.style.display = '';
			ongletCible.className = 'ongletActif';
		}
		else {
			ongletContenuCible.style.display = 'none';
			ongletCible.className = 'ongletInactif';
		}

	}
}

function changerSousOnglet(idOnglet) {

	var nbrOnglets = document.getElementById('nbrSousOnglets').value;

	for(i=1; i<=nbrOnglets; i++) {

		var ongletContenuCible = document.getElementById('sousContenuOnglet_' + i);
		var ongletCible = document.getElementById('sousOnglet_' + i);

		if (i == idOnglet) {
			ongletContenuCible.style.display = '';
			ongletCible.className = 'sousOngletActif';
		}
		else {
			ongletContenuCible.style.display = 'none';
			ongletCible.className = 'sousOngletInactif';
		}

	}
}

function modifierTaille(typeModification, nomChamp) {

	var tailleChamp = document.getElementById(nomChamp).rows; // Taille actuelle du champ.

	switch(typeModification) {

		// Incrémentation.
		case 'plus':
			document.getElementById(nomChamp).rows = tailleChamp + 5;
		break;

		// Décrémentation.
		case 'moins':
			document.getElementById(nomChamp).rows = tailleChamp - 5;
		break;
	}
}


function insertion(repdeb, repfin, formulaire, saisie) {

	var input = document.forms[formulaire].elements[saisie];
	input.focus();

	if (typeof document.selection != 'undefined') {
		var range = document.selection.createRange();
		var insText = range.text;

		range.text = repdeb + insText + repfin;
		range = document.selection.createRange();

		if (insText.length == 0) range.move('character', -repfin.length);
		else range.moveStart('character', repdeb.length + insText.length + repfin.length);

		range.select();
	}

	else if (typeof input.selectionStart != 'undefined') {
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
		var pos;

		if (insText.length == 0) pos = start + repdeb.length;
		else pos = start + repdeb.length + insText.length + repfin.length;

		input.selectionStart = pos;
		input.selectionEnd = pos;
	}

	else {
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');

		while(!re.test(pos))  pos = prompt('Insertion à la position(0..' + input.value.length + '):', '0');
		if (pos > input.value.length) pos = input.value.length;

		var insText = prompt('Veuillez entrer le texte à formater:');
		input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
	}
}