var FormSupport = {
		
	ajaxUpForm : function(formId, messageDiv) {
	
		new AjaxFormSubmitter(formId, messageDiv);
		
	}
};

var AjaxFormSubmitter = Class.create({
	
	initialize : function(formId, messageDiv) {
	
		this.formId = formId;
		this.messageDiv = messageDiv;
	
		Event.observe(formId, 'submit', function(event) {
			
			var inputs = $(this.formId).getElements();
			
			for(var i = 0; i < inputs.length; i++) {
				
				$(inputs[i]).removeClassName("error");
			}
			
			$(this.formId).request({								
		    
				onFailure: function(transport) {					
					
	        	}.bind(this),
	        	onSuccess: function(transport) {
	        		
	        		this.handleResponse(transport);        		
	        		
	        	}.bind(this)
			});
	    
			Event.stop(event);
			
		}.bind(this));
	},
	
	handleResponse : function(transport) {
		
		var resp = transport.responseJSON;
		
		if(resp) {
			
			$(this.messageDiv).update(resp.message);
			$(this.messageDiv).show();
			new Effect.Highlight(this.messageDiv, { startcolor: '#ffff99', endcolor: '#ffffff' });
			
			if(resp.status == 'success') {			
							
				Effect.BlindUp(this.formId, {duration : 2.0});
			}
			else {
				
				for(var i = 0; i < resp.errors.length; i++) {
					
					var element = $(resp.errors[i]);
					if(element) {
						
						element.addClassName("error");
					}
				}
			}
		}
		else {
			
			$(this.messageDiv).update(transport.responseText);
			$(this.messageDiv).show();
			new Effect.Highlight(this.messageDiv, { startcolor: '#ffff99', endcolor: '#ffffff' });
		}		
	}
	
});
