3 $(document).ready(function() {
4 if (!window.console) window.console = {};
5 if (!window.console.log) window.console.log = function() {};
7 $("#messageform").on("submit", function() {
11 $("#messageform").on("keypress", function(e) {
12 if (e.keyCode == 13) {
17 $("#message").select();
18 {% if user.is_authenticated %}
26 function newMessage(form) {
27 var message = form.formToDict();
28 var disabled = form.find("input[type=submit]");
30 var date = new Date();
31 var timestamp = date.getTime();
32 $.postJSON("{% url fetch-new %}?="+timestamp, message, function(response) {
33 updater.showMessage(response);
35 form.parent().remove();
37 form.find("input[type=text]").val("").select();
43 function getCookie(name) {
44 var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
45 return r ? r[1] : undefined;
48 jQuery.postJSON = function(url, args, callback) {
49 $.ajax({url: url, dataType: "json", type: "POST", cache: false,
50 success: function(response) {
51 if (callback) callback(response);
52 }, error: function(response) {
53 console.log("ERROR:", response);
57 jQuery.fn.formToDict = function() {
58 var fields = this.serializeArray();
60 for (var i = 0; i < fields.length; i++) {
61 json[fields[i].name] = fields[i].value;
63 if (json.next) delete json.next;
67 jQuery.fn.disable = function() {
72 jQuery.fn.enable = function(opt_enable) {
73 if (arguments.length && !opt_enable) {
74 this.attr("disabled", "disabled");
76 this.removeAttr("disabled");
85 var date = new Date();
86 var timestamp = date.getTime();
87 $.ajax({url: "{% url fetch-existing %}?="+timestamp, type: "POST", dataType: "json", cache:false,
88 success: updater.onFetchExisting,
89 error: updater.onError});
93 {% if user.is_authenticated %}
94 if (updater.errorSleepTime > 128000){
95 oTable.fnReloadAjax(refreshUrl);
97 timeout = {{timeout}};
98 var date = new Date();
99 var timestamp = date.getTime();
100 $.ajax({url: "{% url fetch-updates %}?="+timestamp, type: "POST", dataType: "json", cache:false,
101 success: updater.onSuccess,
103 error: updater.onError});
106 onSuccess: function(response) {
108 updater.newMessages(response);
113 updater.errorSleepTime = 500;
114 window.setTimeout(updater.poll, 0);
117 onFetchExisting: function(response) {
119 updater.existingMessages(response);
127 onError: function(response, text) {
128 if (text == 'timeout'){
129 oTable.fnReloadAjax(refreshUrl);
131 updater.errorSleepTime *= 2;
132 console.log("Poll error; sleeping for", updater.errorSleepTime, "ms");
133 window.setTimeout(updater.poll, updater.errorSleepTime);
137 newMessages: function(response) {
138 if (!response.messages) return;
139 if (response.messages.length == 0){
142 updater.cursor = response.cursor;
143 var messages = response.messages;
144 updater.cursor = messages[messages.length - 1].id;
145 console.log(messages.length, "new messages, cursor:", updater.cursor);
147 for (var i = 0; i < messages.length; i++) {
148 updater.showMessage(messages[i]);
150 $("#hid_mid").val('UPDATED');
151 oTable.fnReloadAjax(refreshUrl);
154 existingMessages: function(response) {
155 if (!response.messages) return;
156 if (response.messages.length == 0){
159 updater.cursor = response.cursor;
160 var messages = response.messages;
161 updater.cursor = messages[messages.length - 1].id;
162 var i = messages.length
163 for (var i = 0; i < messages.length; i++) {
164 updater.showMessage(messages[i]);
168 showMessage: function(message) {
169 var existing = $("#m" + message.id);
170 if (existing.length > 0) return;
171 var username = message.body.split("]")[0].replace("[","");
172 var mbody = message.body.replace("["+username+"] ","");
173 var htmlnode = '<li class="left clearfix">\
174 <div class="chat-body clearfix" style="margin-left: 0px;"> \
175 <div class="header"> \
176 <small class="pull-right text-muted"> \
177 <i class="fa fa-clock-o fa-fw"></i> '+ message.time +' \
180 <p><small><strong class="primary-font">'+username+'</strong>:\
185 var node = $(htmlnode);
187 // $('#inbox').val($('#inbox').val()+message.text);
188 $("#inbox").prepend(node);
193 function blink(selector){
194 $(selector).animate({color: "#EE5F5B"}, 500, function(){
195 $(this).animate({ color: "white" }, 500, function(){