adding all of botlist, initial add
[botlist.git] / botlist_testserver / jetty / webapps / test / chat / chat.js
blobc22a0ad5c8a9779e6a27f26e0d81a620a7f9c557
2 function $() {
3   return document.getElementById(arguments[0]);
6 function $F() {
7   return document.getElementById(arguments[0]).value;
10 var room = 
12   _last: "",
13   _username: null,
14   
15   join: function(name)
16   {
17     if (name == null || name.length==0 )
18     {
19       alert('Please enter a username!');
20     }
21     else
22     {
23        this._username=name;
24        $('join').className='hidden';
25        $('joined').className='';
26        $('phrase').focus();
27        Behaviour.apply();
28        ajax.sendMessage('join', room._username);
29     }
30   },
31   
32   leave: function()
33   {
34        // switch the input form
35        $('join').className='';
36        $('joined').className='hidden';
37        $('username').focus();
38        Behaviour.apply();
39        ajax.sendMessage('leave',room._username);
40        room._username=null;
41   },
42   
43   chat: function(text)
44   {
45     if (text != null && text.length>0 )
46     {
47         ajax.sendMessage('chat',text);
48     }
49   },
50   
51   _chat: function(message)
52   {
53      var divChat=document.getElementById("chat");
54      var from=message.getAttribute('from');
55      var special=message.getAttribute('alert');
56      var text=message.childNodes[0].data;
57      
58      if ( special!='true' && from == room._last )
59          from="...";
60      else
61      {
62          room._last=from;
63          from+=":";
64      }
65      
66      
67      
68      var parentElement = divChat;
69      if (special=='true')
70      {
71        var span = document.createElement("span");
72        span.className="alert";
73        divChat.appendChild(span);
74        parentElement=span;
75      }
76      var spanFrom = document.createElement("span");
77      spanFrom.className="from";
78      spanFrom.innerHTML=from+" ";
79      var spanText = document.createElement("span");
80      spanText.className="text";
81      spanText.innerHTML=text;
82      var lineBreak = document.createElement("br");
83      parentElement.appendChild(spanFrom);
84      parentElement.appendChild(spanText);
85      divChat.appendChild(lineBreak);
86      divChat.scrollTop = divChat.scrollHeight - divChat.clientHeight;     
87   },
88    
89   _members: function(message)
90   {   
91     try
92     {
93         var divMembers = document.getElementById("members");
94         divMembers.innerHTML="";
95         var spanMember = document.createElement("span");
96         var ul = document.createElement("ul");
97         spanMember.appendChild(ul);
98         var x = message.getElementsByTagName("li");
99         for (var i=0;i<x.length;i++)
100         {
101           var li = document.createElement("li");
102           li.innerHTML = x[i].firstChild.nodeValue;
103           ul.appendChild(li);
104         } 
105         divMembers.appendChild(spanMember);
106     }
107     catch(e)
108     {
109         window.status="ERROR: members "+e.name + ": " + e.message;
110         // alert("_members " + e);
111     }
112   }
115 ajax.addListener('chat',room._chat);
116 ajax.addListener('members',room._members);
117 ajax.addPollHandler(room._poll);
119 var chatBehaviours = 
121   '#username' : function(element)
122   {
123     element.setAttribute("autocomplete","OFF"); 
124     element.onkeyup = function(ev)
125     {          
126         var keyc=EvUtil.getKeyCode(ev);
127         if (keyc==13 || keyc==10)
128         {
129           room.join($F('username'));
130           return false;
131         }
132         return true;
133     } 
134   },
135   
136   '#joinB' : function(element)
137   {
138     element.onclick = function(event)
139     {
140       room.join($F('username'));
141       return false;
142     }
143   },
144   
145   '#phrase' : function(element)
146   {
147     element.setAttribute("autocomplete","OFF");
148     element.onkeyup = function(ev)
149     {   
150         var keyc=EvUtil.getKeyCode(ev);
151         if (keyc==13 || keyc==10)
152         {
153           room.chat($F('phrase'));
154           $('phrase').value='';
155           return false;
156         }
157         return true;
158     }
159   },
160   
161   '#sendB' : function(element)
162   {
163     element.onclick = function(event)
164     {
165       room.chat($F('phrase'));
166       $('phrase').value='';
167       return false;
168     }
169   },
170   
171   
172   '#leaveB' : function(element)
173   {
174     element.onclick = function()
175     {
176       room.leave();
177       return false;
178     }
179   }
182 Behaviour.register(chatBehaviours);