$(document).ready(function()
	{
		$('form.validate').validate(
			{
				errorElement : 'span',
				errorPlacement : function(error, element)
					{
						error.appendTo( element.parent() );
					}
			}
		);
		var propertyType = $('form.validate select[name=propertyType]');
		if(propertyType.length) {
			var propertyDescription = $('form.validate select[name=propertyDescription]'), optgroups = {};
			if(propertyDescription.length) {
				$('optgroup', propertyDescription).each(function()
					{
						var optgroup = $(this);
						optgroups[optgroup.attr('label').toLowerCase()] = $('option', optgroup);
					}
				);
				$('optgroup', propertyDescription).remove();
			}
			propertyType.change(function()
				{
					var val = $(this).val().toLowerCase();
					if(val == 'flat') {
						showFields('form.validate .field_flatFloor');
					} else {
						hideFields('form.validate .field_flatFloor');
					}
					$('option:not(.sticky)', propertyDescription).remove();
					if(optgroups[val]) {
						propertyDescription.append(optgroups[val]);
						showFields('form.validate .field_propertyDescription');
					} else {
						hideFields('form.validate .field_propertyDescription');
					}
				}
			);
			var propertyVal = propertyType.val().toLowerCase();
			if(propertyVal == 'flat') {
				showFields('form.validate .field_flatFloor');
			} else {
				hideFields('form.validate .field_flatFloor');
			}
			if(optgroups[propertyVal]) {
				propertyDescription.append(optgroups[propertyVal]);
				showFields('form.validate .field_propertyDescription');
			} else {
				hideFields('form.validate .field_propertyDescription');
			}
		}

		var occday = $('form.validate input[name=occday]');
		var occnight = $('form.validate input[name=occnight]');

		if(occday.length && occnight) {
			occday.change(function()
				{
					var valObj = $('form.validate input[name=occnight]:checked'), val = '';
					if(valObj.length) {
						val = valObj.val();
					}
					if($(this).val().toLowerCase() == 'no' && val.toLowerCase() == 'no') {
						hideFields('form.validate .field_noocc');
					} else {
						showFields('form.validate .field_noocc');
					}
				}
			);
			occnight.change(function()
				{
					var valObj = $('form.validate input[name=occday]:checked'), val = '';
					if(valObj.length) {
						val = valObj.val();
					}
					if($(this).val().toLowerCase() == 'no' && val.toLowerCase() == 'no') {
						hideFields('form.validate .field_noocc');
					} else {
						showFields('form.validate .field_noocc');
					}
				}
			);
			var occdayChecked = occday.filter(':checked'), occdayVal = '';
			var occnightChecked = occnight.filter(':checked'), occnightVal = '';
			if(occdayChecked.length) {
				occdayVal = occdayChecked.val();
			}
			if(occnightChecked.length) {
				occnightVal = occnightChecked.val();
			}
			if(occdayVal.toLowerCase() == 'no' && occnightVal.toLowerCase() == 'no') {
				hideFields('form.validate .field_noocc');
			} else {
				showFields('form.validate .field_noocc');
			}
		}

		var main_employment = $('form.validate select[name=main_employment]');
		var main_job = $('form.validate input[name=main_job]');
		var main_sector = $('form.validate input[name=main_sector]');
		if(main_employment.length && main_job.length && main_sector.length) {
			main_employment.change(function()
				{
					var val = $(this).val();
					if(val != '') {
						if(val.toLowerCase() != 'employed' && val.toLowerCase() != 'self-employed') {
							main_job.val(val);
							main_sector.val('No full time employment');
						} else {
							main_job.val('');
							if(main_sector.val() == 'No full time employment') {
								main_sector.val('');
							}
						}
					}
				}
			);
			var val = main_employment.val();
			if(val != '') {
				if(val.toLowerCase() != 'employed' && val.toLowerCase() != 'self-employed') {
					main_job.val(val);
					main_sector.val('No full time employment');
				} else {
					if(main_sector.val() == 'No full time employment') {
						main_sector.val('');
					}
				}
			}
		}

		var main_partTime = $('form.validate input[name=main_partTime]');

		if(main_partTime.length) {
			main_partTime.change(function()
				{
					if($(this).val() == '' || $(this).val().toLowerCase() == 'no') {
						hideFields('form.validate .field_main_partime');
					} else {
						showFields('form.validate .field_main_partime');
					}
				}
			);
			var main_partTimeVal = main_partTime.filter(':checked'), val = '';
			if(main_partTimeVal.length) {
				val = main_partTimeVal.val();
			}
			if(val == '' || val.toLowerCase() == 'no') {
				hideFields('form.validate .field_main_partime');
			} else {
				showFields('form.validate .field_main_partime');
			}
		}



		var joint = $('form.validate input[name=joint]');
		var jointEnabled = false;
		if(joint.length) {
			joint.change(function()
				{
					if($(this).val() == '' || $(this).val().toLowerCase() == 'no') {
						hideFields('form.validate .field_joinApplicant');
						jointEnabled = false;
					} else {
						showFields('form.validate .field_joinApplicant');
						jointEnabled = true;
					}
				}
			);
			var jointVal = joint.filter(':checked'), val = '';
			if(jointVal.length) {
				val = jointVal.val();
			}
			if(val == '' || val.toLowerCase() == 'no') {
				hideFields('form.validate .field_joinApplicant');
				jointEnabled = false;
			} else {
				showFields('form.validate .field_joinApplicant');
				jointEnabled = true;
			}
		}

		var joint_employment = $('form.validate select[name=joint_employment]');
		var joint_job = $('form.validate input[name=joint_job]');
		var joint_sector = $('form.validate input[name=joint_sector]');
		if(joint_employment.length && joint_job.length && joint_sector.length) {
			joint_employment.change(function()
				{
					var val = $(this).val();
					if(val != '') {
						if(val.toLowerCase() != 'employed' && val.toLowerCase() != 'self-employed') {
							joint_job.val(val);
							joint_sector.val('No full time employment');
						} else {
							joint_job.val('');
							if(joint_sector.val() == 'No full time employment') {
								joint_sector.val('');
							}
						}
					}
				}
			);
			var val = joint_employment.val();
			if(val != '') {
				if(val.toLowerCase() != 'employed' && val.toLowerCase() != 'self-employed') {
					joint_job.val(val);
					joint_sector.val('No full time employment');
				} else {
					if(joint_sector.val() == 'No full time employment') {
						joint_sector.val('');
					}
				}
			}
		}

		var joint_partTime = $('form.validate input[name=joint_partTime]');

		if(joint_partTime.length) {
			joint_partTime.change(function()
				{
					if($(this).val() == '' || $(this).val().toLowerCase() == 'no') {
						hideFields('form.validate .field_joint_partime');
					} else {
						showFields('form.validate .field_joint_partime');
					}
				}
			);
			var joint_partTimeVal = joint_partTime.filter(':checked'), val = '';
			if(joint_partTimeVal.length) {
				val = joint_partTimeVal.val();
			}
			if(val == '' || val.toLowerCase() == 'no') {
				hideFields('form.validate .field_joint_partime');
			} else {
				showFields('form.validate .field_joint_partime');
			}
		}

				var claims = $('form.validate input[name=claims]');

		if(claims.length) {
			var enableAdditionalClaims = false;
			claims.change(function()
				{
					if($(this).val() == '' || $(this).val().toLowerCase() == 'no') {
						hideFields('form.validate .claim1, form.validate .claim2, form.validate .claim3');
						enableAdditionalClaims = false;
						updateBoxColours();
					} else {
						showFields('form.validate .claim1, form.validate .claim2.enabled, form.validate .claim3.enabled');
						enableAdditionalClaims = true;
						updateBoxColours();
					}
				}
			);
			var claimsVal = claims.filter(':checked'), val = '';
			if(claimsVal.length) {
				val = claimsVal.val();
			}
			if(val == '' || val.toLowerCase() == 'no') {
				hideFields('form.validate .claim1, form.validate .claim2, form.validate .claim3');
			} else {
				showFields('form.validate .claim1, form.validate .claim2.enabled, form.validate .claim3.enabled');
				enableAdditionalClaims = true;
			}
			var additionalClaim = $('form.validate input[name=claim1_additionalClaim]');
			additionalClaim.change(function()
				{
					if($(this).is(':checked')) {
						$('form.validate .claim2').addClass('enabled');
						if(enableAdditionalClaims) {
							showFields('form.validate .claim2, form.validate .claim3.enabled');
							updateBoxColours();
						}
					} else {
						$('form.validate .claim2').removeClass('enabled');
						hideFields('form.validate .claim2, form.validate .claim3');
						updateBoxColours();
					}
				}
			);
			if(additionalClaim.is(':checked')) {
				$('form.validate .claim2').addClass('enabled');
				if(enableAdditionalClaims) {
					showFields('form.validate .claim2, form.validate .claim3.enabled');
				}
			} else {
				$('form.validate .claim2').removeClass('enabled');
				hideFields('form.validate .claim2, form.validate .claim3');
			}
			additionalClaim = $('form.validate input[name=claim2_additionalClaim]');
			additionalClaim.change(function()
				{
					if($(this).is(':checked')) {
						$('form.validate .claim3').addClass('enabled');
						if(enableAdditionalClaims) {
							showFields('form.validate .claim3');
							updateBoxColours();
						}
					} else {
						$('form.validate .claim3').removeClass('enabled');
						hideFields('form.validate .claim3');
						updateBoxColours();
					}
				}
			);
			if(additionalClaim.is(':checked')) {
				$('form.validate .claim3').addClass('enabled');
				if(enableAdditionalClaims) {
					showFields('form.validate .claim3');
				}
			} else {
				$('form.validate .claim3').removeClass('enabled');
				hideFields('form.validate .claim3');
			}
		}

		var foundOut = $('form.validate select[name=foundOut]');
		if(foundOut.length) {
			foundOut.change(function()
				{
					var val = $(this).val().toLowerCase();
					if(val == 'other' || val == 'other search engine') {
						showFields('form.validate .field_foundOutOther');
					} else {
						hideFields('form.validate .field_foundOutOther');
					}
				}
			);
			var val = foundOut.val().toLowerCase();
			if(val == 'other' || val == 'other search engine') {
				showFields('form.validate .field_foundOutOther');
			} else {
				hideFields('form.validate .field_foundOutOther');
			}
		}

		var cover = $('form.validate select[name=cover]');
		if(cover.length) {
			cover.change(function()
				{
					var val = $(this).val().toLowerCase();
					if(val == '') {
						hideFields('form.validate .field_buildingsCover, form.validate .field_contentsCover');
					} else if(val == 'contents only') {
						hideFields('form.validate .field_buildingsCover');
						showFields('form.validate .field_contentsCover');
					} else if(val == 'nuildings only') {
						showFields('form.validate .field_buildingsCover');
						hideFields('form.validate .field_contentsCover');
					} else  {
						showFields('form.validate .field_buildingsCover, form.validate .field_contentsCover');
					}
				}
			);
			var val = cover.val().toLowerCase();
			if(val == '') {
				hideFields('form.validate .field_buildingsCover, form.validate .field_contentsCover');
			} else if(val == 'contents only') {
				hideFields('form.validate .field_buildingsCover');
				showFields('form.validate .field_contentsCover');
			} else if(val == 'nuildings only') {
				showFields('form.validate .field_buildingsCover');
				hideFields('form.validate .field_contentsCover');
			} else {
				showFields('form.validate .field_buildingsCover, form.validate .field_contentsCover');
			}
		}
		var contact = $('form.validate input[name~=contactPrefs]');
		if(contact.length) {
			contact.rules('add', {required:true});
		}
		//Do this last so we don't have to do it more than once when initing the page.
		updateBoxColours();
	}
);
