$(document).ready(function() {

		$.validator.addMethod("pcode", function() {
      var patt1=new RegExp("^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$");
      var postal_code="";
      postal_code = document.frm_step1.pcode.value;
      if (patt1.test(postal_code) == true) {
        return true;
      } else {
        return false;
      }
		});

    $.validator.addMethod("check_email_match", function() {
      return (document.frm_step1.email1.value == document.frm_step1.email2.value);
    });
    
		$.validator.addMethod("phone_number", function() {
      var phone_number="";
      phone_number = document.frm_step1.phone_number.value;
      if (phone_number.length>7) {
        return true;
      } else {
        return false;
      }
		});
  
		$.validator.addMethod("mobile_number", function() {
      var mobile_number="";
      mobile_number = document.frm_step1.mobile_number.value;
      if (mobile_number.length>7) {
        return true;
      } else {
        return false;
      }
		});
  
    $.validator.addMethod("date_of_birth", function() { 
      var dteDate;
      var day = 0;
      var month = 0;
      var year = 0;
      day = document.frm_step1.date_of_birth.value.substr(8,2);
      month = document.frm_step1.date_of_birth.value.substr(5,2);
      year = document.frm_step1.date_of_birth.value.substr(0,4);
      
      dteDate=new Date(year,month-1,day);

      //alert ( day + '-' + month + '-' + year + '  vs  ' + dteDate.getDate() + '-' + dteDate.getMonth()+1 + '-' + dteDate.getFullYear() + "   " + (day==dteDate.getDate() && month==dteDate.getMonth() && year==dteDate.getFullYear()));
      return ((day==dteDate.getDate()) && (month==dteDate.getMonth()+1) && (year==dteDate.getFullYear()));
    });    

    
	var validator = $("#frm_step1").validate({
		rules: {
         title: {
           required: true
         },
         fname: {
            required: true
         },		
         lname: {
               required: true
         },
         email1: {
            required: true,
            email: true
         },
         email2: {
            required: true,
            email: true,
        check_email_match: true
         },/*
         mobile_number: {
            mobile_number: true
         },
         phone_number: {
            phone_number: true
         },*/
         address1: {
            required: true
         },
         suburb: {
            required: true
         },
         state: {
            required: true
         },
         pcode: {
            required: true,
            rangelength: [4,4],
            range: [0200,9999],
            number: true,
            pcode:true
         },
         date_of_birth: {
                  required: true,
             date_of_birth: true
            },
         maritalstatus: {
           required: true
         },
         country: {
            required: true
         }
		},
		messages: {
      title: {
        required: "Title is required."
      },
			fname: {
				required:  "First name is required."
			},
			lname: {
				required:  "Surname is required."
			},
			email1: {
				required: "Please enter your email address.",
				email: "Email address not properly formatted."
			},
			email2: {
				required: "Please enter your email address.",
				email: "Email address not properly formatted.",
        check_email_match: "Emails do not match."
			},/*
			mobile_number: {
				mobile_number: "Mobile number is not complete."
			},
			phone_number: {
				phone_number: "Phone number is not complete."
			},*/
			address1: {
				required: "Please enter your address."
			},
			suburb: {
				required: "Please enter your suburb."
			},
			state: {
				required:  "State not selected!"
			},
			pcode: {
				required: "Post code is required.",
				rangelength: "Post code must be 4 digits long.",
				range: "Sorry, that post code is out of known range.",
				number: " ",
				pcode: "Sorry, that post code is out of known range."
			},
			date_of_birth: {
				required:  "Please enter your date of birth.",
            date_of_birth: "Please enter a correct date of birth."
			},
         maritalstatus: {
           required: "Please enter your marital status."
         },      
         country: {
            required: "Please select a country."
         }
		},
		
		// specifying a submitHandler prevents the default submit
		submitHandler: function() {
			var data = $('#frm_step1').serialize();
     
			//console.log(data);
				
/*
change graphics.
*/
      $('#captcha_failed').hide();

		  $.ajax({
			  type: "POST",
				url:'survey_ajax.php',
        dataType: 'json',
        async: false,
        data:  data,   
        
				success: function(objResponse){
          if (objResponse['ok']=='y') {
            //alert(objResponse['message']);
            document.location = 'thank_you.php';

          } else {
            if (objResponse['code']=='recaptcha') {

              $('#captcha_failed').html('<label class="error">Captcha failed, please try again.</label>').show();
              Recaptcha.reload();

            } else {
              alert('Error: '+objResponse['code']+', '+objResponse['error']);
            }
          }
			  },
        
			  fail: function(objResponse){
				  alert('There has been an error, please try again.');
			 	},
        
        error: function(objRequest, ajaxOptions, thrownError) {
          alert('Unhandled error(' + objRequest.status + ")\n" + thrownError);
        }
			});
     
    },
		
    // set this class to error-labels to indicate valid fields
    success: function(label) {
      // set &nbsp; as text for IE
      label.html("&nbsp;").addClass("checked");
    }
	
	});
	
	$('#fname').alpha({allow:"., /-"});
	$('#lname').alpha({allow:"., /-"});

	$('#phone_number').numeric();
   $('#mobile_number').numeric();
  
	$('#address_unit').setMask('99999');
	$('#address_level').setMask('99999');
	$('#address_number').setMask('99999');
	
	$('#suburb').alpha({allow:"., /-"});
	
	$('#pcode').setMask('9999');
	//$('#year_of_birth').setMask('2999');

});













