+ print $fh qq|</ol>\n|;
+ }
+}
+
+
+sub count_author_years {
+ my $years = shift;
+ my ($authid) = @_;
+ foreach my $type ( keys %{ $authors->{$authid} } ) {
+ foreach my $category ( keys %{ $authors->{$authid}->{$type} } ) {
+ foreach my $biblionumber ( @{ $authors->{$authid}->{$type}->{$category} } ) {
+ $years->{ $biblio_year->{ $biblionumber } }->{ $type . '-' . $category }++;
+ }
+ }
+ }
+ return $years;
+}
+
+my @toc_type_label = (
+'aut' => 'Primarno autorstvo',
+'edt' => 'Uredništva',
+'trl' => 'Prijevodi',
+'_ostalo' => 'Ostalo',
+);
+
+sub html_year_selection {
+ my $fh = shift;
+ my @authids = @_;
+
+ print $fh qq|<span id="years">Godine:\n|;
+ my $type_cat_count = {};
+ my $years;
+
+ foreach my $authid ( @authids ) {
+ $years = count_author_years( $years, $authid );
+ }
+
+ foreach my $year ( sort { $b <=> $a } keys %$years ) {
+ print $fh qq|<label><input name="year_selection" value="$year" type=checkbox onClick="toggle_year($year, this)" checked="checked">$year</label> \n|;
+ foreach my $type_cat ( keys %{ $years->{$year} } ) {
+ $type_cat_count->{ $type_cat } += $years->{$year}->{$type_cat};
+ my ($type,$cat) = split(/-/, $type_cat);
+ $type_cat_count->{_toc}->{$type}->{$cat}++;
+ $type_cat_count->{_toc_count}->{$type} += $years->{$year}->{$type_cat};
+ }
+ }
+
+ print $fh qq|
+<input type=button value="all" onClick="all_years(1)">
+<input type=button value="none" onClick="all_years(0)">
+ |;
+
+ print $fh qq|</span>|;
+
+ print $fh q|
+<script>
+
+var years = |, encode_json($years), q|;
+
+var type_cat_count = |, encode_json($type_cat_count), q|;
+
+function year_show(year) {
+ $('.y'+year).show();
+ console.debug('show', year);
+ for(var type_cat in years[year]) {
+ if ( ( type_cat_count[ type_cat ] += years[year][type_cat] ) == years[year][type_cat]) {
+ $('a[name="'+type_cat+'"]').show();
+ console.debug(type_cat, 'show');
+ }
+ $('#toc-count-'+type_cat.replace('.','-')).text( type_cat_count[ type_cat ] );
+ }
+}
+
+function year_hide(year) {
+ $('.y'+year).hide();
+ console.debug('hide', year);
+ for(var type_cat in years[year]) {
+ if ( ( type_cat_count[ type_cat ] -= years[year][type_cat] ) == 0 ) {
+ $('a[name="'+type_cat+'"]').hide();
+ console.debug(type_cat, 'hide');
+ }
+ $('#toc-count-'+type_cat.replace('.','-')).text( type_cat_count[ type_cat ] );
+ }
+}
+
+function toggle_year(year, el) {
+ if ( el.checked ) {
+ year_show(year);
+ } else {
+ year_hide(year);
+ }
+}
+
+function all_years( turn_on ) {
+ $('input[name=year_selection]').each( function(i,el) {
+ if ( turn_on ) {
+ if ( ! el.checked ) {
+ el.checked = true;
+ year_show( el.value );
+ }
+ } else {
+ if ( el.checked ) {
+ el.checked = false;
+ year_hide( el.value );
+ }
+ }
+ } );
+}
+
+$(document).ready( function() {
+ console.info('ready');
+
+ $('input[name=year_selection]').each( function(i, el) {
+ var year = el.value;
+ console.debug( 'on load', year, el.checked );
+ if (! el.checked) year_hide(year);
+ });
+
+});
+</script>
+
+ |;
+
+ # TOC
+ print $fh qq|<ul id="toc">\n|;
+ my $i = 0;
+ while ( $i < $#toc_type_label ) {
+ my $type = $toc_type_label[$i++] || die "type";
+ my $label = $toc_type_label[$i++] || die "label";
+ next unless exists $type_cat_count->{_toc}->{$type};
+ print $fh qq| <li id="toc-$type"><a href="#$type">$label</a> <tt id="toc-count-$type">$type_cat_count->{_toc_count}->{$type}</tt></li>\n <ul>\n|;
+ foreach my $category ( sort keys %{ $type_cat_count->{_toc}->{$type} } ) {
+ my $label = $category_label->{$category} || 'Bez kategorije';
+ my $count = $type_cat_count->{ $type . '-' . $category };
+ my $cat_html = $category;
+ $cat_html =~ s/\./-/g;
+ print $fh qq| <li id="toc-$category"><a href="#$type-$category">$label</a> <tt id="toc-count-$type-$cat_html">$count</tt></li>\n|;
+ }
+ print $fh qq| </ul>\n|;