/**
 *	@version 20090818
 */


function form_validator() {

	var submit_ptr = null;
	var valid = 1;
	var fields = {};
	
	this.submit = function ( button ) {
		submit_ptr = $(button);
	}
	
	this.validate_as = function ( name, type ) {
		fields[name] = type;
		$('[name=' + name + ']').keyup( this.validate );
		$('[name=' + name + ']').change( this.validate );
		$('[name=' + name + ']').mouseup( this.validate );
	}
	
	this.validate = function () {
		valid = 1;
		for ( key in fields ) {
			if ( fields[key] === 'text' ) rgx = /[^\s]+/i;
			if ( fields[key] === 'phone' ) rgx = /^\+?\s?\d?\s?(\(\d+\))?[\d\-\s]+$/i;
			if ( fields[key] === 'email' ) rgx = /^[\-\.\w]+@([\w\-]+\.)+\w{2,3}$/i;
			var el = $('[name=' + key + ']');
			if ( el.val() && el.val().match( rgx ) ) {
				el.removeClass('need');
			}
			else {
				el.addClass('need');
				valid = 0;
			}
		}
		if ( valid && submit_ptr ) {
			submit_ptr.attr('disabled', '');
		}
		else if ( submit_ptr ){
			submit_ptr.attr('disabled', 'disabled');
		}
	}
	
}


