posts - 0,  comments - 1,  trackbacks - 0

top.jsp
<%@ page import="java.util.Map" %>
<%@ page import="com.seipher.dto.Phone" %>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <% response.setHeader("Cache-Control", "no-store");
    response.setHeader("Pragrma", "no-cache");
    response.setDateHeader("Expires", 0); %>
<head>
 <title>logo页面</title>

<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/agent/js/util.js'></script>
<script type='text/javascript' src='/agent/js/s2cp.js'></script>
  <script type='text/javascript' src='/dwr/interface/ctiManageDwr.js'></script>
  <script type='text/javascript' src='/dwr/interface/userDwr.js'></script>
  <script type='text/javascript' src='/dwr/interface/notesDwr.js'></script>
<style type="text/css">
<!--
body {
 margin-left: 0px;
 margin-top: 0px;                                            
 margin-right: 0px;
 margin-bottom: 0px;
}

body,td,th {
 font-size: 12px;
 color: #000000;
}
.STYLE1 {color: #FFFFFF}
-->
</style>
<script type="text/javascript">

 <%
String sysRole = (String)session.getAttribute("sysRole");
%>
 var ext_phone = <%="".equals(session.getAttribute("phone")) || session.getAttribute("phone") == null ? 0 : session.getAttribute("phone")%>;
 var sysRole = '<%=sysRole%>';

function mainFrameHref(){

     <%if ( "1".equals(sysRole )) {%>
   parent.mainFrame.location.href = "/agent/work/userFault.jsp";
<%}%>
     <%if ( "2".equals(sysRole )) {%>
   parent.mainFrame.location.href = "/agent/realTime/agentState.jsp";
<%}%>
    <%if ( "3".equals(sysRole )) {%>
   parent.mainFrame.location.href = "/agent/work/workOrder.jsp";
<%}%>
    <%if ( "4".equals(sysRole )) {%>
   parent.mainFrame.location.href = "/agent/sysAgent/list.jsp";
<%}%>
 
}

 

function connectError() {
<%
 Map<String,String> map = Phone.getStates();
 String status = map.get(session.getAttribute("phone"));
%>
    var status = <%=status == null ? "\"\"" : "\""+status+"\""%>;
    if(status !=""){
        alert(status);
    }
}

function testPhone(){
    if(ext_phone == null || ext_phone == 0){
           //设置主叫号码为可见
            var telNum = document.getElementById("telNum");
            var telImg = document.getElementById("telImg");
            telNum.style.display = "block";
            telImg.style.dispay = "";
            //显示来电号码
//            telImg.innerHTML = "<img src='/agent/images/PH1.gif' width='31' height='36' />";
            telNum.innerHTML = "分机未绑定";
    }
}

 function register() {
     ctiManageDwr.updateUserList('<%=session.getId()%>_top', true, registerCallBack);
 }

 function updateUsers(data) {
 }

 function registerCallBack(data) {
 }
 
function errorHandle(error) {
    window.status = error;
}

 dwr.engine.setErrorHandler(errorHandle);
dwr.engine.setWarningHandler(errorHandle);
 


function active() {
  dwr.engine.setActiveReverseAjax(true);
  // 激活反转 重要
}
 
function getAgentState(data) {
 }

function getSessionState(data) {
 }
function changeAgentState(data) {
 }

 

//来电转接
function incomming(telNumber, phone) {
      try {
    window.status = "来电号码:" + telNumber + " 转接坐席:" + phone + " 登陆坐席:" + ext_phone;
     if (ext_phone == phone) {

            //            alert(telNumber);
            //设置主叫号码为可见
            var telNum = document.getElementById("telNum");
            var telImg = document.getElementById("telImg");
            telNum.style.display = "block";
            telImg.style.dispay = "";
            //显示来电号码
            telImg.innerHTML = "<img src='/agent/images/PH1.gif' width='31' height='36' />";
            telNum.innerHTML = telNumber;

             parent.mainFrame.setCallTel(telNumber);
        }
    } catch(ex) {
            //alert(ex);
        }
 
}

//开始通话计时
function startTalk(phone) {
    try {
        if (ext_phone == phone) {
            var talkSpan = document.getElementById("talkSpan");
            talkSpan.style.display = "block";
                  //开始通话计时
            DoCallTimer();
        }
    } catch(ex) {
    }

}

 function quit(){  //点XX的时候会进去
     if (event.clientX<document.body.clientWidth  && event.clientY<0||event.altKey) {
         window.location.href = "clear.jsp";
     }
 }

//通话计时
var CallTimeLen = "0";
var timekeeping = null;
var minute = "0";
var second = "0";
function DoCallTimer()
{
    try {
        var talkTime = document.getElementById("talkTime");
        CallTimeLen = parseInt(CallTimeLen) + 1;
        minute = parseInt(CallTimeLen / 60);
        second = CallTimeLen % 60;
        if (minute == "0")
        {
            talkTime.innerText = second + " 秒";
        }
        else
        {
            talkTime.innerText = minute + " 分 " + second + " 秒";
        }
        window.timekeeping = window.setTimeout("DoCallTimer()", 1000);
    } catch(ex) {
    }

}


 


//清除时间
function clearTime() {
    try {
        clearTimeout(window.timekeeping);
        CallTimeLen = "0";
    } catch(ex) {
    }

}

//隐藏主叫号码及通话计时
function hiddenTalk(phone) {
    try {
        if (ext_phone == phone) {
            clearTime();
            var telNum = document.getElementById("telNum");
            var talkSpan = document.getElementById("talkSpan");
            var telImg = document.getElementById("telImg");
            telNum.style.display = "none";
            talkSpan.style.display = "none";
            telImg.innerHTML = "&nbsp";

            try {
                parent.mainFrame.clearCallTel();
            } catch(ex) {
            }
        }
    } catch(ex) {
    }
}

</script>

</head>

<%--<body onload="active();MM_preloadImages('/agent/images/tqdl_.png','/agent/images/qhyh_.png')">--%>


 <%--<body onbeforeunload="quit()" onunload="quit()" onload="register();MM_preloadImages('/agent/images/tqdl_.png','/agent/images/qhyh_.png')">--%>
 <body onbeforeunload="quit()" onunload="quit()" onload="register();active();findCmt();connectError();mainFrameHref();MM_preloadImages('/agent/images/tqdl_.png','/agent/images/qhyh_.png')">
 <%--<body onbeforeunload="quit()" onunload="quit()" onload="register();active();testPhone();MM_preloadImages('/agent/images/tqdl_.png','/agent/images/qhyh_.png')">--%>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="17%" align="left" background="/softPhone/softImages/top_02.gif">
     <img src="/softPhone/softImages/logo.gif" width="199" height="43" alt="" /></td>
    <td width="54%" background="/softPhone/softImages/top_02.gif"><table width="85%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td nowrap width="35" height="17" align="left"><img src="/softPhone/softImages/top_tel.gif" width="17" height="17" /></td>
        <td nowrap width="33"><strong>保持</strong></td>
        <td nowrap width="69">&nbsp;</td>
        <td nowrap colspan="3">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap  width="25" align="center" valign="middle"><img src="/softPhone/softImages/top_jt.gif" width="10" height="10" /></td>
        <td nowrap  height="17">&nbsp;</td>
        <td nowrap width="69" align="left"><strong>电话号码:</strong></td>
        <td nowrap  width="81" align="center">13720425172</td>
        <td nowrap  width="64"><strong><span id="qtqk">其他情况</span></strong></td>
        <td nowrap  width="259">&nbsp;</td>
      </tr>
    </table></td>
    <td width="2%" align="left" background="/softPhone/softImages/top_05.gif"><img src="/softPhone/softImages/top_04.gif" width="23" height="43" alt="" /></td>
    <td width="27%" align="right" background="/softPhone/softImages/top_05.gif"><table width="10%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><table width="220" height="18" border="0" cellpadding="0" cellspacing="0">
          <tr>
            <td width="7%"><img src="/softPhone/softImages/top_ms.gif" width="15" height="11" /></td>
            <td width="24%" align="left"><span class="STYLE1" onclick="openWindow()" style="cursor:pointer">在线便签</span></td>
            <td width="9%"><img src="/softPhone/softImages/top_xg.gif" onclick="changePwd()" style="cursor:pointer" width="16" height="16" /></td>
            <td width="24%" align="left" class="STYLE1"><span onclick="changePwd()" style="cursor:pointer">修改密码</span></td>
            <td width="6%"><img src="/softPhone/softImages/top_gb.gif" onclick="quitSys()" style="cursor:pointer"  width="15" height="13" /></td>
            <td width="30%" class="STYLE1"><span onclick="quitSys()" style="cursor:pointer">退出登录</span></td>
          </tr>
          <tr><td colspan="6"><span name="info" id="info" style="color:red"></span></td></tr>
        </table></td>
      </tr>
    </table></td>
  </tr>
</table>

<span id="span1">&nbsp;</span>

</body>
</html>
<script type="text/javascript">
    function changePwd() {
        window.showModelessDialog("/agent/sysAgent/changePwd.jsp", window, "dialogWidth:300px;dialogHeight:200px;status:No;resizable:Yes;center:Yes");
    }
    function quitSys() {
        if (confirm("是否退出本系统?")) {
            userDwr.logout(backLogout);
        }
    }
    function backLogout(data) {
        window.parent.location = '/agent/login.jsp';
    }

    function findCmt(){      
        notesDwr.queryAllUnreadCmt("<%=session.getId()%>",showInfo);
    }
    function showInfo(data){ 
            if(data.length>0){
                document.getElementById("info").innerHTML = "您有" + data.length + "条未读消息";
            }else{
                document.getElementById("info").innerHTML = "";
            }
    }

    function openWindow(){ 
        window.open("/agent/notes/onlineUser.jsp","","width=600px,height=350px,toolbar=0,menubar=0");
    }
</script>



chat.jsp

<%@ page contentType="text/html;charset=utf-8" language="java" isELIgnored="false" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>即时通信</title>
<style type="text/css">
<!--
body {
 margin-left: 0px;
 margin-top: 0px;
 margin-right: 0px;
 margin-bottom: 0px;
}
body,td,th {
 font-size: 12px;
 color: #006699;
}
.STYLE1 {color: #000000}
-->
</style>
<script type='text/javascript' src='/dwr/util.js'></script>
<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/agent/js/s2cp.js'></script>
<script type='text/javascript' src='/agent/js/util.js'></script>
<script type="text/javascript" src="/dwr/interface/notesDwr.js"></script>
</head>
  <%
      response.setHeader("Cache-Control","no-store");
      response.setHeader("Pragrma","no-cache");
      response.setDateHeader("Expires",0);
  %>
<body onbeforeunload="to_remove();" onunload="" onload="userList();updateScriptSession();messageList();reverse();">
<form name="imform" >
<input type="hidden" name="senderId" value="">
<input type="hidden" name="senderName" value="">
<input type="hidden" name="receiverId" value="">
<input type="hidden" name="receiverName" value="">
<input type="hidden" name="receiverPassword" value="">
 <table width="592" height="337" border="0" cellpadding="0" cellspacing="0" bgcolor="#C1E1FA" style="border:1px solid #3F87BC;">
  <tr>
    <td height="21" colspan="5" align="left" valign="middle">
        <table width="210" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td width="43" align="center" valign="middle"><img src="/agent/images/yd.gif" width="16" height="16" /></td>
                <td width="167"><strong id="note">与  对话中</strong></td>
            </tr>
        </table>
    </td>
    <td width="207" rowspan="6" align="center" valign="top">
        <table width="197" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td width="139">&nbsp;</td>
                <td width="80" align="right" valign="top"><table width="77" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td width="26" height="18"><img src="/agent/images/zxh.gif" width="26" /></td>
                <td width="26"><img src="/agent/images/zdh.gif" width="26" /></td>
                <td width="25"><img src="/agent/images/j_gb_t.gif" width="25" /></td>
           </tr>
        </table>
    </td>
   </tr>
   <tr>
        <td height="20" colspan="2">&nbsp;</td>
   </tr>
   <tr>
        <td colspan="2" align="center" valign="top">
            <table width="202" border="0" cellspacing="0" cellpadding="0" style="border:1px solid #3F87BA;">
                <tr>
                    <td width="27" height="22" align="center" valign="middle" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; "><img src="/agent/images/qlt.gif" width="20" height="17" /></td>
                    <td width="148" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; ">&nbsp;</td>
                    <td width="25" align="center" valign="middle" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; "><img src="/agent/images/ljt_t.gif" width="9" height="9" /></td>
                </tr>
                <tr>
                    <td height="93px" valign="top" colspan="3" bgcolor="#FFFFFF">
                        <table name="onlineUser" id="onlineUser" width="163px" border="0"  align="center" cellpadding="0" cellspacing="0">
                              <span id="online">&nbsp;</span>
                        </table>
                    </td>
                </tr>
            </table>
        </td>
      </tr>
      <tr>
        <td height="8" colspan="2"></td>
      </tr>
      <tr>
        <td height="56" colspan="2" align="center" valign="top">
            <table width="201" height="161" border="0" cellpadding="0" cellspacing="0" style="border:1px solid #3F87BA;">
                <tr>
                    <td width="26" height="21" align="center" valign="middle" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; "><img src="/agent/images/qlt.gif" width="20" height="17" /></td>
                    <td width="159" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; ">&nbsp;</td>
                    <td width="14" align="center" valign="middle" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; "><img src="/agent/images/ljt_t.gif" width="9" height="9" /></td>
                </tr>
                <tr>
                    <td height="135" colspan="3" align="center" valign="top" bgcolor="#FFFFFF">
                        <table width="163" border="0" align="center" cellpadding="0" cellspacing="0">
                            <span id="users">&nbsp;</span>
                        </table>
                    </td>
                </tr>
            </table>
          </td>
        </tr>
  </table>
  </td>
  </tr>
  <tr>

    <td width="13" height="15">&nbsp;</td>
    <td width="97">
        <table width="97" border="0" cellspacing="0" cellpadding="0">
            <tr bgcolor="#C1E1FA">
                <td align="center" valign="middle"><img src="/agent/images/ckltjl.gif" alt="" width="15" height="16" /></td>
                <td align="left" valign="middle" onclick="showHistory();" style="cursor:pointer">查看聊天记录</td>
            </tr>
        </table>
    </td>
    <td width="80" height="15">
        <table width="80" border="0" cellspacing="0" cellpadding="0">
            <tr bgcolor="#C1E1FA">
                <td align="center" valign="middle"><img src="/agent/images/qkltjl.gif" alt="" width="16" height="16" /></td>
                <td align="left" valign="middle" onclick="to_clear();" style="cursor:pointer">清空记录</td>
            </tr>
        </table>
    </td>
  </tr>
  <tr>
    <td height="201" colspan="5" align="center" valign="top">

        <table width="326" height="201" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td height="201" align="left">
            <div name="msg" id="msg"  style="color:black;overflow:scroll;overflow-x:hidden;overflow-y:scroll;width:370px;height:201px;background-color:#FFFFFF">
            </div>


        </td>
      </tr>
    </table> </td>
  </tr>
  <tr>
    <td height="8" colspan="5" align="center"></td>
  </tr>
  <tr>
    <td height="18" colspan="5" align="center">
        <table width="328" border="0" cellspacing="0" cellpadding="0" style="border:1px solid #3F87BC;">
      <tr>
        <td width="326" bgcolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td align="center"  bgcolor="#FFFFFF"><textarea name="message" id="message"  cols="44" rows="3" style="border:0px"></textarea></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td colspan="2" align="center" valign="middle">Enter键 换行 Ctrl+Enter键 发送消息</td>
    <td height="30" colspan="3" align="center" valign="middle"><table width="154" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="77" align="center" valign="middle"><img src="/agent/images/j_fs.gif" width="65" height="22" style="cursor:pointer" onclick="send();"/></td>
        <td width="77" align="center" valign="middle"><img src="/agent/images/j_gb.gif" width="65" height="22"  style="cursor:pointer" onclick="to_close();" /></td>
      </tr>
    </table>    </td>
  </tr>
</table>
</form>
<script type="text/javascript">

    function updateScriptSession(){
        notesDwr.bindScriptSession('<%=session.getId()%>',updateScript);
    }
    function updateScript(){}

    function chat(data){
       var textarea = document.getElementById("msg");
        var history = textarea.innerHTML;
        var date = new Date();
        var month = date.getMonth()+1;
        var sDate = date.getFullYear()+"年"+month+"月"+date.getDate()+"日"+date.getHours()+"时"+date.getMinutes()+"分"+date.getSeconds()+"秒";
        var newMsg = history+"<br>"+sDate+data.sender.userName+" 对 "+data.receiver.userName+"说:<br>"+data.message;;
        textarea.innerHTML = newMsg;
    }

    function reverse() {
        dwr.engine.setActiveReverseAjax(true);
    }

    function userList(){
       notesDwr.showOnlineUser(showOnline);
    }


    function showOnline(data){
        var users = document.getElementById("online");
        users.innerHTML = "";
        for (var i = 0; i < data.length; i++) {
            if (data[i].sessionid != '<%=session.getId()%>') {
                users.innerHTML = users.innerHTML+addCheckBox(data[i].userid, "myCheckBox") + data[i].username;
            }else{
                document.getElementById("senderId").value = data[i].userid;
                document.getElementById("senderName").value = data[i].username;
            }
         }
    }

    function addCheckBox(value, name) {
        var check = "<input type=\"checkbox\" name=\"" + name + "\" value=\"" + value + "\"/>" ;
        return check;
    }


    <%--function showUserList(data){      --%>
        <%--var tab = document.getElementById("onlineUser");--%>
        <%--var rowNum=tab.rows.length;--%>
        <%--for (var k=0;k<rowNum;k++){--%>
            <%--tab.deleteRow(k);--%>
            <%--rowNum=rowNum-1;--%>
            <%--k=k-1;--%>
        <%--}--%>

        <%--for(var i=0;i<data.length;i++){--%>
            <%--if(data[i].sessionid == '<%=session.getId()%>'){--%>
                   <%--document.getElementById("senderId").value = data[i].userid;--%>
                   <%--document.getElementById("senderName").value = data[i].username;--%>
            <%--}else{--%>
                <%--var tab = document.getElementById("onlineUser");--%>
                <%--var row = tab.insertRow(-1);--%>
                <%--var username = data[i].username;--%>
                <%--var userId = data[i].userid;--%>
                <%--var password = data[i].password;--%>
                <%--var sendName = document.getElementById("senderName").value;--%>
                <%--row.vAlign = "top"--%>
                <%--var cell = row.insertCell(-1);--%>
                <%--cell.width = "77px";--%>
                <%--cell.height = "25px";--%>
                <%--cell.align = "left";--%>
                <%--cell.vAlign = "top";--%>
                <%--//cell.style.cursor = "pointer";--%>
                <%--var p = document.createElement("p");--%>
                <%--var c=document.createElement("input");--%>
                <%--c.setAttribute("type","checkbox") ;--%>
                <%--c.setAttribute("name","myCheckBox");--%>
                <%--c.setAttribute("id","myCheckBox");--%>
                <%--c.setAttribute("value",data[i].userid);--%>
                <%--p.appendChild(c);--%>
                <%--var text = document.createTextNode(data[i].username);--%>
                <%--p.appendChild(text);--%>
                <%--cell.appendChild(p);--%>
             <%--}--%>

        <%--}--%>
    <%--}--%>

    function messageList(){       
        document.getElementById("msg").innerHTML = "";
        notesDwr.queryAllUnreadMessage('<%=session.getId()%>',showMessage);

    }
   
    function show(){}
   
    function showMessage(data){
       var textarea = document.getElementById("msg");
       if(data){
         var text = "";
         for(var i=0;i<data.length;i++){

             var date = data[i].date;
             var month = date.getMonth()+1;
             var dd = date.getFullYear()+"年"+month+"月"+date.getDate()+"日"+date.getHours()+"时"+date.getMinutes()+"分"+date.getSeconds()+"秒";
             text += "<br>"+dd+data[i].sender.userName+" 对 "+data[i].receiver.userName+"说:<br>"+data[i].message;
             textarea.innerHTML = text;
         }
      }
      document.forms[0].message.focus();
    }
    function sc() {
        var e=document.getElementById("msg");
        e.scrollTop=e.scrollHeight;
    }
     var s=setInterval("sc()",200);

    function send(){
        var num = checkNum("myCheckBox");
        if(num==0){
            alert("请选择交谈对象!");
        }else{
            var text = document.getElementById("message").innerHTML;
            if(text == ""){
                alert("不能发送空消息!");
                return ;
             }else {
                if(num ==1){
                    var checkbox = getSingleCheckBox("myCheckBox");
                    var username = checkbox.nextSibling.nodeValue;
                    var sendName = document.getElementById("senderName").value;
                    document.getElementById("note").innerHTML = sendName+" 与 "+username+" 对话中";
                }
                var ids = getCheckValue("myCheckBox");
                var name = document.getElementById("receiverName").innerHTML;
                var textarea = document.getElementById("msg");
                var recMsg = textarea.innerHTML;

                var date = new Date();
                var month = date.getMonth()+1;
                var dd = date.getFullYear()+"年"+month+"月"+date.getDate()+"日"+date.getHours()+"时"+date.getMinutes()+"分"+date.getSeconds()+"秒";
                textarea.innerHTML = recMsg+"<br>"+dd+" 对 "+name+"说:<br>"+text;
                notesDwr.sender('<%=session.getId()%>',ids,text);
             }
            document.getElementById("message").innerHTML = "";
        }

    }
    function to_close(){
        window.document.location.href = "/agent/notes/clear.jsp" ;
        window.close();
    }

    function to_remove(){
        if(event.clientX<document.body.clientWidth  && event.clientY<0||event.altKey){
            window.document.location.href = "/agent/notes/clear.jsp" ;
        }
    }
    function noAction(){ }

    function to_clear(){
       document.getElementById("msg").innerHTML = "";
    }

    function showHistory(){
        var id = document.getElementById("senderId").value;
        notesDwr.selectHistory(id,showRecord);
    }

    function showRecord(records){ 
      if(records.lenght>0){
         var text = "";
         for(var i=0;i<records.length;i++){
             var textarea = document.getElementById("msg");
             var date = records[i].date;
             var month = date.getMonth()+1;
             var dd = date.getFullYear()+"年"+month+"月"+date.getDate()+"日"+date.getHours()+"时"+date.getMinutes()+"分"+date.getSeconds()+"秒";
             text += "<br>"+dd+records[i].sender.userName+" 对 "+records[i].receiver.userName+"说:<br>"+records[i].message;
             textarea.innerHTML = text;

         }
      }else{
          window.alert("没有聊天记录!");
      }
      
    }


    function checkNum(name) {
        var check = document.getElementsByName(name);
        var num = 0;
        for (i = 0; i < check.length; i++) {
            if (check[i].checked) {
                num ++;
            }
        }
        return num;
    }

//获得选中的多选框
function getCheckValue(name) {
    var select_num = "";
    var check = document.getElementsByName(name);
    for (i = 0; i < check.length; i++) {
        if (check[i].checked) {
            if (select_num == "") {
                select_num += check[i].value;
            } else {
                select_num += "," + check[i].value;
            }
        }
    }
    return select_num;
}

function getSingleCheckBox(name) {
    var select_num = "";
    var check = document.getElementsByName(name);
    for (var i = 0; i < check.length; i++) {
        if (check[i].checked) {
            select_num = check[i];
        }
    }
    return select_num;
}


function   document.onkeypress(){
        switch(event.keyCode){
           case   10://CTRL+ENTER
           send();
           break;
        }
}
function document.onkeydown() {
    if(event.keyCode==116) {
        event.keyCode=0;
        event.returnValue = false;
    }
}

</script>
</body>

</html>

 


 

notesDwr

package com.seipher.dwr.callCenter.notes;

import com.seipher.dto.UserList;
import com.seipher.dto.User;
import com.seipher.dto.ScriptSessionBinding;
import com.seipher.pojo.callCenter.userAndPopedom.Users;
import com.seipher.pojo.callCenter.notes.Notes;
import com.seipher.dao.callCenterInterface.IUserAndPopedom.IUser;
import com.seipher.dao.callCenterInterface.notesInterface.NotesInterface;
import com.seipher.dao.CallCenterFactory;
import com.seipher.utils.PropertyManager;
import net.sf.hibernate.HibernateException;

import java.util.*;

import org.directwebremoting.ScriptSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;

/**
 * Created by IntelliJ IDEA
 * Date: 2009-4-25
 * Time: 11:00:32
 * 在线便签DWR类
 * @author txfei
 */
public class NotesDwr {
    private static WebContext webContext = null;
    //从配置文件中取得在线用户列表页面
    String chatPage = PropertyManager.getProperty("chatPage");

    /**
     * 显示在线用户列表
     * @return
     */
    public List showOnlineUser(){
      System.out.println("提取在线用户 ");
      UserList userList = UserList.getUserList();
      List<User>  allOnlineUser = userList.getUsers();
      System.out.println(allOnlineUser.size()+"===在线人数===用户列表 ");
      return allOnlineUser;
    }
    /**
     * 发送便签
     * @param sessionId
     * @param receiverIds
     * @param message
     * @return
     */

     public String sender(String sessionId,String receiverIds,String message){
        System.out.println("发送消息");
        if (receiverIds == null) {
            return "未选中对象";
        }
        String[] ids = receiverIds.split(",");

        for(int k=0;k<ids.length;k++){
            System.out.println(ids[k]+"====传过来的接受者id===");
           NotesInterface notesInterface = CallCenterFactory.newNotes();
           Notes notes = new Notes();
           notes.setMessage(message); //构建便签消息
           //通过sessionId查找发送者
           //通过receiverIds查找所有接收者
           //step1
           UserList userList = UserList.getUserList();
           //新封装的User
           List<User>  allOnlineUser = userList.getUsers();
           User senderOnline = null;
           User receiverOnline = null;
           for(int i=0;i<allOnlineUser.size();i++){
                if(allOnlineUser.get(i).getSessionid().equals(sessionId)){
                    senderOnline = allOnlineUser.get(i);
                    System.out.println(senderOnline.getUserid()+"==发送者ID==");
                }
                if(allOnlineUser.get(i).getUserid().equals(ids[k]+"")){
                    receiverOnline = allOnlineUser.get(i);
                    System.out.println(receiverOnline.getUserid()+"==接收者ID==");
                }
            }
            IUser userInterface = CallCenterFactory.newUser();
            try {
                //获得发送消息者的实例
                Users sender = (Users)userInterface.load(Long.valueOf(senderOnline.getUserid()));
                notes.setSender(sender);   //构建便签发送者
                notes.setSenderDept(sender.getDepartment()); //构建便签发送者所在部门

                //获得接收者的实例
                //新封装的User
                Users receiver = (Users)userInterface.load(Long.valueOf(ids[k]));
                notes.setReceiver(receiver);// 构建接收者
                notes.setReceiverDept(receiver.getDepartment());//  构建接收者所在部门
                System.out.println("==notes构建成功==");
                //step2开始推
                //得到聊天页面的ScriptSession


                ScriptSession scriptSession = this.getScriptSession(receiverOnline.getSessionid());
                if(scriptSession != null){
                    System.out.println("==得到scriptsession==");
                    notes.setState("1");
                    notesInterface.store(notes); //存入数据库
                    Util util = new Util(scriptSession);
                    util.addFunctionCall("chat",notes);
                }else{
                    System.out.println("==得不到scriptsession==");
                    notes.setState("0");
                    notesInterface.store(notes); //存入数据库
                    ScriptSessionBinding scriptSessionBinding = ScriptSessionBinding.getScriptSessionBinding();
                    Map<String, ScriptSession> map = scriptSessionBinding.getSsm();
                    System.out.println(receiverOnline.getSessionid()+"_top"+"==top==");
                    scriptSession = map.get(receiverOnline.getSessionid()+"_top");
                    Util util = new Util(scriptSession);
                    util.addFunctionCall("findCmt");
                }

            } catch (Exception e) {
                e.printStackTrace();
                return "发送消息出错!";
            }
            System.out.println("=================");
         }

         return "success";
     }


    public List queryAllUnreadCmt(String sessionId){
      System.out.println("查询收到的消息数量");
        NotesInterface notesInterface = CallCenterFactory.newNotes();
        UserList userList = UserList.getUserList();
        List<User> userOnline = userList.getUsers();
        User receiverOnline = null;
        for(int i=0;i<userOnline.size();i++){
            if(userOnline.get(i).getSessionid().equals(sessionId)){
                receiverOnline = userOnline.get(i);
            }
        }
        List<Notes> list = null;
        if(receiverOnline != null){
            try {
                list = notesInterface.selectCmt(Integer.valueOf(receiverOnline.getUserid()));
            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }

       return list;
    }


    public List queryAllUnreadMessage(String sessionId){
        System.out.println("查询收到的消息List");
        NotesInterface notesInterface = CallCenterFactory.newNotes();
        UserList userList = UserList.getUserList();
        List<User> userOnline = userList.getUsers();
        User receiverOnline = null;
        for(int i=0;i<userOnline.size();i++){
            //System.out.println(userOnline.get(i).getSessionid()+"=============");
            if(userOnline.get(i).getSessionid().equals(sessionId)){
                receiverOnline = userOnline.get(i);
            }
        }
        List<Notes> list = null;
        if(receiverOnline != null){
            try {
                //System.out.println(receiverOnline.getUserid()+"====userid=====");
                list = notesInterface.selectCmt(Integer.valueOf(receiverOnline.getUserid()));
                //System.out.println("====userid=====");

                //更新为已经查看
                System.out.println("更新状态");
                for(int i=0;i<list.size();i++){
                    Notes note = list.get(i);
                    note.setState("1");
                    notesInterface.update(note);
                }
                //更新提示消息
                UpdateNotice(sessionId);

            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }


       return list;
    }

    /**
     * 更新提示
     * @param sessionId
     */
    public void UpdateNotice(String sessionId){
        System.out.println("更新数量");
        ScriptSessionBinding scriptSessionBinding = ScriptSessionBinding.getScriptSessionBinding();
        Map<String, ScriptSession> map = scriptSessionBinding.getSsm();
        ScriptSession scriptSession = map.get(sessionId+"_top");
        System.out.println(scriptSession.getAttribute("sessionId")+"===--0000");
        Util util = new Util(scriptSession);
        util.addFunctionCall("findCmt");
    }

    /**
     * 绑定ScriptSession 和SessionId
     * @param sessionId
     */
    public void bindScriptSession(String sessionId){
        System.out.println("====bingdchat=======");
        ScriptSessionBinding ssb = ScriptSessionBinding.getScriptSessionBinding();
        ScriptSession scriptSession = WebContextFactory.get().getScriptSession();
        System.out.println(scriptSession+"===是否有scriptSession====");
        scriptSession.setAttribute("sessionId", sessionId+"_chat");
        Map<String, ScriptSession> map = ssb.getSsm();
        map.put(sessionId+"_chat", scriptSession);
        System.out.println(scriptSession.getAttribute("sessionId")+"++++++656+++++++");
    }

    /**
     * 根据给定sessionId找到对应的ScriptSession
     * @param sessionId
     * @return
     */
    public ScriptSession getScriptSession(String sessionId) {
        System.out.println(sessionId+"==接收者sessionId==");
        ScriptSession scriptSession = null;
        ScriptSessionBinding ssb = ScriptSessionBinding.getScriptSessionBinding();
        Map<String, ScriptSession> map = ssb.getSsm();
        Iterator<String> it = map.keySet().iterator();
        System.out.println(map.size()+"===map大小===");
        while(it.hasNext()){
            String sessId = it.next();
            System.out.println(sessId+"==map中的sessionId===");

            if(sessId.equals(sessionId+"_chat")){
                 scriptSession = map.get(sessionId+"_chat");
            }
        }
        System.out.println("====成功获取scriptsession====");
        return scriptSession;
    }

    /**
     * 移除scriptSession
     * @param sessionId
     */
    public String removeScriptSession(String sessionId){
        ScriptSessionBinding scriptSessionBinding = ScriptSessionBinding.getScriptSessionBinding();
        Map<String, ScriptSession> map = scriptSessionBinding.getSsm();
        Set<String> set = map.keySet();
        for(String str:set){
            if(str.equals(sessionId+"_chat")){
                map.remove(sessionId+"_chat");
                System.out.println("移除一个chat_session");
            }
        }
        return "success";
    }

    /**
     * 查询聊天记录
     * @param id
     * @return
     */
    public List selectHistory(String id){
        System.out.println("查询历史记录");
         NotesInterface notesInterface = CallCenterFactory.newNotes();
         List<Notes> list = null;
         try {
            list = notesInterface.selectOldRecord(Integer.valueOf(id));
         } catch (HibernateException e) {
            e.printStackTrace();
         }
        System.out.println(list.size()+"=====记录数===");
         return list;
    }
    synchronized public static WebContext getWebContext() {
        if (webContext == null) {
            webContext = WebContextFactory.get();
        }
        return webContext;
    }

    synchronized public static WebContext removeWebContext() {

        webContext = null;
        return webContext;
    }
}


 

ctiDwr

package com.seipher.dwr.callCenter;

import com.seipher.dto.UserList;
import com.seipher.dto.User;
import com.seipher.dto.Phone;
import com.seipher.dto.ScriptSessionBinding;
import com.seipher.utils.PropertyManager;

import java.util.*;

import org.directwebremoting.*;
import org.directwebremoting.proxy.dwr.Util;
import org.directwebremoting.impl.DefaultContainer;
import org.directwebremoting.impl.ContainerUtil;
import org.directwebremoting.extend.ScriptSessionManager;
import org.directwebremoting.extend.RealScriptSession;
import org.directwebremoting.servlet.DwrServlet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletContext;

/**
 * cit通信控制类
 * Created by IntelliJ IDEA
 * Date: 2008-7-24
 * Time: 15:36:51
 *
 * @author mengle</a>
 */
public class CtiManageDwr {
    private static WebContext webContext = null;
    //从配置文件中取得在线用户列表页面
    String onlinePage = PropertyManager.getProperty("ctiPage");
    String chatPage =  PropertyManager.getProperty("chatPage");
    private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());

    public String getSessionId(int channlHashCode) {
        UserList userList = UserList.getUserList();
        HashMap map = userList.getClientMap();
        String channlCode = Integer.toString(channlHashCode);
        User user = (User) map.get(channlCode);
        if (user == null) {
            log.debug("==========not find user by channHasCode");
            return "";
        }
        return user.getSessionid();

    }


    /**
     * 来电转接
     *
     * @param channlHashCode
     */
    public void incomming(Map valueMap, int channlHashCode) {
        try {


            String telNumber = (String) valueMap.get("caller_id");
            String ext_phone = (String) valueMap.get("ext_phone");
            WebContext wctx = WebContextFactory.get();
            Collection<ScriptSession> sess = wctx.getScriptSessionsByPage(onlinePage);

            for (ScriptSession session : sess) {
//                System.out.println("========================incomming.sess:" +
//                        session.getAttribute("userid") + " &&&ScriptSession==" + session);
                ScriptBuffer scriptBuffer = new ScriptBuffer();
                scriptBuffer.appendScript("incomming(")
                        .appendData(telNumber)
                        .appendScript(",")
                        .appendData(ext_phone)
                        .appendScript(");");

                log.debug("scriptBuffer=" + scriptBuffer.toString());
                //               if ( session.equals(scriptSession) ) {
//                    System.out.println("=============session.equals(scriptSession) !!!!!!!!!!!!!!!!!!!!!!!!");
//                    session.addScript(scriptBuffer);
//                }
                session.addScript(scriptBuffer);
            }
            Map callers = Phone.getCallers();
            callers.put(ext_phone, telNumber);
            Phone.caller = telNumber;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 改变来电状态
     * state=1 开始通话 state=2通话结束
     * 用于页面开始计时或停止计时
     *
     * @param ext_phone
     * @param state
     */
    public void change_session_state(String ext_phone, String state) {
        ServletContext servletContext = WebContextFactory.get().getServletContext();
        ServerContext sctx = ServerContextFactory.get(servletContext);

        Collection<ScriptSession> sess = sctx.getScriptSessionsByPage(onlinePage);
        log.debug("ext_phone:" + ext_phone + " ** state=" + state);
        if ("1".equals(state)) {
            for (ScriptSession session : sess) {
                ScriptBuffer scriptBuffer = new ScriptBuffer();
                scriptBuffer.appendScript("startTalk(")
                        .appendData(ext_phone.trim())
                        .appendScript(");");
                log.debug("change_session_state-->scriptBuffer=" + scriptBuffer.toString());
                session.addScript(scriptBuffer);
            }
        } else if ("2".equals(state)) {
            for (ScriptSession session : sess) {
                ScriptBuffer scriptBuffer = new ScriptBuffer();
                scriptBuffer.appendScript("hiddenTalk(")
                        .appendData(ext_phone.trim())
                        .appendScript(");");
                log.debug("change_session_state-->scriptBuffer=" + scriptBuffer.toString());
                session.addScript(scriptBuffer);
            }
            Map callers = Phone.getCallers();
            callers.remove(ext_phone);
            Phone.caller = "";
        }

    }

    /**
     * 连接时出错
     *
     * @param ext_phone
     */
    public void connectError(String ext_phone, String status) {
        Map states = Phone.getStates();
        String errorInfo = "nothing";
        if ("1".equals(status)) {
            errorInfo = "注册分机号码时出错,请退出重新登陆";
        } else if ("2".equals(status)) {
            errorInfo = "分机'" + ext_phone + "'已注册,请退出重新登陆";
        } else if ("3".equals(status)) {
            errorInfo = "与CTI服务器版本不匹配,请退出重新登陆";
        } else if ("4".equals(status)) {
            errorInfo = "CTI服务器中无效用户名,请退出重新登陆";
        }
        if (!"nothing".equals(errorInfo)) {
            states.put(ext_phone, errorInfo);
        }
        if ("0".equals(status)) {
            states.remove(ext_phone);
        }

//         Container container = DwrServlet.getContainer();
//        ScriptSessionManager ssm = (ScriptSessionManager) container.getBean(ScriptSessionManager.class.getName());
//
//        Collection<ScriptSession> sess = ssm.getScriptSessionsByPage(onlinePage);
//        for (ScriptSession session : sess) {
//                ScriptBuffer scriptBuffer = new ScriptBuffer();
//                scriptBuffer.appendScript("connectError(")
//                        .appendData(ext_phone.trim())
//                        .appendScript(",")
//                        .appendData(errorInfo)
//                        .appendScript(");");
//                log.debug("connectError-->scriptBuffer=" + scriptBuffer.toString());
//                session.addScript(scriptBuffer);
//            }
    }


    /**
     * 根据用户id获得指定用户的页面脚本session
     *
     * @param userid
     * @return
     */
    @SuppressWarnings("unchecked")
    public ScriptSession getScriptSession(String userid) {
        ScriptSession scriptSessions = null;
        try {
            WebContext wctx = WebContextFactory.get();
            Collection<ScriptSession> sess = wctx.getScriptSessionsByPage(onlinePage);
            for (ScriptSession session : sess) {
                String xuserid = (String) session.getAttribute("userid");
                if (xuserid != null && xuserid.equals(userid)) {
                    scriptSessions = session;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return scriptSessions;
    }


    public void updateUserList(String userid, boolean flag) {
//        HttpServletRequest request = CtiManageDwr.getWebContext().getHttpServletRequest();
        if (flag) {
//            if (!userExist(userid)) { //如果还未绑定
            log.debug("=======做绑定");
             System.out.println("updateUserList().sessionid=" + userid);
            this.setScriptSessionFlag(userid);  //绑定用户和dwr页面session
        }


        WebContext wctx = WebContextFactory.get();
        HttpSession session = wctx.getSession();
        String sid = session.getId();

        System.out.println(chatPage);
        Collection<ScriptSession> sess = wctx.getScriptSessionsByPage(chatPage);
        //获得当前浏览 通信 页面的所有脚本session
        Iterator<ScriptSession> scripts  = sess.iterator();

        while(scripts.hasNext()){
            ScriptSession scriptSession = scripts.next();
            String sessionId = (String)scriptSession.getAttribute("sessionId");
            System.out.println(sessionId+"==scriptSession中的sessionId==");

            ScriptSessionBinding ssb = ScriptSessionBinding.getScriptSessionBinding();
            Map<String, ScriptSession> map = ssb.getSsm();
            Iterator<String> it = map.keySet().iterator();
            System.out.println(map.size()+"===当前Map人数===");
            while(it.hasNext()) {
                String sessId = it.next();
                System.out.println(sessId+"==map中的sessionId==");
                if(sessId.equals(sessionId) && !sessId.equals(sid+"_chat")){
                    Util util = new Util(scriptSession);
                    util.addFunctionCall("userList");
                    System.out.println("推送更新在线用户列表");
                }
            }
        }

    }

    /**
     * 将用户id和页面脚本session绑定
     *
     * @param userid
     */
    public void setScriptSessionFlag(String userid) {
      //  System.out.println("userid===" + userid);
        ScriptSessionBinding ssb = ScriptSessionBinding.getScriptSessionBinding();
        ScriptSession scriptSession = WebContextFactory.get().getScriptSession();
        scriptSession.setAttribute("userid", userid);
        Map<String, ScriptSession> map = ssb.getSsm();
        map.put(userid, scriptSession);


//        WebContextFactory.get().getScriptSession().setAttribute("userid", userid);
    }


    public void cleanDwrConnection(String id, ScriptSession session) {
        ScriptSession oldSession = getScriptSession(id);
        if (oldSession != null && oldSession != session) {
            oldSession.invalidate();
            oldSession = null;
           // System.out.println("=======delete oldSession!!!");
        }
    }

    public void clearScriptSession() {
        try {
            //获得DWR上下文
            HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
            ServletContext sc = request.getSession().getServletContext();
            ServerContext sctx = ServerContextFactory.get(sc);

            //获得当前浏览 index.jsp 页面的所有脚本session
            Collection sessions = sctx.getScriptSessionsByPage(onlinePage);
            String userid = "";
            for (Iterator iterator = sessions.iterator(); iterator.hasNext();) {
                ScriptSession scriptSession = (ScriptSession) iterator.next();
                userid = (String) scriptSession.getAttribute("userid");
                ScriptBuffer scriptBuffer = new ScriptBuffer();
                scriptBuffer.appendScript("dialog.showUserList(").appendData(UserList.getUsers())
                        .appendScript(");");
                scriptSession.addScript(scriptBuffer);
                if (userid != null && userid.equals(request.getSession().getId())) {
                  //  System.out.println("================dwr_delete_scriptSession: " + request.getSession().getId());
                    sessions.remove(scriptSession);
                    scriptSession.removeAttribute("userid");
                    scriptSession.invalidate();
                    scriptSession = null;

                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    synchronized public static WebContext getWebContext() {
        if (webContext == null) {
            webContext = WebContextFactory.get();
        }
        return webContext;
    }

    synchronized public static WebContext removeWebContext() {

        webContext = null;
        return webContext;
    }
}



UserList

package com.seipher.dto;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;

/**
 * 当前登陆坐席列表
 * Created by IntelliJ IDEA
 * Date: 2008-7-24
 * Time: 9:20:31
 *
 * @author mengle</a>
 */
public class UserList {
    private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());
    private static List<User> users = null;

    private HashMap<String, User> clientMap = new HashMap<String, User>();

    private static UserList userList = null;

    public boolean existUser(String userid) {
        boolean flag = false;
         List<User> result = this.getUsers();
//        log.debug("userSize()--->" + result.size());
        for (int i = 0; i < result.size(); i++) {
            User user = result.get(i);
//            log.debug("result===>" + user.getUserid());
            if (user.getUserid().equals(userid)) {
                flag = true;
                break;
            }
        }
        return flag;
    }

 
    /**
     * 根据session id 找到用户对象
     * @param sessionid
     * @return
     */
    public static User getClientHashCode(String sessionid) {
        User user = null;
        List<User> result = UserList.getUsers();
        for (int i = 0; i < result.size(); i++) {
            User userTemp = result.get(i);
            if (userTemp.getSessionid().equals(sessionid)) {
                 user = userTemp;
             }
        }
        return user;
    }

    public synchronized static List<User> getUsers() {
        if (users == null) {
             users = new ArrayList<User>();
        }
        return users;
    }

    public synchronized static UserList getUserList() {
        if (userList == null) {
             userList = new UserList();
        }
        return userList;
    }

    public HashMap<String, User> getClientMap() {
        return clientMap;
    }

    public void setClientMap(HashMap<String, User> clientMap) {
        this.clientMap = clientMap;
    }
}


ScriptSessionBinding


package com.seipher.dto;

import org.directwebremoting.ScriptSession;

import java.util.Map;
import java.util.HashMap;

/**
 * Created by IntelliJ IDEA
 * Date: 2009-4-23
 * Time: 10:39:16
 *
 * @author mengle
 */
public class ScriptSessionBinding {
    private static ScriptSessionBinding scriptSessionBinding = null;
    private Map<String, ScriptSession> ssm = new HashMap<String, ScriptSession>();

    synchronized public static ScriptSessionBinding getScriptSessionBinding() {
        if (scriptSessionBinding == null) {
            scriptSessionBinding = new ScriptSessionBinding();
        }
        return scriptSessionBinding;
    }

    public Map<String, ScriptSession> getSsm() {
        return ssm;
    }

    public void setSsm(Map<String, ScriptSession> ssm) {
        this.ssm = ssm;
    }
}



UserDwr

package com.seipher.dwr.callCenter.UserAndPopedom;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.beanutils.BeanUtils;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.WebContext;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.proxy.dwr.Util;
import com.seipher.pojo.callCenter.*;
import com.seipher.pojo.callCenter.userAndPopedom.*;
import com.seipher.dao.callCenterInterface.*;
import com.seipher.dao.callCenterInterface.IUserAndPopedom.IUser;
import com.seipher.dao.callCenterInterface.IUserAndPopedom.ISkillGroupDao;
import com.seipher.dao.callCenterInterface.IUserAndPopedom.IFuncPopedomDao;
import com.seipher.dao.CallCenterFactory;
import com.seipher.utils.PageController;
import com.seipher.utils.PropertyManager;
import com.seipher.utils.query.Params;
import com.seipher.utils.query.AutoQuery;
import com.seipher.exception.BaseException;
import com.seipher.dto.*;

import javax.servlet.http.HttpSession;
import java.util.*;
import java.lang.reflect.InvocationTargetException;

import net.virgosoft.framework.HibernateSession;
import net.sf.hibernate.HibernateException;

/**
 * Created by IntelliJ IDEA
 * Date: 2009-4-16
 * Time: 20:49:12
 *
 * @author rocLiu</a>
 */
public class UsersDwr {

    private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());
    private String type = "agent";


    /**
     * 登陆
     *
     * @param formMap
     * @return
     */
    public String login(Map formMap, String password) {
        WebContext wct = WebContextFactory.get();
        HttpSession session = wct.getHttpServletRequest().getSession();
        IUser iUsers = CallCenterFactory.newUser();
        Users users = null;
        try {
            users = iUsers.login((String) formMap.get("agentID"),password);
            Date now = new Date();
            users.setLoginTime(now);
            iUsers.update(users);
            session.setAttribute("user",users);
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (users == null) {
            return "登陆失败,请重新输入用户名密码";
        }
        //判断用户是否已登陆
        List<User> result = UserList.getUsers();
        UserList userList = UserList.getUserList();
        HashMap map = userList.getClientMap();
        User user = new User();
        user.setSessionid(session.getId());
        user.setUserid(users.getId()+"");
        user.setUsername(users.getUserName());
        user.setPassword(users.getPassword());
        for (int i = 0; i < result.size(); i++) {
            if (result.get(i).getUserid().equals(user.getUserid())) {
                result.remove(user);//清除用户列表中的用户,准备重新绑定
                /*map.remove(Integer.toString(user.getClient().hashCode()));
                SendCommand sendCommand = new SendCommand();
                try {
                    result.remove(user);
                    sendCommand.logout(user);
                    user.getClient().close();
                } catch (Exception e) {
                    e.printStackTrace();
                }*/
                break;
            }
        }
        UserBinding userBinding = new UserBinding();
        userBinding.bindUsersList(user);
        //System.out.println("====绑定 用户 ====");
        session.setAttribute("userSoftPhoneState","qc");
        return "success";
    }

    /**
     * 登出系统
     * @return
     */
    public String logout(){

        WebContext ctx = WebContextFactory.get();
        HttpSession session = ctx.getSession(true);

        //移除用户
        UserList userList = UserList.getUserList();
        List<User> result = userList.getUsers();
        for(int i=0;i<result.size();i++){
            if(result.get(i).getSessionid().equals(session.getId())){
                result.remove(result.get(i));
                System.out.println("成功移除用户");
            }
        }



//ScriptSessionBinding ssb1 = ScriptSessionBinding.getScriptSessionBinding();
 //       Map<String, ScriptSession> map1 = ssb1.getSsm();
 //       Iterator<String> it1 = map1.keySet().iterator();
        //
  //         while(it1.hasNext()){
 //              String sid = it1.next();
//        for(int j=0;j<result.size();j++){

  //             if(sid.equals(result.get(j).getSessionid()+"_chat")){
 //                 Util util = new Util(map1.get(sid));
  //                  util.addFunctionCall("userList");
   //                 System.out.println("成功推送==");
  //             }
  //         }
   //     }


        //推送到聊天页面用户下线
        String chatPage =  PropertyManager.getProperty("chatPage");
        WebContext wctx = WebContextFactory.get();
        System.out.println(chatPage);
        Collection<ScriptSession> sess = wctx.getScriptSessionsByPage(chatPage);
        //获得当前浏览 通信 页面的所有脚本session
        Iterator<ScriptSession> scripts  = sess.iterator();

        ScriptSessionBinding ssb = ScriptSessionBinding.getScriptSessionBinding();
        Map<String, ScriptSession> map = ssb.getSsm();
        Iterator<String> it = map.keySet().iterator();

        while(scripts.hasNext()){
            ScriptSession scriptSession = scripts.next();
            String sessionId = (String)scriptSession.getAttribute("sessionId");
            while(it.hasNext()) {
                String sessId = it.next();
                if(sessId.equals(sessionId)){
                    Util util = new Util(scriptSession);
                    util.addFunctionCall("userList");
                    System.out.println("成功推送");
                }
            }
        }
        session.invalidate();
        return "success";
    }

    /**
     * 多条件组合查询
     *
     * @param pages
     * @param formMap
     * @return
     */
    public List select(String pages, Map formMap) {
        Users user = new Users();
        try {
            BeanUtils.populate(user, formMap);
        } catch (Exception e) {
            e.printStackTrace();
        }

        PageController customerCtrl = null;
        Params params = null;

        List result = null;
        List allRole = null;
        customerCtrl = new PageController();
        customerCtrl.setPageSize(10);
        params = new Params();
        params.setTotal(true);


        if (user.getUserCode() != null && !user.getUserCode().equals("")) {
            params.addParam("userCode", "%" + user.getUserCode() + "%", AutoQuery.STRING, " like ");
        }
        if (user.getUserName() != null && !user.getUserName().equals("")) {
            params.addParam("userName", "%" + user.getUserName() + "%", AutoQuery.STRING, " like ");
        }

        params.addParam("userState", "1", AutoQuery.STRING);
        params.setOrderBy(" order by userCode desc");
        params.setFrom("Users");
        params.setPageItemNo(customerCtrl.getPageSize());
        if ("".equals(pages)) {
            if (0 == customerCtrl.getCurrentPage()) {
                customerCtrl.setCurrentPage(1);
            }
        } else {
            customerCtrl.setCurrentPage(Integer.parseInt(pages));
        }

        params.setPageStartNo(customerCtrl.getCurrentPage());
        customerCtrl.setParams(params);
        AutoQuery aq = new AutoQuery(params);
        aq.setSession(HibernateSession.callCenterSession());
        allRole = aq.find();

        customerCtrl.setTotalPages(aq.getTotalPages());
        customerCtrl.setTotalSize(aq.getTotalSize());

        if (customerCtrl.getCurrentPage() > customerCtrl.getTotalPages()) {
            customerCtrl.setCurrentPage(customerCtrl.getTotalPages());
            params.setPageStartNo(customerCtrl.getCurrentPage());
            customerCtrl.setParams(params);
            allRole = aq.find();
            customerCtrl.setTotalPages(aq.getTotalPages());
            customerCtrl.setTotalSize(aq.getTotalSize());
        }


        result = new ArrayList();
        System.out.println("result.size====="+result.size());
        result.add(customerCtrl);
        result.add(allRole);

        return result;
    }

    /**
     * 查找系统角色及技能组
     *
     * @return
     */
    public List findRoleGroup() {
        List<List> result = new ArrayList<List>();
        List allGroup = new ArrayList<SysGroup>();
        List allRole = new ArrayList<Role>();
        SysRoleInterface sysRoleInterface = CallCenterFactory.newRoleManage();
        SysGroupInterface sysGroupInterface = CallCenterFactory.newGroupManage();

        try {
            allRole = sysRoleInterface.findAll("SysRole");
            allGroup = sysGroupInterface.findAll("SysGroup");

        } catch (HibernateException e) {
            e.printStackTrace();
        }
        result.add(allRole);
        result.add(allGroup);

        return result;

    }

    /**
     * 添加坐席人员
     *
     * @param formMap
     * @param password
     * @return
     */
    public String add(Map formMap,String password,String skillId,String funcId,String agentL){
        String message = "";
        Users user = new Users();
        DepartmentDwr departmentDwr = new DepartmentDwr();
        PositionDwr positionDwr = new PositionDwr();
        DataPopedomDwr dataPopedomDwr = new DataPopedomDwr();
        SkillGroupDwr skillGroupDwr  = new SkillGroupDwr();
        RoleDwr roleDwr = new RoleDwr();

        Department department = null;
        Position position = null;
        DataPopedom dataPopedom = null;
        SkillGroup skillGroup  = null;
        Role role = null;

        String skillIds[] = skillId.split(",");
        String funcIds[] = funcId.split(",");
        Set skillSet = new HashSet();
        Set funcSet = new HashSet();


        String[] agentList = agentL.split(",");//所有选择坐席权限
        Map map = AgentPopdeomMap.agentMap();
        Integer agentPopedom = 0;
        for(int i =0;i<agentList.length;i++){
            agentPopedom = (Integer) map.get(agentList[i])|agentPopedom;
        }
       
        ISkillGroupDao iSkillGroupDao  = CallCenterFactory.newSkillGroup();
        IFuncPopedomDao iFuncPopedomDao  = CallCenterFactory.newFuncPopedom();
        if(null!=formMap.get("department")&&!formMap.get("department").equals("请选择")){
            department = departmentDwr.getByID((String) formMap.get("department"));
            formMap.put("department",department);
        }
        if(null!=formMap.get("position")&&!formMap.get("position").equals("请选择")){
            position = positionDwr.getByID((String)formMap.get("position"));
            formMap.put("position",position);
        }
        if(null!=formMap.get("dataPopedom")&&!formMap.get("dataPopedom").equals("请选择")){
            dataPopedom = dataPopedomDwr.getByID((String)formMap.get("dataPopedom"));
            formMap.put("dataPopedom",dataPopedom);
        }
        if(null!=formMap.get("role")&&!formMap.get("role").equals("请选择")){
            role = roleDwr.getByID((String)formMap.get("role"));
            formMap.put("roleCode",role.getRoleCode());
            formMap.put("role",role);
        }
        for(int i=0;i<skillIds.length;i++){
            try {
                skillSet.add(iSkillGroupDao.load(new Long(skillIds[i])));
            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }
        for(int i=0;i<funcIds.length;i++){
            try {
                funcSet.add(iFuncPopedomDao.load(new Long(funcIds[i])));
            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }
        formMap.put("skillGroup",skillSet);
        formMap.put("funcPopedom",funcSet);
        formMap.put("password",password);
        formMap.put("agentPopedom",agentPopedom);
        try {
            BeanUtils.populate(user,formMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        IUser iUser  = CallCenterFactory.newUser();
        try {
            message = iUser.insert(user);
        } catch (BaseException e) {
            e.printStackTrace();
        }
        return message;
    }

    /**
     * 根据id得到对象
     * @param id
     * @return
     */
    public Users getByID(String id){
        Long userid = new Long(id);
        Users users = null;
        IUser iUser = CallCenterFactory.newUser();
        try {
            users = (Users) iUser.load(userid);
        } catch (HibernateException e) {
            e.printStackTrace();
        }
        return users;
    }

    /**
     * 更新用户
     * @param formMap
     * @param skillId
     * @param funcId           
     * @return
     */
    public String update(Map formMap,String skillId,String funcId,String agentL){
        String message= "";
        Users user = this.getByID((String) formMap.get("id"));
        DepartmentDwr departmentDwr = new DepartmentDwr();
        PositionDwr positionDwr = new PositionDwr();
        DataPopedomDwr dataPopedomDwr = new DataPopedomDwr();
        SkillGroupDwr skillGroupDwr  = new SkillGroupDwr();
        RoleDwr roleDwr = new RoleDwr();

        Department department = null;
        Position position = null;
        DataPopedom dataPopedom = null;
        SkillGroup skillGroup  = null;
        Role role = null;

        String[] agentList = agentL.split(",");//所有选择坐席权限
        Map map = AgentPopdeomMap.agentMap();
        Integer agentPopedom = 0;
        for(int i =0;i<agentList.length;i++){
            agentPopedom = (Integer) map.get(agentList[i])|agentPopedom;
        }

        IUser iUser = CallCenterFactory.newUser();
        IFuncPopedomDao iFuncPopedomDao  = CallCenterFactory.newFuncPopedom();
        String funcIds[] = funcId.split(",");
        Set funcSet = new HashSet();

        for(int i=0;i<funcIds.length;i++){
            try {
                funcSet.add(iFuncPopedomDao.load(new Long(funcIds[i])));
            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }

        ISkillGroupDao iSkillGroupDao  = CallCenterFactory.newSkillGroup();
        String skillIds[] = skillId.split(",");
        Set skillSet = new HashSet();

        for(int i=0;i<skillIds.length;i++){
            try {
                skillSet.add(iSkillGroupDao.load(new Long(skillIds[i])));
            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }
        user.setUserCode((String) formMap.get("userCode"));
        user.setUserName((String) formMap.get("userName"));
        //user.setPassword(password);
        user.setDepartment(departmentDwr.getByID((String) formMap.get("department")));
        user.setPosition(positionDwr.getByID((String) formMap.get("position")));
        user.setDataPopedom(dataPopedomDwr.getByID((String) formMap.get("dataPopedom")));
        user.setRole(roleDwr.getByID((String) formMap.get("role")));
        user.setRoleCode((roleDwr.getByID((String) formMap.get("role"))).getRoleCode());
        user.setSkillGroup(skillSet);
        user.setFuncPopedom(funcSet);
        user.setAgentPopedom(agentPopedom);

        try {
            iUser.update(user);
        } catch (HibernateException e) {
            e.printStackTrace();
            message = "update failed";
            return message;
        }
        message = "success";
        return message;
    }
    public String del(String id) {
        String message = "";
        if(id==null){
            return message = "未选中记录";
        }
        String ids[] = id.split(",");
        IUser iUser = CallCenterFactory.newUser();
        try {
            iUser.batchDel(ids);
        } catch (HibernateException e) {
            e.printStackTrace();
            return message ="批量删除出错";
        }
        return "成功删除 " + ids.length + " 个用户";
    }
    /**
     * 修改密码
     */
    public String changePwd(String pwd){
        String message = "success";
        WebContext wct = WebContextFactory.get();
        HttpSession httpSession = wct.getSession();
        Users user = (Users) httpSession.getAttribute("user");
        user.setPassword(pwd);
        IUser iUser = CallCenterFactory.newUser();
        try {
            iUser.update(user);
        } catch (HibernateException e) {
            e.printStackTrace();
            return "修改密码出错";
        }
        return message;
    }
    /*
    *//**
     * 查找所有的坐席人员
     * 目的是为了生成xml文件
     *
     * @return
     *//*
    public List findAll() {
        SysAgentInterface sysAgentInterface = CallCenterFactory.newAgentManage();
        List loop = null;
        List all = new ArrayList();
        String sysGroupStr = "";
        try {
            List result = sysAgentInterface.findAll("SysAgent");
            for (int i = 0; i < result.size(); i++) {
                SysAgent sysAgent = (SysAgent) result.get(i);
                loop = new ArrayList();
                loop.add(new ValueObject("agentName", sysAgent.getAgentName()));
                loop.add(new ValueObject("agentPWD", sysAgent.getAgentPWD()));
                Set groups = sysAgent.getSysGroups();
                int j = 0;
                for (Iterator iterator = groups.iterator(); iterator.hasNext();) {
                    SysGroup sysGroup = (SysGroup) iterator.next();
                    if (j == 0) {
                        sysGroupStr += sysGroup.getGroupName();
                    } else {
                        sysGroupStr += "," + sysGroup.getGroupName();
                    }
                    j++;
                }

                loop.add(new ValueObject("sysGroups", sysGroupStr));

                all.add(loop);
                sysGroupStr = "";
            }
        } catch (HibernateException e) {
            e.printStackTrace();
        }
        return all;
    }
*/
}





chat.jsp另版

<%@ page contentType="text/html;charset=utf-8" language="java" isELIgnored="false" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>即时通信</title>
<style type="text/css">
<!--
body {
 margin-left: 0px;
 margin-top: 0px;
 margin-right: 0px;
 margin-bottom: 0px;
}
body,td,th {
 font-size: 12px;
 color: #006699;
}
.STYLE1 {color: #000000}
-->
</style>
<script type='text/javascript' src='/dwr/util.js'></script>
<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/agent/js/s2cp.js'></script>
<script type='text/javascript' src='/agent/js/util.js'></script>
<script type="text/javascript" src="/dwr/interface/notesDwr.js"></script>
</head>
  <%
      response.setHeader("Cache-Control","no-store");
      response.setHeader("Pragrma","no-cache");
      response.setDateHeader("Expires",0);
  %>
<body onbeforeunload="to_remove();" onunload="" onload="userList();updateScriptSession();messageList();reverse();">
<form name="imform" >
<input type="hidden" name="senderId" value="">
<input type="hidden" name="senderName" value="">
<input type="hidden" name="senderDept" value="">
 <table width="592" height="337" border="0" cellpadding="0" cellspacing="0" bgcolor="#C1E1FA" style="border:1px solid #3F87BC;">
  <tr>
    <td height="21" colspan="5" align="left" valign="middle">
        <table width="210" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td width="43" align="center" valign="middle"><img src="/agent/images/yd.gif" width="16" height="16" /></td>
                <td width="167"><strong id="note"> 对话中</strong></td>
            </tr>
        </table>
    </td>
    <td width="207" rowspan="6" align="center" valign="top">
        <table width="197" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td width="139">&nbsp;</td>
                <td width="80" align="right" valign="top"><table width="77" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td width="26" height="18"><img src="/agent/images/zxh.gif" width="26" /></td>
                <td width="26"><img src="/agent/images/zdh.gif" width="26" /></td>
                <td width="25"><img src="/agent/images/j_gb_t.gif" width="25" /></td>
           </tr>
        </table>
    </td>
   </tr>
   <tr>
        <td height="20" colspan="2">&nbsp;</td>
   </tr>
   <tr>
        <td colspan="2" align="center" valign="top">
            <table width="202" border="0" cellspacing="0" cellpadding="0" style="border:1px solid #3F87BA;">
                <tr>
                    <td width="27" height="22" align="center" valign="middle" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; "><img src="/agent/images/qlt.gif" width="20" height="17" /></td>
                    <td width="148" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; ">&nbsp;</td>
                    <td width="25" align="center" valign="middle" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; "><img src="/agent/images/ljt_t.gif" width="9" height="9" /></td>
                </tr>
                <tr>
                    <td height="93px" valign="top" colspan="3" bgcolor="#FFFFFF">
                        <table name="onlineUser" id="onlineUser" width="163px" border="0"  align="center" cellpadding="0" cellspacing="0">
                              <span id="online">&nbsp;</span>
                        </table>
                    </td>
                </tr>
            </table>
        </td>
      </tr>
      <tr>
        <td height="8" colspan="2"></td>
      </tr>
      <tr>
        <td height="56" colspan="2" align="center" valign="top">
            <table width="201" height="161" border="0" cellpadding="0" cellspacing="0" style="border:1px solid #3F87BA;">
                <tr>
                    <td width="26" height="21" align="center" valign="middle" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; "><img src="/agent/images/qlt.gif" width="20" height="17" /></td>
                    <td width="159" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; ">&nbsp;</td>
                    <td width="14" align="center" valign="middle" bgcolor="#DBEDFB" style="border-bottom:1px solid #3F87BA; "><img src="/agent/images/ljt_t.gif" width="9" height="9" /></td>
                </tr>
                <tr>
                    <td height="135" colspan="3" align="center" valign="top" bgcolor="#FFFFFF">
                        <table width="163" border="0" align="center" cellpadding="0" cellspacing="0">
                            <span id="users">&nbsp;</span>
                        </table>
                    </td>
                </tr>
            </table>
          </td>
        </tr>
  </table>
  </td>
  </tr>
  <tr>

    <td width="13" height="15">&nbsp;</td>
    <td width="97">
        <table width="97" border="0" cellspacing="0" cellpadding="0">
            <tr bgcolor="#C1E1FA">
                <td align="center" valign="middle"><img src="/agent/images/ckltjl.gif" alt="" width="15" height="16" /></td>
                <td align="left" valign="middle" onclick="showHistory();" style="cursor:pointer">查看聊天记录</td>
            </tr>
        </table>
    </td>
    <td width="80" height="15">
        <table width="80" border="0" cellspacing="0" cellpadding="0">
            <tr bgcolor="#C1E1FA">
                <td align="center" valign="middle"><img src="/agent/images/qkltjl.gif" alt="" width="16" height="16" /></td>
                <td align="left" valign="middle" onclick="to_clear();" style="cursor:pointer">清空记录</td>
            </tr>
        </table>
    </td>
  </tr>
  <tr>
    <td height="201" colspan="5" align="center" valign="top">

        <table width="326" height="201" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td height="201" align="left">
            <div name="msg" id="msg"  style="color:black;overflow:scroll;overflow-x:hidden;overflow-y:scroll;width:370px;height:201px;background-color:#FFFFFF">
            </div>


        </td>
      </tr>
    </table> </td>
  </tr>
  <tr>
    <td height="8" colspan="5" align="center"></td>
  </tr>
  <tr>
    <td height="18" colspan="5" align="center">
        <table width="328" border="0" cellspacing="0" cellpadding="0" style="border:1px solid #3F87BC;">
      <tr>
        <td width="326" bgcolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td align="center"  bgcolor="#FFFFFF"><textarea name="message" id="message"  cols="44" rows="3" style="border:0px;"></textarea></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td colspan="2" align="center" valign="middle">Enter键 换行 Ctrl+Enter键 发送消息</td>
    <td height="30" colspan="3" align="center" valign="middle"><table width="154" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="77" align="center" valign="middle"><img src="/agent/images/j_fs.gif" width="65" height="22" style="cursor:pointer" onclick="send();"/></td>
        <td width="77" align="center" valign="middle"><img src="/agent/images/j_gb.gif" width="65" height="22"  style="cursor:pointer" onclick="to_close();" /></td>
      </tr>
    </table>    </td>
  </tr>
</table>
</form>
<script type="text/javascript">

    function updateScriptSession(){
        notesDwr.bindScriptSession('<%=session.getId()%>',updateScript);
    }
    function updateScript(){}

    function chat(data){     
       var textarea = document.getElementById("msg");
        var history = textarea.innerHTML;
        var date = data.date;
        var sec = "";
        if(date.getSeconds()<10){
            sec = "0"+date.getSeconds();
        }else{
            sec = date.getSeconds();
        }
        var sDate = date.getHours()+":"+date.getMinutes()+":"+sec;
        var newMsg = history+"<br>"+"<font color='blue'>"+data.sender.userName+"("+data.senderDept.deptName+")"+"   "+sDate+"   说:"+"<br>"+data.message;;
        textarea.innerHTML = newMsg;
        textarea.scrollTop = textarea.scrollHeight;
    }

    function reverse() {
        dwr.engine.setActiveReverseAjax(true);
    }

    function userList(){
       notesDwr.showOnlineUser(showOnline);
    }

    function showOnline(data){
        var users = document.getElementById("online");
        users.innerHTML = "";
        for (var i = 0; i < data.length; i++) {
            if (data[i].sessionid != '<%=session.getId()%>') {
                users.innerHTML = users.innerHTML+addCheckBox(data[i].userid, "myCheckBox") + data[i].username;
            }else{
                document.getElementById("senderId").value = data[i].userid;
                document.getElementById("senderName").value = data[i].username;  
                document.getElementById("senderDept").value = data[i].deptName;

            }
         }
    }

    function addCheckBox(value, name) {
        var check = "<input type=\"checkbox\" name=\"" + name + "\" value=\"" + value + "\"/>" ;
        return check;
    }


    function messageList(){       
        document.getElementById("msg").innerHTML = "";
        notesDwr.queryAllUnreadMessage('<%=session.getId()%>',showMessage);

    }
   
    function showMessage(data){
       var textarea = document.getElementById("msg");
       if(data){
         var text = "";
         for(var i=0;i<data.length;i++){
             var date = data[i].date;
             var sec = "";
             if(date.getSeconds()<10){
                sec = "0"+date.getSeconds();
             }else{
                sec = date.getSeconds();
             }
             var dd = date.getHours()+":"+date.getMinutes()+":"+sec;
             text += "<br>"+"<font color='blue'>"+data[i].sender.userName+"("+data[i].senderDept.deptName+")"+"   "+dd+"   说"+"<br>"+data[i].message;
             textarea.innerHTML = text;
             textarea.scrollTop = textarea.scrollHeight;
         }
      }
      document.forms[0].message.focus();
    }

    function send(){
        var num = checkNum("myCheckBox");
        if(num==0){
            alert("请选择交谈对象!");
        }else{
            var text = document.getElementById("message").innerHTML;
            if(text == ""){
                alert("不能发送空消息!");
                return ;
             }else {
                var textarea = document.getElementById("msg");
                var sendName = document.getElementById("senderName").value;
                var deptName = document.getElementById("senderDept").value;
                var ids = getCheckValue("myCheckBox");
                var recMsg = textarea.innerHTML;
                var date = new Date();
                var sec = "";
                if(date.getSeconds()<10){
                    sec = "0"+date.getSeconds();
                }else{
                    sec = date.getSeconds();
                }
                var dd = date.getHours()+":"+date.getMinutes()+":"+sec;
                textarea.innerHTML = recMsg+"<br>"+"<font color='green'>"+sendName+"("+deptName+")"+"   "+dd+"   说:"+"<br>"+text;
                textarea.scrollTop = textarea.scrollHeight;
                notesDwr.sender('<%=session.getId()%>',ids,text,noAction);

            }
            document.getElementById("message").innerHTML = "";
        }

    }
    function to_close(){
        window.document.location.href = "/agent/notes/clear.jsp" ;
        window.close();
    }

    function to_remove(){
        if(event.clientX<document.body.clientWidth  && event.clientY<0||event.altKey){
            window.document.location.href = "/agent/notes/clear.jsp" ;
        }
    }
    function noAction(){ }

    function to_clear(){
       document.getElementById("msg").innerHTML = "";
    }

    function showHistory(){
        var id = document.getElementById("senderId").value;
        notesDwr.selectHistory(id,showRecord);
    }

    function showRecord(records){
      var textarea = document.getElementById("msg");
      var username = document.getElementById("senderName").value;
      if(records.length>0){
         var text = "";         
         for(var i=0;i<records.length;i++){
             var date = records[i].date;
             var sec = "";
             if(date.getSeconds()<10){
                sec = "0"+date.getSeconds();
             }else{
                sec = date.getSeconds();
             }
             var dd = date.getHours()+":"+date.getMinutes()+":"+sec;

             if(records[i].sender.userName == username){
                text += "<br>"+"<font color='green'>"+records[i].sender.userName+"("+records[i].senderDept.deptName+")"+"  "+dd+"   说"+"<br>"+records[i].message;
             }else{
                text += "<br>"+"<font color='blue'>"+records[i].sender.userName+"("+records[i].senderDept.deptName+")"+"  "+dd+"   说"+"<br>"+records[i].message;
             }
             textarea.innerHTML = text;
             textarea.scrollTop = textarea.scrollHeight;

         }
      }else{
          window.alert("没有聊天记录!");
      }
    }


    function checkNum(name) {
        var check = document.getElementsByName(name);
        var num = 0;
        for (var i = 0; i < check.length; i++) {
            if (check[i].checked) {
                num ++;
            }
        }
        return num;
    }

//获得选中的多选框
function getCheckValue(name) {
    var select_num = "";
    var check = document.getElementsByName(name);
    for (i = 0; i < check.length; i++) {
        if (check[i].checked) {
            if (select_num == "") {
                select_num += check[i].value;
            } else {
                select_num += "," + check[i].value;
            }
        }
    }
    return select_num;
}

function getSingleCheckBox(name) {
    var select_num = "";
    var check = document.getElementsByName(name);
    for (var i = 0; i < check.length; i++) {
        if (check[i].checked) {
            select_num = check[i];
        }
    }
    return select_num;
}


function document.onkeypress(){
        switch(event.keyCode){
           case   10://CTRL+ENTER
           send();
           break;
        }
}
function document.onkeydown() {
    if(event.keyCode==116) {
        event.keyCode=0;
        event.returnValue = false;
    }
}

</script>
</body>

</html>

 




posted on 2009-04-30 08:06 雨飞 阅读(553) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

留言簿

文章档案

搜索

  •  

最新评论