4 var endpoint = 'xmpphp/chat_backend.php'
8 var InputBuffer = new Array();
9 var History = new Array();
10 var HistoryPosition = 0;
12 function addBuffer(message) {
13 InputBuffer.push(message);
16 function outBuffer() {
17 InputBuffer.reverse();
18 console.log(InputBuffer);
19 while (InputBuffer.length > 0) {
20 raw_message = InputBuffer.pop();
21 $('#inputfield input').addClass('loading');
22 $.getJSON(endpoint, {op: 'SendMessage', message : raw_message}, function(data){
23 addChatMessage($("input[name='nick']").attr('value'), raw_message);
24 $('#inputfield input').removeClass('loading');
27 setTimeout('outBuffer()',500);
31 var timestamp = new Date();
32 timestamp = timestamp.format('HH:MM:s');
36 function addError(error) {
37 var message = '<div class="logentry error"><span class="timestamp">'+now()+'</span><span class="logmessage">'+error+'</span></div>';
38 $(message).appendTo('#chatlog');
42 function addStatus(status) {
43 var message = '<div class="logentry status"><span class="timestamp">'+now()+'</span><span class="logmessage">'+status+'</span></div>';
44 $(message).appendTo('#chatlog');
48 function addSuccess(success) {
49 var message = '<div class="logentry success"><span class="timestamp">'+now()+'</span><span class="logmessage">'+success+'</span></div>';
50 $(message).appendTo('#chatlog');
54 function addLog(logEntry){
55 var fullentry = '<div class="logEntry"><span class="timestamp">'+now()+'</span><span class="logmessage">'+logEntry+'</span></div>';
56 $(fullentry).appendTo('#chatlog');
61 if ($('.logEntry').length > history_size) {
62 $('.logEntry:last').remove();
66 function addChatMessage(nick, message) {
67 var logentry = '<span class="nick">'+nick.split('@')[0]+'</span><span class="message">'+message+'</span>';
71 function handleEvent() {
72 $.getJSON(endpoint,{'op' : 'GetEvents'}, function(data) {
73 if(data['status'] == 0) {
74 addChatMessage(data['nick'], data['message']);
76 window.setTimeout('handleEvent()',1000);
80 $(document).ready(function(){
81 $('#nojs').css('display','none');
82 $('#chatbox').css('display','block');
83 $('#messagebox').attr('value','Enter your message here.');
84 $('#messagebox').bind('focus',function() {
85 if ($('#messagebox').attr('value') == 'Enter your message here.') {
86 $('#messagebox').attr('value','');
88 $('#messagebox').select();
92 $("input[name='textinput']").bind('keypress', function(key){
93 if (key.keyCode == 38) {
94 if ((History.length > 0) && (HistoryPosition > 0)){
96 $('#textinput').attr('value',History[HistoryPosition]);
98 } else if(key.keyCode == 40) {
99 if ((History.length > 0) && (HistoryPosition < History.length)){
101 $('#textinput').attr('value',History[HistoryPosition]);
103 } else if(key.keyCode == 13) {
104 var message = $('#textinput').attr('value').replace(/</g, '<').replace(/>/g, '>');;
106 History.push(message);
107 $('#textinput').addClass('loading');
108 $('#textinput').attr('value','');
109 $('#textinput').focus();
110 HistoryPosition = History.length;
112 HistoryPosition = History.length;
116 $("input[name='submit_nick']").bind('click',function(e){
117 $('#asknick').fadeOut('fast');
118 $('#chatlog-fieldset legend').text('Welcome ' + $("input[name='nick']").attr('value'));
119 $('#chatlog-fieldset').fadeIn('fast');
120 addStatus('Connecting...');
121 // establish a connection to the ajax socket
122 $('#messagebox input').addClass('loading');
123 $.getJSON(endpoint,{'op' : 'InitConnection', 'nick' : $("input[name='nick']").attr('value')}, function(data) {
124 if(data['status'] == 0) {
125 addStatus(data['message']);
128 $('#messagebox input').removeClass('loading');