/*!
 * Plugin do jQuery para envio de e-mails com AJAX
 * 
 * @author Renato Lenz Costalima @ PC4Team
 * Date: Wed Apr 06 10:55:29 2011
 */
(function( $ ){
	/**
	 * Adiciona um evento onSubmit no form selecionado
	 * @param destinario - o e-mail do destinatário
	 * @param options - um json com as seguintes opções:
	 * 		url - o endereço do controlador
	 * 		msgbox - o elemento onde a mensagem será exibida
	 * 		success - a mensagem de sucesso
	 * 		error - a mensagem de erro
	 * 		carregando - a mensagem de carregando (pode ser um elemento HTML <img>)
	 * 		titulo - o título no corpo do e-mail
	 * 		assunto - o assunto do e-mail
	 * 		view - a view onde será renderizado o e-mail
	 * 		remetente - o remetente
	 * 		nome - o nome do remetente
	 */
	$.fn.ajaxMail = function (destinatario, options) {
		var form = this;
		var config = {
			destinatario: destinatario,
			'url': BASE_URL + 'email/envia',
			'msgbox': this.find('.notification'),
			'classeSucesso': 'success',
			'classeErro': 'error',
			'msgSucesso': 'E-mail enviado com sucesso.',
			'msgErro': 'Erro ao enviar e-mail.',
			'carregando': 'Enviando...',
			'titulo': '',
			'assunto': '(sem assunto)',
			'view': '',
			'remetente': 'no-reply@pc4.com.br',
			'nome': '',
			'classePadrao': '',
			'dataType': 'json',
			'success': function (retorno) {
				var classe = 'Erro';
				if  (retorno.resultado == 1) {
					classe = 'Sucesso';
					form[0].reset();
				}
				config.msgbox.addClass(config['classe' + classe]);
				config.msgbox.html(config['msg' + classe]);
			}
		};

		/**
		 * Altera as configurações de envio
		 * @param options
		 */
		this.each(function () {
			this.setConfig = function (options) {
				$.extend( config, options );
			};
			this.getConfig = function () {
				return config;
			};
		});

		if ( options ) {
			this[0].setConfig(options);
		}
		if (config.msgbox.length == 0) {
			config.msgbox = $('<div/>');
			this.prepend(config.msgbox);
		}
		config.msgbox.classe = (config.classePadrao == '') ? config.msgbox.attr('class') : config.classePadrao;
		config.msgbox.hide();
		
		this.submit(function (e) {
			config.msgbox.show();
			config.msgbox.removeClass();
			config.msgbox.addClass(config.msgbox.classe);
			config.msgbox.html(config.carregando);
			
			// adiciona dados a serem enviados junto com o formulário
			config.data = {
					'destinatario': config.destinatario,
					'titulo': config.titulo,
					'assunto': config.assunto,
					'view': config.view,
					'remetente': config.remetente,
					'remetenteNome': config.nome
			};
			
			form.ajaxSubmit(config);
//			$.post(config.url, ($.param(dados) + '&' + form.serialize()), function (retorno) {
//				var classe = (retorno == 0) ? 'error' : 'success';
//				config.msgbox.addClass(classe);
//				config.msgbox.html(config[classe]);
//				form[0].reset();
//			}, 'json');
			return false;
		});
		
		return this;
		
	};
})(jQuery);
