	
	//********************************* tabs ******************************//
	var A_LEVEL = false; //limit
	var $tabs;
	$(document).ready(function(){
		$tabs = $("#registration > ul").tabs();
		$tabs.bind('tabsselect', validate_form);
	});
	
	function goto_step(num) {
		$tabs.tabs('select', num-1);
		return false;
	}

	//tool tip
	function tooltip_on(o, id) {
		oid = "#"+o.id;
		$(id).css("left", $(oid).offset().left + $(oid).width() + 20).css("top", $(oid).offset().top).fadeIn('fast');
	}

	function tooltip_off(id) {
		$(id).hide();
	}
	
	//area zones
	function toggle_zone(o, value) {
		if(!o.checked)
			$('#areas_'+value).slideDown();
		else {
			$('#areas_'+value).slideUp();
			$('.area_zone_'+value).each(function() { this.checked = false; } );
		}
	}
	
	
	
	//******************************** validations ***********************************//
	
	function is_empty(str) {
		return jQuery.trim(str) == '';
	}

	function validate_name() {
		$('#vd_name').empty();
		if(is_empty($('#tb_name').val())) {
			$('#vd_name').html('<br>Please enter your name.');
			return false;
		}

		return true;
	}
	
	function validate_gender() {
		$('#vd_gender').empty();
		if(is_empty($('#sel_gender').val())) {
			$('#vd_gender').html('<br>Please select your gender.');
			return false;
		}
		return true;
	}
	
	function validate_dob() {
		$('#vd_dob').empty();
		if(is_empty($('#dob_day').val()) || is_empty($('#dob_mth').val()) || is_empty($('#dob_year').val())) {
			$('#vd_dob').html('<br>Please enter your date of birth.');
			return false;
		}
		
		var dob = $('#dob_year').val()+'-'+$('#dob_mth').val()+'-'+$('#dob_day').val();
		if(!dob.match(/^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))$/)) {
			$('#vd_dob').html('<br>Please enter a valid date of birth.');
			return false;
		}
		
		return true;
	}
	
	function validate_address() {
		$('#vd_address').empty();
		if(is_empty($('#tb_address').val()) ) {
			$('#vd_address').html('<br>Please enter your address.');
			return false;
		}
		return true;
	}
	
	function validate_postalcode() {
		$('#vd_postalcode').empty();
		if(!$('#tb_postal_code').val().match(/\d{6}/) ) {
			$('#vd_postalcode').html('<br>Please enter your 6 digits postal code.');
			return false;
		}	
		return true;
	}
	
	function validate_areas() {		// return true;
		$('#vd_area').empty();
		var checked = false;
		$('.validate-area').each(function () { if(this.checked) checked = true; });
		if(!checked) {
			$('#vd_area').html('Please select a preferred area.');
			return  false;
		}
		
		//impose limit of 3 areas and 1 zone
		if(A_LEVEL || $('#sel_qualification').val() == 1) {
			if($('.tutor_area_zone:checked').length > 1 || 	$('.tutor_area:checked').length > 3) {
				goto_step(1);
				alert('You are limited to a maximum of 1 main zone and 3 sub zones for Preferred Area.');
				$('#vd_area').html('Please select a maximum of 1 main zone and 3 sub zones.');
				return false;
			}
		}

		return true;
	}
	
	function validate_contact1() {
		$('#vd_contact_1').empty();
		if(is_empty($('#tb_contact_1').val()) ) {
			$('#vd_contact_1').html('<br>Please enter your contact number.');
			return false;
		}
		
		if(!$('#tb_contact_1').val().match(/^[+]?[-0-9]+$/) ) {
			$('#vd_contact_1').html('<br>Please enter a valid contact number.');
			return false;
		}
		return true;
	}
	
	function validate_contact2() {
		$('#vd_contact_2').empty();
		
		if(!$('#tb_contact_2').val().match(/^[+]?[-0-9]*$/) ) {
			$('#vd_contact_2').html('<br>Please enter a valid contact number.');
			return false;
		}
		
		return true;
	}
	
	// ******************************* step 2 *************************************/
	
	function validate_school1() {
		$('#vd_school_1').empty();
		if(is_empty($('#tb_school_1').val())) {
			$('#vd_school_1').html('Please enter your school.');
			return false;
		}
		return true;
	}
	
	function validate_school_period1() {
		$('#vd_school_period_1').empty();
		if(is_empty($('#sel_from_year_1').val()) || is_empty($('#sel_to_year_1').val())) {
			$('#vd_school_period_1').html('<br>Please enter the period of study.');
			return false;
		}
		
		if($('#sel_from_year_1').val() > $('#sel_to_year_1').val()) {
			$('#vd_school_period_1').html('<br>Please enter a correct period.');
			return false;
		}
		
		return true;
	}
	
	function validate_school_subjects1() {
		$('#vd_school_subjects_1').empty();
		empty = true;
		$('.validate-subject1').each(function() {
			if(!is_empty(this.value)) empty = false;
		});
		if(empty) { 
			$('#vd_school_subjects_1').html('Please enter at least one subject.');
			return false;
		}

		return true;
	}
	
	function validate_school2() {
		$('#vd_school_2').empty();
		if(is_empty($('#tb_school_2').val())) {
			$('#vd_school_2').html('<br>Please enter your school.');
			return false;
		}
		return true;
	}
	
	function validate_school_period2() {
		$('#vd_school_period_2').empty();
		if(is_empty($('#sel_from_year_2').val()) || is_empty($('#sel_to_year_2').val())) {
			$('#vd_school_period_2').html('<br>Please enter the period of study.');
			return false;
		}
		if($('#sel_from_year_2').val() > $('#sel_to_year_2').val()) {
			$('#vd_school_period_2').html('<br>Please enter a correct period.');
			return false;
		}
		return true;
	}
	
	function validate_school_subjects2() {
		$('#vd_school_subjects_2').empty();
		empty = true;
		$('.validate-subject2').each(function() {
			if(!is_empty(this.value)) empty = false;
		});
		if(empty) { 
			$('#vd_school_subjects_2').html('Please enter at least one subject.');
			return false;
		}

		return true;
	}
	
	// ******************************* step 3 *************************************/
	
	function validate_email() {
		$('#vd_email').empty();
		if(is_empty($('#tb_email').val())) {
			$('#vd_email').html('<br>Please enter your email address.');
			return false;
		}
		
		if(!$('#tb_email').val().match(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/)) {
			$('#vd_email').html('<br>Please enter a valid email address.');
			return false;
		}
		
		return true;
	}
	
	function validate_password() {
		$('#vd_password').empty();
		if(PWD_COMPULSORY && is_empty($('#tb_pswd').val())) {
			$('#vd_password').html('<br>Please enter your password.');
			return false;
		}
		
		return true;
	}
		
	function validate_confirm_password() {
		$('#vd_confirm_password').empty();
		if(PWD_COMPULSORY && is_empty($('#tb_con_pswd').val())) {
			$('#vd_confirm_password').html('<br>Please confirm your password.');
			return false;
		}
		
		if(PWD_COMPULSORY || !is_empty($('#tb_pswd').val()) || !is_empty($('#tb_con_pswd').val())) {
			if($('#tb_pswd').val() != $('#tb_con_pswd').val()) {
				$('#vd_confirm_password').html('<br>Your passwords do not match.');
				return false;
			}
			
			if(!$('#tb_con_pswd').val().match(/^[a-zA-Z0-9]{6,10}$/)) {
				$('#vd_confirm_password').html('<br>Please enter a password of 6 to 10 alphanumeric characters.');
				return false;
			}
		}
		
		return true;
	}
	
	// ******************************* step 4 *************************************/
	
	function validate_qualification() {
		$('#vd_qualification').empty();
		if(is_empty($('#sel_qualification').val())) {
			$('#vd_qualification').html('<br>Please select your education status.');
			return false;
		}
		
		return true;
	}
	
	function validate_experience() {
		$('#vd_experience').empty();
		if(is_empty($('#sel_experience').val())) {
			$('#vd_experience').html('<br>Please select your experience.');
			return false;
		}
		
		return true;
	}
	
	function validate_experience_text() {
		$('#vd_experience_dedication').empty();
		if(is_empty($('#ta_experience_dedication').val())) {
			$('#vd_experience_dedication').html('<br>Please enter your experience and dedication.');
			return false;
		}
		
		return true;
	}
	
	// ******************************* step 5 *************************************/
	
	function validate_tutoring_subjects() {
		$('#vd_tutor_subjs').empty();
		var checked = false;
		$('.validate-tutor-subjs').each(function () { if(this.checked) checked = true; });
		if(!checked) {
			$('#vd_tutor_subjs').html('Please select a subject.');
			return false;
		}
		return true;
	}
	
	function validate_terms_conditions() {
		$('#vd_terms_conditions').empty();
		if($('#cb_terms_conditions').length > 0 && !$('#cb_terms_conditions').attr('checked')) {
			$('#vd_terms_conditions').html('<br><br>You must agree to the terms &amp; conditions first.');
			return false;
		}
		return true;
	}
	
	// ******************************* step validation *************************************/
	
	function validate_step1() {
		var valid = true;
		
		if(!validate_name()) valid = false;
		if(!validate_gender()) valid = false;
		if(!validate_dob()) valid = false;
		if(!validate_address()) valid = false;
		if(!validate_postalcode()) valid = false;
		if(!validate_areas()) valid = false;
		if(!validate_contact1()) valid = false;
		if(!validate_contact2()) valid = false;

		return valid;
	}
	
	function validate_step2() {
		var valid = true;
		if(!validate_school1()) valid = false;
		if(!validate_school_period1()) valid = false;
		if(!validate_school_subjects1()) valid = false;
		if(!validate_school2()) valid = false;
		if(!validate_school_period2()) valid = false;
		if(!validate_school_subjects2()) valid = false;
		
		return valid;
	}
	
	function validate_step3() {
		var valid = true;
		if(!validate_email()) valid = false;
		if(!validate_password()) valid = false;
		if(!validate_confirm_password()) valid = false;
		return valid;
	}
	
	function validate_step4() {
		var valid = true;
		if(!validate_qualification()) valid = false;
		if(!validate_experience()) valid = false;
		if(!validate_experience_text()) valid = false;
		return valid;
	}
	
	function validate_step5() {
		var valid = true;

		if(!validate_tutoring_subjects()) valid = false;
		if(!validate_terms_conditions()) valid = false;

		return valid;
	}
	
	function validate_form(event, ui) {
		var i = $tabs.data('selected.tabs');
		if(ui.index < i) return true;
		
		if(ui.index > 0 && !validate_step1()) {
			goto_step(1);
			return false;
		}
		
		if(ui.index > 1 && !validate_step2()) {
			goto_step(2);
			return false;
		}
		
		if(ui.index > 2 && !validate_step3()) {
			goto_step(3);
			return false;
		}
		
		if(ui.index > 3 && !validate_step4()) {
			goto_step(4);
			return false;
		}
		
		if(ui.index > 4 && !validate_step5()) {
			goto_step(5);
			return false;
		}
	}
	
	
	function init_validation() {
		//step-1
		/*
		$('#tb_name').keyup(validate_name);
		$('#sel_gender').change(validate_gender);
		$('#dob_day').change(validate_dob);
		$('#dob_mth').change(validate_dob);
		$('#dob_year').change(validate_dob);
		$('#tb_address').change(validate_address);
		$('#tb_postal_code').keyup(validate_postalcode);
		$('.validate-area').change(validate_areas);
		$('#tb_contact_1').keyup(validate_contact1);
		$('#tb_contact_2').keyup(validate_contact2);
		//step-2
		$('#tb_school_1').keyup(validate_school1);
		$('#sel_from_year_1').change(validate_school_period1);
		$('#sel_to_year_1').change(validate_school_period1);
		$('.validate-subject1').keyup(validate_school_subjects1);
		$('#tb_school_2').keyup(validate_school2);
		$('#sel_from_year_2').change(validate_school_period2);
		$('#sel_to_year_2').change(validate_school_period2);
		$('.validate-subject2').keyup(validate_school_subjects2);
		//step-3
		$('#tb_email').blur(validate_email);
		$('#tb_pswd').keyup(validate_password);
		$('#tb_con_pswd').keyup(validate_confirm_password);
		//step-4
		$('#sel_qualification').change(validate_qualification);
		$('#sel_experience').change(validate_experience);
		$('#ta_experience_dedication').keyup(validate_experience_text);
		
		//step-4
		$('#sel_qualification').change(validate_qualification);
		$('#sel_experience').change(validate_experience);
		$('#ta_experience_dedication').keyup(validate_experience_text);
		
		//step-5 
		$('.validate-tutor-subjs').change(validate_tutoring_subjects);
		$('#cb_terms_conditions').change(validate_terms_conditions);*/
	}