initialized kettu on gitorious
[kettu:kettu.git] / js / helpers / info_helpers.js
1 var InfoHelpers = {
2   closeInfo: function() {
3     this.clearReloadInterval();
4     $('.main').removeClass('info');
5     $('#info').hide();
6     var path = transmission.filter_mode ? '#/torrents?filter=' + transmission.filter_mode : '#/torrents';
7     this.redirect(path);
8     return false;
9   },
10
11   openInfo: function(view) {
12     var info = $('#info');
13     info.html(view);
14     info.show();
15     $('.main').addClass('info');
16     this.menuizeInfo();
17   },
18
19   clearReloadInterval: function() {
20     if(transmission.info_interval_id) {
21       clearInterval(transmission.info_interval_id);
22     }
23   },
24   
25   infoIsOpen: function() {
26     return $('.main').hasClass('info');
27   },
28
29   handleDoubleClickOnTorrent: function(torrent) {
30     var context = this;
31     $('#' + torrent.id).dblclick(function() {
32       if(context.infoIsOpen()) {
33         context.closeInfo();
34       } else {
35         var active_torrent = $('.torrent.active');
36         if(active_torrent.get(0)) {
37           context.redirect('#/torrents/' + active_torrent.attr('id'));
38         }        
39       }
40       return false;
41     });
42   },
43   
44   handleClickOnTorrent: function(torrent) {
45     var context = this;
46     $('#' + torrent.id).click(function() {
47       context.highlightLi('#torrents', this);
48       if(context.infoIsOpen()) {
49         context.saveLastMenuItem($('.menu-item.active').attr('id'));
50         window.location = '#/torrents/' + $(this).attr('id');
51         // NOTE: a redirect seems to interfere with our double click handling here
52       }
53     });    
54   },
55   
56   updateInfo: function(torrent) {
57     this.trigger('changed');
58     
59     this.handleClickOnTorrent(torrent);
60     this.handleDoubleClickOnTorrent(torrent);
61   },
62   
63   startCountDownOnNextAnnounce: function() {
64     var context = this;
65     var timer = setInterval(function() {
66       var timestamp = $('.countdown').attr('data-timestamp');
67       var formatted = context.formatNextAnnounceTime(timestamp);
68       
69       if(formatted.match(/59 min/)) {
70         clearInterval(timer);
71         context.saveLastMenuItem($('.menu-item.active').attr('id'));
72         context.closeInfo();
73         context.openInfo();
74       } else {
75         $('.countdown').text(formatted);
76       }
77     }, 980);
78   }
79 };