/* [НАСТРОЙКИ] */ /* Топик - выводится в фрейме сообщений сразу после загрузки */ var topic=""; /* Загрузка посл. сообщ. при переходе в комнату, 1 - вкл (перезагрузка фрейма) */ var roomlog=0; /* Приват в отдельном фрейме: 0 - выкл, 1 - вкл (необходимо настроить фреймовую систему) */ var privatok=1; /* Начальный HTML - код фреймов для сообщений */ var mainframe="<html><head><META http-equiv=Content-Type content='text/html; charset=windows-1251'><link rel=STYLESHEET type=text/css href=style.css></head><body class=header-body>"; /* Начальный HTML - код истории ваших и отправленных вам сообщений */ var myhistory1=mainframe; var myhistory=""; /* Автоматический перенос курсора встроку ввода текста при печатании, 1 - вкл */ var setcursor=0; /* Запретить правую кнопку мышки во всех фреймах, 1 - вкл */ var nomousemenu=0; /* Замедление прокрутки фрейма сообщений, 0 - выкл */ var slowscroll=15; /* Максимум отображать сообщений в фрейме сообщений, 0 - неогр */ var maxmsgs=0; /* Урезать повторяющиеся символы в сообщениях до maxabc, 0 - выкл */ var maxabc=3; /* Ники невидимок, пример: invisible['nick']=1; */ var invisible = new Array(); invisible['adm']=1; /* Ники чистильщиков экрана(/clear): clearer['nick']=1; */ var clearer = new Array(); clearer['adm']=1; /* Ники перезагрузчиков чата(/reload): reloader['nick']=1; */ var reloader = new Array(); reloader['adm']=1; /* Ники вызывальщиков алертом(/alert): alerter['nick']=1; */ var alerter = new Array(); alerter['adm']=1; /* Ники установщиков тотального игнора (/ignore): ignorer['nick']=1; */ var ignorer = new Array(); ignorer['adm']=1; /* Граф. ники: 0 - выкл, 1 - вкл, позиции в списке - это номера функций "cmd" от 0-10(11-никлист) */ var use_gn=1; var gnok=new Array(1,1,1,0,0,0,1,0,0,0,0,1); /* для добавления граф. ников (img/flash) используйте фаил gn.js */ var gna = new Array; document.write('<scr'+'ipt src=gn.js?'+Math.random()+'></scr'+'ipt>'); /* Градиент: 0 - выкл, 1 - вкл, позиции в списке - это номера функций "cmd" от 0-10(11-никлист) */ var use_gr=1; var grok=new Array(1,1,1,0,0,0,1,0,0,0,0,0); if(use_gr==1) document.write("<"+"script src=http://mpchat.com/blank/gradient.js></"+"script>"); /* Градиент текста */ /* для добавления градиента тексту используйте фаил gr.js */ var gra = new Array; document.write('<scr'+'ipt src=gr.js?'+Math.random()+'></scr'+'ipt>'); /* Градиент ника */ var grna = new Array; grna['adm'] = new Array('#ff0000','#00ff00','#0000ff'); /* Личный текст приветствия при входе в чат, используйте %nick% для расположения ника */ var tadda = new Array; tadda['adm']="К нам приходит %nick%. Всем привет!"; /* Личный текст прощания входе в чат, используйте %nick% для расположения ника */ var tdela = new Array; tdela['adm']="От нас уходит %nick%. Всем пока!"; /* Отметка сообщений: 0-обычные, 1-мои, 2-мне, 3-приват_мой, 4-приват_мне, 5-приват_мой2, 6-приват_мне2 */ var symbols=new Array(); symbols[0]=""; symbols[1]=""; symbols[2]="<p class=msg>"; symbols[3]="*"; symbols[4]="<font color=red>»</font>"; symbols[5]=""; symbols[6]=""; /* Сообщения о наказании: Ник1 сообщение Ник2 */ var deltxt=new Array(); deltxt[1]='удаляет'; deltxt[2]='удаляет'; deltxt[3]='удаляет'; deltxt[4]='закидывает окнами'; deltxt[5]='выпинывает'; deltxt[6]='предупреждает'; deltxt[7]='запрещает разговаривать'; /* Стандартные настройки ника и текста - если пользователем невыбран */ var fontnick=new Array('#d7d7d7','2','Verdana'); var fonttext=new Array('#815f8c','2','Verdana'); /* [Настройки - никлиста и статусов] */ /* Значок привата */ var privat_s='@'; /* Стандартная иконка */ var icon1='http://mpchat.com/blank/img/icon.gif'; /* Вывод иконки обручённых в загсе */ var love1='<img src=http://mpchat.com/blank/img/love.gif border=0>'; /* Вывод статусов */ var stn= new Array(); stn[0] =''; stn[1] ='адм'; stn[2] ='мод+'; stn[3] ='мод'; stn[4] ='рулёз'; stn[5] ='бывал.'; stn[6] ='посет.'; stn[7] ='нович.'; stn[8] ='ГЛАВНЫЙ'; /* Вывод статусов ICQ */ var stn2= new Array(); stn2[0] ='<img src=http://mpchat.com/blank/img/status/0.gif>'; stn2[1] ='<img src=http://mpchat.com/blank/img/status/1.gif>'; stn2[2] ='<img src=http://mpchat.com/blank/img/status/2.gif>'; stn2[3] ='<img src=http://mpchat.com/blank/img/status/3.gif>'; stn2[4] ='<img src=http://mpchat.com/blank/img/status/4.gif>'; stn2[5] ='<img src=http://mpchat.com/blank/img/status/5.gif>'; /* Сообщение о смене статусa ICQ */ var icqtxt= new Array(); icqtxt[0]='меняю статус на -> свободен'; icqtxt[1]='меняю статус на -> работаю'; icqtxt[2]='меняю статус на -> в привате'; icqtxt[3]='меняю статус на -> читаю'; icqtxt[4]='меняю статус на -> скоро буду'; icqtxt[5]='меняю статус на -> меня нет'; /* Включаем вебкамеры, прописываем статус 99 и загружаем модуль */ var webcam=0; stn2[99] ="<img src=http://mpchat.com/blank/img/status/webcam.gif title='нажмите для просмотра вещания' style='border:0;'>"; icqtxt[99]='меняю статус на -> вещаю <img src=http://mpchat.com/blank/img/status/webcam.gif>'; document.write("<"+"script src=http://mpchat.com/blank/webcam.js></"+"script>"); /* Авто смена статуса при молчании */ /* добавьте к примеру: away[4]=15; (включение статуса 4 через 15 мин) */ /* если вы укажите время для статуса 100, то пользователя выкинет из чата */ var away=new Array(); /* Вывод пола */ var mw_n ='<img src=img/rend_anon.png border=0>'; var mw_m ='<img src=img/rend_man.png border=0>'; var mw_w ='<img src=img/rend_woman.png border=0>'; /* Картинки игнора */ var ign_imgoff="http://mpchat.com/blank/img/ign_off.gif"; var ign_imgon="http://mpchat.com/blank/img/ign_on.gif"; /* [Функции - общие] */ /* Открывает новое окно с нужными размерами(для удобства) */ function wo(url,name,w,h,scroll){ LeftPosition = (screen.width) ? (screen.width-w)/2 : 0; TopPosition = (screen.height) ? (screen.height-h)/2 : 0; set ='height='+h+',width='+w+',top='+TopPosition+ ',left='+LeftPosition+',scrollbars='+scroll+',resizable' window.open(url,name,set); } /* Функции чтения Cookie */ function getcookie(key) { str=document.cookie;len=str.length; if(len==0) return ""; start=str.indexOf(key + "="); if(start==-1) return ""; start=start+key.length+1; end=str.indexOf(";",start); if(end==-1) end=len; return unescape(str.substring(start,end)); } /* Функции записи Cookie */ function setcookie(key,str,min) { if(!key) return; if(!min) min=60*24*365; var date = new Date(); date.setTime(date.getTime()+(min*60*1000)); document.cookie = key+"="+str+"; expires="+date.toGMTString()+"; path=/"; } /* Функции проверки и добавлиния игнора в массив/cookie */ var ign = new Array(''); ign=getcookie(parent.chatlogin.replace("-","_")+"_mpign").split(","); function ign_sel(nick) {ok=ign_ok(nick); for(var i=0;i<ign.length;i++) {if(ok && nick==ign[i]) ign[i]=null; if(!ok && !ign[i]) break;} if(!ok) ign[i]=nick; setcookie(parent.chatlogin.replace("-","_")+"_mpign",escape(ign.join(",")),1000000); } function ign_ok(nick){for(var i=0;i<ign.length;i++) if(nick==ign[i]) return 1;} /* Функция добавления граф. ника или градиента для ника */ function setgn(cmd,nick){ var set_out=nick; if(use_gn==1 && gna[nick]!=null && gna[nick] && gnok[cmd]==1) { if(gna[nick].match(/^[0-9a-z.:\/_-]+\.(swf)$/i)) set_out='<embed src='+gna[nick]+'>'; else set_out='<img src='+gna[nick]+' border=0>'; } else if(use_gr==1 && grna[nick]!=null && grna[nick] && grok[cmd]==1) set_out=gr(nick,grna[nick]); return set_out; } /* Функция добавления град. текста */ function setgr(cmd,nick,text){ if(use_gr!=1) return text; var set_out=text; if(gra[nick]!=null && gra[nick] && grok[cmd]==1) set_out=gr(text,gra[nick]); return set_out; } /* Устанавливает другой стиль(дизайн) для всех фреймов чата */ function setstyle(cssfile) { if(!cssfile) return; var obj=document.getElementsByTagName("link"); if(obj && obj[0]) obj[0].href=cssfile; if(parent.frames.length) {for(i=0; i<parent.frames.length; i++) {obj=parent.frames[i].document.getElementsByTagName("link")[0];if(obj) obj.href=cssfile;}} } /* Дозагрузка - выполняется после загрузки фрейма сообщений */ function onloaded() { window.setTimeout('scrolled=1;',5000); if(interval) window.clearTimeout(interval); if(topic) wr(topic); for(var i = 0;i<rooms.length;i++) update(i,0); /* Запретить правую кнопку мышки и ставить курсор в текстовое поле */ for(i=0; i<parent.frames.length; i++) { if(setcursor) parent.frames[i].document.onkeydown = function(){document.fmsg.text0.focus();} if(nomousemenu) { parent.frames[i].document.oncontextmenu = function(){return false;} if(document.layers) parent.frames[i].document.captureEvents(Event.MOUSEDOWN); parent.frames[i].document.onmousedown = function(e){if(e && e.type == "contextmenu") return false;} } } /* Добавления в никлист бота-робота, ниже структура */ room_r=0;status_r=0;inchat_r='1'; if(nick_r) {loaded=1; f(room_r,6,nick_r,'',inchat_r,'',color_r,'',mw_r,st_r,icon_r,status_r,love_r,clan_r);loaded=0;} } /* Функции плавной прокрутки и включение дозагрузки */ var loaded=0; var scrolled=0; function up() { if(loaded==0) onloaded(); var scr=parent.left.document.body; if(parent.left.document.compatMode != 'BackCompat') scr=parent.left.document.documentElement; scr1=scr.scrollTop; scr2=parent.left.innerHeight; if(scr2==undefined) scr2=scr.clientHeight; scr3=scr.scrollHeight; if (scr1+scr2>=scr3) return; if (scrolled==1) {if (scr1+scr2+250<scr3) return;} parent.left.scroll (0, scr =1+Math.round (scr1+1*(scr3-scr2-scr1)/(1+slowscroll))); setTimeout ('up()', 20); } /* Удаляет старое сообщ. печатает новое и прокручивает вниз */ function wr(text) { if(loaded==1 && maxmsgs>0) { var obj=parent.left.document;var count=obj.getElementsByTagName('div').length; if(maxmsgs<count) obj.body.removeChild(obj.getElementsByTagName('div')[0]); } parent.left.document.write("<div>"+text+"</div>"); if(loaded==1) up(); } /* [Функции - формирования никлиста] */ /* Функции добавления и удаления пользователей в массиве никлиста */ var uc = 0; var us = new Array(); var ucc=new Array(); var index=0; function separate(obj,c) { if(ucc[obj+"c"]==null) ucc[obj+"c"]=c; else ucc[obj+"c"]+=c; document.getElementById(obj+"c").innerHTML=ucc[obj+"c"]; if(c==1) return document.getElementById(obj).rowIndex+1; } function seprules(type,st,mw) { if(mw=='0') index=separate("man",type); else if(mw=='1') index=separate("woman",type); else if(mw=='') index=separate("noman",type); } function add(nick,colornick,st,mw,icon,status,inchat,time,room,love,clan){ if(loaded==0) return; var l=us.length; for(var i = 0;i<l;i++ ) if(us[i]!=null && us[i][0]==nick)break; us[i]=new Array(nick,colornick,st,mw,icon,status,room,love,clan); if (i==l) {uc++; update(room,1);} if(room==myroom) { nickid="!"+nick; obj=document.getElementById(nickid); var ul=document.getElementById('ul'); if(obj) ul.deleteRow(obj.rowIndex); index=ul.rows.length; seprules(1,st,mw); var obj=ul.insertRow(index); obj.id=nickid; format(i,obj); }} function del(nick,colornick,st,mw,icon,status,inchat,time,room) { if(loaded==0) return; for(var i=0; i<us.length; i++) if( us[i] != null && us[i][0] == nick ) {uc--; update(us[i][6],-1); us[i] = null; break;} if(room==myroom) { nickid="!"+nick; obj=document.getElementById(nickid); var ul=document.getElementById('ul'); ul.deleteRow(obj.rowIndex); seprules(-1,st,mw); }} /* Добавление ника в таблицу участников */ function format(i,tr){ if(us[i]==null) return ""; nick=us[i][0]; color=us[i][1]; stat=us[i][2]; stat2=us[i][5]; mw_u=us[i][3]; icon=us[i][4]; love=us[i][7]; clan=us[i][8]; set_nick=setgn(11,nick); set_privat=privat_s; if(icon_on) { if((icon=="")||(icon==0)) icon=icon1; icon="<img src="+icon+" border=0>"; set_privat=icon; } if(stn[stat]==null) st=''; else st=stn[stat]; if(stn2[stat2]==null) icqst=''; else icqst=stn2[stat2]; if(webcam) { if(stat2==99) { icqst="<a href=# onclick='loadvideo(\"webcam"+nick+"\",webcamhost,\""+nick+"\",0);return false;'>"+icqst+"</a>"; if(nick==mynick && loaded) loadvideo("mywebcam",webcamhost,nick,1); } else if(nick==mynick && loaded) loadvideo("mywebcam",""); } mw=mw_n; if(mw_u=='0') mw=mw_m; if(mw_u=='1') mw=mw_w; set_love=""; if(love) set_love=" <a href=index.php?inc=info&nick="+love+" title='Обручен(а) с "+love+"' target=_blank>"+love1+"</a>"; set_clan=""; if(clan>0) set_clan=" <a href=index.php?inc=clan&clan="+clan+"&"+parent.yourkey+" title='Находится в клане' target=_blank><img src=data/clan/"+clan+".gif border=0></a>"; /* Определение игнора */ ign_st="off"; ign_img=ign_imgoff; if(ign_ok(us[i][0])) {ign_st="on"; ign_img=ign_imgon;} /* Определение частей никлиста */ set_privat="<a href='' onclick=\"parent.ptonick('"+nick+": '); return false;\">"+set_privat+"</a>"; set_nick="<a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+color+">"+set_nick+"</font></a>"; set_nick=set_nick+set_love+set_clan; set_st=st; set_icqst=icqst; set_ign="<img src="+ign_img+" style='border:0px; cursor:pointer;' title='игнор' onclick=\" parent.ign_sel('"+nick+"'); if(parent.ign_ok('"+nick+"')) this.src=parent.ign_imgon; else this.src=parent.ign_imgoff;\">"; if(nick == mynick || parent.admin=='1') set_ign = "<img src="+ign_img+" style='cursor: not-allowed;' title='себя игнорировать нельзя'>"; set_mw="<a href=index.php?inc=info&nick="+us[i][0]+" onclick=\"parent.wo(this.href,'Анкета','400','320','yes');return false;\" target="+us[i][0]+">"+mw+"</a>"; /* Добавление ячеек в таблицу */ tr.insertCell(0).innerHTML=set_privat; tr.insertCell(1).innerHTML=set_nick; tr.cells[1].width="100%"; tr.insertCell(2).innerHTML=set_st; tr.insertCell(3).innerHTML=set_icqst; tr.insertCell(4).innerHTML=set_ign; tr.insertCell(5).innerHTML=set_mw; } /* [Функция - вывода сообщений и команд] */ var pu = new Array; var pt = new Array; function f(room,cmd,nick,tonick,text,time,colornick,color,var9,var10,var11,var12,var13,var14) { if(ign_ok(nick) && cmd!=6 && cmd!=7) return; if(nick==nick_r && room!=room_r) return; /* Присвоение переменных */ if(cmd==5) {kill=var9; timeout=var10;} else if(cmd==6 || cmd==7) { inchat=text; mw=var9; st=var10; icon=var11; status=var12; love=var13; clan=var14; if(colornick=='') colornick=fontnick[0]; else colornick='#'+colornick; if(color=='') color=fonttext[0]; else color='#'+color; /* скрыть ник невидимки */ if(invisible[nick]) return; } else { sizenick=var9;size=var10;facenick=var11;face=var12; if(colornick=='') colornick=fontnick[0]; else colornick='#'+colornick; if(sizenick=='') sizenick=fontnick[1]; if(facenick=='') facenick=fontnick[2]; if(color=='') color=fonttext[0]; else color='#'+color; if(size=='') size=fonttext[1]; if(face=='') face=fonttext[2]; } /* Автоответчик */ if(loaded==1 && tonick==mynick && nick!=mynick) { var autotext=document.fmsg.text0.value; var obj=document.fmsg.autotext; if(autotext && obj && obj.checked) { parent.hidden.location.href='index.php?inc=write&'+parent.yourkey+'&text=/privat '+nick+': Автоответчик -> '+autotext+'&r='+Math.random(); }} /* Проверка пользовательских команд для простого сообщения */ if(cmd==0) { if(text.substr(0,5)=="/ping" && nick == mynick && loaded==1) { var ping=(new Date().getTime()-gettime)/1000; text="<font color=red><i>ping: "+ping+" sec</i></font> "; } if(text.substr(0,6)=="/clear" && clearer[nick]) { if(loaded==1) parent.left.document.getElementsByTagName("body")[0].innerHTML="";text="очищаю фрейм сообщений";} if(text.substr(0,7)=="/reload" && reloader[nick]) { if(loaded==1) parent.location.reload(); text="перезагружаю чат";} if(text.substr(0,6)=="/alert" && alerter[nick]) { text=text.substr(text.indexOf(": ")+2); if(loaded==1 && mynick==tonick) alert(text); if(nick!=mynick) return; text=tonick+": отправленна команда алерт";} if(text.substr(0,7)=="/ignore" && ignorer[nick]){ if(tonick && mynick!=tonick && loaded==1) ign_sel(tonick); if(nick!=mynick || !tonick) return; if(ign_ok(tonick)) text="Вы поставили полный игнор на ник "+tonick; else text="Вы сняли полный игнор с ника "+tonick; } } /* Добавление граф ников, градиента и формат времени */ set_nick=setgn(cmd,nick); set_text=setgr(cmd,nick,text); set_time="<font style='cursor:pointer;' onclick='parent.sendto(\" см. "+time+" \");'>"+time+"</font> "; /* Вывод простого сообщения */ if(cmd==0) { symbol=symbols[0];if(nick==mynick) symbol=symbols[1];if(tonick==mynick || text.split(" "+mynick+":").length>1) symbol=symbols[2]; set_nick=" <a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font size="+sizenick+" color="+colornick+" face='"+facenick+"'>"+set_nick+":</font></a> "; set_text=" <font size="+size+" color="+color+" face='"+face+"'>" +set_text+"</font> "; towr=symbol+set_time+set_nick+set_text; if(nick==mynick || tonick==mynick) myhistory+=towr; wr(towr); } /* Вывод приватных сообщений */ if(cmd==1 || cmd==2) { symbol=symbols[0];if(nick==mynick) symbol=symbols[3];if(tonick==mynick) symbol=symbols[4]; symbol2="";if(nick==mynick) symbol2=symbols[5];if(tonick==mynick) symbol2=symbols[6]; if(cmd==2) {symbol="";symbol2="";set_nick="<font size="+sizenick+" color="+colornick+" face='"+facenick+"'>"+set_nick+":</font> "; set_time=time+" ";} else set_nick=" <a href='' onclick=\"parent.ptonick('"+nick+": '); return false;\"><font size="+sizenick+" color="+colornick+" face='"+facenick+"'>"+set_nick+":</font></a> "; set_text=" <font size="+size+" color="+color+" face='"+face+"'>"+symbol2+" "+set_text+"</font> "; towr=set_time+symbol+set_nick+set_text+"<br>"; if(nick==mynick || tonick==mynick) myhistory+=towr; /* - cmd=1 для обычного привата, фрейм или общее окно, cmd=2 приват в новом окне */ if(cmd==1 && privatok==1) {var obj=document.getElementById("privatdiv"); obj.innerHTML+="<div>"+towr+"</div>";obj.scrollTop=1000000;} else if(cmd==1) wr(towr); else if(cmd==2) { if(nick==mynick) pnick=tonick; else pnick=nick; if(pu[pnick]==null || pu[pnick].closed) { pt[pnick]="<div>"+towr+"</div>"; pu[pnick]=window.open("index.php?inc=privat&"+parent.yourkey+"&pnick="+pnick,"","scrollbars=no,width=500,height=400,noresize"); } else { pu[pnick].pframe.document.write("<div>"+towr+"</div><script>scroll(0,1000000);</"+"script>"); pu[pnick].document.fmsg.text0.focus(); }}} /* Вывод выделенного сообщения '/me' или '/msg' */ if(cmd==3) { wr(set_time+"<b>Сообщение от <font size=2 color="+colornick+">"+set_nick+":</font></b> <i>"+set_text+"</i><br>"); } /* Вывод сообщения о вызове и сам вызов окном с музыкой '/call nick' */ if(cmd==4) { if(tonick==mynick && loaded==1) alert("Вас вызывает в чат "+nick+"!"); wr(set_time+"<i>"+set_nick+" вызывает "+tonick+".</i><br>"); } /* Вывод сообщения об удалении '/kill nick' и сам процесс */ if(cmd==5) { if(tonick==mynick && loaded==1 && kill!=6 && kill!=7) { if((kill==1)||(kill==2)||(kill==3)) { act="kill"; setcookie(parent.chatlogin.replace("-","_")+"_mpban",tonick,timeout); } if(kill==4) act="window"; if(kill==5) act="prav"; parent.location.href="exit.html?"+parent.yourkey+"&act="+act+"&timeout="+timeout+"&grund="+text; } if(text.length>0) text=" Причина: "+text+". "; if(timeout>0) { if(timeout<61) timeout="На "+timeout+" минут."; if(timeout==1440) timeout="На день!"; if(timeout==10080) timeout="На неделю!"; if(timeout==43200) timeout="На месяц!"; if(timeout>1000000) timeout="Навсегда!"; } wr(set_time+"<i><a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+set_nick+"</font></a> "+deltxt[kill]+" "+tonick+".</i> "+timeout+text+"<br>"); } /* Вывод входа юзера в чат и добавление в нклист через add() */ if(cmd==6) { if(inchat=='0' && room==myroom) { set_nick="<a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+set_nick+"</font></a>"; tadd="К нам приходит %nick%. Поприветствуем!"; if(tadda[nick]!=null && tadda[nick]) tadd=tadda[nick].replace(nick,"%nick%"); if(tadd.search("%nick%")==-1) tadd="%nick% "+tadd; tadd=tadd.replace("%nick%",set_nick); wr(set_time+"<font color=#82AD00>"+tadd+"</font><br>"); } add(nick,colornick,st,mw,icon,status,inchat,time,room,love,clan); } /* Вывод выхода юзера из чата и удаление из никлиста через del() */ if(cmd==7) { if(inchat=='1' && room==myroom) { set_nick="<b>"+set_nick+"</b>"; tdel="С нами прощается %nick% и уходит."; if(tdela[nick]!=null && tdela[nick]) tdel=tdela[nick].replace(nick,"%nick%"); if(tdel.search("%nick%")==-1) tdel="%nick% "+tdel; tdel=tdel.replace("%nick%",set_nick); wr(set_time+"<font color=#86001F>"+tdel+"</font><br>"); } del(nick,colornick,st,mw,icon,status,inchat,time,room); } /* Сообщение о смене статуса участника и его изменение */ if(cmd==8) { status=text; for(var i=0;i<us.length;i++) if(us[i]!= null && us[i][0]==nick){ us[i][5]=status; if(icqtxt[status]) wr(set_time+"<font size=2 color="+colornick+"><b>"+set_nick+":</b></font> <i>"+icqtxt[status]+"</i><br>"); var obj=document.getElementById("!"+nick); while(obj.cells.length) obj.deleteCell(0);format(i,obj); }} /* Функция обработки сообщений викторины */ if(cmd==9) { if(text=="end") text1="это слово уже угаданно или время вышло"; else if(text=="") text1="вы не угадали это слово"; else { if(mynick==nick) text1='вы только что отгадали слово "'+text+'" и получаете пункт'; else text1='только что отгадал(а) слово "'+text+'"'; } wr(set_time+"<font size=2 color="+colornick+"><b>"+set_nick+":</b></font> <i>"+text1+"</i><br>"); } /* Функция перехода в комнаты */ if(cmd==10) { oldroom=room; setroom=text; if(loaded==1) { for(var i = 0;i<us.length;i++ ) if(us[i]!=null && us[i][0]==nick) { us[i][6]=setroom; update(oldroom,-1);update(setroom,1); } if(nick==mynick) { myroom=setroom; if(roomlog==1) { parent.left.document.body.innerHTML="Подождите, осуществляется переход в другую комнату ..."; window.setTimeout("loadframes();",2000); mystyle=rooms[myroom][2]; window.setTimeout("setstyle(mystyle);",4000); return; } ucc=new Array(); parent.left.document.body.innerHTML=""; document.getElementById('users').innerHTML=userlist; window.setTimeout("for(var i=0;i<us.length;i++) if(us[i]!=null) add(us[i][0],us[i][1],us[i][2],us[i][3],us[i][4],us[i][5],'','',us[i][6],us[i][7],us[i][8]);",500); mystyle=rooms[myroom][2]; setstyle(mystyle); } else { for(var i = 0;i<us.length;i++ ) if(us[i]!=null && us[i][0]==nick) { if(myroom==setroom) {add(us[i][0],us[i][1],us[i][2],us[i][3],us[i][4],us[i][5],'','',us[i][6],us[i][7],us[i][8]);} else if(myroom==oldroom) {var obj=document.getElementById("!"+nick); if(obj) document.getElementById('ul').deleteRow(obj.rowIndex); seprules(-1,us[i][2],us[i][3]);} }}} towr=""; if(nick==mynick && loaded==1) towr=set_time+"<i>Вы перешли в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>"; else if(myroom==setroom) towr=set_time+"<i><a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+nick+"</font></a> приходит к нам из комнаты -> <b>"+rooms[oldroom][0]+"</b>.</i><br>"; else if(myroom==oldroom) towr=set_time+"<i>"+nick+" уходит в комнату -> <b>"+rooms[setroom][0]+"</b>.</i><br>"; if(nick==mynick) myhistory+=towr; wr(towr); } /* Конец функции f() */ } /* Функция обновления числа юзеров и выбора комнат */ function update(room,plus) { obj=document.getElementById("count"); if(obj) obj.innerHTML=uc; if(!rooms[room] || rooms.length<2) return; rooms[room][1]+=plus; obj=document.getElementsByName("selectroom")[0]; if(obj) obj.options[room].innerHTML=rooms[room][0]+" ("+rooms[room][1]+")"; if(room==myroom) {obj=document.getElementById("roomcount"); if(obj) obj.innerHTML=rooms[room][1];} } /* [Функции - нижнего фрейма] */ /* Функции для работы со строкой ввода и др. */ function sendto(nick) { document.fmsg.text0.focus(); document.fmsg.text0.value=document.fmsg.text0.value + nick ;} function tonick(nick) { if(document.fmsg.cmd!=null) document.fmsg.cmd.value=""; if(document.fmsg.tonick==null) sendto(nick); else { document.fmsg.tonick.value=nick; document.fmsg.text0.focus();}} function ptonick(nick) { if(document.fmsg.cmd==null) sendto("/privat "+nick); else {tonick(nick); document.fmsg.cmd.value="/privat ";}} function msg_flood() { alert('В чате включен антифлудер, вы неможете писать чаще чем разрешенно админом!');} /* Проверяет текст и удаляет повторяющиеся символы */ function abc_flood(text) { var text1="",s="",n=0; for (var i=0;i<text.length;i++) { if(text.charAt(i)==s && text.charAt(i)!='0') n++; else n=0; s=text.charAt(i); if (n<maxabc || maxabc==0) text1+=s; } return text1; } /* Переводит текст в русскую раскладку */ function russ(){ var msg=document.fmsg.text0.value; msg_cmd='';msg_nick='';msg_text=''; if(msg.charAt(0)=="/" || msg.substr(0,6)=='privat') { msg_cmd=msg.substr(0,msg.indexOf(" ")+1); msg=msg.substr(msg.indexOf(" ")+1); } msg_nick=msg.substr(0,msg.indexOf(":")+1); msg_text=msg.substr(msg.indexOf(":")+1); if(msg_nick.search(/ /)!=-1) {msg_nick=""; msg_text=msg;} var chars = ' !Э№;%?э()*+б-ю.0123456789ЖжБ=Ю,"ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯх/ъ:_ёфисвуапршолдьтщзйкыегмцчняХ\ЪЁ'; var newmsg = ''; for (i = 0; i < msg_text.length; i++) { mychar = msg_text.charAt(i).charCodeAt(); newmsg += mychar < 0x80 ? chars.charAt(mychar - 0x20) : msg_text.charAt(i); } document.fmsg.text0.value = msg_cmd+msg_nick+newmsg; document.fmsg.text0.focus(); } /* Транслирует текст на русский по звучанию */ document.write("<"+"script src=http://mpchat.com/blank/translit.js></"+"script>"); function translit(msg){ if (document.fmsg.trans.value == 1 && msg) { for (i=0; i<engRegSmall.length; i++) {msg = msg.replace(engRegSmall[i], rusSmall[i])} for (i=0; i<engRegBig.length; i++) {msg = msg.replace(engRegBig[i], rusBig[i])} } return msg; } /* Переключение отправленных сообщений << >> */ var pos=0 var amess=new Array(''); function go(n) { pos+=n; if(pos<0) pos=0; if(pos>amess.length-1)pos=amess.length-1; return amess[pos]; } /* Обрабатывает строку ввода текста для отправления */ var gettime=0; var oldmsg=""; function msg_send(){ var form=document.fmsg; var msg=form.text0.value; if (form.tonick) {if(form.tonick.value!='Всем') {msg=form.tonick.value+msg;}} if (form.cmd) {msg=form.cmd.value+msg; if(form.cmd.value!='/privat ') form.cmd.value='';} if (msg=='') return false; msg_cmd='';msg_nick='';msg_text=''; if(msg.charAt(0)=="/") { msg_cmd=msg.substr(0,msg.indexOf(" ")+1); msg=msg.substr(msg.indexOf(" ")+1); } msg_nick=msg.substr(0,msg.indexOf(": ")+1); msg_text=msg.substr(msg.indexOf(": ")+1); if(msg_nick.search(/ /)!=-1) {msg_nick=""; msg_text=msg;} msg_text=abc_flood(msg_text); msg_text=translit(msg_text); msg=msg_cmd+msg_nick+msg_text; if(msg==oldmsg) { confirm ("Повторять нехорошо!"); return false;} oldmsg = msg; form.text0.value=""; form.text0.focus(); form.text.value=msg; pos=amess.length; amess[pos]=msg; gettime=new Date().getTime(); } /* Функция автоизменения статуса при молчании */ var gettime=new Date().getTime(); var laststatus=0; function goaway() { if(laststatus==99) return; var offtime=new Date().getTime()-gettime; var newstatus=0; for (i in away) { if(away[i]*60*1000<offtime) {{if(away[i]>away[newstatus] || away[newstatus]==undefined) newstatus=i;}}} /* Выкинуть из чата для статуса 100 */ if(newstatus==100) {location.href='index.php'; return;} if(newstatus>0 && (away[newstatus]>away[laststatus] || away[laststatus]==undefined)) { setstatus(newstatus); }} window.setInterval("goaway()",1000*10); /* Функция ручного изменения статуса */ function setstatus(status) { laststatus=status; parent.hidden.location.href='index.php?inc=write&'+parent.yourkey+'&text=/status '+status+'&r='+Math.random(); document.getElementsByName("setstatus")[0].value=status; document.fmsg.text0.focus(); } /* Функция ручного изменения комнаты */ function setmyroom(room) { if(myroom==room) return false; if(!parent.rooms[room][3]) {alert('У Вас нет доступа в эту комнату!'); return false;} parent.hidden.location.href='index.php?inc=write&'+parent.yourkey+'&text=/room '+room+'&r='+Math.random(); gettime=new Date().getTime(); document.fmsg.text0.focus(); } /* Загружает викторину в верхушку чата */ var gameon=0; function startgame(){ if(gameon==0){ parent.gameframe.location.href='http://'+domain+':7777/?chat='+chatlogin; gameon=1; document.getElementById('gamediv').style.display="block"; } else { parent.gameframe.location.href='start.html'; gameon=0; document.getElementById('gamediv').style.display="none"; } } /* Открывает окно с историей сообщений */ function openhistory() { h=window.open("","","scrollbars=yes,width=600,height=400,noresize"); h.document.write(myhistory); } /* [Подготовка фреймов и загрузка сообщений] */ var userlist="<table id=ul width=100%>"+ "<tr id=woman><td colspan=5><b class=bgg>Девчёнки</b></td><td id=womanc>0</td></tr>"+ "<tr id=man><td colspan=5><b class=bgg>Парнишки</b></td><td id=manc>0</td></tr>"+ "<tr id=noman><td colspan=5><b class=bgg>Анонимы</b></td><td id=nomanc>0</td></tr>"+ "</table>"; function loadframes() { if(document && parent.left && parent.left.document && document.getElementById('users') && document.getElementsByName('text0')[0]){ /* Последняя стадия загрузки */ if(interval) window.clearInterval(interval); /* Подготовка фрейма привата */ if(parent.privatok==1) {document.getElementById("privatdiv").innerHTML='';} /* Обнуление переменных */ loaded=0; scrolled=0; myhistory=myhistory1; for(var i=0;i<rooms.length;i++) rooms[i][1]=0; /* Подготовка таблицы никлиста */ uc = 0; us = new Array(); ucc= new Array(); document.getElementById('users').innerHTML=userlist; /* Загрузка фрейма сообщений */ parent.left.location.href='irc.html?'+myid+'&r='+Math.random(); /* Загрузка актуального стиля, если был изменён */ if(mystyle) window.setTimeout("setstyle(mystyle);",3000); /* Проверка непрерывного соединения */ if(ajaxon) {ajax(1); return;} interval=window.setTimeout( 'if(location.port!=88 && confirm("Проблема потокового соединение через стандартный порт. Нажмите ОК для перехода на другой порт или Отмена для дальнейших действий.")) location.href="http://"+location.hostname+":88"+location.pathname+"?"+yourkey; '+ 'else if(confirm("Нажмите OK если хотите перейти на ажакс движок чата или Отмена для дальнейших действий.")) ajax(1); '+ 'else if(confirm("Нажмите ОК чтобы узнать о проблеме с движками или Отмена для продолжения загрузки потокового движка.")) parent.left.location.href="index.php?inc=problem";' ,1000*15); /* Время для проверки потокового движка 15 сек */ } } var interval=window.setInterval("loadframes()",100); var ajaxon=0; var http = null; var ajaxreq=0; function ajax(start) { if(ajaxreq) return; ajaxreq=1; var file="./ajax.html?sess="+myid+"&r="+Math.random(1); if(start) {ajaxon=1; file+="&start=1"; parent.left.location.href="start.html"; window.setInterval("ajax()",15000); } //Mozilla, Opera, Safari, IE7, else IE6 if (typeof XMLHttpRequest != 'undefined') {http = new XMLHttpRequest();} else { try {http = new ActiveXObject("Msxml2.XMLHTTP");} catch(e) {try {http = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {http = null;}} } if (http) { http.open('GET', file, true); http.onreadystatechange = new Function("if(http.readyState != 4) return;parent.left.document.write(http.responseText);ajaxreq=0;"); http.send(null); }}
/* Добавление ячеек в таблицу */ tr.insertCell(0).innerHTML=set_privat; tr.insertCell(1).innerHTML=set_nick; tr.cells[1].width="100%"; tr.insertCell(2).innerHTML=set_st; tr.insertCell(3).innerHTML=set_icqst; tr.insertCell(4).innerHTML=set_ign; tr.insertCell(5).innerHTML=set_mw; }