Har du ikke selv en kopi af
w-o-p-r.dk ?
Jeg har lagt det til fri download og givet link på et tidspunkt.
Men 'Gonzales' ASP:
-------------------------------------------------------------
<%@ LANGUAGE = VBScript%><%Option Explicit%><%
Dim pagetitle
pagetitle = "Shoutbox"
Response.Charset = "iso-8859-1"
%><!--#include virtual="/include_files/wopr.ipcheck.inc.asp"--><!--#include
virtual="/include_files/doctype.inc.asp"-->
<link href="shoutbox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/javascript/UTF8toAnsi.js"></script>
<script type="text/javascript"
src="/javascript/callXMLHTTPRequest.js"></script>
<script type="text/javascript" src="shoutbox.js"></script>
</head>
<body onload="initiate();">
<h2><img src="/images/gonzales.png" alt="Gonzales" /> AJAX
ShoutBox <img src="/images/roadrunner.png" alt="roadrunner" />
<a href="messagerss.asp?limit=10"><img src="/images/rss.png" alt="rss" />
rss</a></h2>
<div id="statusline"><div id="status"> Status: </div><div
id="numbermessages">Ingen nye meddelslser</div></div>
<div id="chatbox"></div>
<div id="users"></div>
<!-- Ths fieldset is the user input area -->
<div id="namepass">
<input id="username" name="username" value="username" type="text" />
<input id="pasord" name="pasord" value="password" type="text" />
<textarea wrap="off" cols="115" rows="4" id="messagebody" name="messagebody"
onkeypress="process(event)" onkeydown="shift(event)">Tekst her</textarea>
<input id="ctrl1" name="ctrl1" value="" type="text" />
<input id="ctrl2" name="ctrl2" value="" type="text" />
</div>
<div id="left-panel">
<input onclick="dosendmessage(ismessage);" value="Send" id="send"
type="button" />
<input onclick="dosendmessage(islogoff);" value="Log af" id="logoff"
type="button" />
</div>
<!-- right panel: refresh rate, time on/off, users online -->
<div>
<input id="scroolnew" name="scroolnew" checked="checked"
type="checkbox" />
<select name="refresh" id="refresh" onchange="changerefreshrate();"
title="Opdaterinshastighed på chatbox og users online-oversigt">
<option>Refresh rate</option>
<option value="500">500 milisekunder</option>
<option value="5000" selected="selected">5 sekund
[defaut]</option>
<option value="2000">2 sekunder</option>
<option value="5000">5 sekunder</option>
<option value="10000">10 sekunder</option>
</select>
<input onchange="switchshowtime();" id="vistid" name="vistid"
type="checkbox" checked="checked" />
</div>
<!-- include
virtual="/include_files/comment.scripts/comments.2.v2.inc.asp"-->
</body>
</html>
------------------------------------------------------------------
Og shoutbox.js:
-------------------------------------------------------------------
// Change to debug
var debug = false; // true ; //
// startværdier
var initmessageids = '10150' ; // Here you can change the lowest message id,
when it becomes too big.
var messageids = initmessageids ;
var userchange = '0' ; // just an inital value
var nobody = "Gæst" ;
// defined here for overview and debug
var newmessageurl = 'NewMessage.asp'
// var newmessageurl = 'AspInfo.asp'
var userlisturl = 'users.asp' ;
// til shoutbox html
var ismessage = '1' ; // messagetype
var islogoff = '3' ; // messagetype
// XMLHTTPRequest objekter + vars
var messagetimer;
var messageinprogress = false ;
// Show time in message
var showtimeinchat = false ; // heck refresh as rate
//****************************************************************
var c1=0;
var c2=0;
var upDRate = 1000 ;
var params = "lorem=ipsum&name=binny";
function initiate() {
changerefreshrate();
showtimeinchat = document.getElementById('vistid').checked;
dogetmessages();
}
//************************************************************
function changerefreshrate() {
upDRate = document.getElementById('refresh').value;
}
//************************************************************
function dogetmessages() {
getnewmessages('messages.asp');
}
function getnewmessages(url) {
callXMLHTTPRequest('get',url
['messageids',messageids,'showtimeinchat',showtimeinchat]
[],messagesready,null,true,true,['messageids', messageids]);
}
function messagesready(responsedata,returndata,isOK,X) {
if ( isOK ) {
if ( X.getResponseHeader('messageids') != messageids ) {
updatemessages (responsedata );
var numbermessages =
Math.round(X.getResponseHeader('messageids')*100/100) - messageids ;
document.getElementById('numbermessages').innerHTML =
numbermessages + " Nye Meddelelser";
messageids = X.getResponseHeader('messageids');
/* Scroll til sidste meddelelse i chatboksen */
scrollToBottom();
}
/* Timeren sættes først i gang igen, når hent er færdig og data
behandlet */
messagetimer=setTimeout("dogetmessages()",upDRate);
}
}
function updatemessages(newmessages) {
var boxnode = document.getElementById('chatbox');
var m = document.createElement('div');
newmessages = newmessages.substring(newmessages.indexOf('<ul>') +
4,newmessages.length - 5 );
m.innerHTML = newmessages ;
// m.text.value = newmessages ;
boxnode.appendChild(m);
getuserlist(userlisturl);
}
//************************************************************
function dogetuserlist() {
getuserlist('users.asp');
}
function getuserlist(url) {
callXMLHTTPRequest('get',url,['userchange',userchange]
[],userlistready,null,true,true,['userchange', userchange]);
}
function userlistready(responsedata,returndata,isOK,X) {
if ( isOK ) {
if ( X.getResponseHeader('userchange') != userchange ) {
document.getElementById('users').innerHTML = responsedata;
userchange = X.getResponseHeader('userchange');
}
}
}
//************************************************************
function dosendmessage(messagetype) {
var messagebody = document.getElementById( 'messagebody').value;
var username = document.getElementById('username').value;
if ( (messagebody != "" && username != "" && username !=nobody ) ||
messagetype == "3" ) {
callXMLHTTPRequest('post',newmessageurl
['messagetype',messagetype,'ctrl1',document.getElementById('ctrl1').value,'ctrl2',document.getElementById('ctrl2').value]
['Username',username,'MessageBody',messagebody,'pasord',document.getElementById('pasord').value],messageissent,null,true,true
['Content-type', 'application/x-www-form-urlencoded; charset =
iso-8859-1']) ;
}
else {
document.getElementById('status').innerHTML = "Status: Meddelelse ikke
sendt. Skriv et nick og en meddelelse";
}
}
function messageissent(responsedata,returndata,isOK,X) {
if ( isOK ) {
document.getElementById('messagebody').value = "";
// document.getElementById('username').disabled = "disabled";
document.getElementById('status').innerHTML = "Status: Meddelelse
sendt";
document.getElementById( 'ctrl1').value =
X.getResponseHeader('ctrl1') ;
document.getElementById( 'ctrl2').value =
X.getResponseHeader('ctrl2') ;
document.getElementById( 'pasord').style.display =
X.getResponseHeader('displaypasord') ;
document.getElementById( 'username').style.display =
X.getResponseHeader('displayusername') ;
document.getElementById( 'pasord').value = "" ;
dogetmessages() ;
}
}
//************************************************************
function clrText(cText,cId) {
if (document.getElementById(cId).value == (cText)) {
document.getElementById(cId).value = "";
document.getElementById('status').innerHTML = "Status: Skriv en
meddelelse";
}
return false;
}
function defText(dText,dId) {
if (document.getElementById(dId).value == "") {
document.getElementById(dId).value = dText;
}
}
function scrollToBottom() {
// var doscroll = document.getElementById('scroolnew').checked;
if ( doscroll = document.getElementById('scroolnew').checked == true ) {
var elem = document.getElementById('chatbox');
elem.scrollTop = elem.scrollHeight;
}
}
function switchshowtime() {
showtimeinchat = !showtimeinchat
messageids = initmessageids ;
document.getElementById('chatbox').innerHTML = ""
if (messagetimer) clearTimeout(messagetimer);
dogetmessages() ;
}
var isShift=null;
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
var OP = (navigator.appName.indexOf("Opera")!=-1);
if(OP)isNN=true;
var key;
function shift(event){
key = (isNN) ? event.which : event.keyCode;
if (key==17)isShift=1;
}
function process(event){
key = (isNN) ? event.which : event.keyCode;
if(document.layers&&event.modifiers==Keys.ControlKey){ // modifiers if
((key != Keys.Menu) && (key != Keys.ControlKey) && (key != Keys.ShiftKey))
isShift=1;
}
if (key==13&&isShift==1){
dosendmessage(ismessage);
this.value = "";
}
if (key!=17)isShift=null;
}
--------------------------------------------------------
Det er en tidlig inkarnation, så der er sikkert redundans i de
forskellige .js filer.