
var submitter = new Class({
	Implements: [Options],
	options: {
		leForm: null,
		leField: null,
		leType: 'default',
		defaultText: '',
		regex: /..*/,
		ajax: false,
		initialQuery: '',
		responseDiv: '',
		submitURL: '/postBack.php'
	},
	initialize: function(options){
		this.setOptions(options);
		switch(options.leType){
			case 'search':
				this.options.regex = /..*/;
				this.options.error = 'Please enter a valid search term';
				this.options.defaultText = 'search';
				this.options.fieldName = 'search';
				break;
			case 'signup':
				this.options.regex = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]*@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
				this.options.error = 'Please enter a valid email address';
				this.options.defaultText = 'enter your email';
				this.options.fieldName = 'email';
				break;
			default:
				if(!options.error)
					this.options.error = 'Not valid';
				this.options.fieldName = options.leField;
				break;
		}
		if(this.options.responseDiv=='' && options.ajax==true)
			this.options.responseDiv = this.options.leForm;
		this.leField = $($(this.options.leForm).elements[this.options.fieldName]);
		//alert(this.options.fieldName);
		//this.leField = $(this.options.fieldName);
		this.leField.store('defaultText',this.options.defaultText);
		this.leField.defaultText = this.options.defaultText;
		$(this.options.leForm).addEvent('submit',this.submit.bind(this));
		this.leField.store('form',this);
		this.leField.set('value',this.options.defaultText);
		this.leField.addEvent('focus',function(){
			if(this.value==this.retrieve('defaultText'))
				this.value='';
		});
		this.leField.addEvent('blur',function(){
			if(this.value=='')
				this.value=this.retrieve('defaultText');
		});
	},
	valid: function(){
 		regex = new RegExp(this.options.regex);
		//alert(regex.test(this.leField.value));
		return regex.test(this.leField.value);
	},
	submit: function(e){
		if(this.valid()){
			if(this.options.ajax){
				e.stop();
				$$($(this.options.leForm).elements).each(function(i){if(i.name!=this.leField.name)this.options.initialQuery += '&'+i.name+'='+i.value}.bind(this));
				//alert(this.options.initialQuery);
				new Request.HTML({
					url: this.options.submitURL,
					data: this.options.initialQuery+'&'+this.options.fieldName+'='+this.leField.value,
					update: this.options.responseDiv
				}).send();
			}else{
				return true;
			}
		}else{
			alert(this.options.error);
			return false;
		}
	}
});
