

(function(){
	// raccourci vers l'objet window de la page
	var window = this,
			// raccourci vers window.document
			document = window.document,
			// raccourci vers la package principal d'easyvoyage (ev)
			ev = window.ev;

	if (!ev) {throw 'me.Error#<init>: Needs ev.core module !';}

	// On s'assure que le namespace ev.me existe
	if(!ev.me){ ev.me={}; }

	//Si ev.me.Error est déjà défini, on sort
	if (ev.me.Error) {return;}

	/**
	 * Contruit un opbjet Error.
	 *
	 * @param {string} messageKey clé qui correspond à l'attribut id de l'élément contenant le message d'erreur traduit
	 * @param {number} type type d'erreur (TIMEOUT, ERREUR 500, EXCEPTION...)
	 * @param {number} level niveau d'importance de l'erreur (FATAL - la recherche a été interrompue, MINOR - la recherche peut quand même continuer)
	 * @param {string} message message d'erreur informatif destiné aux techniciens
	 * 
	 * @constructor
	 */
	ev.me.Error = function(messageKey, type, level, message) {
		if (!messageKey) { throw 'messageKey is undefined'; }
		if (typeof(messageKey) !== 'string') {  throw 'messageKey is not a string'; }

		if (type!==0&&!type) {  throw 'type is undefined'; }
		if (typeof(type) !== 'number') {  throw 'type is not a number'; }

		if (level !== 0 && !level) {  throw 'level is undefined'; }
		if (typeof(level) !== 'number') {  throw 'level is not a number'; }


		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){
				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
			element = document.getElementById(messageKey);
			if(element){
				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";
			}
		}
	};
}());

