/************************/
/* Autor: Felipe Jaekel */
/************************/
/*  Mensagens de erro   */
/************************/

//Foi criada uma classe com construtor para que ela seja instanciável
//A cada mensagem de erro é criada um novo objeto da classe
function errorMessage(msgErro)
{
	//Se não foi passada nenhuma mensagem usa o valor default
	var msgDefault = 'O(s) seguinte(s) erro(s) ocorre(ram):\n';
	if(!msgErro)
	{
		msgErro = msgDefault;
	}
	else if(msgErro[0] == '')
	{
		msgErro[0] = msgDefault;
	}

	//Verifica se a mensagem passada é uma string(validações normais) ou vetor(ajax)
	this.erros = (typeof(msgErro) == 'string') ? [msgErro] : msgErro;

	//Adiciona erros ao vetor de erros
	this.add = function(msg)
	{
		this.erros.push(msg);
	}

	//Verifica se houve erro
	this.houve = function()
	{
		return (this.erros.length > 1);
	}

	//Retorna a mensagem de erro formatada
	this.toString = function()
	{
		//([0]: mensagem de erro, [1]: primeiro erro erro)
     	//Plural 
		if(this.erros.length > 2)
		{
      	this.erros[0] = this.erros[0].replace(/[()]/g, '');
		}
		else
		{
			this.erros[0] = this.erros[0].replace
			(
				//Pattern
				/(\(s\))|(\(ram\))|(\(são\))|(\(ções\))|(\(foram\))/g,

				//Replace. Criar uma função separada na classe estava gerando uma excessão no JS
				function(m)
				{
					switch(m)
					{
						case '(s)'    : return '';
						case '(ram)'  : return 'u';
						case '(são)'  : return 'é';
						case '(ções)' : return 'ção';
						case '(foram)': return 'foi';
					}
				}
			);
		}

		return this.erros.join('\n');
	};
}