// requires prototype.js

var rosoContactUs = {
	_form:null,
	_url:null,
	_reqFields:["name", "email", "content"],
	_errorMessage:"Sorry, we were not able to receive your message, please try again.",
	
	init:function (button, form) {
		this._form = form;
		Event.observe(button, "click", this.submit);
	}, 
	
	submit:function () {
		var rcu = rosoContactUs;
		if (!rcu.hasRequiredFields()) {
			return false;
		}

		// if no url override, use form's url
		if(!rcu._url){
			rcu._url = rcu._form.action;
		}
	
		new Ajax.Request(rcu._url, {
			method:"post", 
			onLoaded:rcu.onLoaded, 
			onSuccess:rcu.onSuccess, 
			onFailure:rcu.onFailure, 
			parameters:rcu._form.serialize(true)});
	}, 
	
	hasRequiredFields:function () {
		var rcu = rosoContactUs;
		var complete = true;
		rcu._reqFields.each(function (id) {
			var f = $(id);
			if (!f.present()) {
				complete = false;
				f.focus();
			}
		});
		
		if (!complete) {
			alert("Please fill out all the fields.");
			return false;
		}
		return true;
	}, 
	
	onLoaded:function (transport) {
		rosoContactUs._form.disable();
		rosoContactUs._form.addClassName("wait");
	},
	
	onSuccess:function (transport) {
		alert(transport.responseText);
		rosoContactUs._form.removeClassName("wait");
	},
	
	onFailure:function (transport) {
		var rcu = rosoContactUs;
		rcu._form.enable();
		rcu._form.removeClassName("wait");
		
		if (400 == transport.status) {
			alert(transport.responseText);
		} else {
			alert(rcu._errorMessage);
		}
	}
};

