

	//********************************* tabs ******************************//
	var A_LEVEL = false; //limit
	var $tabs;
	$(document).ready(function(){
		$tabs = $("#registration").tabs();
		$tabs.bind('tabsselect', validate_form);
		
		$('.music_level_subjs').each(function() {
			if(this.checked)
				$('#music_level_'+ this.value).show();
			else
				$('#music_level_'+ this.value).hide();	
		}); 
		
		load_postal_area();
		
		setTimeout(function() { $('.success_header').fadeOut(400);}, 5000);
	            
		
	});
	
	function goto_step(num) {
		$tabs.tabs('select', num-1);
		return false;
	}

	//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; } );
		}
	}
	
	

	function toggle_teacher_privacy(value) {
		
		if(value == 3 || value == 5)
			$('#teacher-privacy-option').show();
		else 
			$('#teacher-privacy-option').hide();
	}
	
	
	function limitText(limitField, limitCount, limitNum) {
		if (limitField.value.length > limitNum) {
			limitField.value = limitField.value.substring(0, limitNum);
		} else {
			limitCount.value = limitNum - limitField.value.length;
		}
	}

	function toggle_music_levels(o) {
		if($(o).attr('checked'))
			$('#music_level_'+ $(o).val()).show();
		else
			$('#music_level_'+ $(o).val()).hide();			
	}
	
	
	function postal_area_btn_onclick(o) {
		postal_area_btn_clear();
		$('#postal-area-id').val($(o).attr('value'));
		$(o).addClass('selected');
	}
	
	function postal_area_btn_clear() {
		$('.postal-area-btn').each(function() {
			$(this).removeClass('selected');
		});
		
		$('#postal-area-id').val('');
	}
	
	
	function load_postal_area() {

		var postal_id = $('#tb_postal_code').val();
		var selected_id = $('#postal-area-id').val();
		
		if(postal_id.length < 2) {
			$('#postal-area').html('');
			return;
		}
		
		$.getJSON("postal_area.ajax.php?postal_id=" + postal_id,
	        function(data){ 	
	        	var html = '';
	        	var exists = false;
	        	
	         	 $.each(data.areas, function(i,area){
	         	 	var selected = (area.id == selected_id) ? ' selected' : '';
	         	 	if(selected) exists = true;
	         	 	html += "<div class='postal-area-btn"+ selected + "' onclick='postal_area_btn_onclick(this)' value='" + area.id + "'>"+ area.name + "</div>";
	         	 	
	         	 
	          	});
	          	if(!exists) postal_area_btn_clear();
	          	if(html == '')
	          		$('#postal-area').html('<span class=validate>Invalid postal code.</span>');
	          	else
	   	 			$('#postal-area').html(html);
	    });
	    

	}
	
	function toggle_date_available(value) {
		if(value == 'B')
			$('#available-date').show();
		else 
			$('#available-date').hide();
	}
	
	//******************************** 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;
		}	
		
		if($('#postal-area-id').val() == '') {
			$('#vd_postalcode').html('<br>Please select your location.');
			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) {
		if($('#value_table').is(':visible'))
			$('#value_table').hide();
		
		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);*/
	}
