1d631e3ccfe7e84287edd86f5f43d996d56b0603
[wolnelektury.git] / wolnelektury / media / js / catalogue.js
1 (function($) {
2     $(function() {
3         $('form input').labelify({labelledClass: 'blur'});
4         
5         target = $('#login-register-window div.target');
6         
7         $('#show-registration-form').click(function() {
8             $('#login-form').hide();
9             $('#registration-form').show();
10         });
11         
12         $('#show-login-form').click(function() {
13             $('#registration-form').hide();
14             $('#login-form').show();
15         });
16         
17         // Fragments
18         $('.fragment-text').each(function() {
19             if ($(this).prev().filter('.fragment-short-text').length) {
20                 $(this).hover(
21                     function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
22                     function() { $(this).css({background: '#FFF'}); }
23                 ).click(function() {
24                     $(this).fadeOut(function() {
25                         $(this).prev().fadeIn()
26                     });
27                 })
28             }
29         });
30         
31         $('.fragment-short-text').click(function() {
32             $(this).fadeOut(function() { $(this).next().fadeIn() });
33         }).hover(
34             function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
35             function() { $(this).css({background: '#FFF'}); }
36         );
37         
38         $('#registration-form').ajaxForm({
39             dataType: 'json',
40             beforeSubmit: function() {
41                 $('#registration-form input[type=submit]')
42                     .attr('disabled', 'disabled')
43                     .after('<img src="/media/img/indicator.gif" style="margin-left: 0.5em"/>');
44             },
45             success: function(response) {
46                 if (response.success) {
47                     location.reload(true);
48                 } else {
49                     $('#registration-form span.error').remove();
50                     $.each(response.errors, function(id, errors) {
51                         $('#id_registration-' + id).before('<span class="error">' + errors[0] + '</span>');
52                     });
53                     $('#registration-form input[type=submit]').removeAttr('disabled');
54                     $('#registration-form img').remove();
55                 }
56             }
57         });
58         
59         $('#login-form').ajaxForm({
60             dataType: 'json',
61             beforeSubmit: function() {
62                 $('#login-form input[type=submit]')
63                     .attr('disabled', 'disabled')
64                     .after('<img src="/media/img/indicator.gif" style="margin-left: 0.5em"/>');
65             },
66             success: function(response) {
67                 if (response.success) {
68                     location.reload(true);
69                 } else {
70                     $('#login-form span.error').remove();
71                     $.each(response.errors, function(id, errors) {
72                         $('#id_login-' + id).before('<span class="error">' + errors[0] + '</span>');
73                     });
74                     $('#login-form input[type=submit]').removeAttr('disabled');
75                     $('#login-form img').remove();
76                 }
77             }
78         });
79         
80         $('#login-register-window').jqm({
81             target: target[0],
82             overlay: 60,
83             trigger: '.login-register-link',
84             onShow: function(hash) {
85                 var offset = $(hash.t).offset();
86                 hash.w.css({position: 'absolute', left: offset.left - hash.w.width() + $(hash.t).width(), top: offset.top});
87                 $('div.header', hash.w).css({width: $(hash.t).width()});
88                 hash.w.show();
89             }
90         });
91         
92         $('.delete-shelf').click(function() { 
93             var link = $(this);
94             var shelf_name = $('.visit-shelf', link.parent()).text();
95             if (confirm('Czy na pewno usunąć półkę ' + shelf_name + '?')) {
96                 $.post(link.attr('href'), function(data, textStatus) {
97                     link.parent().remove();
98                 });
99             }
100             return false;
101         });
102         
103         $('#user-shelves-window').jqm({
104             ajax: '@href',
105             target: $('#user-shelves-window div.target')[0],
106             overlay: 60,
107             trigger: '#user-shelves-link',
108             onShow: function(hash) {
109                 var offset = $(hash.t).offset();
110                 hash.w.css({position: 'absolute', left: offset.left - hash.w.width() + $(hash.t).width(), top: offset.top});
111                 $('div.header', hash.w).css({width: $(hash.t).width()});
112                 hash.w.show();
113             },
114             onLoad: function(hash) { 
115                 $('form', hash.w).ajaxForm({
116                     target: $('#user-shelves-window div.target'),
117                     success: function() { setTimeout(function() { $('#user-shelves-window').jqmHide() }, 1000) }
118                 });
119                 
120                 $('input', hash.w).labelify({labelledClass: 'blur'});
121                 
122                 $('ul.shelf-list li', hash.w).hover(function() {
123                     $(this).css({background: '#EEE', cursor: 'pointer'});
124                 }, function() {
125                     $(this).css({background: 'transparent'});
126                 }).click(function() {
127                     location.href = $('a.visit-shelf', this).attr('href');
128                 });
129                 
130                 $('.delete-shelf').click(function() {
131                     var link = $(this);
132                     var shelf_name = $('.visit-shelf', link.parent()).text();
133                     console.log(shelf_name);
134                     if (confirm('Czy na pewno usunąć półkę ' + shelf_name + '?')) {
135                         $.post(link.attr('href'), function(data, textStatus) {
136                             link.parent().remove();
137                         });
138                     }
139                     return false;
140                 });
141             }
142         });
143     });
144 })(jQuery)