// JavaScript Document

function Newsletter()
{
	this.el = null;
	this.urlContent = null;
	this.urlController = null;
	this.main = null;
	
	this.init = function ()
	{
		this.main = {
			el: $('<div id="lightboxNews"></div>'),
			content: {
				el: $('<div id="lightboxNews-content"></div>'),
				btClose: {
					el: $('<a href="#" title="Fechar" id="lightboxNews-close"></a>')
				},
				response: {
					el: $('<div id="lightboxNews-reponse"></div>')
				},
				form: {
					el: $('<form id="lightboxNews-form" action="" method="post"></form>')
				}
			}
		}
		
		this.main.content.btClose.el.click(function ()
		{
			newsletter.close();
		});
		
		this.main.content.el
			.append(this.main.content.btClose.el)
			.append('<div class="clear"></div>')
			.append(this.main.content.response.el)
			.append(this.main.content.form.el);
		
		this.main.el
			.append('<div class="shadow"></div>')
			.append(this.main.content.el);
	}
	
	this.init();
	
	this.setVars = function (x)
	{
		if (x.el) this.el = x.el;
		if (x.urlContent) this.urlContent = x.urlContent;
		if (x.urlController) this.urlController = x.urlController;
	}
	
	this.load = function ()
	{
		this.main.content.response.el.addClass("loading");
		
		this.el.append(this.main.el);
		
		this.main.el.fadeIn();
		
		$.ajax({
			url: this.urlContent,
			success: function (data)
			{
				newsletter.main.content.response.el
					.slideUp()
					.removeClass();
				
				newsletter.main.content.form.el
					.empty()
					.append(data)
					.slideDown();
				
				newsletter.main.content.form.el.find("#lightboxNews-submit").get(0).onclick = function ()
				{
					this.onclick = null;
					newsletter.submit();
				}
			}
		});
	}
	
	this.submit = function ()
	{
		this.main.content.response.el.slideUp('fast', function ()
		{
			$(this)
				.empty()
				.removeClass()
				.addClass("loading")
				.slideDown('fast', function ()
				{
					$.ajax({
						url: newsletter.urlController,
						data: newsletter.main.content.form.el.serialize(),
						success: function (response)
						{
							var fnc = function ()
							{
								var msg = cssClass = null;
								
								if (response.match("ERROR"))
								{
									response = response.split("#");
									msg = response[1];
									cssClass = "error";
								}
								else
								{
									msg = response;
									cssClass = "success";
									
									newsletter.main.content.form.el.slideUp();
								}
								
								newsletter.main.content.response.el
									.append(msg)
									.removeClass()
									.addClass(cssClass)
									.slideDown();
									
								newsletter.main.content.form.el.find("#lightboxNews-submit").get(0).onclick = function ()
								{
									this.onclick = null;
									newsletter.submit();
								}
							}
							
							newsletter.main.content.response.el.slideUp('fast', fnc);
						}
					});
				});
		});
	}
	
	this.close = function ()
	{
		newsletter.main.el.fadeOut('slow', function () {
			newsletter.main.el.remove();
			newsletter.init();
		});
	}
}

var newsletter = new Newsletter();
