/*
 * Mootools Class for the Quick Response Form
 * 
 */
var QuickForm = new Class({
	
	Implements: [Options],  
	
	options: {
		defaults: {
			sub_name: 'name',
			sub_email: 'email'
		}
	},
	
	
	initialize: function(container, options) {
		
		this.setOptions(options);	
		
		if ($type(container) == 'element')
			this.container = container;
		else
			this.container = $(document.getElement(String(container)));
			
		if (!this.container) 
			return false;
			
		this.initForm();
	},	
	
	initForm: function() {
		
		this.container.setStyle('cursor', '');
	
		// fix the form onSubmit if it's there
		this.formElem = this.container.getElement('form');
		if (this.formElem) {
			this.formElem.addEvent('submit', this.submitForm.bindWithEvent(this));
		}	
		
		// init the sub_name field
		$(this.formElem.sub_name).addEvents({
			
			'focus': function(elem) {
				if (this.options.defaults.sub_name && elem.value == this.options.defaults.sub_name) {
					elem.value = '';
				}
				elem.setStyle('color', '#000');
			}.bind(this, this.formElem.sub_name),
			
			'blur': function(elem) {
				if (this.options.defaults.sub_name && elem.value == '') {
					elem.value = this.options.defaults.sub_name;
					elem.setStyle('color', '');					
				}
				elem.removeClass('error');
				
			}.bind(this, this.formElem.sub_name)
			
		});
		if (this.formElem.sub_name.value != this.options.defaults.sub_name && !this.formElem.sub_name.hasClass('error')) {
			this.formElem.sub_name.setStyle('color', '#000');
		}
		
		
		// init the sub_email field
		$(this.formElem.sub_email).addEvents({
			
			'focus': function(elem) {
				if (this.options.defaults.sub_email && elem.value == this.options.defaults.sub_email) {
					elem.value = '';
				}
				elem.setStyle('color', '#000');
			}.bind(this, this.formElem.sub_email),
			
			'blur': function(elem) {
				if (this.options.defaults.sub_email && elem.value == '') {
					elem.value = this.options.defaults.sub_email;
					elem.setStyle('color', '');
				}					
				elem.removeClass('error');
			}.bind(this, this.formElem.sub_email)
			
		});
		if (this.formElem.sub_email.value != this.options.defaults.sub_email && !this.formElem.sub_email.hasClass('error')) {
			this.formElem.sub_email.setStyle('color', '#000');
		}
		
		
	}, 
	
	submitForm: function(event) {
		
		// cancel the default event
		event.preventDefault();			
								
		// send the form
		var data = this.formElem.toQueryString();
		var myHTMLRequest = new Request.HTML({
			url: this.formElem.action,
			onComplete: this.initForm.bind(this),
			update: this.container
		}).post(this.formElem);	
		
		//
		this.container.setStyle('cursor', 'wait');

	}	
});

	