/* variables globales */
var _CFG_PAGESITE = "page.php";
var _CFG_FORM_DEB = "[[";
var _CFG_FORM_FIN = "]]";
var _CFG_FORM_FIN_LEN = _CFG_FORM_FIN.length;

/* Selecteur d'id "universel" */
function hp_id_universel(_id) {
	if (document.getElementById) {
		return document.getElementById(_id);
	} else if (document.all) {
		return document.all[_id];
	} else if (document.layers) {
		return document.layers[_id];
	} else {
		return null;
	}
}

/* Verifie la validite d'un courriel - si _vide = true : l'adresse n'est pas obligatoire */
function hp_general_mail_valide (_adr, _vide) {
	if (_adr == "") {
		return _vide;
	} else if (_adr.length > 128) {
		return false;
	} else {
		var _filtre = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,5}(?:\.[a-z]{2})?)$/i
		if (_filtre.test(_adr)) {
			return true;
		} else {
			return false;
		}
	}
}

/* verifie la validite d'une date - _vide = true si on autorise une date vide (ou nulle) 
_date est de la forme jj/mm/aaaa avec :
jour : positions 0 et 1 - mois : positions 3-4 et annee positions 6-9
*/
function hp_general_date_valide (_date, _vide) {
	if ((_date == "") || (_date == "jj/mm/aaaa")) {
		return _vide;
	} else if (_date.length != 10) {
		return false;
	} else {
		var _max_jour = 0;
		var _jj = parseInt(_date.substr(0,2),10);
		var _mm = parseInt(_date.substr(3,2),10);
		var _aa = parseInt(_date.substr(6,4),10);
		if ((_aa == 0) || (_mm == 0) || (_jj == 0)) {
			return false;
		} else {
			if (_mm == 2) {
				_max_jour = hp_general_annee_bisx (_aa);
			} else if ((_mm == 4) || (_mm == 6) || (_mm == 9) || (_mm == 11)) {
				_max_jour = 30;
			} else {
				_max_jour = 31;
			}
			return (_jj <= _max_jour);
		}
	}
}

/* Verifie si une annee est bissextile ou non et retourne le nombre de jours max du mois de fevrier */
function hp_general_annee_bisx (_aa) {
	if ((_aa % 100 == 0) && (_aa % 400 == 0)) {
		return 29; 
	} else if ((_aa % 4) == 0) {
		 return 29;
	} else {
		return 28;
	}
}

/* Verifie qu'il y a bien 1 bouton radio coche dans un formulaire */
function hp_general_radio_valide (_frm, _radio) {
	var _ok = false;
	for (var _i=0; _i<_frm.elements[_radio].length; _i++) {
		if (_frm.elements[_radio][_i].checked) {
			_ok = true;
			break;
		}
	}
	return _ok;
}

/* Menu deroulant des structures dans public_menu */
function hp_change_structure(_selObj) {
	var _idval = _selObj.options[_selObj.selectedIndex].value;
	var _page = _CFG_PAGESITE+"?s="+_idval;
	if (_idval == 0)	{
		return false;
	} else {
		document.location = _page;
	}
}

/* Menu deroulant des rubriques dans actu, agenda et docs */
function hp_change_rubrique(_selObj, _ids, _refpage, _mm, _aa) {
	var _idval = _selObj.options[_selObj.selectedIndex].value;
	if ((_idval == 0) || (_refpage == ""))	{
		return false;
	} else {
		var _page = _CFG_PAGESITE+"?p="+_refpage+"&s="+_ids+"&r="+_idval;
		if ((_mm > 0) && (_aa > 0)) {
			_page = _page+"&mm="+_mm+"&aa="+_aa;
		}
		document.location = _page;
	}
}

