急求一个简易聊天室的代码

html-css013

急求一个简易聊天室的代码,第1张

这个应该可以的拉:

import java.applet.*

import java.awt.*

import java.io.*

import java.net.*

import java.awt.event.*

public class ChatClient extends Applet{

protected boolean loggedIn//登入状态

protected Frame cp//聊天室框架

protected static int PORTNUM=7777//缺省端口号7777

protected int port//实际端口号

protected Socket sock

protected BufferedReader is//用于从sock读取数据的BufferedReader

protected PrintWriter pw//用于向sock写入数据的PrintWriter

protected TextField tf//用于输入的TextField

protected TextArea ta//用于显示对话的TextArea

protected Button lib//登入按钮

protected Button lob//登出的按钮

final static String TITLE ="Chatroom applet>>>>>>>>>>>>>>>>>>>>>>>>"

protected String paintMessage//发表的消息

public ChatParameter Chat

public void init(){

paintMessage="正在生成聊天窗口"

repaint()

cp=new Frame(TITLE)

cp.setLayout(new BorderLayout())

String portNum=getParameter("port")//呢个参数勿太明

port=PORTNUM

if (portNum!=null) //书上是portNum==null,十分有问题

port=Integer.parseInt(portNum)

//CGI

ta=new TextArea(14,80)

ta.setEditable(false)//read only attribute

ta.setFont(new Font("Monospaced",Font.PLAIN,11))

cp.add(BorderLayout.NORTH,ta)

Panel p=new Panel()

Button b

//for login button

p.add(lib=new Button("Login"))

lib.setEnabled(true)

lib.requestFocus()

lib.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e){

login()

lib.setEnabled(false)

lob.setEnabled(true)

tf.requestFocus()//将键盘输入锁定再右边的文本框中

}

})

//for logout button

p.add(lob=new Button ("Logout"))

lob.setEnabled(false)

lob.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

logout()

lib.setEnabled(true)

lob.setEnabled(false)

lib.requestFocus()

}

})

p.add(new Label ("输入消息:"))

tf=new TextField(40)

tf.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

if(loggedIn){

//pw.println(Chat.CMD_BCAST+tf.getText())//Chat.CMD....是咩野来?

int j=tf.getText().indexOf(":")

if(j>0) pw.println(Chat.CMD_MESG+tf.getText())

else

pw.println(Chat.CMD_BCAST+tf.getText())

tf.setText("")//勿使用flush()?

}

}

})

p.add(tf)

cp.add(BorderLayout.SOUTH,p)

cp.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

//如果执行了setVisible或者dispose,关闭窗口

ChatClient.this.cp.setVisible(false)

ChatClient.this.cp.dispose()

logout()

}

})

cp.pack()//勿明白有咩用?

//将Frame cp放在中间

Dimension us=cp.getSize(),

them=Toolkit.getDefaultToolkit().getScreenSize()

int newX=(them.width-us.width)/2

int newY=(them.height-us.height)/2

cp.setLocation(newX,newY)

cp.setVisible(true)

paintMessage="Window should now be visible"

repaint()

}

//登录聊天室

public void login(){

if(loggedIn) return

try{

sock=new Socket(getCodeBase().getHost(),port)

is=new BufferedReader(new InputStreamReader(sock.getInputStream()))

pw=new PrintWriter(sock.getOutputStream(),true)

}catch(IOException e){

showStatus("Can't get socket: "+e)

cp.add(new Label("Can't get socket: "+e))

return}

//构造并且启动读入器,从服务器读取数据,输出到文本框中

//这里,长成一个线程来避免锁住资源(lockups)

new Thread (new Runnable(){

public void run(){

String line

try{

while(loggedIn &&((line=is.readLine())!=null))

ta.appendText(line+"\n")

}catch(IOException e){

showStatus("我的天啊,掉线了也!!!!")

return

}

}

}).start()

//假定登录(其实只是打印相关信息,并没有真正登录)

// pw.println(Chat.CMD_LOGIN+"AppletUser")

pw.println(Chat.CMD_LOGIN+"AppletUser")

loggedIn =true

}

//模仿退出的代码

