var select_multiple = new Object();

function init_multiple_select (name) {
	
	// Open multiple-select field 
	$('select_multiple_'+name+'_clicker').observe('click',function(event){
	    $('multiple_select_overlay').show();
	    
	    if ($('select_multiple_'+name+'_clicker').className.indexOf('multiple_select_close') != -1) {
	    	$('select_multiple_'+name+'_clicker').removeClassName('multiple_select_close');
	    }
	    else {
	    	$('select_multiple_'+name+'_clicker').addClassName('multiple_select_close');
	    }
	    
	    Effect.toggle('select_multiple_'+name+'_options' ,'blind',{  
	        duration: 0.3
	    });  
	    Event.stop(event);  
	    return false;  
	}.bindAsEventListener(select_multiple.name));
}

function hideAllSelects () {

	// Hides all open multiple-selects (used on blur)
	$$('.select_multiple_container').each(function (s) {
	    new Effect.BlindUp(s,{  
	        duration: 0.1  
	    });
	    $('multiple_select_overlay').hide();
	});
	$$('.multiple_select_close').each(function(s) {
		s.removeClassName('multiple_select_close');
	});
}

function CheckUncheck (checkboxID, name, firstOption) {

	// Check/uncheck checkbox when its label is clicked 
	if ($(checkboxID).checked) {
		$(checkboxID).checked = false;
	}
	else {
		$(checkboxID).checked = true;
	}
	AddRemoveValue($(checkboxID), name, firstOption);
}


function AddRemoveValue (checkbox, name, firstOption) {

	checkboxName = $('select_multiple_'+name+'_checkbox_'+checkbox.value).innerHTML;

	if (checkbox.checked === true) {
	
		// Add selected option to hidden field (used to create search query)
		$('select_multiple_'+name+'_values').value = $('select_multiple_'+name+'_values').value + ',' + checkbox.value;
		
		// Adds selected option to select field (To show all selected options in field)
		$('select_multiple_'+name+'_field').innerHTML = $('select_multiple_'+name+'_field').innerHTML + ', ' + checkboxName;
		$('select_multiple_'+name+'_field').innerHTML = $('select_multiple_'+name+'_field').innerHTML.replace(firstOption, '');
	}
	else {
	
		// Removes option if unselected (with comma at beginning)
		$('select_multiple_'+name+'_values').value = $('select_multiple_'+name+'_values').value.replace(','+checkbox.value, '');
		
		// Removes first option if unselected (no comma at beginning)
		if ($('select_multiple_'+name+'_values').value.substring(0, checkbox.value.length+1) == checkbox.value+',') {
			$('select_multiple_'+name+'_values').value = $('select_multiple_'+name+'_values').value.substring(checkbox.value.length);
		}
		
		// Removes unselected option from select field
		$('select_multiple_'+name+'_field').innerHTML = $('select_multiple_'+name+'_field').innerHTML.replace(', ' + checkboxName, '');
		$('select_multiple_'+name+'_field').innerHTML = $('select_multiple_'+name+'_field').innerHTML.replace(checkboxName, '');
		
		// Sets select field value to ALL when no option is selected
		if ($('select_multiple_'+name+'_field').innerHTML == '' || $('select_multiple_'+name+'_field').innerHTML == ',' || $('select_multiple_'+name+'_field').innerHTML == ', ') {
			$('select_multiple_'+name+'_field').innerHTML = firstOption;
		}
	}
	
	// Removes first commas
	if ($('select_multiple_'+name+'_field').innerHTML.charAt(0) == ',' && $('select_multiple_'+name+'_field').innerHTML.charAt(1) == ' ') {
		$('select_multiple_'+name+'_field').innerHTML = $('select_multiple_'+name+'_field').innerHTML.substring(2);
	}
	if ($('select_multiple_'+name+'_values').value.charAt(0) == ',') {
		$('select_multiple_'+name+'_values').value = $('select_multiple_'+name+'_values').value.substring(1);
	}
	
	// Check: if any checkboxes are checked, else empty hidden field (security reasons)
	var anyChecked = false;
	$$('.select_multiple_'+name+'_checkboxes').each(function(s) {
		if (s.checked) {
			anyChecked = true;
		}
	})
	if (anyChecked == false) {
		$('select_multiple_'+name+'_values').value = '';	
	}
}