/* Verifie qu'il y a un nom d'utilisateur et un mot de passe pour l'acces restreint
et, si OK, crypte le mot de passe en SHA-1 */
function hp_valide_form_restreint (_frm) {
	var _id_pass = "sspa"+_frm.elements["hID_pass"].value;
	var _ref_pass = _frm.elements[_id_pass];
	var _ident = hp_form_champ_nettoie(_frm.elements["ssid"].value);
	var _pass = hp_trim(_ref_pass.value);
	if ((_ident == "") || (_pass == "")) {
		alert("Veuillez indiquer un nom d'utilisateur ET un mot de passe.");
		return false;
	} else {
		_ref_pass.value = calcSHA1(_pass);
		_frm.elements["hJS"].value = "1";
		return true;
	}
}

/* Efface le contenu d'un champ de formulaire */
function hp_form_champ_efface(_champ, _defaut) {
	if (_champ.value == _defaut) {
		_champ.value = "";
	}
}

/* Supprime (eventuellement) le contenu par defaut d'un champ de formulaire */
function hp_form_champ_nettoie(_contenu) {
	var _indexdebut = _contenu.indexOf(_CFG_FORM_DEB,0);
	var _indexfin = _contenu.lastIndexOf(_CFG_FORM_FIN,_contenu.length-1);
	if ((_indexdebut > -1) && (_indexfin > -1)) {
		var _asupp = _contenu.substring(_indexdebut,_indexfin+_CFG_FORM_FIN_LEN);
		if (_asupp != "") {
			_contenu = _contenu.replace (_asupp,"");
		}
	}
	_contenu = hp_trim(_contenu);
	return _contenu;
}

/* Modifie le texte d'un label en cas d'erreur, sinon le retabli a sa valeur par defaut
- _id : id du label - _erreur : true si erreur concernant le champ passe en _id, sinon false */
function hp_champ_erreur (_id, _erreur) {
	if (hp_id_universel(_id)) {
		if (_erreur) {
			if (document.all) {
				document.all[_id].innerText = "ERREUR -> ";
			} else {
				document.getElementById(_id).firstChild.nodeValue = "ERREUR -> ";
			}
		} else {
			if (document.all) {
				document.all[_id].innerText = " ";
			} else {
				document.getElementById(_id).firstChild.nodeValue = " ";
			}
		}
	}
}

/* Supprime les espaces avant et apres une chaine (equivalent de trim en PHP) */
function hp_trim(_s) {
	return _s.replace (/^\s+/,'').replace (/\s+$/,'');
}

/* Affiche/masque un bloc en utilisant la classe CSS */
function hp_masque_affiche(_btn,_id) {
	var _bloc = hp_id_universel(_id);
	if (!_bloc) return;
	if (_bloc.className == "") {
		_bloc.className = "invisible";
		_btn.innerHTML = "[+]";
		_btn.title = "Cliquez pour afficher";
	} else {
		_bloc.className = "";
		_btn.innerHTML = "[-]";
		_btn.title = "Cliquez pour masquer";
	}
	return;
}

/* Lien externes (d'apres Alsacreations : http://css.alsacreations.com/Accessibilite-du-Web/liens-externes-nouvelle-fenetre) */
function open_ext_link() {
	var liens = document.getElementsByTagName('a');
	// On recupere tous les liens (<a>) du document dans une variable (un array), ici liens.
	// Une boucle qui parcourt le tableau (array) liens du debut à la fin.
	for (var i = 0 ; i < liens.length ; ++i)  {
		// Si les liens ont un nom de class contenant 'externe', alors on agit.
		if ((liens[i].className.match(/externe/i)) || (liens[i].className.match(/agrandir/i)))  {
			liens[i].title += " (dans une nouvelle fenêtre)";
			// Au clic de la souris.
			liens[i].onclick = function()  {
				window.open(this.href);
				return false; // On ouvre une nouvelle page ayant pour URL le href du lien clique et on inhibe le lien reel.
			};
		}
	}
}
window.onload = open_ext_link;
// Au chargement de la page, on appelle la fonction.
