'use strict';
$(function () {
$.ajaxSetup({ cache: false });
var FILTERING_DATA = $.parseJSON($("#filterJson").text());
var updateYearSelector = function (selectedYear) {
var years = FILTERING_DATA.allYears;
var selectedCategory = $('#categorySelector').find(':selected').val();
if (selectedCategory != 'ALL') {
years = FILTERING_DATA.yearsByCategory[selectedCategory];
}
var $periodSelector = $('#selectPeriod');
if (typeof years !== 'undefined') {
var dateRange = years[years.length - 1] + '-' + years[0];
if (years[0] != years[years.length - 1]) {
$periodSelector.append('');
}
$.each(years, function (key, value) {
var $option = $('');
if (selectedYear == value) {
$option.prop("selected", true);
}
$periodSelector.append($option);
});
}
};
var getLatestYearForCategory = function (category) {
var years = FILTERING_DATA.yearsByCategory[category];
if (category == 'ALL') {
years = FILTERING_DATA.allYears;
}
if(typeof lastname !== "undefined") {
return years[0] != years[years.length - 1] ? years[years.length - 1] + '-' + years[0] : years[0];
}else{
return "";
}
};
updateYearSelector();
$(document).on('click', '.pagination a', function (event) {
goToPage(this);
});
$('.pagination a').on('click', function (event) {
goToPage(this);
});
var goToPage = function (pageLink) {
var page = $(pageLink).data('page');
if (page) {
var year = $('#selectPeriod').find(':selected').val();
var url = composeUrl(year);
url.setParam('page', page);
$.get(url.toString(), function (data) {
updatePageContent(data);
updateYearSelector(year);
});
}
};
$('#categorySelector').on('change', '#selectCategory', function () {
var category = $('#categorySelector').find(':selected').val();
var year = getLatestYearForCategory(category);
var url = composeUrl(year, category);
$.get(url.toString(), function (data) {
updatePageContent(data);
updateYearSelector();
});
});
$('#periodSelector').on('change', '#selectPeriod', function () {
var year = $('#selectPeriod').find(':selected').val();
var url = composeUrl();
$.get(url.toString(), function (data) {
updatePageContent(data);
updateYearSelector(year);
});
});
var updatePageContent = function (data) {
$('#paginationTop').html($(data).find('#paginationTop').children());
$('#periodSelector').html($(data).find('#periodSelector').children());
$('#categorySelector').html($(data).find('#categorySelector').children());
$('#dateSelector').html($(data).find('#dateSelector').children());
$('#news-feed').html($(data).find('#news-feed').children());
$('#paginationContainer').html($(data).find('#paginationContainer').children());
$.scrollTo($('header h1'), {duration: 200});
};
var composeUrl = function (year, category) {
year = typeof year !== 'undefined' ? year : $('#selectPeriod').find(':selected').val();
category = typeof category !== 'undefined' ? category : $('#categorySelector').find(':selected').val();
var startTime = $.isNumeric(year) ? new Date(year, 0, 1, 0, 0, 0, 0).getTime() : 'NA';
var endTime = $.isNumeric(year) ? new Date(parseInt(year) + 1, 0, 0, 1, 0, 0, 0).getTime() : 'NA';
var url = new URL();
url.setURL(window.location.href);
url.setParam('startTime', startTime);
url.setParam('endTime', endTime);
url.setParam('category', category);
return url;
};
var URL = function () {
this.url = window.location.href.replace('#', '');
this.setURL = function (newURL) {
this.url = newURL;
};
this.setParam = function (paramName, paramValue) {
var params = this.url.split('?')[1];
if (!params) {
params = paramName + '=' + paramValue;
} else {
var paramExist = false;
var pairs = params.split('&');
for (var i = 0; i < pairs.length; i++) {
var name = pairs[i].split('=')[0];
if (name == paramName) {
paramExist = true;
pairs[i] = name + '=' + paramValue;
}
}
if (!paramExist) {
pairs.push(paramName + '=' + paramValue);
}
params = pairs.join('&');
}
this.url = this.url.split('?')[0] + '?' + params;
};
this.toString = function () {
return this.url;
};
};
});