/**
 * Clase que gestiona los mensajes
 
 * @returns
 */

/**
 
  Para el caso de excepciones se espera un json con la siguiente información, con el tiempo se podrá mejorar y adaptar la estructura
	  {
	    code :'code'  // -- por si se quiere indicar un código no es necesario
	    message:'texto a mostrar' // -- texto a mostrar, deberá venir internacionalizado
	  }

 */

function MessageHandler () {
	
	this.MESSAGE_TYPE_ERROR = "error";	// -- mensaje de tipo error
	this.MESSAGE_TYPE_SUCCESS = "success";	// -- mensaje de tipo success
	this.MESSAGE_TYPE_REQUIRED_FIELD = 'requiredField';
	this.MESSAGE_INTERNAL_ERROR = "error.internal";
	this.MESSAGE_DIV_ERROR = '<div class="aviso"><div id="texto_alerta" class="texto_alerta">&message</div></div>';
	this.MESSAGE_DIV_REQUIRED_FIELD = '<div class="aviso"><div id="texto_alerta" class="texto_alerta_rojo">&message</div></div>';
	
}


/**
 * Método que captura un error
 * @param response
 */
MessageHandler.prototype.handleErrors = function(response, divIdMessageArea, divClassIframe) {
	
	var status = response.status;
	if (response.responseText){
		var error = $.parseJSON(response.responseText);
		this.showMessage(this.MESSAGE_TYPE_ERROR, error.message, divIdMessageArea, divClassIframe);
	} else {
		this.showMessage(this.MESSAGE_TYPE_ERROR, parent.i18n.msg(this.MESSAGE_INTERNAL_ERROR), divIdMessageArea, divClassIframe);
	}


};



/**
 * Muestra un mensaje teniendo en cuenta el tipo de mensaje, si es un error o correcto
 * @param response
 */
MessageHandler.prototype.showMessage = function(messageType, message, divIdMessageArea, divClassIframe) {
	
	if(divClassIframe && divIdMessageArea) {
		var element = $('.'+divClassIframe).contents().find('#'+divIdMessageArea);
		if(messageType == this.MESSAGE_TYPE_ERROR) {
			element.html(this.MESSAGE_DIV_ERROR);
		} else if(messageType == this.MESSAGE_TYPE_REQUIRED_FIELD) {
			element.html(this.MESSAGE_DIV_REQUIRED_FIELD);
		}
		element.find('#texto_alerta').html(message);
	} else if(!divClassIframe && divIdMessageArea) {
		var element = $('#'+divIdMessageArea);
		if(messageType == this.MESSAGE_TYPE_ERROR) {
			element.html(this.MESSAGE_DIV_ERROR);
		} else if(messageType == this.MESSAGE_TYPE_REQUIRED_FIELD) {
			element.html(this.MESSAGE_DIV_REQUIRED_FIELD);
		}
		element.find('#texto_alerta').html(message);
	} else {
		if (messageType == this.MESSAGE_TYPE_ERROR){
			alert("Error - "+message);
		}else if (messageType == this.MESSAGE_TYPE_SUCCESS){
			alert("Success - "+message);
		}
	}



};

var messageHandler = new MessageHandler();