var name_msg	= [];
name_msg[0] 	= 'Username must be at least 4 characters long.';
name_msg[1] 	= 'That username is unavailable.';

var email_msg	= [];
email_msg[0] 	= 'Must be a valid email address (ie: you@somewebsite.com).';
email_msg[1] 	= 'That email address is unavailable.';

jQuery.noConflict();

jQuery(function($) {
	
	$('#btnSubmit').click(function(event) {
		var fields = [];
		var form = $('input.input');
		
		// $(this).ajaxStart(function() {
// 			$(this).attr({src: '/img/icons/spinner_moz.gif'});
// 		});
// 
// 		$(this).ajaxStop(function() {
// 			$(this).attr({src: '/images/site/btn_signUp.gif'});
// 		});
		
		$(form).each(function(i) {
			// Hide all error messages
			$(this).css({background: "#fff"});
			$('p.'+this.name).removeClass('statusError2');
			
			// General check for blank fields
			if ((this.value == null) || (this.value == '') || isblank(this.value)) {
				fields.push(this);
         	} else {
				// Individual field validation
				switch (this.name) {
					case 'username': // Value needs to be at least 4 characters & available
						if (this.value.length < 4 || !avail(this.name, this.value)) {
							fields.push(this);
						}
						break;
					case 'password': // Value needs to be at least 5 characters
						if (this.value.length < 5) {
							fields.push(this);
						}
						break;
					case 'password_confirm': // Value needs to match password field
						if (this.value.length < 5 || this.value != form[i-1].value) {
							fields.push(this);
						}
						break;
					case 'email': // Value needs to be a valid email address & available
						if ( !checkmail(this.value) || !avail(this.name, this.value)) {
							fields.push(this);
						}
						break;
					default:
				}
			}
		});
		
		// All clear! Send it through
		if (fields.length == 0) return true;
		
		// Go through and display error messages for invalid fields
		$(fields).each(function(i) {
			$(this).css({background: "#fdd"});
			$('p.'+this.name).addClass('statusError2');
		});
		
		return false;
	});
	
	// Validate an email address
	function checkmail(e) {
		var emailfilter = /^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,3}|\d+)$/i;
		return emailfilter.test(e);
	}
	
	// Check to make sure an email/username is available
	function avail(kind, str) {
		var checkURL = '/index.php/ajax/available/'+kind+'/'+str;
		var result;
		
		$.ajax({
			type: 'POST',
			url: checkURL,
			dataType: 'html',
			async: false,
			success: function(data) {
				result = Number(data);				
			}
		});
		
		if (kind == 'email') {
			$('input[@name='+kind+'] + p').empty().append('<span>'+email_msg[result]+'</span>');
		} else {
			$('input[@name='+kind+'] + p').empty().append('<span>'+name_msg[result]+'</span>');
		}
		
		return (result == 0) ? true : false;
	}
	
	// Check to see if a field is blank. Spaces, newlines and tabs count as blanks
	function isblank(s) {
	    for (var i = 0; i < s.length; i++) {
	        var c = s.charAt(i);
	        if ((c != ' ') && (c != '\n') && (c != '\t'))
	            return false;
	    }
	    return true;
	}
});