$(function(){
	var delay = (function(){
		var timer = 0;
		return function(callback, ms){
		clearTimeout (timer);
		timer = setTimeout(callback, ms);
		};
	})();

	$('#terms').on('change',function(){totalValid();});
	// Receive checkbox on change event 
	$(".label_container input").on('change',function(){totalValid();});

	// Confirm All Are Valid
	$('#register_email').on('keyup',function(){
		var email = $(this).val();
		delay(function(){checkEmail(email);}, 1000 );
	});
	$('#register_email').on('blur',function(){
		var email = $(this).val();
		checkEmail(email);
	});

	$('#password').on('keyup',function(){
		var pass = $(this).val();
		var length = pass.length;
		delay(function(){checkMainPass(length);}, 1000 );
	});
	$('#password').on('blur',function(){
		var pass = $(this).val();
		var length = pass.length;
		checkMainPass(length);
	});
	$('#rpassword').on('keyup',function(){
		var pass = $('#password').val();
		var rpass = $(this).val();
		delay(function(){confirmPass(pass,rpass);}, 1000 );
	});
	$('#rpassword').on('keyup',function(){
		var pass = $('#password').val();
		var rpass = $(this).val();
		confirmPass(pass,rpass);
	});
	function totalValid(){
		var terms = $('#terms').prop('checked');
		var ev = $('#register_email').data('valid');
		var pv = $('#password').data('valid');
		var cv = $('#rpassword').data('valid');
		if(ev == 'yes' && pv == 'yes' && cv == 'yes' && terms == true){$('#register_button').attr('disabled',false).css('cursor','pointer');}else{$('#register_button').attr('disabled','disabled').css('cursor','not-allowed');}
	}

	function confirmPass(pass,rpass){
		if(pass == rpass){
			$('#confirm_message').empty();
			$('#confirm_mark').css('background','url(/images/site/icons/check-mark.png)');
			$('#password').data('valid','yes');
		} else {
			$('#confirm_message').text('Password does not match.');
			$('#confirm_mark').css('background','url(/images/site/icons/x-mark.png)');
			$('#password').data('valid','no');
		}
		totalValid();
	}
	function checkMainPass(length){
		if(length > 4){
			$('#password_message').empty();
			$('#pass_mark').css('background','url(/images/site/icons/check-mark.png)');
			$('#rpassword').data('valid','yes');
	   } else {
			$('#password_message').text('Password is too short. Must be 5 characters.');
			$('#pass_mark').css('background','url(/images/site/icons/x-mark.png)');
			$('#rpassword').data('valid','no');
		}
		totalValid();
	}
	function checkEmail(email){
		var valid = validateEmail(email);
		if(valid == true){
			$.ajax({
				url: '/members/email-check/?email='+email,
				success: function(results){
					if(results == 1){
						$('#email_mark').css('background','url(/images/site/icons/x-mark.png)');
						$('#register_email').css('border','1px solid #D1430A');
						$('#email_message').text("Email Address Not Available");
						$('#register_email').data('valid','no');
					} else {
						$('#email_mark').css('background','url(/images/site/icons/check-mark.png)');
						$('#register_email').css('border','1px solid #9bc98a');
						$('#email_message').empty();
						$('#register_email').data('valid','yes');
					}
				}
			});
		} else {
			$('#email_mark').css('background','url(/images/site/icons/x-mark.png)');
			$('#register_email').css('border','1px solid #D1430A');
			$('#email_message').text("Email Address Is Not Valid");
			$('#register_email').data('valid','no');
		}
		totalValid();
	}
	function validateEmail(email) { 
		var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
		return re.test(email);
	}
})