public void logout(){

if(!loggedIn)

return

loggedIn=false

try{

if(sock!=null)

sock.close()

}catch(IOException ign){

// 异常处理哦

}

}

//没有设置stop的方法,即使从浏览器跳到另外一个网页的时候

//聊天程序还可以继续运行

public void paint(Graphics g){

Dimension d=getSize()

int h=d.height

int w=d.width

g.fillRect(0,0,w,2)

g.setColor(Color.black)

g.drawString(paintMessage,10,(h/2)-5)

}

}

聊天室服务器端

import java.net.*

import java.io.*

import java.util.*

public class ChatServer{

//聊天室管理员ID

protected final static String CHATMASTER_ID="ChatMaster"

//系统信息的分隔符

protected final static String SEP=": "

//服务器的Socket

protected ServerSocket servSock

//当前客户端列表

protected ArrayList clients

//调试标记

protected boolean DEBUG=false

public ChatParameter Chat

//主方法构造一个ChatServer,没有返回值

public static void main(String[] argv){

System.out.println("Chat server0.1 starting>>>>>>>>>>>>>>>>")

ChatServer w=new ChatServer()

w.runServer()

System.out.println("***ERROR*** Chat server0.1 quitting")

}

//构造和运行一个聊天服务

ChatServer(){

Chat=new ChatParameter()

clients=new ArrayList()

try{

servSock=new ServerSocket(7777)//实有问题拉,不过可能是他自己定义既一个class.

System.out.println("Chat Server0.1 listening on port:"+7777)

}catch(Exception e){

log("IO Exception in ChatServer.<init>")

System.exit(0)

}

}

public void runServer(){

try{

while(true){

Socket us=servSock.accept()

String hostName=us.getInetAddress().getHostName()

System.out.println("Accpeted from "+hostName)

//一个处理的线程

ChatHandler cl=new ChatHandler(us,hostName)

synchronized(clients){

clients.add(cl)

cl.start()

if(clients.size()==1)

cl.send(CHATMASTER_ID,"Welcome!You are the first one here")

else{

cl.send(CHATMASTER_ID,"Welcome!You are the latest of"+

clients.size()+" users.")

}

}

}

}catch(Exception e){

log("IO Exception in runServer:"+e)

System.exit(0)

}

}

protected void log(String s){

System.out.println(s)

}

//处理会话的内部的类

protected class ChatHandler extends Thread {

//客户端scoket

protected Socket clientSock

//读取socket的BufferedReader

protected BufferedReader is

//在socket 上发送信息行的PrintWriter

protected PrintWriter pw

//客户端出主机

protected String clientIP

//句柄

protected String login

public ChatHandler (Socket sock,String clnt)throws IOException {

clientSock=sock

clientIP=clnt

is=new BufferedReader(

new InputStreamReader(sock.getInputStream()))

pw=new PrintWriter (sock.getOutputStream(),true)

}

//每一个ChatHandler是一个线程,下面的是他的run()方法

//用于处理会话

public void run(){

String line

try{

while((line=is.readLine())!=null){

char c=line.charAt(0)//我顶你老母啊 ,果只Chat.CMD咩xx冇定义 扑啊///!!!

line=line.substring(1)

switch(c){

//case Chat.CMD_LOGIN:

case 'l':

if(!Chat.isValidLoginName(line)){

send(CHATMASTER_ID,"LOGIN"+line+"invalid")

log("LOGIN INVALID from:"+clientIP)

continue

}

login=line

broadcast(CHATMASTER_ID,login+" joins us,for a total of"+

clients.size()+" users")

break

// case Chat.CMD_MESG:

case 'm':

if(login==null){

send(CHATMASTER_ID,"please login first")

continue

}

int where =line.indexOf(Chat.SEPARATOR)

String recip=line.substring(0,where)

String mesg=line.substring (where+1)

log("MESG: "+login+"--->"+recip+": "+mesg)

ChatHandler cl=lookup(recip)

if(cl==null)

psend(CHATMASTER_ID,recip+"not logged in.")

else

cl.psend(login,mesg)

break

//case Chat.CMD_QUIT:

case 'q':

broadcast(CHATMASTER_ID,"Goodbye to "+login+"@"+clientIP)

close()

return//ChatHandler结束

// case Chat.CMD_BCAST:

case 'b':

if(login!=null)

broadcast(login,line)

else

log("B<L FROM"+clientIP)

break

default:

log("Unknow cmd"+c+"from"+login+"@"+clientIP)

}

}

}catch(IOException e){

log("IO Exception :"+e)

}finally{

//sock 结束,我们完成了

//还不能发送再见的消息

//得有简单的基于命令的协议才行

System.out.println(login+SEP+"All Done")

synchronized(clients){

clients.remove(this)

if(clients.size()==0){

System.out.println(CHATMASTER_ID+SEP+

"I'm so lonely I could cry>>>>>")

}else if(clients.size()==1){

ChatHandler last=(ChatHandler)clients.get(0)

last.send(CHATMASTER_ID,"Hey,you are talking to yourself again")

}

else{

broadcast(CHATMASTER_ID,"There are now"+clients.size()+" users")

}

}

}

}

protected void close(){

if(clientSock==null){

log("close when not open")

return

}

try{

clientSock.close()

clientSock=null

}catch(IOException e){

log("Failure during close to "+clientIP)

}

}

//发送一条消息给用户

public void send(String sender,String mesg){

pw.println(sender+SEP+"*>"+mesg)

}

//发送私有的消息

protected void psend(String sender ,String msg){

send("<*"+sender+"*>",msg)

}

//发送一条消息给所有的用户

public void broadcast (String sender,String mesg){

System.out.println("Broadcasting"+sender+SEP+mesg)

for(int i=0i<clients.size()i++){

ChatHandler sib=(ChatHandler)clients.get(i)

if(DEBUG)

System.out.println("Sending to"+sib)

sib.send(sender,mesg)

}

if(DEBUG) System.out.println("Done broadcast")

}

protected ChatHandler lookup(String nick){

synchronized(clients){

for(int i=0i<clients.size()i++){

ChatHandler cl=(ChatHandler)clients.get(i)

if(cl.login.equals(nick))

return cl

}

}

return null

}

//将ChatHandler对象转换成一个字符串

public String toString(){

return "ChatHandler["+login+"]"

}

}

}

