/**
 * Sur le chargement de la fenêtre de connexion,
 * on nomme la fenêtre de sorte à pouvoir être capable
 * de savoir si l'on se trouve dans le fenêtre principale
 * ou dans une autre.
 */
var mainWindowName = "EiMainWindow";
function onLoadConnexion() {
	window.name = mainWindowName;
}

/**
 * @return True si il la fenêtre est la fenêtre principale et false sinon.
 */
function isMainWindow(w) {
	if (w.name == mainWindowName) {
		return true;
	}
	return false;
}

/**
 * Sélectionne ou désélectionne une liste de checkbox.
 * @param element Checkbox permettant de sélectionner ou non la liste de checkbox.
 * @param Liste de checbox.
 */
function check(element, checkboxes) {
	var check = element.checked;
	if (!checkboxes) {
		return false;
	}
	if (!checkboxes.length) {
		checkboxes.checked = check;
	}
	for(var i=0; i<checkboxes.length; i++) {
		checkboxes[i].checked = check;
	}
	
	return true;
}

/**
 * Sélectionne ou désélectionne une liste de checkbox dont la racine est identique.
 * @param element Checkbox permettant de sélectionner ou non la liste de checkbox.
 * @param L'objet formulaire.
 * @param la racine du nom des checkboxes à traiter
 */
function checkRacine(element, form, checkboxeNom) {
	
	var check = element.checked;
	var nomElem;
	
	for(var i=0; i<form.elements.length; i++) {
		nomElem = form.elements[i].name;
		nomElem = nomElem.substring(0,checkboxeNom.length)
		if(nomElem==checkboxeNom){
			form.elements[i].checked = check;
		}
	}
}

/**
 * Affecte une valeur à l'elément dispatch et poste de formulaire.
 * @param form Formulaire.
 * @param dispatchValue Valeur du dispatch.
 */
function dispatchAndSubmit(form, dispatchValue) {
	if (dispatchValue == "") {
		return false;
	}
	form.dispatch.value = dispatchValue;
	form.submit();
}

/**
 * Affiche un élement si il existe.
 * @param id Identifiant de l'élément.
 */
function showAnElement(id) {
	var elt = document.getElementById(id);
	if (elt) {
		elt.style.display = "";
	}
}

/**
 * Masque un élement si il existe.
 * @param id Identifiant de l'élément.
 */
function hideAnElement(id) {
	var elt = document.getElementById(id);
	if (elt) {
		elt.style.display = "none";
	}
}

/**
 * Masque les aides.
 */
function hideActionInfos(divId) {
	var infos = document.getElementById(divId);
	if (infos) {
		var divs = infos.getElementsByTagName("div");
		for (var i = 0; i < divs.length; i++) {
			var div = divs.item(i);
			div.style.display = "none";
		}
	}
}

function changeAction(action, divId) {
	hideActionInfos(divId);
	showAnElement(action.value);
}

/**
 * Ouvre une popup.
 * @param url Lien.
 * @param Nom de la fenêtre.
 * @param width Largeur.
 * @param height Hauteur.
 */
function openPopup(url, name, width, height) {
	var x = (screen.availWidth - width) / 2;
	var y = (screen.availHeight - height) / 2;
	var popup = window.open(url, name, 'scrollbars=1, directories=0, location=0, menubar=0, status=1, toolbar=0, resizable=1, width=' + width + ', height=' + height + ', top=' + y + ', left=' + x); 	
	popup.scrollbars = true;
	popup.focus();
}

/**
 * Bouge vers le haut une sélection d'un tag <select>
 * @param select tag <select>
 */
function moveUp(select) {
	for(var i = 0; i < select.options.length; i++) {
		if (select.options[i].selected && select.options[i] != "" && select.options[i] != select.options[0]) {
			var tmpval = select.options[i].value;
			var tmpval2 = select.options[i].text;
			select.options[i].value = select.options[i-1].value;
			select.options[i].text = select.options[i-1].text;
			select.options[i].selected = "";
			select.options[i-1].value = tmpval;
			select.options[i-1].text = tmpval2;
			select.options[i-1].selected = "true";
		}
	}
}

/**
 * Bouge vers le haut une sélection d'un tag <select>
 * @param select tag <select>
 */
function moveDown(select) {
	for(var i = select.options.length - 1 ; i >= 0; i--) {
		if (select.options[i].selected && select.options[i] != "" && select.options[i+1] != select.options[select.options.length]) {
			var tmpval = select.options[i].value;
			var tmpval2 = select.options[i].text;
			select.options[i].value = select.options[i+1].value;
			select.options[i].text = select.options[i+1].text;
			select.options[i].selected = "";
			select.options[i+1].value = tmpval;
			select.options[i+1].text = tmpval2;
			select.options[i+1].selected = "true";
		}
	}
}

/**
 * Grise des champs dont le nom commence par 
 * @param form le formulaire contenant les champs
 * @param caseAcoche la case a coché dont l'état détermine si on grise ou degrise
 * @param racine la racine du nom des champs à traiter
 */
function griserChamps(form,caseAcoche, racine){
	var nomElem;
	
	var disabled = false;
	if (caseAcoche.type == "checkbox") {
		disabled = caseAcoche.checked;
	} else if (caseAcoche.value == "1") {
		disabled = true;
	}

	for(var i=0; i<form.elements.length; i++) {
		nomElem = form.elements[i].name;
		nomElem = nomElem.substring(0,racine.length)
		if(nomElem==racine){
			form.elements[i].disabled = disabled;
			if (disabled) {
				form.elements[i].value="";
			}
		}
	}
}
