// Namespace declaration (if it does not exist) : EV
if(typeof(EV)=='undefined'){ window.EV={}; }
// Namespace declaration (if it does not exist) : EV.ME
if(typeof(EV.ME)=='undefined'){ EV.ME={}; }

/**
 * 
 * @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";
		}
	}
}