public class ChatParameter {

public static final char CMD_BCAST='b'

public static final char CMD_LOGIN='l'

public static final char CMD_MESG='m'

public static final char CMD_QUIT='q'

public static final char SEPARATOR=':'//?????

public static final int PORTNUM=7777

public boolean isValidLoginName(String line){

if (line.equals("CHATMASTER_ID"))

return false

return true

}

public void main(String[] argv){

}

}

记得加分啊!!!

我以前也做过个简单的聊天室,后来因为另有任务没有做完,不过表情还是基本实现了,和你交流一下希望对你有点帮助。我的原理是这样的:

因为我发言用的是文本框,而文本框不支持图片,所以只能用符号来代替,用户选择图片后保存的实际是该图片所对应的符号,显示时再判断一下发言内容是否包含那些符号。如果有的话则把该符号转换成所对应图片的路径就好了。图片可以到网上找,符号可以在msn里找到,在msn聊天窗口->选择图片->其他,可以看到图片对应的符号,如果你直接在msn里输入符号它自动会转换成图片,可是文本框不行。听说网上有个FreeTextBox好用,可我用不来。

在html里有个隐藏层(div)里面是一个表格存放表情

然后页面上有个表情图片点击可控制 层的显示和隐藏

用户点击某个表情后就得到了个符号。

下面的html代码主要是隐藏层的实现和符号的取得贴出来你参考一下。当然你也可以将全部表情放在页面上然后用"radio"或"checkBox"选这样可能更简单点,至于后台符号转换成图片,开发语言可能不同你自己研究一下吧

<%@ Page language="c#" Codebehind="frmSend.aspx.cs" AutoEventWireup="false" Inherits="ChatRoom.Page.frmSend" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<title>frmSend</title>

<script language="javascript">

function doSubmit()

{

var user=document.all("txtUser")

var objUser=document.all("txtObjUser")

if(user.value==objUser.value)

{

alert("ト嵂サトワム。ヤ�ヘラヤシコチトフ・")

objUser.value="all"

return false

}

if(document.all("cbChat").checked)

{

if(document.all("txtObjUser").value=="all" || document.all("txtObjUser").value=="All")

{

alert("ヒスチトカヤマ�サトワホェall")

return false

}

}

return true

}

