js.apiurl = function(m,a,cans){ var url='api.php?m='+m+'&a='+a+'&adminid='+adminid+''; url+='&cfrom=reim'; if(!cans)cans={}; for(var i in cans)url+='&'+i+'='+cans[i]+''; return url; } js.ajax = function(m,a,d,funs, mod,checs, erfs, glx){ if(js.ajaxbool && !js.ajaxwurbo)return; clearTimeout(js.ajax_time); var url = js.apiurl(m,a); js.ajaxbool = true; if(!mod)mod='mode'; if(typeof(erfs)!='function')erfs=function(){}; if(typeof(funs)!='function')funs=function(){}; if(!checs)checs=function(){}; var bs = checs(d); if(typeof(bs)=='string'&&bs!=''){ js.msg('msg', bs); return; } if(typeof(bs)=='object')d=js.apply(d,bs); var tsnr = '努力处理中...'; if(mod=='wait')js.msg(mod, tsnr); function errsoers(ts){ js.setmsg(ts); js.msg('msg',ts); js.ajaxbool = false; erfs(ts); } var type=(!d)?'get':'post';if(glx)type=glx; var ajaxcan={ type:type,dataType:'json',data:d,url:url, success:function(ret){ js.ajaxbool=false; clearTimeout(js.ajax_time); if(ret.code!=200){ errsoers(ret.msg); }else{ js.setmsg(''); js.msg('none'); funs(ret.data); } }, error:function(e){ errsoers('内部出错:'+e.responseText+''); } }; $.ajax(ajaxcan); js.ajax_time = setTimeout(function(){ if(js.ajaxbool){ errsoers('Error:请求超时?'); } }, 1000*30); } js.downshow=function(id){ this.location('?id='+id+'&a=down'); } var im={ minid:999999999, init:function(){ strformat.emotspath='web/'; this.type = receinfor.type; this.gid = receinfor.gid; this.showobj = $('#showview'); this.inputobj = $('#contentss'); this.loaddata(); $('a[tools]').click(function(e){ im.toolsclick(this,e); return false; }); this.inputobj.focus(); $('body').keydown(im.onkeydown); this.showobj.mousewheel(function(e){ im.mousewheel(e.deltaY); }); this.resethie(); $(window).resize(function(){ im.resethie(); }); this.charcontobj = $.rockmenu({ data:[], itemsclick:function(d){ im.clickmenuss(d); } }); this.initupfile(); document.ondragover=function(e){e.preventDefault();}; document.ondrop=function(e){e.preventDefault();}; document.addEventListener('drop', function(e) { var files = e.dataTransfer; im.filedrop(files); }, false); }, resethie:function(){ var h = winHb()-40-30-80-40; this.showobj.css('height',''+h+'px'); }, submitinput:function(){ try{im.sendcont();}catch(e){} return false; }, mousewheel:function(lx){ //向上 if(lx==1){ var t = this.showobj.scrollTop(); if(t==0&&get('loadmored')&&!js.ajaxbool)this.loadmoreda(get('loadmored')); } }, onkeydown:function(e){ var code = e.keyCode; if(code==27){im.close();return false;} if(e.altKey){ if(code == 67){im.close();return false;} if(code == 83){im.sendcont();return false;} } if(e.ctrlKey){ if(code == 13){im.sendcont();return false;} } return true; }, toolsclick:function(o1,evt){ var o = $(o1); var lx= o.attr('tools'); if(lx=='send')this.sendcont(); if(lx=='emts')this.getemts(o); if(lx=='clear')this.clearping(); if(lx=='crop')im.cropScreen(false); if(lx=='close')this.close(); if(lx=='file')this.sendfile(true); if(lx=='change')this.changesend(o); if(lx=='cropput')js.msg('msg','请使用快捷键Ctrl+V'); }, close:function(){ window.close(); }, clearping:function(){ this.showobj.html(''); }, getheight:function(ss){ var hei = 50;if(!ss)ss=0; if(get('header_title'))hei+=50; return $(window).height()-hei+ss; }, //判断是否可以发消息 sendbool:function(){ var bo = true; if(receinfor.type=='group' && receinfor.innei==0)bo=false; if(!bo)js.msg('msg','你不在此会话中,不允许发送'); return bo; }, loaddata:function(o1, iref){ if(this.boolload)return; var iref = (!iref)?false:true; var minid= 0; if(iref)minid=this.minid; if(o1)$(o1).html(' 加载中...'); this.boolload = true; this.isshangla = false; js.ajax('reim','getrecord',{type:this.type,gid:this.gid,minid:minid,lastdt:''},function(ret){ if(o1)$(o1).html(''); im.boolload = false; im.loaddatashow(ret, iref); },'none', false,false,'get'); }, readinforshow:function(){ //setTimeout('im.readinforshows()',1000*10); }, readinforshows:function(){ var minid=this.minid; js.ajax('reim','getrecord',{type:this.type,gid:this.gid,minid:0,lastdt:this.lastdt},function(ret){ im.loaddatashow(ret, false, true); im.readinforshow(); },'none', false,false,'get'); }, showdata:{}, loaddatashow:function(ret,isbf, isls){ var a = ret.rows; this.lastdt = ret.nowdt; $('#showviewload').remove(); var i,len = a.length,cont,lex,nas,fase,nr,d,na=[],rnd,sid; $('#loadmored').remove(); if(isbf){ if(len>0)this.showobj.prepend('
---------↑以上是新加载---------
'); na = a; }else{ for(i= len-1; i>=0; i--)na.push(a[i]); } for(i= 0; i0 && !isls){ var s = '
'; if(ret.wdtotal==0){ s+='---------↑以上是历史记录---------'; if(len>=5){ this.showobj.prepend(''); this.isshangla = true; } }else{ s+='---↑以上是历史,还有未读信息'+ret.wdtotal+'条,点击加载---'; } s+='
'; if(!isbf)this.addcont(s); if(isbf)this._addclickf(); } }, contright:function(o1,e){ var o=$(o1),rnd=o.attr('rand'); this.randmess = rnd;//,{name:'转发...',lx:4} var ids=rnd.replace('mess_',''),da=this.showdata[ids]; this.rightdata = da; var d=[{name:'复制',lx:0},{name:'删除',lx:1},{name:'刷新',lx:5}]; if(this.type=='group')d.push({name:'@TA',lx:3}); //if(da.sendid==adminid)d.push({name:'撤回',lx:6}); this.charcontobj.setData(d); this.charcontobj.showAt(e.clientX,e.clientY,130); }, clickmenuss:function(d){ var lx=d.lx; var ids=this.randmess.replace('mess_',''); if(lx==0){ var cont = $('#qipaocont_'+this.randmess+'').text(); if(cont)this.addinput(cont); } if(lx==1){ $('#ltcont_'+this.randmess+'').remove(); if(ids)js.ajax('reim','clearrecord',{type:this.type,gid:this.gid,ids:ids},false,'none'); } if(lx==2){ js.confirm('确定要清除1个月前的记录吗?',function(lx){ if(lx=='yes')im.clearjilss(30); }); } if(lx==3){ var cont = $('#ltname_'+this.randmess+'').text(); if(cont)this.addinput('@'+cont); } if(lx==4){ js.changeuser(false,'usercheck','转发给...', { onselect:function(sna,sid){ if(!sid)return; im.zhuangfa(sid, ids); } }); } if(lx==5){ location.reload(); } if(lx==6){ $('#qipaocont_'+this.randmess+'').html('撤回消息'); } }, //转发 zhuangfa:function(touid, ids){ }, clearjilss:function(d){ js.ajax('reim','clearrecord',{type:this.type,gid:this.gid,day:d},function(s){ js.msg('success','清除成功'); }); }, loadmoreda:function(o1){ this.loaddata(o1, true); }, addcont:function(cont, isbf){ var o = this.showobj; if(cont){if(isbf){o.prepend(cont);}else{o.append(cont);}} clearTimeout(this.scrolltime); this.scrolltime = setTimeout(function(){ im.showobj.animate({scrollTop:get('showview').scrollHeight},100); im._addclickf(); }, 50); }, _addclickf:function(){ var o = this.showobj.find('img[fid]'); o.unbind('click'); o.click(function(){ im.clickimg(this); }); }, clickimg:function(o1){ var o=$(o1); var fid=o.attr('fid'); var src = o1.src.replace('_s.','.'); $.imgview({url:src,ismobile:false}); }, contshozt:function(d){ return strformat.contshozt(d,'web/'); }, sendcont : function(ssnr){ if(js.ajaxbool || !this.sendbool())return; js.msg('none'); var o = this.inputobj; var nr = strformat.sendinstr(o.val()); nr = nr.replace(//gi,'>').replace(/\n/gi,'
'); if(ssnr)nr=ssnr; if(isempt(nr))return false; var conss = jm.base64encode(nr); if(conss.length>500){ js.msg('msg','发送内容太多了'); return; } var nuid= js.now('time'),optdt = js.serverdt(); if(optdt==this.nowoptdt){ js.msg('msg','消息发太快了'); return; } this.nowoptdt = optdt; var cont= strformat.showqp('right','我',optdt, nr, nuid, adminface); this.addcont(cont); o.val('').focus(); this.sendconts(conss, nuid, optdt, 0); return false; }, sendconts:function(conss, nuid, optdt, fid){ try{opener.reim.addhistory(this.type,this.gid,0,conss,optdt,adminname);}catch(e){} var d = {cont:conss,gid:this.gid,type:this.type,nuid:nuid,optdt:optdt,fileid:fid}; js.ajax('reim','sendinfor',d,function(ret){ im.sendsuccess(ret,nuid); },'none',false,function(){ im.senderror(nuid); }); }, senderror:function(nuid){ js.ajaxbool = false; get(nuid).src='images/error.png'; get(nuid).title='发送失败'; }, sendsuccess:function(d,nuid){ this.bool = false; if(!d.id){ this.senderror(nuid); return; } $('#'+d.nuid+'').remove(); var bo = false; d.messid=d.id; d.face = adminface; if(this.type=='group')d.gface=receinfor.face; var bo = serversend(d); //if(!bo)js.msg('msg','信息不能及时推送,但已保存到服务器'); }, addinput:function(s){ var val = this.inputobj.val()+s; this.inputobj.val(val).focus(); }, initupfile:function(){ if(typeof(uploadobj)=='undefined')uploadobj = $.rockupload({ inputfile:'allfileinput', initpdbool:false, updir:'reimchat', onchange:function(f){ im.sendfileshow(f); }, onprogress:function(f,per,evt){ strformat.upprogresss(per,im._sssnuid); }, onsuccess:function(f,str,o1){ im.sendfileok(f,str); }, onerror:function(str){ js.msg('msg', str); im.senderror(im.upfilearr.nuid); } }); strformat.upobj = uploadobj; }, sendfile:function(bo){ if(!this.sendbool())return; if(bo)uploadobj.click(); }, filedrop:function(fobj){ if(!this.sendbool())return; uploadobj.change(fobj); }, //上传的文件预览显示 sendfileshow:function(f, snr){ if(!f)f={}; f.face = adminface; var fa = strformat.showupfile(f, snr); var cont= fa.cont; this._sssnuid = fa.nuid; this._sssoptdt = fa.optdt; this.upfilearr = fa; this.addcont(cont); }, sendfileok:function(f,str){ var a=js.decode(str); if(!a.id){ this.senderror(this._sssnuid); strformat.uperror(this._sssnuid); js.msg('msg', str); return; } var contss = strformat.upsuccess(a, this._sssnuid); this.sendconts(jm.base64encode(contss), this._sssnuid, this._sssoptdt, a.id); }, fileyulan:function(pn,fid){ var url = '?m=public&a=fileviewer&id='+fid+''; parent.js.open(url, 700, 500); }, getemts:function(o){ if(!get('aemtsdiv')){ var s = ''; $('body').append(s); js.addbody('emts','hide','aemtsdiv'); } var o1 = $('#aemtsdiv'); o1.toggle(); var off = o.offset(); o1.css('top',''+(off.top-205)+'px'); }, getemtsbq:function(wj, oi1,oi2, fzd, dx){ var i,oi=0,j1 = js.float(100/fzd); var s = ''; for(i=oi1; i<=oi2; i++){ oi++; s+=''; if(oi % fzd==0)s+=''; } s+='
'; return s; }, backemts:function(s){ this.addinput(s); $('#aemtsdiv').hide(); }, getpath:function(){ if(!this.pathobj)this.pathobj = require('path'); var oatg = this.pathobj.dirname(process.execPath); oatg = oatg.replace(/\\/g, '/'); return oatg; }, //截屏 cropScreen:function(lx){ if(nwjsgui){ var oatg = this.getpath(); nw.Shell.openItem(''+oatg+'/images/reimcaptScreen.exe'); }else{ js.msg('msg','无法截屏,请使用REIM客户端/第三方快捷键,[去下载]'); return; } }, readclip:function(evt){ var clipboardData = evt.clipboardData; if(!clipboardData)return; for(var i=0; i
'+a[i].name+'
'; if(oi%4==0)s+=''; } s+=''; $('#showuserlist').html(s); }, //邀请 yaoqing:function(){ if(this.type!='group')return; js.changeuser(false,'usercheck','邀请人到会话中', { onselect:function(sna,sid){ if(!sid)return; im.yaoqings(sid); } }); }, yaoqings:function(sid){ js.msg('wait','邀请中...'); js.ajax('reim','yaoqinguid',{val:sid,gid:this.gid},function(da){ if(da.indexOf('success')==0){ var uids = da.replace('success',''); js.alert('邀请成功','',function(){ location.reload(); }); //if(uids != '') }else{ js.msg('msg',da); } }); }, //退出会话 exitgroup:function(){ if(this.type!='group')return; js.confirm('确定要退出会话吗?',function(lx){ if(lx=='yes'){ im.exitgroups(); } }); }, exitgroups:function(){ js.msg('wait','退出中...'); js.ajax('reim','exitgroup',{gid:this.gid}, function(da){ js.alert('成功退出会话','',function(){ try{opener.reim.exitgroup(im.gid)}catch(e){} im.close(); }); }); } } strformat.clickfile=function(fid,lx){ js.fileopt(fid,lx); }