$(document).ready(function() {	
	$('.selector1').hide();
	$('.selector2').hide();
	$('.selector3').hide();
	$('.selector4').hide();
	$('.selector5').hide();
	$('.selector6').hide();
	$('.selector7').hide();
	$('.selector8').hide();
	$('.selector9').hide();
	
	$('.updatebutton').show();
	$('.clearbutton').show();	
	
	$('#maps').show();
	
	$('#othertitle').parent().hide();
	$('#title').change(function() {
		if (this.value == 'other') {
			$('#othertitle').parent().show();
		} else {
			$('#othertitle').parent().hide();
		}
	});
	
	$('#otherposition').parent().parent().hide();
	$('#position').change(function() {
		if (this.value == 'other') {
			$('#otherposition').parent().parent().show();
		} else {
			$('#otherposition').parent().parent().hide();
		}
	});	
	
	$('#postcode').parent().prev().find('label').removeClass('optional').addClass('required').html('Postcode *');	
	
	if ($('#country').val() == 'United Kingdom') {
		$('#postcode').parent().parent().show();								
	} else {
		$('#postcode').parent().parent().hide();	
	}	
	
	$('#country').change(function() {
		if (this.value == 'United Kingdom') {
			$('#postcode').parent().parent().show();						
		} else {
			$('#postcode').val("");
			$('#postcode').parent().parent().hide();			
		}
	});			
	
	$('#aop_number').parent().parent().hide();
	$('#membership-AOP').click(function() {
		if (this.checked) {
			$('#aop_number').parent().parent().show();
			$('#goc_number').parent().prev().find('label').removeClass('optional').addClass('required').html('GOC number *');
		} else {
			$('#aop_number').parent().parent().hide();
			$('#goc_number').parent().prev().find('label').removeClass('required').addClass('optional').html('GOC number');			
		}
	});		

	$('#abdo_number').parent().parent().hide();
	$('#membership-ABDO').click(function() {
		if (this.checked) {
			$('#abdo_number').parent().parent().show();
		} else {
			$('#abdo_number').parent().parent().hide();
		}
	});			
	
	$('#aoi_number').parent().parent().hide();
	$('#membership-AOI').click(function() {
		if (this.checked) {
			$('#aoi_number').parent().parent().show();
		} else {
			$('#aoi_number').parent().parent().hide();
		}
	});		

	$('#practice').parent().parent().hide();
	$('#otherstatus').parent().parent().hide();
	
	$('#practice').parent().prev().find('label').removeClass('optional').addClass('required').html('Main practice *');
	$('#otherstatus').parent().prev().find('label').removeClass('optional').addClass('required').html('Other *');
	
	$('[name=status]').click(function() {
		switch (this.id) {
			case 'status-0':
				$('#practice').parent().parent().hide();
				$('#otherstatus').parent().parent().hide();				
				break;
			case 'status-1':
				$('#practice').parent().parent().show();
				$('#otherstatus').parent().parent().hide();
				break;
			case 'status-3':
				$('#practice').parent().parent().hide();				
				$('#otherstatus').parent().parent().show();								
				break;
			default:
				$('#practice').parent().parent().hide();
				$('#otherstatus').parent().parent().hide();				
				break;
		}
	});		
			
	$('#confirmEmail').live("paste", function(e) {
		return false;
	});		
	
	$('#password2').live("paste", function(e) {
		return false;
	});		
	
	$('#irishcounty-All').parent().parent().hide();
	$('#irishcounty-All').parent().parent().prev().hide();	
	
	$('#postcodetown').click(function() {
		setFields('postcodetown');
	});
	
	$('#anyuk').click(function() {
		setFields('anyuk');
	});
	
	$('#anyirish').click(function() {
		setFields('anyirish');
		if (this.checked == true) {
			$('#irishcounty-All').parent().parent().show();
			$('#irishcounty-All').parent().parent().prev().show();
		} else {
			$('#irishcounty-All').parent().parent().hide();			
			$('#irishcounty-All').parent().parent().prev().hide();			
		}
	});	
	
	$('#irishcounty-All').click(function() {
		if (this.checked == true) {
			$('[name=irishcounty[]]').each(function() {
				$(this).attr('checked', 'checked');
			});
		} else {
			$('[name=irishcounty[]]').each(function() {
				$(this).removeAttr('checked');
			});			
		}
	});
	
	$('#anyoverseas').click(function() {
		setFields('anyoverseas');
	});	
	
//	$('[name=interests[]]:checked').attr('disabled', true);
	
	$('#autofill').click(function() {
		var gocNumber = $('#goc').val();
		
		if (gocNumber == '') {
			alert("Please enter a GOC number");			
		} else {
		
			var ajaxTarget = "/register/autofill/goc/" + gocNumber + "/format/html";	
			var formAction = "/register/autofill/goc/" + gocNumber;
		
			$('#dialog-goc').dialog({
				bgiframe: true,
				autoOpen: true,
				width: 600,
				height: 500,
				modal: true,
				buttons: {
					Save: function() {						
						$('form#gocautofill').submit();				
					},
					Cancel: function() {
						$(this).dialog('close');
					}
				},
				close: function() {			
					$(this).dialog('destroy');
				},
				open: function() {
					$.get(ajaxTarget, {}, function(data) {
						$('#dialog-goc .content').html(data);
						$('#dialog-goc div.action').hide();
						
						$('form#gocautofill').attr('action', formAction);
						$('form#gocautofill').ajaxForm({"success": validateAutofillForm})						
					});					
					
					$('#dialog-goc .content').show();				
				}
			});				
		}	

		return false;	
	});
	
	$('#postcodetown').keyup(function() {		
		
		var search = this.value;				
		
		var ajaxTarget = "/register/gettowns/search/" + search + "/format/json";			
		
		var html;		
					
		$.getJSON(ajaxTarget, function(data) {					
			$('#autocomplete_outer').remove();			
			
			if (data.length > 0 && search.length > 1) {				
				html = '<div id="autocomplete_outer">';
				html += '<div id="autocomplete_inner" class="autocomplete">';
				html += '</div>';
				html += '</div>';			
				
				$('#maintabs-2').append(html);
				
				$.each(data, function(index, town) {
					html = '<div id="autocomplete_val' + index + '" onclick="selectAutocomplete(' + index + ');" onmouseover="hoverAutocomplete(' + index + ');">';
					html += town;
					html += '</div>';
					$('#autocomplete_inner').append(html);
				});				
			}			
		});				
	});		
		
	$('.selectors').children().prepend('<thead><tr><th>Postcode</th><th colspan="3">Distance (miles)</th></tr></thead>');	
	
});

