/*---------------------------------------------------------------------------------------------------
* Liste des fonctions utiles CoMpuS
* @der.mod : 17/01/2006
*/

/*
* Gère le comportement des boites de confirmation
*****************************************************************************************************/
function mConfirm(mMessage, mUrl){
	if(confirm(mMessage)){
		document.location.href =  mUrl;
	}
}

/*
* Gère le comportement des boites de confirmation avec validation de formulaire
*****************************************************************************************************/
function sConfirm(mMessage, mForm){
	if(confirm(mMessage)){
		getElement(mForm).submit();
	}
}

/*
* Gère la sélection de l'élément gràce à son ID
*****************************************************************************************************/
function getElement(id){
	if(document.getElementById) {
		return document.getElementById(id);
	} else if(document.all) {
		return document.all[id];
	} else return;
}

/*
* Ouvre un média dans un nouvelle fenêtre
*****************************************************************************************************/
function openFile(mFile, mUrlSite){
	if(getElement(mFile) && mUrlSite != ''){
		window.open(mUrlSite + getElement(mFile).value);
	}
	return false;
}

/*
* Gère l'affichage d'un élément
*****************************************************************************************************/
function afficheAlterne(id, mode, pathImage, imgPlus, imgMoins){
	if(pathImage == null){ pathImage = "/manager/images/"; }
	if(imgPlus == null){ imgPlus = "plus.png"; }
	if(imgMoins == null){ imgMoins = "moins.png"; }
	element	= getElement(id);
	img		= getElement('img_'+id);
	
	if(element.style) {
		if(mode == 0) {
			if(element.style.display == 'block' ) {
				element.style.display	= 'none';
				img.src	= pathImage + imgPlus;
			} else {
				element.style.display	= 'block';
				img.src	= pathImage + imgMoins;
			}
		} else if(mode == 1) {
			element.style.display		= 'block';
			img.src		= pathImage + imgMoins;
		} else if(mode == -1) {
			element.style.display		= 'none';
			img.src		= pathImage + imgPlus;
		}
	}
}

/*
* Gère l'affichage de plusieurs éléments
*****************************************************************************************************/
function mAfficheAlterne(idArray, mode, pathImage){
	for(var i=0;i<idArray.length;i++) {
		afficheAlterne(idArray[i], mode, pathImage);
	}
}

/*
* Gère l'affichage et le "cachage" de plusieurs éléments
*****************************************************************************************************/
function mAffAndCache(listAff, listCach){
	var tabAff			= listAff.split(",");
	var tabCach			= listCach.split(",");
	// Affichage des éléments
	for(var i=0; i<tabAff.length; i++){
		getElement(tabAff[i]).style.display		= 'block';
	}
	// Cachage des éléments
	for(var i=0; i<tabCach.length; i++){
		getElement(tabCach[i]).style.display	= 'none';
	}
}

/*
* Gère l'attribution d'une class sur un ou plusieurs éléments 
*****************************************************************************************************/
function mAttClass(listEl, mClass){
	if(listEl != ''){
		var tabEl			= listEl.split(",");
		// Attribution des class
		for(var i=0; i<tabEl.length; i++) {
			if(mClass != ''){
				getElement(tabEl[i]).className = mClass;
			}else{
				getElement(tabEl[i]).removeAttribute("class","false");
			}
		}
	}
}

/*
* Gère l'affichage ou non de la zone "Type de menu" de l'explorateur
*****************************************************************************************************/
function spAfficheAlterne(id, mode){
	if(mode == ''){ mode = 0; }
	var element	= getElement(id);
	
	if(mode == 0) {
		if(element.style.display == 'block' ) {
			element.style.display	= 'none';
		} else {
			element.style.display	= 'block';
		}
	} else if(mode == 1) {
		element.style.display		= 'block';
	} else if(mode == -1) {
		element.style.display		= 'none';
	}
}

/*
* Popup prédéfinie pour les fenêtres d'aide de CoMpuS
*****************************************************************************************************/
function popup(url){
	popupCentrer(url, 'aide_compus', 510, 600, 'alwaysRaised=yes,dependent=yes,toolbar=no,height=420,width=500,menubar=no,resizable=yes,scrollbars=yes,status=no');
}

/*
* Limite la longueur d'un champ de type Textarea
*****************************************************************************************************/
function limitArea(e,limit){
	if (e.value.length > limit) {
		e.value = e.value.substring(0,limit);
	}
}

/*
* Renvoie la date actuelle
*****************************************************************************************************/
function setActuDate(mChamp, type){
	if(type == null){ type = true; }
	if(type == true){
		var mDate	= new Date();
		var y		= mDate.getFullYear();
		var m		= mDate.getMonth();
		var d		= (String)(mDate.getDate());
		var h		= (String)(mDate.getHours());
		var i		= (String)(mDate.getMinutes());
		var s		= (String)(mDate.getSeconds());
	}else{
		var mDate	= new Date(2037, 11, 31, 23, 59, 59);
		var y		= mDate.getFullYear();
		var m		= mDate.getMonth();
		var d		= (String)(mDate.getDate());
		var h		= (String)(mDate.getHours());
		var i		= (String)(mDate.getMinutes());
		var s		= (String)(mDate.getSeconds());
	}
	
	if(m.length == 1){ m = '0'+m; }
	if(d.length == 1){ d = '0'+d; }
	if(h.length == 1){ h = '0'+h; }
	if(i.length == 1){ i = '0'+i; }
	if(s.length == 1){ s = '0'+s; }

	if(mChamp == null){ mChamp = 'mdate'; }else{ mChamp = 'mdate_' + mChamp; }							// Cas plusieurs occurences de dates sur une même page
	getElement(eval('"'+mChamp+'_y"')).value = y;
	getElement(eval('"'+mChamp+'_m"')).selectedIndex = m;
	getElement(eval('"'+mChamp+'_d"')).value = d;
	getElement(eval('"'+mChamp+'_h"')).value = h;
	getElement(eval('"'+mChamp+'_i"')).value = i;
	getElement(eval('"'+mChamp+'_s"')).value = s;
}

