var redForm = new Class({
	Implements: [Events, Options],
	options: {
		formId: '',
		submitId: '',
		formData: '',
		formMethod: 'get',
		durationShort: 500,
		formCompleteBoxId: 'copmletedBox-',
		formArea: ''
	},
	initialize: function(element, options) {
		this.options.formId = element;
		this.setOptions(options);
		this.fireEvent('onInit');
		
			
		this.setupElements();	
		this.setupEvents();
		this.setupTweens();	
	},	
	setupElements: function() {
		var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
		var string_length = 8;
		for (var i=0; i<string_length; i++) {
			var rnum = Math.floor(Math.random() * chars.length);
			this.options.formCompleteBoxId += chars.substring(rnum,rnum+1);
		}
		
		var fadedBackground = new Element('p', {id: this.options.formCompleteBoxId}).inject($(this.options.formArea));
		$(this.options.formCompleteBoxId).addClass('formSendSuccess');
		//$(this.options.formCompleteBoxId).appendText('Form Sent Successfully');
		//$(this.options.formCompleteBoxId).set('html', '<p style="margin-top:15px;line-height:2em;">Form Sent Successfully</p><p class="close"style="width:100%;margin:0 auto 10px;line-height:1.5em;float:none;"><a id="lightbox-'+this.options.formId+'Close" title="close window"><img src="images/icons/close.png" alt="Close">Close</a></p>');
		$(this.options.formCompleteBoxId).set('html', '<p style="margin-top:15px;line-height:2em;">Form Sent Successfully<br /><a id="'+this.options.submitId+'-Close" style="cursor:pointer">Close</a></p>');
	},	
	setupEvents: function() {
		$(this.options.submitId).addEvent('click',function(e){
			e.stop();
			this.getFormElements();
			this.sendForm();
		}.bindWithEvent(this));
		
	
	},
	setupTweens: function() {	
		this.options.formFader = new Fx.Tween(this.options.formId, {
			property: 'opacity',
			duration: this.options.durationShort,
			transition: Fx.Transitions.Quart.easeInOut
		});	
		this.options.completeBoxFader = new Fx.Tween(this.options.formCompleteBoxId, {
			property: 'opacity',
			duration: this.options.durationShort,
			transition: Fx.Transitions.Quart.easeInOut
		});
	},
	getFormElements: function() {
		for(i=0; i < $(this.options.formId).elements.length; i++) {
			if(i != 0){this.options.formData += '&';}
			this.options.formData += $(this.options.formId).elements[i].name+"="+$(this.options.formId).elements[i].value;
		}
	},
	sendForm: function() {
		var req = new Request({
			method : this.options.formMethod,
			url: $(this.options.formId).get('action'),
			data: {'do': '1'},
			//onRequest: function() {alert('request sent'); },
			//update: $('lightbox-formReview-div'),
			onComplete: function(response){ 
				if(response == 'true') {
					this.sendCompleted();
				} else {
					this.sendFailed();
				}
			}.bindWithEvent(this)
		}).send(this.options.formData);
	},
	sendCompleted: function() {		
		this.options.formFader.start(1,0);
		(function(){$(this.options.formId).destroy();}).bindWithEvent(this).delay(this.options.durationShort);
		(function(){this.options.completeBoxFader.start(0,1);}).bindWithEvent(this).delay(600);
	},
	sendFailed: function() {
		alert('failed');
	},
});