ie4=(document.all)?true:false

ns4=(document.layers)?true:false

function toExit()

{

var args=toExit.arguments

var visible=args[0]

if(ns4)

{

theObj=eval("document.layers[\'"+args[1]+"\']")

if(theObj)theObj.visibility=visible

}

else if(ie4)

{

if(visible=='show')visible='visible'

if(visible=='hide')visible='hidden'

theObj=document.all("Layer1")

if(theObj)theObj.style.visibility=visible

}

}

function doClick(em)

{

var txt=document.all("txtMessage").value

txt+=em

document.all("txtMessage").value=txt

document.all("hidEmotion").value=em

toExit('hide','boysoft')

}

function doBold()

{

var word=document.all("txtMessage")

if (word.style.fontWeight == "bold")

{

word.style.fontWeight = "normal"

document.all("hidBold").value=""

}

else

{

word.style.fontWeight = "bold"

document.all("hidBold").value="bold"

}

event.cancelBubble = true

event.returnValue = false

}

function doItalic()

{

var txt=document.getElementById("txtMessage")

if(txt.style.fontStyle=="italic")

{

txt.style.fontStyle="normal"

document.all("hidItalic").value=""

}

else

{

txt.style.fontStyle="italic"

document.all("hidItalic").value="italic"

}

}

function doShowColor()

{

var args=doShowColor.arguments

var visible=args[0]

if(ns4)

{

theObj=eval("document.layers[\'"+args[1]+"\']")

if(theObj)theObj.visibility=visible

}

else if(ie4)

{

if(visible=='show')visible='visible'

if(visible=='hide')visible='hidden'

theObj=document.all("Layer3")

if(theObj)theObj.style.visibility=visible

}

}

function doHidde()

{

toExit('hide','boysoft')

doShowColor('hide','boysoft')

}

function doSetColor(id)

{

var txt=document.getElementById("txtMessage")

var imgColor=document.getElementById("imgColor")

txt.style.color=id

document.all("hidColor").value=id

imgColor.style.backgroundColor=id

doShowColor('hide','boysoft')

}

function doFontChange(txtFont)

{

if(txtFont=="Font")

{

return

}

document.getElementById("txtMessage").style.fontFamily=txtFont

document.all("hidFont").value=txtFont

}

function doSizeChang(txtSize)

{

if(txtSize=="Size")

{

return

}

document.getElementById("txtMessage").style.fontSize=txtSize

document.all("hidSize").value=txtSize

}

</script>

<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

<meta content="C#" name="CODE_LANGUAGE">

<meta content="JavaScript" name="vs_defaultClientScript">

<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

<script language="JavaScript" type="text/JavaScript">

<!--

function MM_reloadPage(init) { //reloads the window if Nav4 resized

if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {

document.MM_pgW=innerWidthdocument.MM_pgH=innerHeightonresize=MM_reloadPage}}

else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload()

}

MM_reloadPage(true)

//-->

</script>

<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

<meta content="C#" name="CODE_LANGUAGE">

<meta content="JavaScript" name="vs_defaultClientScript">

<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

<script language="JavaScript" type="text/JavaScript">

<!--

function MM_reloadPage(init) { //reloads the window if Nav4 resized

if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {

document.MM_pgW=innerWidthdocument.MM_pgH=innerHeightonresize=MM_reloadPage}}

else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload()

}

MM_reloadPage(true)

//-->

</script>

</HEAD>

<body onmousedown="doHidde()" bgColor="#edf1fa" onload="document.Form1.txtMessage.focus()"

MS_POSITIONING="GridLayout">

<form id="Form1" onsubmit="javascript:return doSubmit()" method="post" runat="server">

<INPUT id="hidBold" style="Z-INDEX: 103LEFT: 64pxWIDTH: 152pxPOSITION: absoluteTOP: 216pxHEIGHT: 22px"

type="hidden" size="20" name="hidBold"><INPUT id="hidEmotion" style="Z-INDEX: 109LEFT: 64pxPOSITION: absoluteTOP: 416px"

