// prepare the form when the DOM is ready 
$(document).ready(function() { 
    var options = { 
        beforeSubmit:  showRequest,  // pre-submit callback 
        success:       showResponse,  // post-submit callback 
        dataType	:  'json'
        //resetForm: true        // reset the form after successful submit 
    }; 
 
    $('#registerForm').ajaxForm(options);   

}); 
 
// pre-submit callback 
function showRequest(formData, jqForm, options) { 
    //var queryString = $.param(formData); 
    //alert(queryString);
 	 var checked = validateForm();
 	 //var checked = true;
 	$("#errorTerm").empty();
	 var checked = validateForm();
	if(!$("#agree").is(':checked'))
	{
		$("#errorTerm").append('<span class="body"><font color="#993300"><em>Please declare that you have read, understood and agreed with the terms and conditions.</em></font></span>')
	} 	 
    if(($("#agree").is(':checked')) && checked)
    {
    	removeSubmitBtn();
    	return true;	
    }else
    {
    	
    	return false;
    }	
} 
 
// post-submit callback 
function showResponse(responseText, statusText)  { 

    //alert('status: ' + statusText + '\n\nresponseText: \n' + responseText);
    var myObject = responseText;
	if (myObject.status == "success")
	{
		url = rootUrl + "/user/success";
		window.location.href=url;
	}else
	{
		url = rootUrl + "/user/fail/error/"+myObject.error;
		window.location.href=url;		
	}	
} 

function validateForm()  { 
		var allOK = true;
     	if (!isValidEmail($('input[name="email"]').val()))
     		{
				$('input[name="email"]').addClass("error");
				allOK = false;	
     		}
     	else
     		{
     			$('input[name="email"]').removeClass("error");
     		}
     		
     	if ( ($('input[name="email"]').val() != $('input[name="verifyEmail"]').val()) || (!isValidEmail($('input[name="verifyEmail"]').val())) ) 
     		{
				$('input[name="verifyEmail"]').addClass("error");
				allOK = false;	
     		}
     	else
     		{
     			$('input[name="verifyEmail"]').removeClass("error");
     		} 
     		    		
		if (($('input[name="nric"]').val()== ''))
			{
				$('input[name="nric"]').addClass("error");
				allOK = false;	
     		} 
     	else
     		{
     			$('input[name="nric"]').removeClass("error");    
     		}
     		
		if (isValidAge($('input[name="age"]').val()) && ($('input[name="age"]').val()!= ''))
			{
				$('input[name="age"]').addClass("error");
				allOK = false;	
     		} 
     	else
     		{
     			$('input[name="age"]').removeClass("error");    
     		}
     		     		
		if (isValidNumber($('input[name="name"]').val()) || ($('input[name="name"]').val()== ''))
			{
				$('input[name="name"]').addClass("error");
				allOK = false;	
     		} 
     	else
     		{
     			$('input[name="name"]').removeClass("error");    
     		}
     		   
		if (!isValidPhone($('input[name="resPhone"]').val()))
			{
				$('input[name="resPhone"]').addClass("error");
				allOK = false;	
     		} 
     	else
     		{
     			$('input[name="resPhone"]').removeClass("error");    
     		}  
		if ( !isValidPhone($('input[name="moPhone"]').val()) && ($('input[name="moPhone"]').val()!='') )
			{
				$('input[name="moPhone"]').addClass("error");
				allOK = false;	
     		}
     		 
     	else
     		{
     			$('input[name="moPhone"]').removeClass("error");    
     		}  
		if (($('input[name="block"]').val()== ''))
			{
				$('input[name="block"]').addClass("error");
				allOK = false;	
     		} 
     	else
     		{
     			$('input[name="block"]').removeClass("error");    
     		} 
		if (($('input[name="street"]').val()== ''))
			{
				$('input[name="street"]').addClass("error");
				allOK = false;	
	 		} 
	 	else
	 		{
	 			$('input[name="street"]').removeClass("error");    
	 		} 
		if (($('input[name="unit"]').val()== ''))
			{
				$('input[name="unit"]').addClass("error");
				allOK = false;	
	 		} 
	 	else
	 		{
	 			$('input[name="unit"]').removeClass("error");    
	 		} 		
		if (($('input[name="unit1"]').val()== ''))
			{
				$('input[name="unit1"]').addClass("error");
				allOK = false;	
	 		} 
	 	else
	 		{
	 			$('input[name="unit1"]').removeClass("error");    
	 		} 	
		if (($('input[name="postalCode"]').val()== ''))
			{
				$('input[name="postalCode"]').addClass("error");
				allOK = false;	
	 		} 
	 	else
	 		{
	 			$('input[name="postalCode"]').removeClass("error");    
	 		} 		
 		if (!isValidUID($('input[name="userID"]').val()))
			{
				$('input[name="userID"]').addClass("error");
				allOK = false;	
     		} 
     	else
     		{
     			$('input[name="userID"]').removeClass("error");    
     		} 
 		if (!isValidPassword(registerForm.password.value))
			{
				$('input[name="password"]').addClass("error");
				$('input[name="verifyPassword"]').addClass("error");
				allOK = false;	
	 		} 
	 	else
	 		{
	 			$('input[name="password"]').removeClass("error");    
	 			$('input[name="verifyPassword"]').removeClass("error");
	 		}
 		
 		if (registerForm.password.value != registerForm.verifyPassword.value)
			{
				$('input[name="verifyPassword"]').addClass("error");
				allOK = false;	
	 		} 
	 	else
	 		{ 
	 			$('input[name="verifyPassword"]').removeClass("error");
	 		}
 		
	   if (($('input[name="answer"]').val()== ''))
	 		{
				$('input[name="answer"]').addClass("error");
				allOK = false;	
	 		}
	 	else
	 		{
	 			$('input[name="answer"]').removeClass("error");
	 		}
	 		
	 	if ( ($('input[name="answer"]').val() != $('input[name="verifyAnswer"]').val()) ) 
	 		{
				$('input[name="verifyAnswer"]').addClass("error");
				allOK = false;	
	 		}
	 	else
	 		{
	 			$('input[name="verifyAnswer"]').removeClass("error");
	 		}  		
//alert(registerForm.password.value);     		    		    		    		
 		     	
     	if (allOK)
     	{removeDisplayError();}	
     	else
     	{displayError();}     		     		     		     		     		  		
     	return allOK;		
} 
function isValidEmail(emailAddress) {
	var pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return pattern.test(emailAddress);
}
function isValidNumber(string) {
	var pattern = new RegExp(/[0-9.,]/g);
	return pattern.test(string);
}
function isValidAge(string) {
	var pattern = /^([0-9]{1})$/;
	return pattern.test(string);
}
function isValidUID(string){
	var pattern = /^[A-Za-z0-9_]{3,30}$/;
	return pattern.test(string);
}
function isValidPhone(string) {
	var pattern = /^([0-9]{8})$/;
	return pattern.test(string);
}
function isValidDate(string) {
	var pattern = /^(\d{1,2})[./-](\d{1,2})[./-](\d{4})$/;
	return !pattern.test(string);
}
function isValidPassword(string) {
	var pattern = /^[A-Za-z0-9!@#$%^&*()_]{6,20}$/;
	return pattern.test(string);
}

function displayError() {
	$("#errorDisp").slideDown("slow");
}
function removeDisplayError() {
	$("#errorDisp").slideUp("fast");
}
function removeSubmitBtn(){
	$('input[name="Reset"]').fadeOut(1500);
	$('input[name="Submit2"]').fadeOut(1500);
}