3 $.fn.toggle_slide = function(p) {
5 short_el = p['short_el'] || $(':first-child', this);
6 long_el = p['long_el'] || short_el.next();
8 short_text = p['short_text'],
9 long_text = p['long_text'];
11 var toggle_fun = function(cont, short_el, long_el, button, short_text, long_text) {
12 var toggle = function() {
13 if (cont.hasClass('short')) {
14 cont.animate({"height": long_el.attr("cont_h")+'px'}, {duration: "fast" }).removeClass('short');
17 if (button && long_text) button.html(long_text);
19 cont.animate({"height": short_el.attr("cont_h")+'px'}, {duration: "fast" }).addClass('short');
22 if (button && short_text) button.html(short_text);
28 if (long_el.html().length <= short_el.html().length)
31 // ensure long element shown first
32 long_el.show();short_el.hide();
33 long_el.attr("cont_h", $(this).height()).hide();
34 short_el.show().attr("cont_h", $(this).height());
35 $(this).addClass('short');
37 if (button && short_text) button.html(short_text);
38 if (button) button.click(toggle_fun(cont, short_el, long_el, button, short_text, long_text));
43 $('.fragment-with-short').each(function() {
44 $(this).toggle_slide({
45 short_el: $('.fragment-short-text', this),
46 long_el: $('.fragment-long-text', this),
47 button: $('.toggle', this)
50 $('#description').each(function() {
51 $(this).toggle_slide({
52 short_el: $('#description-short', this),
53 long_el: $('#description-long', this),
62 var menu_loaded = false;
63 $('.hidden-box-wrapper').each(function() {
64 var $hidden = $('.hidden-box', this);
65 $('.hidden-box-trigger', this).click(function(event) {
66 event.preventDefault();
67 if ($current == $hidden) {
71 $current && $current.hide('fast');
74 if ($(this).hasClass('load-menu') && !menu_loaded) {
76 url: '/katalog/' + LANGUAGE_CODE + '.json',
78 }).done(function(data) {
79 $.each(data, function(index, value) {
80 var $menuitem = $('#menu-' + index);
81 $menuitem.html(value);
82 var $minisearch = $("<input class='mini-search' style='margin-bottom: 1em' />");
83 $minisearch.keyup(function() {
84 var s = $(this).val().toLowerCase();
86 $("li", $menuitem).each(function() {
87 if ($("a", this).text().toLowerCase().indexOf(s) != -1)
93 $("li", $menuitem).css("display", "");
96 $menuitem.prepend($minisearch);
104 /* this kinda breaks the whole page. */
105 $('body').click(function(e) {
106 if ($current == null) return;
111 if (p.hasClass('hidden-box-trigger')
112 || p.hasClass('simple-toggler')
113 || p.hasClass('mini-search'))
117 $current.hide('fast');
123 $('#show-menu').click(function(event) {
124 event.preventDefault();
125 //$('#menu').toggle('slow');
126 $('body').toggleClass('menu-on');
130 $('#book-list-nav h2').click(function(event) {
131 event.preventDefault();
132 $('#book-list-nav-index').toggle();
136 $('#themes-list-toggle').click(function(event) {
137 event.preventDefault();
138 $('#themes-list').toggle('slow');
142 $('.book-list-index').click(function(){
143 $('.book-list-show-index').hide('slow');
144 if($(this).parent().next('ul:not(:hidden)').length == 0){
145 $(this).parent().next('ul').toggle('slow');
150 $('.hoverclick').click(function() {$(this).closest('.hoverget').toggleClass('hover');});
153 $("#search").search();});
155 $('body').on('click', '.simple-toggler' , function(ev) {
157 var scope = $(this).closest('.simple-toggler-scope');
158 scope.find('.simple-hidden-box').each(function(){
160 if ($this.is(':hidden')) {
169 $('.tabbed-filter').each(function() {
171 $('.tab').click(function() {
172 if ($(this).hasClass('active')) {
173 $(this).removeClass('active');
174 $('#' + $(this).attr('data-id')).hide();
177 var $active = $('.active', tf);
178 $active.removeClass('active');
179 $('#' + $active.attr('data-id')).hide();
180 $(this).addClass('active');
181 $('#' + $(this).attr('data-id')).show();
187 $('.plain-list-paged').each(function() {
188 // should change on resize?
190 var $pl = $('.plain-list', this);
192 var $items = $('p', $pl);
194 if ($items.length > 40) {
198 $('.pager', $plc).paging($items.length, {
199 format: '[< ncnnn >]', // define how the navigation should look like and in which order onFormat() get's called
201 lapping: 0, // don't overlap pages for the moment
202 page: 1, // start at page, can also be "null" or negative
203 onSelect: function (page) {
204 var data = this.slice;
205 $items.slice(prev[0], prev[1]).hide();
206 $items.slice(data[0], data[1]).show();
209 onFormat: function (type) {
211 case 'block': // n and c
212 return ' <li><a href="#"' + (this.value == this.page ? ' class="current"' : '') + '>' + this.value + '</a></li>';
214 return '<li><a href="#">›</a></li>';
216 return '<li><a href="#">‹</a></li>';
218 return '<li><a href="#">«</a></li>';
220 return '<li><a href="#">»</a></li>';