type="hidden" name="Hidden6" runat="server"><INPUT id="hidColor" style="Z-INDEX: 108LEFT: 64pxPOSITION: absoluteTOP: 448px" type="hidden"

name="Hidden7" runat="server"><INPUT id="hidFont" style="Z-INDEX: 107LEFT: 64pxPOSITION: absoluteTOP: 344px" type="hidden"

name="Hidden4" runat="server"><INPUT id="hidSize" style="Z-INDEX: 106LEFT: 64pxPOSITION: absoluteTOP: 376px" type="hidden"

name="Hidden5" runat="server"><INPUT id="hidUnderLine" style="Z-INDEX: 105LEFT: 64pxPOSITION: absoluteTOP: 304px"

type="hidden" name="Hidden3" runat="server"><INPUT id="hidItalic" style="Z-INDEX: 104LEFT: 64pxPOSITION: absoluteTOP: 256px"

type="hidden" name="Hidden2" runat="server">

<TABLE id="Table1" style="WIDTH: 712pxHEIGHT: 112px" cellSpacing="1" cellPadding="1"

width="712" border="1">

<TR>

<TD><span title="bold"><IMG onclick="doBold()" src="../images/bold.gif"> </SAPN><span title="italic" onclick="doItalic()"><IMG src="../images/italic.gif"></span><span title="underline" onclick="doUnderline()"><IMG src="../images/underline.gif"></span><span title="Font Color"><IMG id="imgColor" style="BACKGROUND-COLOR: black" onclick="doShowColor('show','boysoft')"

src="../images/colourpick.gif" runat="server"></span> <SELECT onchange="doFontChange(this.value)" name="ddFont" id="Select1" runat="server">

<OPTION value="Font" selected>Font</OPTION>

<OPTION value="Arial">Arial</OPTION>

<OPTION value="Verdana">Verdana</OPTION>

<OPTION value="Comic Sans MS">Comic Sans MS</OPTION>

<OPTION value="Courier">Courier</OPTION>

<OPTION value="Georgia">Georgia</OPTION>

<OPTION value="Impact">Impact</OPTION>

<OPTION value="Lucida Console">Lucida Console</OPTION>

<OPTION value="Tahoma">Tahoma</OPTION>

<OPTION value="Times New Roman">Times New Roman</OPTION>

<OPTION value="Wingdings">Wingdings</OPTION>

</SELECT><SELECT onchange="doSizeChang(this.value)" name="ddSize" id="Select2" runat="server">

<OPTION value="Size" selected>Size</OPTION>

<OPTION value="12px">12</OPTION>

<OPTION value="13px">13</OPTION>

<OPTION value="14px">14</OPTION>

<OPTION value="15px">15</OPTION>

<OPTION value="16px">16</OPTION>

<OPTION value="17px">17</OPTION>

<OPTION value="18px">18</OPTION>

<OPTION value="19px">19</OPTION>

<OPTION value="20px">20</OPTION>

<OPTION value="21px">21</OPTION>

<OPTION value="22px">22</OPTION>

<OPTION value="23px">23</OPTION>

<OPTION value="24px">24</OPTION>

<OPTION value="25px">25</OPTION>

<OPTION value="26px">26</OPTION>

<OPTION value="27px">27</OPTION>

<OPTION value="28px">28</OPTION>

<OPTION value="29px">29</OPTION>

<OPTION value="30px">30</OPTION>

<OPTION value="31px">31</OPTION>

<OPTION value="32px">32</OPTION>

</SELECT> <span title="insert emotions"><IMG onclick="toExit('show','boysoft')" src="../images/emotion.gif"></span> <span title="sign out">

<asp:imagebutton id="ibExit" runat="server" ImageUrl="../images/logoff.gif"></asp:imagebutton></span></span>

<div id="Layer1" style="BORDER-RIGHT: #000000 1pxBORDER-TOP: #000000 1pxZ-INDEX: 101LEFT: 286pxVISIBILITY: hiddenBORDER-LEFT: #000000 1pxWIDTH: 200pxBORDER-BOTTOM: #000000 1pxPOSITION: absoluteTOP: 48pxHEIGHT: 115px">

<table cellPadding="0" width="200" bgColor="#ffffff" border="1">

<tr>