function selectAutocomplete(index) {
	$('#postcodetown').val(stripHTML($('#autocomplete_val' + index).html()));
	$('#autocomplete_outer').remove();
}

function hoverAutocomplete(index) {
	$('#autocomplete_inner div').removeClass('autocomplete_selected');
	$('#autocomplete_val' + index).addClass('autocomplete_selected');
}

function stripHTML(oldString) {

  	var newString = "";
   	var inTag = false;
   	for(var i = 0; i < oldString.length; i++) {
   
       	if(oldString.charAt(i) == '<') inTag = true;
        if(oldString.charAt(i) == '>') {
	       	if(oldString.charAt(i+1)=="<") {
	        	//dont do anything
			} else {
				inTag = false;
				i++;
			}
   		}
   
  		if(!inTag) newString += oldString.charAt(i);
  	}
  	
   	return newString;
}

function setFields(id) {
	
//	if (id != 'postcodetown') {
//		$('#postcodetown').val('');
//	}
//	if (id != 'anyuk') {
//		$('#anyuk').removeAttr('checked');
//	}
//	if (id != 'anyirish') {	
//		$('#anyirish').removeAttr('checked');		
//		$('#irishcounty').val('');
//		$('#irishcounty').parent().hide();
//		$('#irishcounty').parent().prev().hide();					
//	}
//	if (id != 'anyoverseas') {	
//		$('#anyoverseas').removeAttr('checked');
//	}	
}

function validateForm(data) {				
	
	eval("var data=" + data);
	
	$('.errors').remove();
	
 	if (data.errors) {
 		var fields = Array();
 		var fieldPos = 0;
 		var errors = '';
 		
 		for (var fieldId in data.errors) {
 			fields[fields.length] = fieldId;
 		}
 		
		for (var field in data.errors) {			
			errors = '';
			for (var errorcode in eval("data.errors." + field)) {
				var error = eval("data.errors." + field + "." + errorcode);
				errors += '<li>' + error + '</li>';
			}			
			$('#' + fields[fieldPos]).after('<ul class="errors">' + errors + '</ul>');
			fieldPos++;
		}
  	} else if (data.redirect) {
  		document.location = data.redirect;
  	}  	
}

function validateAutofillForm(data) {		
	
	eval("var data=" + data);	
	
	if (data.redirect) {		
		$('#dialog-goc').dialog('close');

		if (data.address.company) {
			$('#company').val(data.address.company);
		} else {
			$('#company').val('');
		}
		
		if (data.address.line1) {
			$('#address1').val(data.address.line1);
		} else {
			$('#address1').val('');
		}
		
		if (data.address.line2) {
			$('#address2').val(data.address.line2);
		} else {
			$('#address2').val('');
		}
		
		if (data.address.line3) {
			$('#address3').val(data.address.line3);
		} else {
			$('#address3').val('');
		}
		
		if (data.address.town) {
			$('#town').val(data.address.town);
		} else {
			$('#address3').val('');
		}
		
		if (data.address.postcode) {
			$('#postcode').val(data.address.postcode);
		} else {
			$('#postcode').val('');
		}
  		
  		
  	}  	
}

function validatePostcodeForm(data) {	
	eval("var data=" + data);			
	
	var formValid = false;
	var postcode;
	var distance;
	
	var i;
	for (i = 0; i < 10; i++) {
		postcode = $('#postcodes-p' + i).val();
		distance = $('#distances-d' + i).val();
		
		if (postcode != '' && distance != '') {
			formValid = true;
		}
	}
	
	if (!formValid) {
		$('#postcodeError').html('You must enter at least one postcode and distance');
	} else {
  		document.location = data.redirect;		
	}
}