MailList = Class.create({

    table   : null,
		url			: null,
		msg 		: null,
		field		:	null,
		btn			: null,
		action	: null,

    initialize : function(table, url, action)
    {
			
			this.table = $(table);
			this.url = url;
			
			this.btn = this.table.down(".submit");
			this.field = this.table.down("#email");
			this.msg = this.table.down(".msg");
			this.action = action;
			
			this.btn.observe('click', this.checkEmail.bindAsEventListener(this));

    },
		
		checkEmail: function(e)
		{
			
			Event.stop(e);
			
			var email = this.field.value;
			if(!/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/i.test(this.field.value)){
				alert('"'+email+'"' + " is not a valid email.");
				return;
			}
			
			this.manageEmail(email);
				
		},
		
		manageEmail: function(email)
		{
		
			var options = {
					method     : 'POST',
					parameters : 'action='+this.action+'&email='+email,
					onSuccess  : this.onManageEmail.bind(this),
					onFailure  : this.onFailure.bind(this)
			};
			
		 new Ajax.Request(this.url, options);
				
			
		},
		
		onManageEmail : function(transport)
    {
		
			//alert(transport.responseText);
			var json = transport.responseText.evalJSON(true);
			
			if(json.error)
				this.msg.style.color = "red";
			else
				this.msg.style.color = "#009206";
				
			if(this.action=='add' || (this.action=='remove' && !json.error)){
				this.field.hide();
				this.btn.hide();
			}
			
			this.msg.show();
			this.msg.update(json.message);
			
		},
		
		onFailure : function(transport)
    {
			
			alert('no go');
			
		}
		
});