var programSearch = {
                        '$inputField': null,
                        '$searchButton': null,
                        'autoCompleteUrl': '/partnerprogram/autocomplete',
                        'searchUrl': '/partnerprogram/index',
                            
                        'init': function(){
                            var scope = this;
                            scope.$inputField = $('#partSearch');
                            scope.$searchButton = $('#submitSearch');
                            
                            //auf programmübersichtsseite gibts mehr filter -> füge diese hinzu
                            scope.addAdditionalFilters();
                            scope.initFilterCount();
                            scope.initToggleFilterBox();
                            scope.initAutocomplete();
                            scope.initSearchButton();
                        },
                        'initToggleFilterBox': function(){
                            var scope = this;
                            $( ".searchFilterCnt" ).click(function() {
                                $( ".searchFilterContent" ).toggleClass( "active" );
                            });
                            
                            $(document).click(function(event) { 
                                if(!$(event.target).closest('.searchFilterContent').length && !$(event.target).closest('.searchFilterCnt').length) {
                                    if($('.searchFilterContent').hasClass("active")) {
                                        $('.searchFilterContent').removeClass("active");
                                    }
                                }        
                            })
                        },
                        
                        'initFilterCount': function(){
                        	// Zählt wie viele Checkboxen aktiv sind
                            var checked_boxes = $('.searchFilterCb:checked').length;
                            $('#count-checked-checkboxes').text(checked_boxes);
                            var $checkboxes = $('.searchFilterCb[type="checkbox"]');
                            $checkboxes.change(function(){
                                var countCheckedCheckboxes = $checkboxes.filter(':checked').length;
                                $('#count-checked-checkboxes').text(countCheckedCheckboxes);
                            });
                        },
                        
                        'addAdditionalFilters': function(){
                        	$('#filter').find('option').each(function(index, elem){
                        		var foundValue = $(elem).val();
                        		var filterExists = ($('input[name="searchFilter[]"][value="' + foundValue + '"]').length > 0);
                        		if(!filterExists){
                        			var optionLabel = $(elem).text();
                        			var isSelected = $(elem).prop('selected');
                        			var newFilter = '');
                        			$('.searchFilterContent').append(newFilter);
                        		}
                        	});
                        },
                        
                        'getSearchParams': function(){
                            var filters = [];
                            $('.searchFilterContent').find('input[name="searchFilter[]"]').each(function(index, checkbox){
                                if( $(checkbox).prop('checked') ){
                                    filters.push($(checkbox).val());
                                }
                            });
                            
                            var keyword = $('#partSearch').val();
                            var searchParams = [];
                            if(filters.length != 0){
                                searchParams.push({ name: 'filter', value: filters.join() });
                            }
                            if(keyword.trim() != ''){
                                searchParams.push({ name: 'keyword', value: encodeURI(keyword) });
                            }
                            
                            //falls suche auf programmübersichtsseite, dann gibt es noch sortierung und kategoriefilter
                            if( $('#category').length == 1 ){
                            	searchParams.push({ name: 'category', value: $('#category').val() });
                            }
                            if( $('#sort').length == 1 ){
                            	searchParams.push({ name: 'sort', value: $('#sort').val() });
                            }
                            if( $('#status').length == 1 ){
                            	searchParams.push({ name: 'status', value: $('#status').val() });
                            }
                            if( $('#salesRegion').length == 1 ){
                            	var countries = $('#salesRegion').val() || ['all'];
                            	countries = countries.join();
                            	searchParams.push({ name: 'salesRegion', value: countries });
                            }
                            //falls suche über startseite, dann lege in response cookie mit filter parametern an
                            searchParams.push({ name: 'landingPage', value: 1 });
                            return searchParams;
                        },
                        'initAutocomplete': function(){
                            var scope = this;
                            scope.$inputField.autocomplete({
                                source: function(request, response){
                                    var filterParams = [];
                                    filterParams.push({ name: "matches", value: request.term });
                                    $.post(scope.autoCompleteUrl, filterParams, function(data){
                                        response(data.data);
                                    });
                                },
                                select: function(ev, ui){
                                    ev.preventDefault();
                                    location.href = '/partnerprogramme/' + ui.item.id;
                                },
                            }).data("ui-autocomplete")._renderItem = scope._resultRenderItem;
                        },
                        '_resultRenderItem': function(ul, item){
                            var inner_html = '\
                                \
                                    
\