Dodanie omyłkowo pominiętego API.
[wolnelektury.git] / wolnelektury / static / js / catalogue.js
1 var BANNER_TEXTS = [
2     'Przekaż 1% żeby ukryć ten baner.',
3     'Jak dobrze wydać 1% swojego podatku? <strong>Poradnik dla opornych</strong>.',
4     'Wiadomość systemowa: wystąpił błąd brak funduszy. Wykonaj procedurę 1%.',
5     '<strong>FREE!</strong> Wygraj darmowe lektury!',
6     'Confidential business offer. Not scam! 1% for you.',
7     'Biblioteka Wolne Lektury wymaga aktualizacji. Kliknij dalej.',
8     '1000 lektur. <strong>1 procent</strong>.'
9 ]
10
11
12 function changeBannerText() {
13     var index = Math.floor(Math.random() * BANNER_TEXTS.length);
14     if (BANNER_TEXTS[index] == $('#onepercent-text').html()) {
15         // try again
16         changeBannerText();
17     } else {
18         $('#onepercent-text').fadeOut('slow', function() {
19             $(this).html(BANNER_TEXTS[index]);
20             $(this).fadeIn('slow');
21         });
22         
23         setTimeout(changeBannerText, 30 * 1000);
24     }
25 }
26
27
28 (function($) {
29     $(function() {
30         $('form input').labelify({labelledClass: 'blur'});
31         
32         target = $('#login-register-window div.target');
33         
34         $('#show-registration-form').click(function() {
35             $('#login-form').hide();
36             $('#registration-form').show();
37         });
38         
39         $('#show-login-form').click(function() {
40             $('#registration-form').hide();
41             $('#login-form').show();
42         });
43         
44         // Fragments
45         $('.fragment-text').each(function() {
46             if ($(this).prev().filter('.fragment-short-text').length) {
47                 $(this).hover(
48                     function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
49                     function() { $(this).css({background: '#FFF'}); }
50                 ).click(function() {
51                     $(this).fadeOut(function() {
52                         $(this).prev().fadeIn()
53                     });
54                 })
55             }
56         });
57         
58         $('.fragment-short-text').click(function() {
59             $(this).fadeOut(function() { $(this).next().fadeIn() });
60         }).hover(
61             function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
62             function() { $(this).css({background: '#FFF'}); }
63         );
64         
65         $('.show-all-tags').click(function() {
66             $(this).parent().parent().fadeOut(function() { 
67                 $(this).next().fadeIn();
68             });
69             return false;
70         });
71         
72         $('.hide-all-tags').click(function() {
73            $(this).parent().parent().fadeOut(function() {
74                $(this).prev().fadeIn();
75            });
76            return false; 
77         });
78         
79         $('#registration-form').ajaxForm({
80             dataType: 'json',
81             beforeSubmit: function() {
82                 $('#registration-form input[type=submit]')
83                     .attr('disabled', 'disabled')
84                     .after('<img src="/static/img/indicator.gif" style="margin-left: 0.5em"/>');
85             },
86             success: function(response) {
87                 if (response.success) {
88                     location.reload(true);
89                 } else {
90                     $('#registration-form span.error').remove();
91                     $.each(response.errors, function(id, errors) {
92                         $('#id_registration-' + id).before('<span class="error">' + errors[0] + '</span>');
93                     });
94                     $('#registration-form input[type=submit]').removeAttr('disabled');
95                     $('#registration-form img').remove();
96                 }
97             }
98         });
99         
100         $('#login-form').ajaxForm({
101             dataType: 'json',
102             beforeSubmit: function() {
103                 $('#login-form input[type=submit]')
104                     .attr('disabled', 'disabled')
105                     .after('<img src="/static/img/indicator.gif" style="margin-left: 0.5em"/>');
106             },
107             success: function(response) {
108                 if (response.success) {
109                     location.reload(true);
110                 } else {
111                     $('#login-form span.error').remove();
112                     $.each(response.errors, function(id, errors) {
113                         $('#id_login-' + id).before('<span class="error">' + errors[0] + '</span>');
114                     });
115                     $('#login-form input[type=submit]').removeAttr('disabled');
116                     $('#login-form img').remove();
117                 }
118             }
119         });
120         
121         $('#login-register-window').jqm({
122             target: target[0],
123             overlay: 60,
124             trigger: '.login-register-link',
125             onShow: function(hash) {
126                 var offset = $(hash.t).offset();
127                 hash.w.css({position: 'absolute', left: offset.left - hash.w.width() + $(hash.t).width(), top: offset.top});
128                 $('div.header', hash.w).css({width: $(hash.t).width()});
129                 hash.w.show();
130             }
131         });
132         
133         $('ul.shelf-list li').hover(function() {
134             $(this).css({background: '#EEE', cursor: 'pointer'});
135         }, function() {
136             $(this).css({background: 'transparent'});
137         }).click(function() {
138             location.href = $('a.visit-shelf', this).attr('href');
139         });
140         
141         $('.delete-shelf').click(function() { 
142             var link = $(this);
143             var shelf_name = $('.visit-shelf', link.parent()).text();
144             if (confirm('Czy na pewno usunąć półkę ' + shelf_name + '?')) {
145                 $.post(link.attr('href'), function(data, textStatus) {
146                     link.parent().remove();
147                 });
148             }
149             return false;
150         });
151         
152         $('#user-shelves-window').jqm({
153             ajax: '@href',
154             target: $('#user-shelves-window div.target')[0],
155             overlay: 60,
156             trigger: '#user-shelves-link',
157             onShow: function(hash) {
158                 var offset = $(hash.t).offset();
159                 hash.w.css({position: 'absolute', left: offset.left - hash.w.width() + $(hash.t).width(), top: offset.top});
160                 $('div.header', hash.w).css({width: $(hash.t).width()});
161                 hash.w.show();
162             },
163             onLoad: function(hash) { 
164                 $('form', hash.w).ajaxForm({
165                     target: $('#user-shelves-window div.target'),
166                     success: function() { setTimeout(function() { $('#user-shelves-window').jqmHide() }, 1000) }
167                 });
168                 
169                 $('input', hash.w).labelify({labelledClass: 'blur'});
170                 
171                 $('ul.shelf-list li', hash.w).hover(function() {
172                     $(this).css({background: '#EEE', cursor: 'pointer'});
173                 }, function() {
174                     $(this).css({background: 'transparent'});
175                 }).click(function() {
176                     location.href = $('a.visit-shelf', this).attr('href');
177                 });
178                 
179                 $('.delete-shelf').click(function() {
180                     var link = $(this);
181                     var shelf_name = $('.visit-shelf', link.parent()).text();
182                     if (confirm('Czy na pewno usunąć półkę ' + shelf_name + '?')) {
183                         $.post(link.attr('href'), function(data, textStatus) {
184                             link.parent().remove();
185                         });
186                     }
187                     return false;
188                 });
189             }
190         });
191     
192         $('#books-list .book').hover(
193             function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
194             function() { $(this).css({background: '#FFF'}); }
195         ).click(function() {
196             location.href = $('h2 a', this).attr('href');
197         });
198     
199         $('#toggle-description').hover(
200             function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
201             function() { $(this).css({background: '#EEE'}); }
202         ).click(function() {
203             if ($('#description').hasClass('hidden')) {
204                 $('#description').slideDown('fast').removeClass('hidden');
205                 $('p', this).html('Zwiń opis ▲');
206             } else {
207                 $('#description').slideUp('fast').addClass('hidden');
208                 $('p', this).html('Rozwiń opis ▼');
209             }
210         });
211     
212         var target = $('#set-window div.target');
213     
214         $('#set-window').jqm({
215             ajax: '@href', 
216             target: target[0],
217             overlay: 60,
218             trigger: 'a.jqm-trigger', 
219             onShow: function(hash) { 
220                 var offset = $(hash.t).offset();
221                 target.html('<p><img src="/static/img/indicator.gif" /> Ładowanie</p>');
222                 hash.w.css({position: 'absolute', left: offset.left, top: offset.top}).show() },
223             onLoad: function(hash) { 
224                 $('form', hash.w).ajaxForm({
225                     target: target,
226                     success: function() { setTimeout(function() { $('#set-window').jqmHide() }, 1000) }
227                 });
228             }
229         });
230         
231         $('a.remove-from-shelf').click(function(event) {
232             event.preventDefault();
233             link = $(this);
234             $.post(link.attr('href'), function(data, textStatus) {
235                 link.parent().remove();
236             });
237         });
238         
239         $('#user-info').show();
240         changeBannerText();
241         $('#onepercent-banner').slideDown('slow')
242     });
243 })(jQuery)