var EmailRegex = /^\s*[a-z0-9\!\#\$\%\&\'\*\+\/=\?\^_\`\{\|}~-]+(\.[a-z0-9\!\#\$\%\&\'\*\+\/=\?\^_\`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})\s*$/i;
var EmailExampleRegex = /^(?:(?!johndoe@gmail.com).)*$/i;
var DataRegex = /(?=.*\S)/;

var EmailCorrect = Class.create();
EmailCorrect.prototype = {
    initialize: function( field_id, message_id, message) {
        this.message_id = message_id;
        this.message = message;
        this.field = document.getElementById( field_id );
				this.valid = this.field.value.match(EmailRegex);
        if (typeof this.field == 'undefined') {return;}
        // Observe blur on field    
        Event.observe(this.field, 'blur', this.checkEmail.bindAsEventListener(this));
    },
    checkEmail: function() {
    if( typeof this.field != 'undefined' )
    {
            var email = this.field.value;
            // don't hit server unless name is well-formed
            if(!email.match(EmailRegex)) {
							$(this.message_id).update(this.message);
							this.valid = false;
						} else {
							$(this.message_id).update("");
							this.valid = true;
						}
    	}
		}
};

var DataCorrect = Class.create();
DataCorrect.prototype = {
    initialize: function( field_id, message_id, message) {
        this.message_id = message_id;
        this.message = message;
        this.field = document.getElementById( field_id );
				this.valid = this.field.value.match(DataRegex);
        if (typeof this.field == 'undefined') {return;}
        // Observe blur on field    
        Event.observe(this.field, 'blur', this.checkData.bindAsEventListener(this));
    },
    checkData: function() {
    if( typeof this.field != 'undefined' )
    {
            var data = this.field.value;
            // don't hit server unless name is well-formed
            if(!data.match(DataRegex)) {
							$(this.message_id).update(this.message);
							this.valid = false;
			      } else {
							$(this.message_id).update("");
							this.valid = true;
						}
    }
		}
};
