$(function(){
	//alert('in');
	//#set up initial form view
	var ctype = $('input[name="individual"]:checked').val();
	//#show individual areas and hide practice only or vice versa
	//alert(ctype);
	tailorForm(ctype);
	//#toggle visibility of individual and practice only form areas whenever counsellor type radio button is changed
	//#need to use click here rather than change, as ie7 flaky otherwise!
	$('input[name="individual"]').click(function(){
		tailorForm($(this).val());
	});	
	//#google map for location
	var GoogleMapper = { maps: '', icon: '', marker: '' };
	GoogleMapper.icon = new GIcon();
	GoogleMapper.icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	GoogleMapper.icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	GoogleMapper.icon.iconSize = new GSize(12, 20);
	GoogleMapper.icon.shadowSize = new GSize(22, 20);
	GoogleMapper.icon.iconAnchor = new GPoint(6, 20);
	GoogleMapper.icon.infoWindowAnchor = new GPoint(5, 1);

	GoogleMapper.maps = new GMap2(document.getElementById('map'));
	GoogleMapper.maps.setCenter(new GLatLng(53.383328, -7.866210), 6);
	GoogleMapper.maps.addControl(new GSmallMapControl());
	GEvent.addListener(GoogleMapper.maps, 'dblclick', function() {

		if (GoogleMapper.marker) { return true; }
		var latitude  = GoogleMapper.maps.getCenter().lat();
		var longitude = GoogleMapper.maps.getCenter().lng();

		$('#latitude').val(latitude);
		$('#longitude').val(longitude);

		GoogleMapper.marker = new GMarker(GoogleMapper.maps.getCenter(), {draggable: true, icon: GoogleMapper.icon});
		GoogleMapper.maps.addOverlay(GoogleMapper.marker);

		if (GoogleMapper.marker) {
			GEvent.addListener(GoogleMapper.marker, 'dragend', function() {
				var lat = GoogleMapper.marker.getPoint().lat();
				var lng = GoogleMapper.marker.getPoint().lng();
				$('#latitude').val(lat);
				$('#longitude').val(lng);
				GoogleMapper.maps.setCenter(new GLatLng(lat, lng), GoogleMapper.maps.getZoom());
			});
		}
	});
	//#validate the form
	$('#register').validate({
		invalidHandler: function(form, validator) {
      		var errors = validator.numberOfInvalids();
      		if (errors) 
			{
				var message = errors == 1
				  ? 'You missed 1 required field. It has been highlighted'
				  : 'You missed ' + errors + ' required fields. They have been highlighted';
				  alert(message);
      		} 
    	},   
	  rules: {
		firstname: {
		  required: '#individual:checked'
		},
		lastname: {
		  required: '#individual:checked'
		},
		counselling_name: {
		  required: '#practice:checked'
		},
		"counsellingareas[]": 'required',
		"patients[]": 'required'
	  },
		errorElement: 'em',
		errorPlacement: function(error, element){
			//#special case: consent checkbox at end
			if(element.attr('id') == 'consent')
			{
				error.insertAfter(element);
			}
			//#special case: all other checkbox groups
			else if(element.is(':checkbox')) 
			{
				error.appendTo(element.parents('div.checkboxes').children('p.heading'));	
			}
			else
			{
				error.insertAfter(element);
			}
		 }
	});
});

//#takes in counsellor type (1 for individual, 0 for practice)
//#shows/hides parts of form appropriate for counsellor type
function tailorForm(ctype)
{
	//alert('in');
	//#individual
	if(ctype == 1)
	{
		$('.individual').show();
		$('.practice').hide();
	}
	//#practice
	else
	{
		$('.individual').hide();
		$('.practice').show();
	}
}