<td><IMG onmouseup="doClick('(A)')" height="19" src="../images/emangel.gif" width="19" name="emangel"></td>

<td><IMG onmouseup="doClick(':@ (')" height="19" src="../images/emangry.gif" width="19" name="emangry"></td>

<td><IMG onmouseup="doClick('(B)')" height="19" src="../images/embeer.gif" width="19" name="embeer"></td>

<td><IMG onmouseup="doClick('(^)')" height="19" src="../images/emcake.gif" width="19"></td>

<td><IMG onmouseup="doClick('(@)')" height="19" src="../images/emcat.gif" width="19"></td>

<td><IMG onmouseup="doClick('(O)')" height="19" src="../images/emclock.gif" width="19"></td>

<td><IMG onmouseup="doClick('(D)')" height="19" src="../images/emcocktl.gif" width="19"></td>

<td><IMG onmouseup="doClick(':S')" height="19" src="../images/emcrook.gif" width="19"></td>

</tr>

<tr>

<td><IMG onmouseup="doClick(':。ョ(')" height="19" src="../images/emcry.gif" width="19"></td>

<td><IMG onmouseup="doClick(':|')" height="19" src="../images/emdgust.gif" width="19"></td>

<td><IMG onmouseup="doClick('(&)')" height="19" src="../images/emdog.gif" width="19"></td>

<td><IMG onmouseup="doClick(':$')" height="19" src="../images/emembarrassed.gif" width="19"></td>

<td><IMG onmouseup="doClick('(X)')" height="19" src="../images/emfemale.gif" width="19"></td>

<td><IMG onmouseup="doClick('(~)')" height="19" src="../images/emfilm.gif" width="19"></td>

<td><IMG onmouseup="doClick('(G)')" height="19" src="../images/emgift.gif" width="19"></td>

<td><IMG onmouseup="doClick('(})')" height="19" src="../images/emhug2.gif" width="19"></td>

</tr>

<tr>

<td><IMG onmouseup="doClick('({)')" height="19" src="../images/emhug.gif" width="19"></td>

<td><IMG onmouseup="doClick('(K)')" height="19" src="../images/emlips.gif" width="19"></td>

<td><IMG onmouseup="doClick('8-|')" height="19" src="../images/17.gif" width="19"></td>

<td><IMG onmouseup="doClick('(L)')" height="19" src="../images/emlove.gif" width="19"></td>

<td><IMG onmouseup="doClick('(Z)')" height="19" src="../images/emmale.gif" width="19"></td>

<td><IMG onmouseup="doClick('(M)')" height="19" src="../images/emmessag.gif" width="19"></td>

<td><IMG onmouseup="doClick('(S)')" height="19" src="../images/emmoon.gif" width="19"></td>

<td><IMG onmouseup="doClick('(8)')" height="19" src="../images/emnote.gif" width="19"></td>

</tr>

<tr>

<td><IMG onmouseup="doClick('(T)')" height="19" src="../images/emphone.gif" width="19"></td>

<td><IMG onmouseup="doClick('(P)')" height="19" src="../images/emphoto.gif" width="19"></td>

<td><IMG onmouseup="doClick('(F)')" height="19" src="../images/emrose.gif" width="19"></td>

<td><IMG onmouseup="doClick('(W)')" height="19" src="../images/emrosesad.gif" width="19"></td>

<td><IMG onmouseup="doClick(':(')" height="19" src="../images/emsad.gif" width="19"></td>

<td><IMG onmouseup="doClick(':)')" height="19" src="../images/emsmile.gif" width="19"></td>

<td><IMG onmouseup="doClick('(H)')" height="19" src="../images/emsmiled.gif" width="19"></td>

<td><IMG onmouseup="doClick(':-O')" height="19" src="../images/emsmileo.gif" width="19"></td>

</tr>

<tr>

<td><IMG onmouseup="doClick(':P')" height="19" src="../images/emsmilep.gif" width="19"></td>

<td><IMG onmouseup="doClick('(*)')" height="19" src="../images/emstar.gif" width="19"></td>

<td><IMG onmouseup="doClick('(C)')" height="19" src="../images/emtea.gif" width="19"></td>

