
var register = {
	
	initialised: false,
	
	validateFields: null,
	
	setValidateFields: function() {
		
		this.validateFields = 
			[
				{	name:'name',			required:true,	regex:''	},
				{	name:'lastname',		required:true,	regex:''	},
				{	name:'address1',		required:true,	regex:''	},
				{	name:'city',			required:true,	regex:''	},
				{	name:'state',			required:true,	regex:''	},
				{	name:'postcode',		required:true,	regex:/^\d{3,4}$/	},
				{	name:'phone',			required:true,	regex:''	},
				{	name:'email',			required:true,	regex:/^.+@.+\..+$/	},
				{	name:'email-confirm',	required:true,	regex:new RegExp('^'+ $('#email').val() + '$')	},
				{ 	name: 'password', 		required:true, 	regex:'' }
			];
	},
	
	validateForm: function() {
		
		this.setValidateFields();
		
		var fields = this.validateFields;
		var formValid = true;
		var focus = false;
		var field = null;
		
		for (var i in fields) {
			field = fields[i];
			el = $('#'+field.name);
			debug.log(el.attr("id"));
			
			if(field.required && el.val().length==0) {
				formValid=false;
				el.addClass('invalid');
				if(!focus) {
					el.focus();
					focus = true;
				}
			} else {
				if(field.regex!='') {
					if(el.val().length>0 && !el.val().match(field.regex)) {
						formValid=false;
						el.addClass('invalid');
						if(!focus) {
							el.focus();
							focus = true;	
						}
					} else {
					el.removeClass('invalid');
					
					}
					
				} else {
					el.removeClass('invalid');
				}
			
			}
		}
		
		if(!formValid)
			alert( "You must fill in all required fields.");
		debug.log(formValid);
		return formValid;
	},
	
	connectEvents: function() {
		
		$("#registerButton").click(function(e) {
			
			e.preventDefault();
			debug.log("submitting register", register.registerForm);
			register.registerForm.trigger("submit");
		});
		
		this.registerForm.keydown( function( e ) {
			
            // Enter pressed?
            if (e.which == 10 || e.which == 13) {
    			e.preventDefault();
    			register.registerForm.trigger("submit");
            }
        });
		
		this.registerForm.submit( function( e ) {
			
			//e.preventDefault();
			return register.validateForm();
		});
	},
	
	init: function() {
		
		this.registerForm = $("#registerForm");
		
		this.connectEvents();
		
		this.initialised = true;
	}
};