/*
* Vérifie et renvoie une chaîne conforme au type URL
*****************************************************************************************************/
function str2url(mChamp, oChamp, ucfirst, urlOK){
	str		= getElement(mChamp).value;
	ostr	= str;																					// URL non traitée
	if(str.match(/^(ftp|http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}((:[0-9]{1,5})?\/.*)?$/i) == null){
		str = str.toUpperCase();
		str = str.toLowerCase();
		
		str = str.replace(/[\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5]/g,'a');
		str = str.replace(/[\u00E7]/g,'c');
		str = str.replace(/[\u00E8\u00E9\u00EA\u00EB]/g,'e');
		str = str.replace(/[\u00EC\u00ED\u00EE\u00EF]/g,'i');
		str = str.replace(/[\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8]/g,'o');
		str = str.replace(/[\u00F9\u00FA\u00FB\u00FC]/g,'u');
		str = str.replace(/[\u00FD\u00FF]/g,'y');
		str = str.replace(/[\u00F1]/g,'n');
		str = str.replace(/[\u0153]/g,'oe');
		str = str.replace(/[\u00E6]/g,'ae');
		str = str.replace(/[\u00DF]/g,'ss');
		
		str = str.replace(/[^a-z0-9_\s\'\:\/\[\]-]/g,'');
		str = trim(str);
		str = str.replace(/[\s\'\:\/\[\]-]+/g,' ');
		str = str.replace(/[ ]/g,'-');
		
		if (ucfirst == 1) {
			c	= str.charAt(0);
			str	= c.toUpperCase()+str.slice(1);
		}
	}

	if(str == ostr && urlOK != undefined) { alert(urlOK); }
	getElement(oChamp).value	= str;																// Retourne la chaîne correctement formatée
}

/*
* Equivalent de trim en PHP -> enlève les espaces aux extrèmités d'une chaine
*****************************************************************************************************/
function trim(s) {
	s = s.replace(/[ ]*$/,'');
	s = s.replace(/^[ ]*/,'');
	return s;
}

/*
* Ouvre une popup aux dimensions souhaités et la centre dans l'écran
*****************************************************************************************************/
function popupCentrer(page, nom, largeur, hauteur, options) {
	var top  = (screen.height-hauteur)/2;
	var left = (screen.width-largeur)/2;
	window.open(page, nom, "top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}

/*
* Séléctionne une valeur dans un menu déroulant à partir d'une valeur
*****************************************************************************************************/
function selSelect(mSelect, valASelect){
	if(valASelect != ''){
		for (var y = 0; y < mSelect.length; y++){
			if(mSelect.options[y].value == valASelect){
				mSelect.options[y].selected	= true;
			}
		}
	}
}

/*
* Gère la vérification et la validation d'un sondage
*****************************************************************************************************/
function valid_sondage(mIdSondage, messNotOk, mUrl){
	var mIdSondage	= parseInt(mIdSondage);
	if(mIdSondage != 0){
		var isOk		= false;																	// Détermine si on peut valider le formulaire
		var valChamp	= "";
		var y			= 0;
		
		var nomBloc		= "f_sondage_" + mIdSondage;												// Nom du bloc conteneur (dont le contenu sera changé en fonction de l'action)
		var nomForm		= "form_sondage_" + mIdSondage;												// Nom du formulaire
		var nomChamp	= "mchp_" + mIdSondage;														// Nom du champ
		var mForm		= eval("document." + nomForm + "." + nomChamp);								// Récupération des valeurs comprises dans ce champs (tableau)
		
		for(var i = 0; i < mForm.length; i++){
			if(mForm[i].checked == true){
				if(y == 0){ valChamp = mForm[i].value; }else{ valChamp += "," + mForm[i].value; }
				isOk	= true;
				y++;
			}
		}
		
		if(!isOk){																					// Sondage non validé, retour sur la page pour la validation
			alert(messNotOk);
		}else{																						// Sondage validé, on enregistre la réponse et on renvoie vers les résultats
			var req		= new XmlGetAndReplace();
			req.ReplaceElementContent(nomBloc, "/add_sondage.php?ids=" + mIdSondage + "&mlrep=" + valChamp + "&murl=" + mUrl);
		}
	}
}

/*
* Gère l'appel des fonctions - [ py Peter van der Beken ]
*****************************************************************************************************/
function chainHandler(obj, handlerName, handler) {
	obj[handlerName] = (function(existingFunction) {
		return function() {
			handler.apply(this, arguments);
			if (existingFunction)
				existingFunction.apply(this, arguments); 
		};
	})(handlerName in obj ? obj[handlerName] : null);
};

/*
* Ajouter le sote aux favoris
*****************************************************************************************************/
function favori(phrase,lien){
	if (window.sidebar){
		window.sidebar.addPanel(phrase, lien,"");
	}
	else if( document.all ){
		window.external.AddFavorite(lien, phrase);
	}
	else{
		return true;
	}
} 