<td><IMG onmouseup="doClick(':D')" height="19" src="../images/emteeth.gif" width="19"></td>

<td><IMG onmouseup="doClick('(N)')" height="19" src="../images/emthdown.gif" width="19"></td>

<td><IMG onmouseup="doClick('(Y)')" height="19" src="../images/emthup.gif" width="19"></td>

<td><IMG onmouseup="doClick('(U)')" height="19" src="../images/emunlove.gif" width="19"></td>

<td><IMG onmouseup="doClick(')')" height="19" src="../images/emwink.gif" width="19"></td>

</tr>

</table>

</div>

</TD><!--font style="FONT-WEIGHT: boldFONT-SIZE: 30pxCOLOR: redFONT-STYLE: italicFONT-FAMILY: 'Arial Black'TEXT-DECORATION: underline"--></TR>

<TR>

<TD style="HEIGHT: 53px"><asp:textbox id="txtMessage" ForeColor="" runat="server" Width="576px" Height="43px"></asp:textbox><asp:button id="btSay" runat="server" Height="42px" Text="send"></asp:button></TD>

</TR>

<TR>

<TD><asp:textbox id="txtUser" runat="server" Width="120px" ReadOnly="True" BorderStyle="Groove" BackColor="#EDF1FA"

ForeColor="Black"></asp:textbox><asp:label id="Label2" runat="server">to</asp:label><FONT face="ヒホフ・><FONT face="ヒホフ・><asp:textbox id="txtObjUser" runat="server" Width="120px" ReadOnly="True" BorderStyle="Groove"

BackColor="#EDF1FA"></asp:textbox></FONT></FONT><FONT face="ヒホフ・></FONT><asp:checkbox id="cbChat" runat="server" Text="Whisper "></asp:checkbox></TD>

</TR>

</TABLE>

</form>

<div id="Layer3" style="Z-INDEX: 102LEFT: 87pxVISIBILITY: hiddenWIDTH: 115pxPOSITION: absoluteTOP: 49pxHEIGHT: 73px">

<table borderColor="#c0c0c0" height="60" cellPadding="0" width="114" border="1">

<tr>

<td onmousedown="doSetColor('#FF0000')" width="12" bgColor="#ff0000"> </td>

<td onmousedown="doSetColor('#00ff00')" width="12" bgColor="#00ff00"> </td>

<td onmousedown="doSetColor('#0000ff')" width="12" bgColor="#0000ff"> </td>

<td onmousedown="doSetColor('#ffff00')" width="12" bgColor="#ffff00"> </td>

<td onmousedown="doSetColor('#00ffff')" width="12" bgColor="#00ffff"> </td>

<td onmousedown="doSetColor('#ff00ff')" width="14" bgColor="#ff00ff"> </td>

<td onmousedown="doSetColor('#000000')" width="10" bgColor="#000000"> </td>

</tr>

<tr>

<td onmousedown="doSetColor('#ff8040')" bgColor="#ff8040"> </td>

<td onmousedown="doSetColor('#0080ff')" bgColor="#0080ff"> </td>

<td onmousedown="doSetColor('#408080')" bgColor="#408080"> </td>

<td onmousedown="doSetColor('#c0c0c0')" bgColor="#c0c0c0"> </td>

<td onmousedown="doSetColor('#0000a0')" bgColor="#0000a0"> </td>

<td onmousedown="doSetColor('#8000ff')" bgColor="#8000ff"> </td>

<td onmousedown="doSetColor('#ff80ff')" bgColor="#ff80ff"> </td>

</tr>

<tr>

<td onmousedown="doSetColor('#8080c0')" bgColor="#8080c0"> </td>

<td onmousedown="doSetColor('#008040')" bgColor="#008040"> </td>

<td onmousedown="doSetColor('#808040')" bgColor="#808040"> </td>

<td onmousedown="doSetColor('#99cc33')" bgColor="#99cc33"> </td>

<td onmousedown="doSetColor('#00ff80')" bgColor="#00ff80"> </td>

<td onmousedown="doSetColor('#ff3399')" bgColor="#ff3399"> </td>

<td onmousedown="doSetColor('#ff8080')" bgColor="#ff8080"> </td>

</tr>

</table>

</div>

</body>

</HTML>