49cd9b9f735096812a43df634d47e607862153b2
[coquelicot.git] / public / javascripts / coquelicot.js
1 $(function($) {  
2   $.lightBoxFu.initialize({
3     imagesPath: 'images/',
4     stylesheetsPath: 'stylesheets/'
5   });
6   $('form#upload').uploadProgress({
7     start:function() {
8       // after starting upload open lightBoxFu with our bar as html
9       $.lightBoxFu.open({
10         html: '<div id="uploading"><span id="received"></span><span id="size"></span><br/><div id="progress" class="bar"><div id="progressbar">&nbsp;</div></div><span id="percent"></span></div>',
11         width: "250px",
12         closeOnClick: false
13       });
14       jQuery('#received').html(i18n.uploadStarting);
15       jQuery('#percent').html("0%");
16     },
17     uploading: function(upload) {
18       // update upload info on each /progress response
19       jQuery('#received').html(i18n.uploading + parseInt(upload.received / 1024) + "/");
20       jQuery('#size').html(parseInt(upload.size / 1024) + ' ' + i18n.kb);
21       jQuery('#percent').html(upload.percents + "%");
22     },
23     interval: 2000,
24     /* if we are using images it's good to preload them, safari has problems with
25        downloading anything after hitting submit button. these are images for lightBoxFu
26        and progress bar */
27     preloadImages: ["images/overlay.png", "images/ajax-loader.gif"],
28     jqueryPath: "javascripts/jquery.min.js",
29     uploadProgressPath: "javascripts/jquery.uploadProgress.js",
30     progressUrl: "progress"
31   });
32 });
33
34 function addLinkToPasswordGenerator() {
35   var link = $('<a href="#" id="gen_pass" />');
36   link.text(i18n.generateRandomPassword);
37   var file_key = $('#file_key');
38   file_key.after(link);
39   link.click(function() {
40     link.text(i18n.generatingRandomPassword);
41     $.get('random_pass', function(pass) {
42       file_key.val(pass);
43       file_key.hide();
44       var show = $('<div class="random-pass" />');
45       show.text(pass);
46       link.before(show);
47       link.remove();
48     });
49   });
50 }
51
52 function authenticate() {
53   var authForm = $('<form></form>')
54   var authDiv = $('#upload-authentication').remove();
55   var lb = $.lightBoxFu;
56   authForm.bind('submit', function() {
57     jQuery.ajax({
58       type: 'POST',
59       url: 'authenticate',
60       dataType: 'text',
61       data: authentication.getData(),
62       success: function(data, textStatus, jqXHR) {
63         if (data != 'OK') {
64           /* Mh. Something strange happened. */
65           return;
66         }
67         $.each(authentication.getData(), function(key, value) {
68           var hiddenField = $('<input type="hidden" />');
69           hiddenField.attr('name', key);
70           hiddenField.val(value);
71           $('#upload').append(hiddenField);
72         });
73         lb.close();
74         if (authentication.handleAccept) {
75           authentication.handleAccept();
76         }
77       },
78       error: function(jqXHR, textStatus, errorThrown) {
79         switch (jqXHR.status) {
80           case 403:
81             $('#auth-message').text(i18n.pleaseTryAgain);
82             if (authentication.handleReject) {
83               authentication.handleReject();
84             }
85             return;
86           default:
87             $('#auth-message').
88               empty().
89               append($('<div />').text(i18n.error)).
90               append($('<div />').append($('<strong />').text(errorThrown))).
91               append($('<div />').text(jqXHR.responseText));
92             if (authentication.handleFailure) {
93               authentication.handleFailure(textStatus);
94             }
95         }
96       },
97     });
98     return false;
99   });
100   lb.open({
101     html: authForm.append(authDiv).append('<div id="auth-message"></div>'),
102     width: "430px",
103     closeOnClick: false
104   });
105   authentication.focus();
106 }