3 include_once("auth.php");
8 <script type
="text/javascript" src
="ajax.js"></script
>
9 <script type
="text/javascript" src
="debugger.js"></script
>
13 var chat_json
= new Object();
17 document
.captureEvents(Event
.KEYDOWN
);
20 var keyCode
= evt ?
(evt
.which ? evt
.which
: evt
.keyCode
) : event
.keyCode
;
22 document
.getElementById('send').click();
26 function parse_message_response(){
27 var message_count
= chat_json
.m
.length
;
28 if(message_count
> 0) { beep_sound
.play(); }
29 var message_text
= "";
30 for(var i
= 0; i
< message_count
; i++
){
31 message_text +
= '<div><font color="red">' + chat_json
.m
[i
].t +
'</font> ';
32 message_text +
= '<font color="blue">' + chat_json
.m
[i
].n +
'</font> ';
33 message_text +
= chat_json
.m
[i
].c +
'</div>';
34 last_chat_id
= chat_json
.m
[i
].id
;
36 document
.getElementById("chat_window").innerHTML +
= message_text
;
39 function update_ping(){
40 if(chat_ping
> 2000){ document
.getElementById("chat_status").innerHTML
= "<img src='./gfx/bullet_red.png'>"; }
41 else if (chat_ping
> 1000){ document
.getElementById("chat_status").innerHTML
= "<img src='./gfx/bullet_yellow.png'>"; }
42 else { document
.getElementById("chat_status").innerHTML
= "<img src='./gfx/bullet_green.png'>"; }
45 function getChat(url
, pageElement
){
47 var timer
= new Date();
48 var t_start
= timer
.getTime();
49 //debugEvent(url, "get");
51 // WE USE A JAVASCRIPT FEATURE HERE CALLED "INNER FUNCTIONS"
52 // USING THESE MEANS THE LOCAL VARIABLES RETAIN THEIR VALUES AFTER THE OUTER FUNCTION
53 // HAS RETURNED. THIS IS USEFUL FOR THREAD SAFETY, SO
54 // REASSIGNING THE ONREADYSTATECHANGE FUNCTION DOESN'T STOMP OVER EARLIER REQUESTS.
55 function ajaxBindCallback(){
56 if(ajaxRequest
.readyState
== 0) { window
.status
= "Waiting..."; }
57 if(ajaxRequest
.readyState
== 1) { window
.status
= "Loading Page..."; }
58 if(ajaxRequest
.readyState
== 2) { window
.status
= "Data Received...";}
59 if(ajaxRequest
.readyState
== 3) { window
.status
= "Interactive..."; }
60 if(ajaxRequest
.readyState
== 4) {
61 window
.status
= "Transaction Complete...";
63 // STOP TIMER AND FIND DIFFERENCE
64 // MUST CREATE NEW TIMER INSTANCE :)
65 var timer2
= new Date();
66 var t_end
= timer2
.getTime();
67 var t_diff
= t_end
- t_start
;
71 // TEST HTTP STATUS CODE - DISPLAY IN DUBUGGER AND STATUS
72 switch (ajaxRequest
.status
.toString()) {
74 window
.status
= "Page Loaded Sucessfully";
75 chat_json
= JSON
.parse(ajaxRequest
.response
);
76 parse_message_response();
77 debugEvent(url
, "got", ajaxRequest
.responseText
, t_diff
);
80 window
.status
= "Forbidden...";
81 debugEvent(url
, "error_403", ajaxRequest
.responseText
, t_diff
);
84 window
.status
= "File Not Found...";
85 debugEvent(url
, "error_404", ajaxRequest
.responseText
, t_diff
);
88 window
.status
= "File Not Found...";
89 debugEvent(url
, "error_500", ajaxRequest
.responseText
, t_diff
);
92 window
.status
= "Unknown Ajax Error..."+ajaxRequest
.status
.toString();
96 var ajaxRequest
= null;
97 // BIND OUR CALLBACK THEN HIT THE SERVER...
98 if (window
.XMLHttpRequest
) {
99 ajaxRequest
= new XMLHttpRequest();
100 ajaxRequest
.onreadystatechange
= ajaxBindCallback
;
101 ajaxRequest
.open("GET", url
, true);
102 ajaxRequest
.send(null);
103 } else if (window
.ActiveXObject
) {
104 ajaxRequest
= new ActiveXObject("Microsoft.XMLHTTP");
106 ajaxRequest
.onreadystatechange
= ajaxBindCallback
;
107 ajaxRequest
.open("GET", url
, true);
113 function start_updates(){
114 beep_sound
= document
.getElementById('beep_sound');
115 beep_sound
.src
= 'sfx/beep.wav';
116 click_sound
= document
.getElementById('click_sound');
117 click_sound
.src
= 'sfx/click.wav';
118 document
.getElementById('message').focus();
119 chat_div
= document
.getElementById("chat_window");
120 getChat( "im_chat_update.php?id=-1", "chat_window");
121 setInterval(update_chat_messages
, 2000);
122 update_users_online();
123 setInterval(update_users_online
, 15000);
126 function update_chat_messages(){
127 getChat( "im_chat_update.php?id="+last_chat_id
, "chat_window");
128 chat_window
.scrollTop
= chat_window
.scrollHeight
;
131 function update_users_online(){
132 getPage("im_user_update.php", "chat_users", "");
135 function send_message(){
136 sendData("im_send_message.php?message="+document
.getElementById("message").value
);
138 document
.getElementById("message").value
= '';
141 function disable_sound(){
143 click_sound
.src
= '';
151 font
-family
: Tahoma
, sans
-serif
;
153 background
-color
: #c5bcff;
156 border
: solid
1px
#000;
157 background
-color
: #fff;
165 border
: solid
1px
#000;
166 background
-color
: #dedede;
174 list-style
-type
: none
;
183 <body onLoad
="start_updates();">
184 <audio id
="beep_sound" style
="display: none;"></audio
>
185 <audio id
="click_sound" style
="display: none;"></audio
>
186 <div id
=chat_window
></div
>
187 <div id
=chat_users
></div
>
190 <td
><textarea id
="message" cols
=65 rows
=1></textarea
></td
>
191 <td
><button id
="send" onCLick
="send_message();">Send
</button
></td
>
192 <td
><div id
=chat_status
><img src
="./gfx/bullet_green.png"></div
></td
>
193 <tr
><td
><button onCLick
="openDebug();">Debug
</button
></td
><td
></td
></tr
>