Index: branches/5.2.x/core/admin_templates/js/grid_filters.js
===================================================================
--- branches/5.2.x/core/admin_templates/js/grid_filters.js	(revision 16550)
+++ branches/5.2.x/core/admin_templates/js/grid_filters.js	(revision 16551)
@@ -1,153 +1,153 @@
 /*
 
 Class used to convert <select multiple="multiple" ...> into div with checkboxes for each option
 
 The select is hidden, but the data is still submitted through hidden control. This class is used for multioptions filter.
 
 Basic usage:
 
 <script type="text/javascript">
 	MultiOptions.ConvertSelect('hidden_id');
 </script>
 
 * @TODO: Make the Search/Close buttons optional.
 * This will make the class flexible and it could be used for other purposes also.
 
 */
 
 function MultiOptions() {}
 
 MultiOptions.Selectors = [];
 
 MultiOptions.ConvertSelect = function($id, $ajax) {
 	// custom_filters[partner-service][Default][Status][multioptions]
 	$id.match(/custom_filters\[(.*?)\]\[(.*?)\]\[.*?\]\[.*?\]/);
 
 	var $prefix = RegExp.$1;
 	var $grid_name = RegExp.$2;
 	var $select = $('#' + jq($id) + '_select');
 
 	if (!$select.length) {
 		return ;
 	}
 
 	// hide <select> element
 	$select.hide();
 
 	// create div with checkboxes and buttons
 	var $cur_index = MultiOptions.Selectors.length;
 	var $div = $('<div id="' + $id + '_div" class="multioptions_filter"></div>');
 
 	MultiOptions.Selectors.push($id);
 
 	// set defaults for missing phrases
 	if (!phrases['la_btn_SelectAll']) phrases['la_SelectAll'] = 'Select All';
 	if (!phrases['la_btn_OpenMultiFilter']) phrases['la_OpenMultiFilter'] = 'Open Filter';
 	if (!phrases['la_btn_Search']) phrases['la_ToolTip_Search'] = 'Search';
 	if (!phrases['la_btn_Close']) phrases['la_tooltip_close'] = 'Close';
 
 	// create div with checkboxes
 	var $options_div = $('<div></div>');
 
 	// add "Select All" checkbox
 	$options_div.append(
 		'<input type="checkbox" id="_mutlioptions_cb_' + $cur_index + '_all"/>\
 		<label for="_mutlioptions_cb_' + $cur_index + '_all">' + phrases['la_SelectAll'] + '</label><br/>'
 	);
 
 	var $options = $('option', $select);
 
 	// add each <select> option as checkbox to above div
 	$options.each(
 		function () {
 			var $checked = this.selected ? ' checked="checked"' : '';
 
 			$options_div.append(
 				'<input type="checkbox" class="_mutlioptions_cb_' + $cur_index + '" id="_mutlioptions_cb_' + $cur_index + '_' + this.value + '"' + $checked + ' value="' + this.value + '"/>\
 				<label for="_mutlioptions_cb_' + $cur_index + '_' + this.value + '">' + this.text + '</label><br/>'
 			);
 		}
 	);
 
 	// add buttons to search or close filter
 	$div
 	.append($options_div)
 	.append(
 		'<div style="margin-top: 7px; text-align: center">\
 			<input type="button" class="button" value="' + phrases['la_ToolTip_Search'] + '" onclick="search(\'' + $prefix + '\', \'' + $grid_name + '\', ' + parseInt($ajax) + ')"/>&nbsp;\
 			<input type="button" class="button" value="' + phrases['la_tooltip_close'] + '" onclick="MultiOptions.CloseSelector(' + $cur_index + ')">\
 		</div>'
 	);
 
 	$('#' + jq($form_name)).append($div);
 
 	// set click handlers
 	$('#_mutlioptions_cb_' + $cur_index + '_all')
 	.click(
 		function ($e) {
 			MultiOptions.SelectAll($cur_index);
 		}
 	)
-	.prop('checked', $options.length == $options.filter(':selected').length > 0);
+	.prop('checked', $options.length == $options.filter(':selected').length);
 
 	$('input._mutlioptions_cb_' + $cur_index).click(
 		function ($e) {
 			MultiOptions.ItemChecked($cur_index);
 		}
 	);
 
 	// add filter placeholder, used for filter opening filter
 	var $filter = $('<div class="filter" style="cursor: pointer;">' + phrases['la_OpenMultiFilter'] + '</div>');
 
 	if ($select.hasClass('filter-active')) {
 		$filter.addClass('filter-active');
 	}
 
 	$filter
 	.click(
 		function($e) {
 			var $offset = $(this).offset();
 			var $box_left = $offset.left;
 
 			$('#' + jq($id) + '_div').css( {left: 0, top: $offset.top} ).show();
 
 			var $box_width = $('#' + jq($id) + '_div').outerWidth();
 
 			if ($box_left + $box_width > document.body.offsetWidth) {
 				// move left
 				$box_left -= $box_width;
 		 	}
 
 		 	$('#' + jq($id) + '_div').css('left', $box_left);
 		}
 	)
 	.insertAfter($select);
 }
 
 MultiOptions.CloseSelector = function(selector_index) {
 	$('#' + jq(MultiOptions.Selectors[selector_index]) + '_div').hide();
 }
 
 MultiOptions.ItemChecked = function(selector_index) {
 	// sync hidden field
 	var $reg_exp = new RegExp('^_mutlioptions_cb_' + selector_index + '_(?!all)([0-9A-Za-z-]+)');
 	update_checkbox_options($reg_exp, MultiOptions.Selectors[selector_index]);
 
 	// update "Select All" checkbox
 	var $select_all = $('#_mutlioptions_cb_' + selector_index + '_all');
 	var $options = $("input[type='checkbox']", '#' + jq(MultiOptions.Selectors[selector_index]) + '_div').not($select_all);
 
-	$select_all.prop('checked', $options.length == $options.filter(':checked').length > 0);
+	$select_all.prop('checked', $options.length == $options.filter(':checked').length);
 }
 
 MultiOptions.SelectAll = function(selector_index) {
 	// set all checkbox to match "Select All" checkbox
 	var $select_all = $('#_mutlioptions_cb_' + selector_index + '_all');
 	var $checked = $select_all.prop('checked');
 
 	$("input[type='checkbox']", '#' + jq(MultiOptions.Selectors[selector_index]) + '_div').not($select_all).prop('checked', $checked);
 
 	// sync hidden field
 	var $reg_exp = new RegExp('^_mutlioptions_cb_' + selector_index + '_(?!all)([0-9A-Za-z-]+)');
 	update_checkbox_options($reg_exp, MultiOptions.Selectors[selector_index]);
 }