/*
Created By: Devon Beck
Website: http://www.401creative.com
Date: 12/10/2008
*/

var formExecute = Class.create();

formExecute.prototype = {

	initialize: function(ctrl) {
		this.ctrl = ctrl;
		Event.observe(this.ctrl, 'submit', this.validateForm.bindAsEventListener(this));
		this.ctrl.onsubmit = function(){return false;};
		this.response_div = $(this.ctrl).getElementsByClassName('response')[0];
	},
	
	validateForm: function() {
		var error = false;
		var required = $(this.ctrl).getElementsByClassName('required');
		for (r=0; r<required.length; r++){
			var label = required[r].up().previous();
			var value = $F(required[r]);
			if(value == ""){
				error = true;
				this.updateResponse("Please fill out all required fields");
				label.addClassName('error');
			} else {
				if(label.hasClassName('error')){
					label.removeClassName('error');
				}
			}
		}
		var required = $(this.ctrl).getElementsByClassName('email_required');
		for (r=0; r<required.length; r++){
			var label = required[r].up().previous();
			var value = $F(required[r]);
			if(value == "" || echeck(value) == false){
				error = true;
				this.updateResponse("Please enter a valid e-mail address");
				label.addClassName('error');
			} else {
				if(label.hasClassName('error')){
					label.removeClassName('error');
				}
			}
		}
		if(!error){
			this.sendForm();
		}
	},
	
	sendForm: function() {
		$(this.ctrl).request({
			method: 'get',
			onComplete: this.processInfo.bindAsEventListener(this)
		})		
	},
	
	processInfo: function(response){
		res = response.responseText;
		this.updateResponse(res);
	},
	
	updateResponse: function(str){
		Element.update(this.response_div, ' ');
		new Insertion.Top($(this.response_div), str);
	}
	
}

function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   return false;
	} else if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false;
	} else if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		return false;
	} else  if (str.indexOf(at,(lat+1))!=-1){
		return false;
	} else if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false;
	} else if (str.indexOf(dot,(lat+2))==-1){
		return false;
	} else if (str.indexOf(" ")!=-1){
		return false;
	} else {
		return true;
	}
}
