(function(){
	// Si les namespaces/classes nécessaires ne sont pas chargées : exception
	if(!window.ev){throw new Error("Le namespace 'ev' doit exister");}
	// On s'assure que le namespace ev.me existe
	if(!ev.me){ ev.me={}; }
	//Si la classe ev.meh.ME1HDisplay est définie on sort
	if(ev.me.Error){return;}
	
	/**
	 * 
	 * @param {string} _messageKey 
	 * @param {XHRMethodErrorType} _type
	 * @param {ev.me.ErrorLevel} _level
	 * @param {string} _message
	 */
	ev.me.Error = function(_messageKey, _type, _level, _message) {
	
		if(_messageKey==undefined) throw new Error("messageKey is undefined");
		if(_messageKey==null) throw new Error("messageKey is null");
		if(typeof(_messageKey) != "string") throw new Error("messageKey is not a string");
			
		if(_type==undefined) throw new Error("type is undefined");
		if(_type==null) throw new Error("type is null");
		if(typeof(_type) != "number") throw new Error("_type is not a number");
	
		if(_level==undefined) throw new Error("level is undefined");
		if(_level==null) throw new Error("level is null");
		if(typeof(_level) != "number") throw new Error("level is not a number");
	
		var messageKey = _messageKey;//clé qui correspond à l'attribut id de l'élément contenant le message d'erreur traduit 
		var type = _type;//type d'erreur (TIMEOUT, ERREUR 500, EXCEPTION...)
		var level = _level;//niveau d'erreur (FATAL - la recherche a été interrompue, MINOR - la recherche peut quand même continuer)
		var message = _message;//message d'erreur informatif destiné aux techniciens
		
		this.print = function() {
			// en premier, on affiche le conteneur qui contient tous les messages d'erreurs, s'il existe
			// on fait la distinction entre le conteneur contenant les erreurs de niveau : FATAL
			// et celui contenant les erreurs de niveau : MINOR
			var element = document.getElementById("ERROR_" + ev.me.ErrorLevel.toString(level));
			if(element != null){
				element.style.display ="block";
			}
			//on affiche le bloc contenant le message d'erreur, c'est le messageKey qui permet de recupérer ce bloc car il correspond à l'id de ce dernier
			var element = document.getElementById(messageKey);
			if(element != null){
				element.style.display ="block";
			}
		}
			
		this.getMessageKey = function(){
			return messageKey;
		}
		
		this.getType = function(){
			return type;
		}
		
		this.getLevel = function(){
			return level;
		}
		
		this.getMessage = function(){
			return message;
		}
		
	}
	
	ev.me.ErrorLevel={
		FATAL: 0,
		MINOR: 1,
	
		toString: function(value){
			switch(value){
				case this.FATAL: return "FATAL";
				case this.MINOR: return "MINOR";
				default: return "UNKNOWN LEVEL";
			}
		}
	}

})();