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 = '\
\