// checkbox canton mapping
var field_map = new Array();

field_map['ZH']	= 'canton-zh';
field_map['SH']	= 'canton-sh';
field_map['GL']	= 'canton-gl';

// document.ready	
$(function() {

	// hide all cantons
	$('#profile-geography p').each(function() {
		if (this.id != 'canton-select')
		{	
			$(this).hide();
		}
	});
	
	// add change listener to all canton checkboxes
	$('#canton-select :input[type!=hidden]').each(function() {
	
		var canton = this.value;
		
		$(this).change(function() {
		
			// show corresponding canton div
			// if this was checked
			var canton_div = $('#' + field_map[canton]);
			var circle_div = $('#circle-zh');
			
			if (this.checked)
			{
				// show
				canton_div.show('fast');
			}
			else
			{
				// unselect all inputs
				unselect_inputs(canton_div);
				
				// hide ZH circles
				if (canton == 'canton-zh')
				{
					unselect_inputs(circle_div);
					circle_div.hide('fast');
				}
								
				// hide
				canton_div.hide('fast');
			}
		});
	});
	
	// special for circle zurich
	$('#canton-zh :input[type!=hidden]').each(function() {
	
		var district = this.value;
		var circle_div = $('#circle-zh');
		
		if (district == 'Zürich')
		{		
			$(this).change(function() {			
			
				if (this.checked)
				{
					// show circle
					circle_div.show('fast');
				}
				else
				{
					// unselect all inputs
					unselect_inputs(circle_div);
					
					// hide circle
					circle_div.hide('fast');
				}
			});
		}
	});
	
	// trigger initially
	$('#canton-select :input[type!=hidden]').change();
	$('#canton-zh :input[type!=hidden]').change();
	
	// setup service group accordion
	$('#angebotsliste .service_group h3 a').click(function() {

		// clicked group div
		var clicked = $(this).parent().next();
		var clicked_id = clicked.attr('id');
	
		// hide all other
		$('#angebotsliste .service_group div').each(function() {
			if (this.id != clicked_id)
			{
				//console.log(this.id);
				$(this).hide('fast').removeClass('expanded');
			}
		});		
		
		// toggle class and visibility for group div
		clicked.toggleClass('expanded').toggle('fast');
		
		return false;
	});
	
	// initially hide all that are not 'expanded'
	$('#angebotsliste .service_group div').each(function() {
		if (!$(this).hasClass('expanded'))
		{
			$(this).hide();
		}
	});
	
});

/**
 * Deselects all checkbox children elements in the given DOM (jquery) element.
 */
function unselect_inputs(elem)
{
	elem.children(':input').each(function() {
		this.checked = false;
	});
}