Guest User

chat.js

a guest
Jul 20th, 2018
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 98.57 KB | None | 0 0
  1. /* ##########################################################################
  2. # ET-Chat v3.x.x
  3. # Lizenz: CCPL - http://creativecommons.org/licenses/by-nc/2.0/de/
  4. # Autor: Evgeni Tcherkasski <SEDesign />
  5. # E-mail: info@s-e-d.de
  6. # WWW: http://www.sedesign.de
  7. ############################################################################*/
  8.  
  9. function ET_Chat(){
  10.  
  11. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  12. // (Start) Deklaration globaler Attribute im Class ------------------------------------------------------------
  13. var self = this;
  14. this.time_last_req=0; //(privat) Zeit im Milisek seit der letzten AJAX-Anfrage
  15. this.time_last_send=0; //(privat) Zeit im Milisek seit der letzten Message from User
  16. this.inactivity_message_flag=false; //(privat) TRUE wenn bereits eine Systemwarnmeldung an den User gesendet wurde
  17. this.active_get_message_req=false; //(privat) TRUE wenn gerade eine ReloaderMessage Anfrage ueber AJAX laeuft
  18. this.interval_for_inactivity=1800000000000000000000000000000000; //(public) Wie lange darf der User nichts schreiben bis er aus dem Chat rausfliegt
  19. this.allowed_privates_in_separate_win = true;
  20. this.allowed_privates_in_chat_win = true;
  21. this.anbindung_an_userverwaltung; //(privat) Wenn die Userverwaltung benutzt wird, soll der Mon kein PW ändern
  22. this.reload_interval; //(public) Reloadzeit
  23. this.show_history_all_user; //(public) [bool] Soll die History fuer alle Gezeigt wrden oder nur Admin/Mod-Team
  24. this.allow_nick_registration; //(public) [bool] Registrierung der Namen erlauben
  25. this.set_sys_messages = true; //(public) [bool] Show sys messages
  26. this.messages_im_chat; //(public) Anz. der Mess. im Fenster
  27. this.username=""; //(public)
  28. this.user_id=""; //(public)
  29. this.set_dynamic_height; //(public)
  30. this.textcolor; //(public)
  31. this.mouse_top=0; //(privat) Cursorkoordueberwachung
  32. this.mouse_left=0; //(privat) Cursorkoordueberwachung
  33. this.win_block = Array(); //(privat) Window-Object-Array zum Userblokieren
  34. this.win_block_ids = Array();
  35. this.win_private = Array(); //(privat) Window-Object-Array private message window
  36. this.win_admin_user = Array(); //(privat) Window-Object-Array zum Useradministrrieren
  37. this.win_color; //(privat) Window-Object zum Darstellen der Colorauswahl
  38. this.win_color_content; //(privat) Inhalt des Colorfensters wird ueber AJAX onLoad gefuellt
  39. this.win_smileys; //(privat) Window-Object zum Darstellen der Smileys
  40. this.win_smileys_content; //(privat) Inhalt des Smileysfensters wird ueber AJAX onLoad gefuellt
  41. this.win_amoba; //(privat) Amőba
  42. this.win_falabda; //(privat) Fallabda
  43. this.win_szokirako; //(privat) Szókirakó
  44. this.win_snake; //(privat) Snake
  45. this.win_games; //(privat) Ablakban a játékok
  46. this.win_poker; //(privat) Ablakban a Poker
  47.  
  48. this.win_radio; //(privat) Rádió
  49. this.win_style; //(public) Festlegung der Windowstyle fuer alle Windows im Chat
  50. this.win_prop; //(privat) Window Zusatzfeatures
  51. this.win_history; //(privat) Window History
  52. this.jsonObjUserGlobal; //(privat) Message JSON Array.
  53. this.userPrivilegienGlobal; //(public) Privilegien z.B.: Gast,User,Moderator,Admin
  54. this.privat_an; //(privat) Privat an User-ID
  55. this.sound_status="none"; //(privat) Wann soll der Sound kommen, bei allen Messages oder nur Privat
  56. this.soundManager;
  57. this.random_user_number; //(public) generated user number to protect http GET requests
  58. this.title = document.title;
  59. this.intv_title_blink;
  60. this.window_focused = true;
  61. // (Stop) Deklaration globaler Attribute im Class -------------------------------------------------------------
  62. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  63.  
  64. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  65. // (Start) Konstruktor der Class ET_Chat wird onLoad ausgefuehrt -----------------------------------------------
  66. this.start = function(){
  67.  
  68. if ( Prototype.Browser.IE ) {
  69. document.onfocusin = function(e) {
  70. self.window_focused = true;
  71. try{ window.clearInterval(self.intv_title_blink) } catch (e) {/*nix*/}
  72. document.title = self.title;
  73. }
  74. document.onfocusout = function(e) {
  75. self.window_focused = false;
  76. }
  77. } else {
  78. window.onfocus = function(e) {
  79. self.window_focused = true;
  80. try{ window.clearInterval(self.intv_title_blink) } catch (e) {/*nix*/}
  81. document.title = self.title;
  82. }
  83. window.onblur = function(e) {
  84. self.window_focused = false;
  85. }
  86. }
  87.  
  88.  
  89. // teszt szövegem
  90. if (typeof my_win_obj_1!="object"){
  91. my_win_obj_1= new Window({className: self.win_style, title: "Lover's BOT", width:380, height:200, top: eval(50 + Math.round(Math.random()*50)), left: eval(50 + Math.round(Math.random()*50)), resizable: true, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: true, opacity: 1});
  92. my_win_obj_1.setHTMLContent('<div id="my_html_div">Üdv. Ez az üzenet azért jelent meg, hogy emlékeztesselek, a Chaten belül sok játék is van! Sőt itt is tudod hallgatni Rádiónkat, a fülhallgatóra klikkelvén, amennyiben nem szeretnél egyszerre két oldalon is lenni. Ám weboldalunkon is rengeteg olyan funkcióval találkozhatsz, amiket még nem használtál! jó böngészést, és ne felejts el szólni másoknak is, hogy látogassanak el hozzánk. Hogy maradnak-e az már az Ő döntésük lesz! reméljük neked tetszik nálunk, ha igen, írd meg fórumunkba! Chiao :)</div>');
  93. my_win_obj_1.show();
  94. }
  95. //teszt szövegem vége
  96.  
  97.  
  98.  
  99. // Adminbereich
  100. if (self.userPrivilegienGlobal=="admin"){
  101. $("form_right").innerHTML+="&nbsp;&nbsp;&nbsp;<img id=\"link_admin\" class=\"img_button\" src=\"img/admin.png\" width=\"32\" height=\"32\" border=\"0\" alt=\"Admin\" title=\"Admin\">";
  102. $("link_admin").onclick = function(){
  103. var hoehe = $('chatinhalt').getHeight();
  104. var breite = $('chatinhalt').getWidth();
  105. var win_admin = new Window({url: "./?AdminIndex", className: self.win_style, width:breite, height:hoehe, top:20, left:10, resizable: true, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: true, destroyOnClose: true });
  106. //win_prop.maximize();
  107. win_admin.show();
  108. }
  109. }
  110.  
  111. AjaxReadRequest(); // Erste Messageabfrage beim Start
  112. setInterval(AjaxReadRequest, this.reload_interval); // Interval fuer regelmaesige Abfragen setzen.
  113.  
  114. // autocomplete="off" ist nicht XHTML valide deshalb ueber JS
  115. $("message").setAttribute("autocomplete", "off");
  116.  
  117. // Passt die Hoehe des Chatinhalts immer auf die Hoehe des fensters. Also height 100%
  118. if(this.set_dynamic_height){
  119. window_height();
  120. setInterval(window_height, 200);
  121. }
  122.  
  123. $('message').focus();
  124. $("message_form").onsubmit = function(){return self.send();} // Wichtig damit beim Submit das Dokument nicht neu geladen wird.
  125. $("link_sagen").onclick = function(){return self.send();} // s.o. Zeile.
  126.  
  127. $("link_prop").onclick = function(){
  128.  
  129. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  130. if (typeof self.win_prop!="object"){
  131. // Fensterinstanz
  132. self.win_prop = new Window({className: self.win_style, width:260, height:170, top:eval(self.mouse_top-235), left:eval(self.mouse_left-120), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: false, opacity: 1});
  133.  
  134. // History anzeigen?
  135. if(self.show_history_all_user || self.userPrivilegienGlobal=="admin" || self.userPrivilegienGlobal=="mod")
  136. var history_link_content = '<div style=\"margin-bottom:3px;\"><img src="img/time.png" align="left" />&nbsp;&nbsp;<a href="#" id="history">'+lang_start_prop_link_2+'</a></div>';
  137. else
  138. var history_link_content = '';
  139.  
  140. // PW aenderung fuer Mods und User anzeigen?
  141. if( self.userPrivilegienGlobal=="mod" || self.userPrivilegienGlobal=="user" ){
  142. var pwchange_link_content = '<div style=\"margin-bottom:3px;\"><img src="img/textfield_key.png" align="left" />&nbsp;&nbsp;<a href="#" id="pwchange_mod">'+lang_start_prop_link_6+'</a>\
  143. <form id="pwchange_form" style="display:inline;"><div id="pwchange_div" style="display:none;"><div style="padding-top: 2px;">'+lang_start_prop_link_7+' <input type="password" id="pwchange_field" size="6" /> <a href="#" id="pwchange_mod_ok">OK</a></div></div></form></div>';
  144. if(self.userPrivilegienGlobal=="user")
  145. pwchange_link_content+='<div style=\"margin-bottom:3px;\"><img src="img/key_delete.png" align="left" />&nbsp;&nbsp;<a href="#" id="unregister_name">'+lang_start_prop_link_10+'</a></div>';
  146.  
  147. }else if( self.userPrivilegienGlobal=="gast" && self.allow_nick_registration)
  148. var pwchange_link_content = '<div style=\"margin-bottom:3px;\"><img src="img/textfield_key.png" align="left" />&nbsp;&nbsp;<a href="#" id="register_name">'+lang_start_reg_link+'</a></div>';
  149. else
  150. var pwchange_link_content = '';
  151.  
  152. // Status Auswahl generieren
  153. var status_link_content ='<div><img src="img/status_online.png" align="left" />&nbsp;&nbsp;<a href="#" id="stat_mod">'+lang_statuslink+'</a>\
  154. <div style="display:none;" id="stat_change_div"><div style="padding-top: 2px; padding-bottom: 4px; padding-left: 12px;">\n';
  155. for(var i=0; i<lang_status_text.length; i++){
  156. if (lang_status_rights[i]=='all') status_link_content +='<img src="img/'+lang_status_imgname[i]+'.png"/> <a href="#" id="'+lang_status_imgname[i]+'">'+lang_status_text[i]+'</a><br />\n';
  157. if (lang_status_rights[i]=='admin' && self.userPrivilegienGlobal=="admin") status_link_content +='<img src="img/'+lang_status_imgname[i]+'.png"/> <a href="#" id="'+lang_status_imgname[i]+'">'+lang_status_text[i]+'</a><br />\n';
  158. if (lang_status_rights[i]=='mod' && self.userPrivilegienGlobal=="mod") status_link_content +='<img src="img/'+lang_status_imgname[i]+'.png"/> <a href="#" id="'+lang_status_imgname[i]+'">'+lang_status_text[i]+'</a><br />\n';
  159. }
  160. status_link_content +='</div></div><div style=\"margin-bottom:3px;\"></div>';
  161.  
  162.  
  163. var sys_mess_checked = (self.set_sys_messages) ? 'checked' : '';
  164.  
  165. // Fenster fuellen
  166. self.win_prop.setHTMLContent('<div id="prop_list"><div style=\"margin-bottom:3px;\"><img src="img/monitor_lightning.png" align="left" />&nbsp;&nbsp;<a href="#" id="cls">'+lang_start_prop_link_1+'</a></div>\
  167. '+history_link_content+'\
  168. '+pwchange_link_content+'\
  169. '+status_link_content+'\
  170. <div style="padding-bottom:5px;"><form id="set_sys_messages_form" style="display:inline;"><input type="checkbox" id="set_sys_messages" value="1" '+sys_mess_checked+' /> <a href="#" id="set_sys_messages_a"> '+lang_start_prop_link_9+'</a></form></div>\
  171. <div style=\"margin-bottom:1px;\"><img src="img/sound_'+self.sound_status+'.png" align="left" id="sound_icon" />&nbsp;&nbsp;'+lang_start_prop_link_3+'</div>\
  172. <div><img src="img/space.gif" align="left" width="16"/>&nbsp;&nbsp;<a href="#" id="sound_on">'+lang_start_prop_link_4+'</a> | <a href="#" id="sound_privat">'+lang_start_prop_link_8+'</a> | <a href="#" id="sound_off">'+lang_start_prop_link_5+'</a></div></div>\
  173. ');
  174. // Das befuellte Fenster ueberwachen
  175. Event.observe('prop_list', 'click', function(event){
  176. if(Event.element(event).id!="" && Event.element(event).id!='prop_list' && Event.element(event).id!='sound_icon'){
  177. if (Event.element(event).id=="cls") { $('chatinhalt').innerHTML=''; self.win_prop.close(); $('message').focus(); }
  178. if (Event.element(event).id=="pwchange_mod_ok") submit_pw();
  179. if (Event.element(event).id=="history") { self.historyWindow(1); self.win_prop.close(); }
  180. if (Event.element(event).id=="stat_mod") Effect.toggle('stat_change_div', 'blind', {duration: 0.4});
  181. if (Event.element(event).id=="set_sys_messages" || Event.element(event).id=="set_sys_messages_a") {
  182. if (Event.element(event).id=="set_sys_messages_a"){
  183. if($("set_sys_messages").checked)
  184. $("set_sys_messages").checked=false;
  185. else
  186. $("set_sys_messages").checked=true;
  187. }
  188. var sys_mess = ($("set_sys_messages").checked) ? 1 : 0;
  189. new Ajax.Request("./?ChangeStatus", { postBody: "sys_messages="+sys_mess });
  190. self.win_prop.close();
  191. $('message').focus();
  192. }
  193. if (Event.element(event).id.slice(0, 7)=="status_") submit_status(Event.element(event).id, $(Event.element(event).id).innerHTML);
  194.  
  195. if (Event.element(event).id=="pwchange_mod") {
  196. Effect.toggle('pwchange_div', 'blind', {duration: 0.4});
  197. $("pwchange_form").onsubmit = function(){return submit_pw();}
  198. }
  199.  
  200.  
  201. if (Event.element(event).id=="register_name") {
  202.  
  203. var temp_user_name = (self.username.length > 20) ? self.username.slice(0, 20)+"..." : self.username;
  204.  
  205. var win_register_user = new Window({className: self.win_style, title:lang_start_reg_title+' "'+temp_user_name+'"', width:250, height:130, top:eval(self.mouse_top-185), left:eval(self.mouse_left-120), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.3, afterFinish:function(effect){self.win_prop.close(); $('pw_register_field').focus(); }}, hideEffectOptions: {duration:0.3}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: true, opacity: 1});
  206. win_register_user.setHTMLContent('<div id="register_formular"><form id="register_form" style="display:inline;"><div>'+lang_start_reg_befor_registering+'<hr size="1"><table><tr><td>'+lang_start_reg_pw1+'</td><td><input type="password" id="pw_register_field" size="6" /></td></tr><tr><td>'+lang_start_reg_pw2+'</td><td><input type="password" id="pw_register_field2" size="6" /></td></tr><tr><td colspan="2"><br /><a href="#" id="make_register">'+lang_start_reg_button_register+'</a>&nbsp;&nbsp;&nbsp;<a href="#" id="cancel_register">'+lang_start_reg_button_cancel+'</a></td></tr></div></form></div>');
  207. Event.observe('register_formular', 'click', function(event){
  208. if(Event.element(event).id=="cancel_register") win_register_user.close();
  209. if(Event.element(event).id=="make_register") {
  210.  
  211. if ($('pw_register_field').value==$('pw_register_field2').value)
  212. new Ajax.Request(
  213. "./?ChangePw",
  214. {
  215. onSuccess: function(result){
  216. if (result.responseText==1){
  217. win_register_user.setHTMLContent('<div id="register_formular">'+lang_start_reg_after_registering+'<br /><br /><a href="./?Logout&random_user_number='+self.random_user_number+'&r='+$("room").value+'">'+lang_start_reg_after_registering_link+'</a></div>');
  218. }
  219. else alert('Error!\n\n'+result.responseText);
  220. },
  221. postBody: "user_pw="+$('pw_register_field').value
  222. }
  223. );
  224. else{
  225. alert(lang_start_reg_error);
  226. $('pw_register_field').value='';
  227. $('pw_register_field2').value='';
  228. $('pw_register_field').focus();
  229. }
  230. }
  231. });
  232. win_register_user.show();
  233. $("register_form").onsubmit = function(){return false;}
  234. }
  235.  
  236.  
  237. if (Event.element(event).id=="unregister_name") {
  238.  
  239. var temp_user_name = (self.username.length > 20) ? self.username.slice(0, 20)+"..." : self.username;
  240.  
  241. var win_unregister_user = new Window({className: self.win_style, title:lang_remove_pw_win_title+' "'+temp_user_name+'"', width:320, height:180, top:eval(self.mouse_top-225), left:eval(self.mouse_left-170), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.3, afterFinish:function(effect){self.win_prop.close(); $('pw_unregister_field').focus(); }}, hideEffectOptions: {duration:0.3}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: true, opacity: 1});
  242. win_unregister_user.setHTMLContent('<div id="unregister_formular"><form id="unregister_form" style="display:inline;"><div>'+lang_remove_pw_win_text_1+'<br><br><b>'+lang_remove_pw_win_text_2+'</b><br>'+lang_remove_pw_win_text_3+'<hr size="1"><table><tr><td>'+lang_start_reg_pw1+'</td><td><input type="password" id="pw_unregister_field" size="9" /></td></tr><tr><td colspan="2"><br /><a href="#" id="make_unregister">'+lang_remove_pw_win_button+'</a>&nbsp;&nbsp;&nbsp;<a href="#" id="cancel_unregister">'+lang_start_reg_button_cancel+'</a></td></tr></div></form></div>');
  243. Event.observe('unregister_formular', 'click', function(event){
  244. if(Event.element(event).id=="cancel_unregister") win_unregister_user.close();
  245. if(Event.element(event).id=="make_unregister") {
  246.  
  247. if (!$('pw_unregister_field').value.empty()){
  248. var pw_unregister = $('pw_unregister_field').value;
  249. $("unregister_formular").update('<img src="img/ajax-loader.gif">');
  250. new Ajax.Request(
  251. "./?UnregisterPw",
  252. {
  253. onSuccess: function(result){
  254. $("unregister_formular").update('Logout...');
  255. if (result.responseText==1){
  256. location.href="./?Logout&random_user_number="+self.random_user_number+"&r="+$("room").value;
  257. }
  258. else $("unregister_formular").update(''+result.responseText);
  259. },
  260. postBody: "user_pw="+pw_unregister
  261. }
  262. );
  263. }
  264. }
  265. });
  266. win_unregister_user.show();
  267. $("unregister_form").onsubmit = function(){return false;}
  268. }
  269.  
  270.  
  271.  
  272. if (Event.element(event).id=="sound_off") {self.sound_status='none'; $('sound_icon').src="img/sound_none.png"; self.win_prop.close(); $('message').focus(); }
  273. if (Event.element(event).id=="sound_on") {self.sound_status='all'; $('sound_icon').src="img/sound_all.png"; self.win_prop.close(); $('message').focus(); }
  274. if (Event.element(event).id=="sound_privat") {self.sound_status='privat'; $('sound_icon').src="img/sound_privat.png"; self.win_prop.close(); $('message').focus(); }
  275. }
  276. });
  277. }
  278.  
  279. // ANFANG - Innere Funktionen im Class Constructor start() >>> $("link_prop").onclick - Event ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  280. //Versenet neues MOD PW
  281. var submit_pw = function(){
  282. if ($('pwchange_field').value.length<1) return false;
  283. new Ajax.Request(
  284. "./?ChangePw",
  285. {
  286. onSuccess: function(result){
  287. if (result.responseText==1){
  288. Effect.toggle('pwchange_div', 'blind', {duration: 0.4});
  289. self.win_prop.close();
  290. }
  291. else alert('Error!\n\n'+result.responseText);
  292. },
  293. postBody: "modpw="+$('pwchange_field').value
  294. }
  295. );
  296. return false;
  297. }
  298.  
  299.  
  300. //Verändert Userstatus
  301. var submit_status = function(img, text){
  302.  
  303. new Ajax.Request(
  304. "./?ChangeStatus",
  305. {
  306. onSuccess: function(result){
  307. if (result.responseText==1){
  308. Effect.toggle('stat_change_div', 'blind', {duration: 0.4});
  309. self.win_prop.close();
  310. setTimeout( updateUserOnlineAnzeigeAfterRoomChange ,300);
  311. }
  312. else alert('Error!\n\n'+result.responseText);
  313. },
  314. postBody: "img="+img+"&text="+text
  315. }
  316. );
  317. return false;
  318. }
  319. // ENDE - Innere Funktionen im Class Constructor start() >>> $("link_prop").onclick - Event ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  320.  
  321. // Ist dass Fenster bereits sichtbar?
  322. if($(self.win_prop.getId()).style.display=='none'){
  323. self.win_prop.show();
  324. self.win_prop.toFront();
  325. }
  326. else self.win_prop.close();
  327. }
  328.  
  329. // Logout
  330. $("link_logout").onclick = function(){
  331. if(confirm("Most kilépsz a csetből! Biztos vagy benne?"))
  332. location.href="./?Logout&random_user_number="+self.random_user_number+"&r="+$("room").value;
  333. }
  334.  
  335. // MausKoord fuer Fenster und Tooltips
  336. Event.observe(document, 'mousemove', function(event){
  337. self.mouse_left = Event.pointerX(event);
  338. self.mouse_top = Event.pointerY(event);
  339. });
  340.  
  341. // ueberwachung aller Elemente der OnlineList, Chatinhalts,
  342. // also beim Private, Roomchange oder Usersperren wirds dadurch ausgeloest
  343. Event.observe('onlinelist', 'click', function(event){
  344. if (Event.element(event).id.slice(0, 10)!="infoblock_") close_info_win();
  345. // send Private Messages and Change Rooms
  346. changeUserEvent(Event.element(event).id);
  347. } );
  348. Event.observe('chatinhalt', 'click', function(event){
  349. if (Event.element(event).id.slice(0, 10)!="inflblock_") close_info_win();
  350. // send Private Messages and Change Rooms
  351. changeUserEvent(Event.element(event).id);
  352. } );
  353. Event.observe('form', 'click', function(event){
  354. close_info_win();
  355. } );
  356. Event.observe('kopf', 'click', function(event){
  357. close_info_win();
  358. } );
  359. Event.observe('splitpane', 'click', function(event){
  360. close_info_win();
  361. } );
  362. // ueberwachung zum ausschalten der Privatanzeige
  363. Event.observe('privat_anzeige', 'click', function(event){
  364. if(Event.element(event).id=="close_privat"){
  365. $("privat").value = "0";
  366. $("privat_anzeige").innerHTML=lang_start_1;
  367. //$("message").style.backgroundColor="#000";
  368. $("message").focus();
  369. }
  370. } );
  371.  
  372. //Lade Fensterinhalt zum Darstellen des Smileys
  373. new Ajax.Request("./?Smileys",{onSuccess:function(result){self.win_smileys_content=result.responseText;}});
  374. //Click auf Smiley-Icon
  375. $("link_smileys").onclick = function(){ open_close_smileys_win('message'); }
  376.  
  377. // Bild BBcode
  378. $("link_picture").onclick = function(){$("message").value+="[img][/img]";}
  379.  
  380. // Video BBcode
  381. $("link_video").onclick = function(){$("message").value+="[video][/video]";}
  382.  
  383.  
  384. //Lade Fensterinhalt zum Darstellen des Chat-Radio
  385.  
  386. new Ajax.Request("radio.html",{onSuccess:function(result){self.win_radio_content=result.responseText;}});
  387. //Click auf Smiley-Icon
  388. $("link_radio").onclick = function(){
  389. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  390. if (typeof self.win_radio!="object"){
  391. // Fensterinstanz
  392. self.win_radio = new Window({className: self.win_style, title:"Lover's - Radio", width:400, height:126, top:eval(self.mouse_top-240), left:eval(self.mouse_left-120), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: false, destroyOnClose: false, opacity: 1});
  393. // Fenster fuellen
  394. self.win_radio.setHTMLContent('<div id="radio_list">'+self.win_radio_content+'</div>');
  395. // Das befuellte Fenster ueberwachen
  396. Event.observe('radio_list', 'click', function(event){
  397. if(Event.element(event).id!="" && Event.element(event).id!='radio_list'){
  398. $('message').value +=Event.element(event).id;
  399. $('message').focus();
  400. // Nach Auswahl des Smileys einfach Fenster schliessen
  401. self.win_smileys.close();
  402. }
  403. });
  404. }
  405. // Ist dass Fenster bereits sichtbar?
  406. if($(self.win_radio.getId()).style.display=='none'){
  407. self.win_radio.show();
  408. self.win_radio.toFront();
  409. }
  410. else self.win_radio.close();
  411. }
  412.  
  413.  
  414. //Amoba
  415. new Ajax.Request("http://loversradio.hu/chat/amoba.html",{onSuccess:function(result){self.win_amoba_content=result.responseText;}});
  416. //Click auf Smiley-Icon
  417. $("link_amoba").onclick = function(){
  418.  
  419. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  420. if (typeof self.win_amoba!="object"){
  421. // Fensterinstanz
  422. self.win_amoba= new Window({className: self.win_style, title:"Amőba Játék",
  423. width:590, height:515, top:50, left:120, resizable: false,
  424. showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: true, destroyOnClose: false, opacity: 1});
  425. // Fenster fuellen
  426. self.win_amoba.setHTMLContent('<div id="amoba_list">'+self.win_amoba_content+'</div>');
  427. // Das befuellte Fenster ueberwachen
  428. Event.observe('amoba_list', 'click', function(event){
  429. if(Event.element(event).id!="" && Event.element(event).id!='amoba_list'){
  430. $('message').value +=Event.element(event).id;
  431. $('message').focus();
  432. // Nach Auswahl des Smileys einfach Fenster schliessen
  433. self.win_smileys.close();
  434. }
  435. });
  436. }
  437. // Ist dass Fenster bereits sichtbar?
  438. if($(self.win_amoba.getId()).style.display=='none'){
  439. self.win_amoba.show();
  440. self.win_amoba.toFront();
  441. }
  442. else self.win_amoba.close();
  443. }
  444.  
  445. //Fallabda
  446. new Ajax.Request("fallabda.html",{onSuccess:function(result){self.win_fallabda_content=result.responseText;}});
  447. //Click auf Smiley-Icon
  448. $("link_fallabda").onclick = function(){
  449.  
  450. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  451. if (typeof self.win_fallabda!="object"){
  452. // Fensterinstanz
  453. self.win_fallabda= new Window({className: self.win_style, title:"Fallabda",
  454. width:490, height:400, top:50, left:120, resizable: false,
  455. showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: false, destroyOnClose: false, opacity: 1});
  456. // Fenster fuellen
  457. self.win_fallabda.setHTMLContent('<div id="fallabda_list">'+self.win_fallabda_content+'</div>');
  458. // Das befuellte Fenster ueberwachen
  459. Event.observe('fallabda_list', 'click', function(event){
  460. if(Event.element(event).id!="" && Event.element(event).id!='fallabda_list'){
  461. $('message').value +=Event.element(event).id;
  462. $('message').focus();
  463. // Nach Auswahl des Smileys einfach Fenster schliessen
  464. self.win_smileys.close();
  465. }
  466. });
  467. }
  468. // Ist dass Fenster bereits sichtbar?
  469. if($(self.win_fallabda.getId()).style.display=='none'){
  470. self.win_fallabda.show();
  471. self.win_fallabda.toFront();
  472. }
  473. else self.win_fallabda.close();
  474. }
  475.  
  476. //Snake
  477. new Ajax.Request("snake.html",{onSuccess:function(result){self.win_snake_content=result.responseText;}});
  478. //Click auf Smiley-Icon
  479. $("link_snake").onclick = function(){
  480.  
  481. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  482. if (typeof self.win_snake!="object"){
  483. // Fensterinstanz
  484. self.win_snake= new Window({className: self.win_style, title:"Snake",
  485. width:440, height:470, top:50, left:120, resizable: false,
  486. showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: false, destroyOnClose: false, opacity: 1});
  487. // Fenster fuellen
  488. self.win_snake.setHTMLContent('<div id="snake_list">'+self.win_snake_content+'</div>');
  489. // Das befuellte Fenster ueberwachen
  490. Event.observe('snake_list', 'click', function(event){
  491. if(Event.element(event).id!="" && Event.element(event).id!='snake_list'){
  492. $('message').value +=Event.element(event).id;
  493. $('message').focus();
  494. // Nach Auswahl des Smileys einfach Fenster schliessen
  495. self.win_smileys.close();
  496. }
  497. });
  498. }
  499. // Ist dass Fenster bereits sichtbar?
  500. if($(self.win_snake.getId()).style.display=='none'){
  501. self.win_snake.show();
  502. self.win_snake.toFront();
  503. }
  504. else self.win_snake.close();
  505. }
  506.  
  507. //Poker
  508. new Ajax.Request("poker.html",{onSuccess:function(result){self.win_poker_content=result.responseText;}});
  509. //Click auf Smiley-Icon
  510. $("link_poker").onclick = function(){
  511.  
  512. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  513. if (typeof self.win_poker!="object"){
  514. // Fensterinstanz
  515. self.win_poker= new Window({className: self.win_style, title:"Poker-Game",
  516. width:620, height:515, top:50, left:120, resizable: true,
  517. showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: true, destroyOnClose: false, opacity: 1});
  518. // Fenster fuellen
  519. self.win_poker.setHTMLContent('<div id="poker_list">'+self.win_poker_content+'</div>');
  520. // Das befuellte Fenster ueberwachen
  521. Event.observe('poker_list', 'click', function(event){
  522. if(Event.element(event).id!="" && Event.element(event).id!='poker_list'){
  523. $('message').value +=Event.element(event).id;
  524. $('message').focus();
  525. // Nach Auswahl des Smileys einfach Fenster schliessen
  526. self.win_smileys.close();
  527. }
  528. });
  529. }
  530. // Ist dass Fenster bereits sichtbar?
  531. if($(self.win_poker.getId()).style.display=='none'){
  532. self.win_poker.show();
  533. self.win_poker.toFront();
  534. }
  535. else self.win_poker.close();
  536. }
  537.  
  538.  
  539.  
  540. //Lade Fensterinhalt zum Darstellen des Farbenfensters
  541. new Ajax.Request("./?Colorizer",{onSuccess:function(result){self.win_color_content=result.responseText;}});
  542.  
  543. $('message').style.color = "#"+self.textcolor;
  544.  
  545. //Click auf Color-Icon
  546. $("link_color").onclick = function(){
  547.  
  548. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  549. if (typeof self.win_color!="object"){
  550. self.win_color = new Window({className: self.win_style, width:350, height:205, top:eval(self.mouse_top-265), left:eval(self.mouse_left-180), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: false, destroyOnClose: false, opacity: 1});
  551. self.win_color.setHTMLContent(self.win_color_content);
  552.  
  553. //(Start) Font Art auswaehlen und in hidden-Inputs eintragen --------------------
  554. $("kursiv").onclick = function(){
  555. $("italic").value = ($("kursiv").checked) ? "italic" : "normal";
  556. $('message').style.fontStyle = ($("kursiv").checked) ? "italic" : "normal";
  557. }
  558. $("fett").onclick = function(){
  559. $("bold").value = ($("fett").checked) ? "bold" : "normal";
  560. $('message').style.fontWeight = ($("fett").checked) ? "bold" : "normal";
  561. }
  562. //(Stop) Font Art auswaehlen und in hidden-Inputs eintragen ---------------------
  563.  
  564. // Startfarbe des Textes
  565. var r = self.textcolor.slice(0,2);
  566. var g = self.textcolor.slice(2,4);
  567. var b = self.textcolor.slice(4,6);
  568.  
  569. //(Start) Init Slider zum RGB-Mischen ------------------------------
  570. var slider_red = new Control.Slider('handle_red', 'track_red', {
  571. onSlide: function(v) { /* Nix */ },
  572. onChange: function(v){
  573. r = dec2hex(v*255);
  574. $('message').style.color=$('color').value=$('farbenvorschau').style.backgroundColor="#"+r+g+b;
  575. }
  576. });
  577. var slider_green = new Control.Slider('handle_green', 'track_green', {
  578. onSlide: function(v) { /* Nix */ },
  579. onChange: function(v){
  580. g = dec2hex(v*255);
  581. $('message').style.color=$('color').value=$('farbenvorschau').style.backgroundColor="#"+r+g+b;
  582. }
  583. });
  584. var slider_blue = new Control.Slider('handle_blue', 'track_blue', {
  585. onSlide: function(v) { /* Nix */ },
  586. onChange: function(v){
  587. b = dec2hex(v*255);
  588. $('message').style.color=$('color').value=$('farbenvorschau').style.backgroundColor="#"+r+g+b;
  589. }
  590. });
  591. //(Stop) Init Slider zum RGB-Mischen -------------------------------
  592.  
  593. // Slider laut aktueller Farbe stellen
  594. slider_red.setValue(hex2dec(r)/255);
  595. slider_green.setValue(hex2dec(g)/255);
  596. slider_blue.setValue(hex2dec(b)/255);
  597.  
  598. // ueberwachung des Klicks auf die Farbentabelle
  599. Event.observe('farben_tab', 'click', function(event){
  600. if(Event.element(event).id!=""){
  601. // Farbe Hex in Dec umwandeln
  602. var rd = hex2dec(Event.element(event).id.slice(0, 2));
  603. var gd = hex2dec(Event.element(event).id.slice(2, 4));
  604. var bd = hex2dec(Event.element(event).id.slice(4, 6));
  605. // Slider entsprechend der Auswahl verschieben
  606. slider_red.setValue(rd/255);
  607. slider_green.setValue(gd/255);
  608. slider_blue.setValue(bd/255);
  609. }
  610. } );
  611. }
  612.  
  613. // Ist dass Fenster bereits sichtbar?
  614. if($(self.win_color.getId()).style.display=='none'){
  615. self.win_color.show();
  616. self.win_color.toFront();
  617. }
  618. else self.win_color.close();
  619.  
  620.  
  621. }
  622. };
  623. // (Stop) Konstruktor der Class ET_Chat wird onLoad ausgefuehrt ------------------------------------------------
  624. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  625.  
  626.  
  627.  
  628.  
  629. var open_close_smileys_win = function(input_field_name){
  630.  
  631. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  632. if (typeof self.win_smileys!="object"){
  633. // Fensterinstanz
  634. self.win_smileys = new Window({className: self.win_style, width:600, height:550, top:eval(self.mouse_top-350), left:eval(self.mouse_left-320), resizable: true, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: true, destroyOnClose: false, opacity: 1});
  635. // Fenster fuellen
  636. self.win_smileys.setHTMLContent('<div id="smileys_list">'+self.win_smileys_content+'</div>');
  637. } else {
  638. if($(self.win_smileys.getId()).style.display=='none')
  639. self.win_smileys.setLocation(eval(self.mouse_top-350), eval(self.mouse_left-320))
  640. }
  641.  
  642. try {Event.stopObserving('smileys_list', 'click');} catch(e){}
  643.  
  644. // Das befuellte Fenster ueberwachen
  645. Event.observe('smileys_list', 'click', function(event){
  646. if(Event.element(event).id!="" && Event.element(event).id!='smileys_list'){
  647. // Nach Auswahl des Smileys einfach Fenster schliessen
  648. self.win_smileys.show();
  649. $(input_field_name).value +=Event.element(event).id;
  650. $(input_field_name).focus();
  651.  
  652. }
  653. });
  654.  
  655. // Ist dass Fenster bereits sichtbar?
  656. if($(self.win_smileys.getId()).style.display=='none'){
  657. self.win_smileys.show();
  658. self.win_smileys.toFront();
  659. }
  660. else self.win_smileys.close();
  661. }
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  669. // (Start) Schliesse alle info wins ------------------------------------------------------
  670. var close_info_win = function(dont_close_id){
  671. // remove win_block if open
  672. self.win_block_ids.each(function(uid) {
  673.  
  674. if ($(self.win_block[uid].getId()).visible() && self.win_block[uid].getId()!=dont_close_id) self.win_block[uid].close();
  675.  
  676. });
  677. }
  678. // (Stop) Schliesse alle info wins -------------------------------------------------------
  679. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  680.  
  681. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  682. // (Start) Das Schreibfeld nach Versand wieder freigeben ------------------------------------------------------
  683. var let_write = function(){
  684. $('message').disabled=false
  685. $('message').value = "";
  686. $('message').focus();
  687. };
  688. // (Stop) Das Schreibfeld nach Versand wieder freigeben -------------------------------------------------------
  689. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  690.  
  691. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  692. // (Start) Zum Ausdehnen auf height 100% ----------------------------------------------------------------------
  693. var window_height = function(){
  694.  
  695. var flag_innerHeight=false;
  696.  
  697. if (window.innerHeight) {
  698.  
  699. flag_innerHeight=true;
  700.  
  701. if($('chatinhalt').style.height != eval(window.innerHeight-150)+"px"){
  702. $('chatinhalt').style.height = eval(window.innerHeight-150)+"px";
  703. $('onlinelist').style.height = eval(window.innerHeight-150)+"px";
  704. $('splitpane').style.height = eval(window.innerHeight-150)+"px";
  705. //$('chatinhalt').innerHTML+="FF_Opera_Safari_win_opt<br>";
  706. }
  707. }
  708. else
  709. if (document.documentElement && document.documentElement.clientWidth) {
  710. try{
  711. if($('chatinhalt').style.height != eval(document.documentElement.clientHeight-150)+"px"){
  712. $('chatinhalt').style.height = eval(document.documentElement.clientHeight-150)+"px";
  713. $('onlinelist').style.height = eval(document.documentElement.clientHeight-150)+"px";
  714. $('splitpane').style.height = eval(document.documentElement.clientHeight-150)+"px";
  715. //$('chatinhalt').innerHTML+="IE7_6_win_opt<br>";
  716. }
  717. else return 0;
  718. } catch(e){ return 0; }
  719. } else {
  720. return 0;
  721. }
  722. };
  723. // (Stop) Zum Ausdehnen auf height 100% -----------------------------------------------------------------------
  724. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  725.  
  726. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  727. // (Start) Draging von Splitpane ------------------------------------------------------------------------------
  728. this.dragSplitpane=function(){
  729.  
  730. var Offset;
  731. var wi;
  732.  
  733. var dragspliter=new Draggable('splitpane',{
  734. constraint: 'horizontal',
  735. zindex: 0,
  736. snap: function(x,y) {
  737. var v=Offset - $('splitpane').offsetLeft;
  738. v=eval(v)+ wi;
  739. if(v <= 0 && x > 0) return[0,y];
  740. return[x,y]
  741. },
  742. onStart: function() {
  743. Offset = $('splitpane').offsetLeft;
  744. wi = eval($('onlinelist').getStyle('width').replace(/px/g, ''));
  745. },
  746. onDrag: function() {
  747. var verschiebung=Offset - $('splitpane').offsetLeft;
  748. verschiebung=eval(verschiebung)+ wi;
  749. if(verschiebung <= 0) verschiebung=0;
  750. $('onlinelist').setStyle({width: verschiebung+'px'});
  751. },
  752. onEnd: function() {
  753. $('splitpane').setStyle({left: '0px'});
  754. },
  755. revert:false
  756. });
  757. }
  758. // (Stop) Draging von Splitpane -------------------------------------------------------------------------------
  759. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  760.  
  761. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  762. // (Start) Hierhin wird das Erg. der AJAx Abfrage nach neuen Messages im Chat uebertragen und dargestellt -----
  763. var receiveResultJSON = function(ajaxResultJSON) {
  764.  
  765. // Die Uebertragung via AJAX ist beendet, weitere Anfragen duerfen gestartet werden
  766. self.active_get_message_req=false;
  767.  
  768. // uebertragenes als Text klassifizieren
  769. var jsonInhalt = ajaxResultJSON.responseText;
  770.  
  771. // Wenn UserIP in der Blacklist, wird der User rausgeworfen.
  772. if (jsonInhalt=='blacklist'){
  773. location.href="./?AfterBlacklistInsertion";
  774. }
  775. // Wenn UserID in der Kicklist, wird der User rausgeworfen.
  776. if (jsonInhalt=='kick'){
  777. location.href="./?AfterKicklistInsertion";
  778. }
  779. // Wenn Spammer erkannt, wird der User rausgeworfen.
  780. if (jsonInhalt=='spam'){
  781. location.href="./?AfterSpamlistInsertion";
  782. }
  783.  
  784. // Wenn neue Datensaetze in der DB vorhanden sind, ist ein Inhalt vorhanden
  785. if (jsonInhalt!=''){
  786.  
  787. // Erzeugt JSON-Literal-Object aus dem Text
  788. var jsonObj = jsonInhalt.evalJSON();
  789.  
  790. // SoundFlag damit der Sound nur gespielt wird wenn dies eine fremde Message ist.
  791. var play_sound=false;
  792.  
  793.  
  794. var win_id1 = new Array();
  795. var count_priv_win = 0;
  796.  
  797. // Alle Elemende des uebertragenen MessageArrays durchlaufen und ausgeben
  798. for (var i=0; i<jsonObj.data.length; i++){
  799. with(jsonObj.data[i]){
  800.  
  801. // Jede neue Message wird in ein neu erzeugtes DIV verpackt.
  802. // Dies ist wichtig da sonst das Grow-Effect sich mit dem innerHTML ueberschneiden und dadurch der
  803. // Effekt nicht vollstaendig abgearbeitet wird. Follge: Messages nicht Sichtbar oder nur zur Haelfte.
  804. if (!id.empty()){
  805. var newDIV = new Element('div', { id : "a"+id });
  806. $('chatinhalt').appendChild(newDIV);
  807. }
  808.  
  809. // Das oben angelegte DIV mit Inhalt auf dem JSON-Object befuellen
  810. if (sex=="m") var gender_icon="<img src=\"img/user_"+sex+".png\" align=\"absbottom\" />";
  811. if (sex=="f") var gender_icon="<img src=\"img/user_"+sex+".png\" align=\"absbottom\" />";
  812. if (sex=="n") var gender_icon="<img src=\"img/user_"+sex+".png\" align=\"absbottom\" />";
  813. if (user_id==1) var gender_icon="";
  814.  
  815. if (priv =="admin") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  816. else if (priv =="mod") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  817. else if (priv =="vip") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  818. else if (priv =="kekcsillag") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  819. else if (priv =="nyuszi") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  820. else if (priv =="csillamponi") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  821. else if (priv =="boszipiroszka") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  822. else if (priv =="firstlady") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  823. else if (priv =="noverke") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  824. else if (priv =="vadmano") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  825. else if (priv =="moci") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  826. else if (priv =="devilgirl") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  827. else if (priv =="ordogcsaj") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  828. else if (priv =="biciklis") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  829. else if (priv =="king") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  830. else if (priv =="speaker") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  831. else if (priv =="spiler") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  832. else if (priv =="sheriff") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  833. else if (priv =="quen") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  834. else if (priv =="dj") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  835. else if (priv =="zsana") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  836. else if (priv =="dinnye") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  837. else if (priv =="pandus") var priv_icon="<img src=\"img/"+priv+"_i_small.png\" align=\"absbottom\" title=\""+priv+"\" alt=\""+priv+"\" />";
  838. else var priv_icon="";
  839. if (privat=='0'){
  840. if (user_id==self.user_id) var userstyle_clickable ="";
  841. else var userstyle_clickable = "id=\"inflblock_"+user_id+"\" style=\"cursor:pointer\"";
  842.  
  843. $("a"+id).innerHTML = "<div class=\"mess_back\"><i>("+time+")</i> "+gender_icon+priv_icon+" <b "+userstyle_clickable+">"+user+"</b>: <span style=\""+css+"\">"+message+"</span></div>";
  844.  
  845. }else{
  846. if (!id.empty()){
  847. if (user_id==self.user_id)
  848. $("a"+id).innerHTML = "<div class=\"privat_ausg_von\"><i>("+time+")</i> "+gender_icon+priv_icon+" <b>"+user+"</b> <i>("+lang_receiveResultJSON_1+" "+self.privat_an+")</i>: <span style=\""+css+"\">"+message+"</span></div>";
  849. else
  850. $("a"+id).innerHTML = "<div class=\"privat_ausg_an\"><i>("+time+")</i> "+gender_icon+priv_icon+" <b id=\"inflblock_"+user_id+"\" style=\"cursor:pointer\">"+user+"</b> <i>("+lang_receiveResultJSON_2+")</i>: <span style=\""+css+"\">"+message+"</span></div>";
  851. }
  852. else{
  853. // privat win
  854. win_id1[count_priv_win]=user_id+'00000'+privat;
  855. var win_id2=privat+'00000'+user_id;
  856.  
  857. if (typeof self.win_private[win_id1[count_priv_win]]!="object" && typeof self.win_private[win_id2]!="object"){
  858.  
  859. //window:kskdskd
  860. if (user_id==self.user_id) { var privat_win_opponent = self.privat_an; var privat_win_opponent_id = privat;}
  861. else { var privat_win_opponent = user; var privat_win_opponent_id = user_id;}
  862.  
  863. self.win_private[win_id1[count_priv_win]] = new Window({className: self.win_style, title: "Privát Vele "+privat_win_opponent, width:420, height:210, top:eval(50 + Math.round(Math.random()*50)), left:eval(50 + Math.round(Math.random()*50)), resizable: true, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5, afterFinish:function(effect){ $('pivate_win_'+int_id).scrollTop = $('pivate_win_'+int_id).scrollHeight }}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: false, opacity: 1});
  864. self.win_private[win_id1[count_priv_win]].setHTMLContent('<div id="pivate_win_'+win_id1[count_priv_win]+'" class="privat_mesages_window"></div><div><form style="display:inline" id="win_form_'+win_id1[count_priv_win]+'"><table cellspacing="0" cellpadding="0"><tr><td><input type="hidden" id="this_win_'+self.win_private[win_id1[count_priv_win]].getId()+'" value="'+win_id1[count_priv_win]+'"><input type="text" class="private_message_field" id="message_win_'+win_id1[count_priv_win]+'" ></td><td><img src="img/Checked_small.png" id="submit_img_'+win_id1[count_priv_win]+'" style="padding-left: 4px; cursor:pointer;"></td><td><img src="img/Smiley_small.png" id="smileys_img_'+win_id1[count_priv_win]+'" style="padding-left: 4px; cursor:pointer;"></td></tr></table></form></div></div>');
  865.  
  866. // Set up a windows observer, check ou debug window to get messages
  867. myObserver = {
  868. onEndResize: function(eventName, win) {
  869. //alert(win.getId());
  870. //if (win == self.win_private[win_id1[count_priv_win]])
  871. $("pivate_win_"+$F('this_win_'+win.getId())).style.height=eval(win.getSize().height - 33)+"px";
  872. },
  873. onClose: function(eventName, win) { $("message").focus(); }
  874. }
  875. Windows.addObserver(myObserver);
  876.  
  877. $('win_form_'+win_id1[count_priv_win]).onsubmit = function(e) {
  878. var tid = this.id.replace('win_form_','message_win_');
  879. self.send2privatwin(tid, user_id);
  880. return false;
  881. };
  882. $('submit_img_'+win_id1[count_priv_win]).onclick = function(e) {
  883. var tid = this.id.replace('submit_img_','message_win_');
  884. self.send2privatwin(tid, user_id);
  885. return false;
  886. };
  887. $("smileys_img_"+win_id1[count_priv_win]).onclick = function(e){
  888. var tid = this.id.replace('smileys_img_','message_win_');
  889. open_close_smileys_win(tid);
  890. }
  891. $('message_win_'+win_id1[count_priv_win]).onfocus = function(e) {
  892. this.style.color = $('message').style.color;
  893. this.style.fontWeight = $('message').style.fontWeight;
  894. this.style.fontStyle = $('message').style.fontStyle;
  895. }
  896. }
  897.  
  898. var int_id = (typeof self.win_private[win_id1[count_priv_win]]=="object") ? win_id1[count_priv_win] : win_id2;
  899. $('pivate_win_'+int_id).innerHTML+="<div>"+gender_icon+priv_icon+" <b>"+user+"</b>: <span style=\""+css+"\">"+message+"</span></div>";
  900.  
  901. try{self.win_private[int_id].show()} catch(w){}
  902.  
  903. count_priv_win++;
  904. }
  905. }
  906. // Zuerst das neue DIV verstecken um es spaeter mit Effekt zu visualisieren
  907. if (!id.empty()) Element.hide('a'+id);
  908.  
  909. // Hier wird festgestellt ob die angekommenen Messages alle von dem Benutzer sind. Damit der Sound nur abgespielt wird wenn
  910. // ein Anderer eine Message gesenden hat.
  911. if (user_id!=self.user_id) {
  912. if (self.sound_status=="all") {
  913. play_sound=true;
  914. sound_file = (privat!='0') ? "sound_privat" : "sound_all";
  915. }
  916. if (self.sound_status=="privat" && privat!='0') {
  917. play_sound=true;
  918. sound_file = "sound_privat";
  919. }
  920. if (self.sound_status=="none")
  921. play_sound=false;
  922.  
  923. // Aktiviere Blink im Title
  924. if(!self.window_focused && play_sound){
  925. try{ window.clearInterval(self.intv_title_blink) } catch (e) {/*nix*/}
  926. self.intv_title_blink = window.setInterval(function () {
  927. document.title = (document.title == lang_titleAlert) ? self.title : lang_titleAlert;
  928. }, 1000);
  929. }
  930. }
  931.  
  932. }
  933. }
  934.  
  935. // sound ---------------------------
  936. //alert(self.sound_status+ ' '+ play_sound);
  937. if(play_sound){ //Sound.play('sound/sound.mid',{replace:false});
  938. self.soundManager.play('mySound_'+sound_file,'sound/'+sound_file+'.mp3');
  939. }
  940. // Alle erzeugten neuen Datensaetze der Rheie nach visualisieren
  941. // Effect.Grow
  942. // Effect.SlideDown
  943. for (var i=0; i<jsonObj.data.length; i++)
  944. if (!jsonObj.data[i].id.empty())
  945. new Effect.Grow('a'+jsonObj.data[i].id,
  946. {
  947. duration: 0.5,
  948. afterFinish:function(effect){
  949. $('chatinhalt').scrollTop = $('chatinhalt').scrollHeight;
  950. }
  951. });
  952.  
  953. // Die alten DIVs mit Effekt verstecken. Je nach Anz. Mess. im Chat
  954. for (var i=0; i<jsonObj.data.length; i++){
  955. div_id = eval(jsonObj.data[i].id - self.messages_im_chat);
  956.  
  957. if (div_id>0){
  958. Effect.SwitchOff( 'a'+div_id, {
  959. duration: 0.3,
  960. afterFinish:function(effect){
  961. // Versuch IE6 zum Loeschen zu bewegen, der ist etwas langsam. (unklar warum)
  962. try{
  963. if ($('a'+eval(div_id-jsonObj.data.length)).style.display!="none")
  964. $('a'+eval(div_id-jsonObj.data.length)).style.display="none";
  965. if ($('a'+eval((div_id-jsonObj.data.length)-1)).style.display!="none")
  966. $('a'+eval((div_id-jsonObj.data.length)-1)).style.display="none";
  967. if ($('a'+eval((div_id-jsonObj.data.length)-2)).style.display!="none")
  968. $('a'+eval((div_id-jsonObj.data.length)-2)).style.display="none";
  969. }
  970. catch(e){}
  971. }
  972. });
  973. }
  974. }
  975. }
  976. };
  977. // (Stop) Hierhin wird das Erg. der AJAX Abfrage nach neuen Messages im Chat uebertragen und dargestellt -------
  978. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  979.  
  980. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  981. // (Start) Anfrage an den Reloader wird im Interval this.reload_interval aufgerufen ---------------------------
  982.  
  983. // (Stop) Anfrage an den Reloader wird im Interval this.reload_interval aufgerufen ----------------------------
  984. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  985.  
  986.  
  987. var AjaxReadRequest = function(){
  988.  
  989. var AktuellesDatum=new Date();
  990. var time_now = Date.parse(AktuellesDatum);
  991.  
  992. // Wenn gerade eingetroffen
  993. if(self.time_last_send==0) self.time_last_send=time_now;
  994.  
  995. // wenn kein Admin || Mod
  996. if (self.userPrivilegienGlobal!="admin" && self.userPrivilegienGlobal!="mod"){
  997. // Pruefung wie lange der User schweigt und Meldung
  998. if(!self.inactivity_message_flag && time_now - self.time_last_send > self.interval_for_inactivity - 30000) {
  999. self.sendSysMessages ( $("room").value, lang_AjaxReadRequest_1, self.user_id);
  1000. self.inactivity_message_flag=true;
  1001. };
  1002. // Pruefung wie lange der User schweigt und rauswurf
  1003. if(time_now - self.time_last_send > self.interval_for_inactivity) location.href="./?Logout&reason=timeout&r="+$("room").value;
  1004. }
  1005.  
  1006. // Dies verhindert dass nach einem DatenversendeRequest die Schleife sofort einen Datenholrequest
  1007. // veranlasst. Spart etwas an Traffic und an Serverlast
  1008. if ((time_now - self.time_last_req) > eval(self.reload_interval/2)){
  1009.  
  1010. self.time_last_req = time_now;
  1011.  
  1012. var myAjaxObj= new Ajax.Request(
  1013. "./?ReloaderMessages",
  1014. {
  1015. onSuccess: receiveResultJSON,
  1016. postBody: "room="+$("room").value+"&privat="+encodeURIComponent($("privat").value)
  1017. }
  1018. );
  1019. }
  1020. };
  1021. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1022. // (Start) Anfrage an den Reloader mit Datenuebergabe vom User, also beim Sender der Massage in den Chat -------
  1023. this.send = function()
  1024. {
  1025. var AktuellesDatum=new Date();
  1026. this.time_last_req = this.time_last_send = Date.parse(AktuellesDatum);
  1027. // Damit in Falle einer zu langen Inaktivitaet der User informiert wird.
  1028. // Ohme einen Flag bekommt er staendige Mlendungen siehe Zeile 373
  1029. this.inactivity_message_flag=false;
  1030.  
  1031.  
  1032. //check, ob der User online ist
  1033. if($F("privat")>0 && !self.userOnlineNow($F("privat"))){
  1034. var win_warning_user_away = new Window({className: self.win_style, title: lang_warning_user_away_2_1, width:280, height:70, resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: true, opacity: 1});
  1035. win_warning_user_away.setHTMLContent("<div style=\"padding:3px;\"><span><img src=\"img/messagebox_warning.png\" style=\"padding-right:10px;\" width=\"22\" height=\"22\" align=\"left\" />"+lang_warning_user_away_2_2+"</span></div>");
  1036. win_warning_user_away.showCenter();
  1037. setTimeout(function(){ try{win_warning_user_away.close();} catch(e){/*nix */} }, 10000);
  1038. }
  1039.  
  1040.  
  1041. /*
  1042. try{
  1043. if (!$('privat_modus').value.empty())
  1044. $('message').value = $('privat_modus').value + $('message').value;
  1045. } catch(e){}
  1046. */
  1047.  
  1048. var myAjaxObj= new Ajax.Request(
  1049. "./?ReloaderMessages",
  1050. {
  1051. onSuccess: function(erg) {
  1052. // Das Schreibfeld nach Versand wieder freigeben und noch 0,3 Sek abwarten, wirkt besser. ;-)
  1053. if ($('message').disabled) setTimeout(let_write, 300);
  1054.  
  1055. receiveResultJSON(erg);
  1056. },
  1057. postBody: $("message_form").serialize()
  1058. }
  1059. );
  1060.  
  1061. // Nach Versand Feld deaktivieren
  1062. $('message').value = lang_send_1;
  1063. $('message').blur();
  1064. $('message').disabled = true;
  1065. return false;
  1066. };
  1067. // (Stop) Anfrage an den Reloader mit Datenuebergabe vom User, also beim Sender der Massage in den Chat --------
  1068. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1069.  
  1070.  
  1071.  
  1072.  
  1073. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1074. // (Start) Anfrage an den Reloader mit Datenuebergabe vom User, nur für PrivatWin -------
  1075. this.send2privatwin = function(message_input_field, privat)
  1076. {
  1077.  
  1078. //check, ob der User online ist
  1079. if(!self.userOnlineNow(privat)){
  1080. var win_p = message_input_field.replace(/message_win_/g, 'pivate_win_');
  1081. $(win_p).innerHTML+="<div class=\"privat_ausg_an\" style=\"padding:3px;\"><span><b>"+lang_warning_user_away_1_1+"</b><br />"+lang_warning_user_away_1_2+"</span></div>";
  1082. }
  1083.  
  1084. var AktuellesDatum=new Date();
  1085. this.time_last_req = this.time_last_send = Date.parse(AktuellesDatum);
  1086. // Damit in Falle einer zu langen Inaktivitaet der User informiert wird.
  1087. // Ohme einen Flag bekommt er staendige Mlendungen siehe Zeile 373
  1088. this.inactivity_message_flag=false;
  1089.  
  1090. if($(message_input_field).disabled) return false;
  1091.  
  1092. var message = "/window: " + $(message_input_field).value;
  1093.  
  1094. $(message_input_field).value='';
  1095.  
  1096. message = decodeURIComponent((message + '').replace(/\&/g, '%26').replace(/\+/g, '%2B').replace(/\%/g, '%25'));
  1097.  
  1098. var myAjaxObj= new Ajax.Request(
  1099. "./?ReloaderMessages",
  1100. {
  1101. onSuccess: function(erg) {
  1102. if ($(message_input_field).disabled) setTimeout(function(){
  1103. $(message_input_field).disabled = false;
  1104. $(message_input_field).value = '';
  1105. $(message_input_field).focus();
  1106. }, 300);
  1107.  
  1108. receiveResultJSON(erg);
  1109. },
  1110. postBody: "room="+$('room').value+"&message="+message+"&privat="+privat+"&bold="+$('bold').value+"&italic="+$('italic').value+"&color="+$('color').value
  1111. }
  1112. );
  1113.  
  1114. // Nach Versand Feld deaktivieren
  1115. $(message_input_field).value = lang_send_1;
  1116. $(message_input_field).blur();
  1117. $(message_input_field).disabled = true;
  1118.  
  1119. return false;
  1120. };
  1121. // (Stop) Anfrage an den Reloader mit Datenuebergabe vom User, nur für PrivatWin -------
  1122. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1123.  
  1124.  
  1125. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1126. // (Start) Ist dieser User in der aktuellen OnlineList? -------------------------------------------------------
  1127. this.userOnlineNow = function (user_id){
  1128.  
  1129. for (var i=0; i < self.jsonObjUserGlobal.userOnline.length; i++)
  1130. if (self.jsonObjUserGlobal.userOnline[i].user_id==user_id && self.jsonObjUserGlobal.userOnline[i].user_simg!="status_invisible")
  1131. return true;
  1132.  
  1133. return false;
  1134.  
  1135. }
  1136. // (Start) Ist dieser User in der aktuellen OnlineList? -------------------------------------------------------
  1137. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1138.  
  1139.  
  1140.  
  1141. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1142. // (Start) Anfrage an den Reloader mit Datenuebergabe vom System -----------------------------------------------
  1143. this.sendSysMessages = function(room, inhalt, privat, roomChange)
  1144. {
  1145. if(!privat) privat = 0;
  1146. if(!roomChange) roomChange = false;
  1147. var myAjaxObj= new Ajax.Request(
  1148. "./?ReloaderMessages",
  1149. {
  1150. onSuccess: receiveResultJSON,
  1151. postBody: "room="+room+"&sysmess=1&privat="+privat+"&roomchange="+roomChange+"&message="+encodeURIComponent(inhalt)
  1152. }
  1153. );
  1154. };
  1155. // (Stop) Anfrage an den Reloader mit Datenuebergabe vom System ------------------------------------------------
  1156. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1157.  
  1158.  
  1159. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1160. // (Start) UseronlineUpdater - uebertragung der Chatrooms und Onlineuser im Interval ---------------------------
  1161. this.userOnline = function()
  1162. {
  1163. new Ajax.PeriodicalUpdater(
  1164. "",
  1165. "./?ReloaderUserOnline",
  1166. {
  1167. onSuccess: updateUserOnlineAnzeige,
  1168. postBody: "reloadsequenz="+this.reload_interval,
  1169. frequency: eval(this.reload_interval*0.004)
  1170. }
  1171. );
  1172. return false;
  1173. };
  1174. // (Stop) UseronlineUpdater - uebertragung der Chatrooms und Onlineuser im Interval ----------------------------
  1175. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1176.  
  1177. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1178. // (Start) Historywindow --------------------------------------------------------------------------------------
  1179. this.historyWindow = function(seite){
  1180. // Wenn das Fenster noch nicht existiert, muss es erzeugt und befuellt werden
  1181. if (typeof self.win_history!="object"){
  1182. // Fensterinstanz
  1183. var hoehe = $('chatinhalt').getHeight();
  1184. var breite = $('chatinhalt').getWidth();
  1185. self.win_history = new Window({className: self.win_style,width:eval(breite-10), title: lang_historyWindow_1, height:eval(hoehe-10), top:20, left:20, resizable: true, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: true, destroyOnClose: false});
  1186. self.win_history.setHTMLContent('<div id="history_content">Loading...</div>');
  1187. }
  1188. self.win_history.show();
  1189. self.win_history.toFront();
  1190.  
  1191. //RaumID auslesen falls bereits vorhanden
  1192. var raumID='';
  1193. try{ raumID = $("raum_in_history").value; } catch(e) {/*nix*/}
  1194.  
  1195. new Ajax.Request("./?History",
  1196. {
  1197. onSuccess:function(result){
  1198. $("history_content").innerHTML=result.responseText;
  1199. $("site_selecter").onchange = function(){ self.historyWindow($("site_selecter").value); }
  1200. Event.observe('history_seiten', 'click', function(event){
  1201. if (Event.element(event).id.slice(0, 12)=="historysite_"){
  1202. Event.stop(event);
  1203. self.historyWindow(Event.element(event).id.slice(12, Event.element(event).id.length));
  1204. }
  1205. if (Event.element(event).id=="export_excel"){
  1206. window.open('./?HistoryExport&format=xls&roomid='+raumID);
  1207. }
  1208. if (Event.element(event).id=="export_csv"){
  1209. window.open('./?HistoryExport&format=csv&roomid='+raumID);
  1210. }
  1211. if (Event.element(event).id=="export_xml"){
  1212. window.open('./?HistoryExport&format=xml&roomid='+raumID);
  1213. }
  1214. } );
  1215. Event.observe('raum_in_history', 'change', function(event){
  1216. Event.stop(event);
  1217. self.historyWindow(1);
  1218. } );
  1219. },
  1220. postBody: "site="+seite+"&roomid="+raumID
  1221. });
  1222. }
  1223. // (Stop) Historywindow --------------------------------------------------------------------------------------
  1224. // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1225.  
  1226.  
  1227.  
  1228. //#####################################################################################
  1229. // UserOnline Anzeige
  1230. var updateUserOnlineAnzeige = function(ajaxResultJSON) {
  1231.  
  1232. var aktuelle_room_id;
  1233.  
  1234. // Hier wird der Array des Updaters ausgewertet
  1235. var jsonObj = self.jsonObjUserGlobal = ajaxResultJSON.responseText.evalJSON();
  1236. if(jsonObj==0){
  1237. //setTimeout( updateUserOnlineAnzeigeAfterRoomChange ,1000);
  1238. }
  1239. else{
  1240. var anzahl_der_user_im_chat=0;
  1241. // aktuelle Rechte aus der DB Erhalten und als Globaler Wert festlegen
  1242. for (var i=0; i<jsonObj.userOnline.length; i++){
  1243. if (jsonObj.userOnline[i].user_id==self.user_id) self.userPrivilegienGlobal = jsonObj.userOnline[i].user_priv;
  1244. if (jsonObj.userOnline[i].user_simg!='status_invisible') anzahl_der_user_im_chat++;
  1245. }
  1246.  
  1247. var inner_html ="<img src='Logoradio.png' width='192' height='55'><br /><b>"+lang_updateUserOnlineAnzeige_1+"</b><br />";
  1248. //var inner_html ="<b>"+lang_updateUserOnlineAnzeige_1+"</b><br />";
  1249. inner_html +=lang_updateUserOnlineAnzeige_2+" "+ anzahl_der_user_im_chat+"<br/>";
  1250.  
  1251. for (var i=0; i<jsonObj.userOnline.length; i++){
  1252. if (aktuelle_room_id != jsonObj.userOnline[i].room_id)
  1253. {
  1254. aktuelle_room_id = jsonObj.userOnline[i].room_id;
  1255.  
  1256. var anz_im_room=0;
  1257. for (var ii=0; ii<jsonObj.userOnline.length; ii++){
  1258. if (aktuelle_room_id == jsonObj.userOnline[ii].room_id && jsonObj.userOnline[ii].user_simg!='status_invisible')
  1259. anz_im_room++;
  1260. }
  1261.  
  1262. var show_anz_pro_room = (anz_im_room>0) ? " ("+anz_im_room+")" : "";
  1263.  
  1264.  
  1265. var allowed = jsonObj.userOnline[i].room_allowed;
  1266. if (allowed==1) inner_html+="<div class=\"rooms\" id=\"room_"+aktuelle_room_id+"\">"+jsonObj.userOnline[i].room+show_anz_pro_room+"</div>";
  1267. else{
  1268. if (allowed==2)
  1269. inner_html+="<div class=\"rooms_not_allowed\" id=\"pwroom_"+aktuelle_room_id+"\">"+jsonObj.userOnline[i].room+show_anz_pro_room+"<img id=\"pwroomimg_"+aktuelle_room_id+"\" src=\"img/keylayer.png\" width=\"11\" height=\"11\" style=\"margin-left:5px;\" /></div>";
  1270. else
  1271. inner_html+="<div class=\"rooms_not_allowed\" id=\"notallowedroom_"+aktuelle_room_id+"\">"+jsonObj.userOnline[i].room+show_anz_pro_room+"<img id=\"notallowedroomimg_"+aktuelle_room_id+"\" src=\"img/locklayer.png\" width=\"11\" height=\"10\" style=\"margin-left:5px;\" /></div>";
  1272. }
  1273. }
  1274.  
  1275. // Wenn admin
  1276. var admin_user = (self.userPrivilegienGlobal=="admin" || self.userPrivilegienGlobal=="mod") ? " <img src=\"img/wand.png\" id=\"adminu_"+jsonObj.userOnline[i].user_id+"\" /> " : "";
  1277. if ((self.userPrivilegienGlobal=="admin" && self.user_id==jsonObj.userOnline[i].user_id)||(self.userPrivilegienGlobal=="mod" && self.user_id==jsonObj.userOnline[i].user_id)) admin_user = " <img src=\"img/space.gif\" weight=\"16\" height=\"16\" /> ";
  1278. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1279. var usr_priv="";
  1280. if (jsonObj.userOnline[i].user_priv=="admin") usr_priv=" <img src=\"img/admin_i.png\" alt=\"admin\" title=\"Admin\">";
  1281. if (jsonObj.userOnline[i].user_priv=="mod") usr_priv=" <img src=\"img/mod_i.png\" alt=\"mod\" title=\"Mod\">";
  1282. if (jsonObj.userOnline[i].user_priv=="vip") usr_priv=" <img src=\"img/vip_i.png\" alt=\"vip\" title=\"Vip\">";
  1283. if (jsonObj.userOnline[i].user_priv=="nyuszi") usr_priv=" <img src=\"img/nyuszi_i.png\" alt=\"nyuszi\" title=\"Nyuszi\">";
  1284. if (jsonObj.userOnline[i].user_priv=="kekcsillag") usr_priv=" <img src=\"img/kekcsillag_i.png\" alt=\"kekcsillag\" title=\"Kékcsillag\">";
  1285. if (jsonObj.userOnline[i].user_priv=="csillamponi") usr_priv=" <img src=\"img/csillamponi_i.png\" alt=\"csillamponi\" title=\"Csillámpóni\">";
  1286. if (jsonObj.userOnline[i].user_priv=="boszipiroszka") usr_priv=" <img src=\"img/boszipiroszka_i.png\" alt=\"boszipiroszka\" title=\"Boszi Piroszka\">";
  1287. if (jsonObj.userOnline[i].user_priv=="firstlady") usr_priv=" <img src=\"img/firstlady_i.png\" alt=\"firstlady\" title=\"First Lady\">";
  1288. if (jsonObj.userOnline[i].user_priv=="noverke") usr_priv=" <img src=\"img/noverke_i.png\" alt=\"noverke\" title=\"Nővérke\">";
  1289. if (jsonObj.userOnline[i].user_priv=="vadmano") usr_priv=" <img src=\"img/vadmano_i.png\" alt=\"noverke\" title=\"Vadmanó\">";
  1290. if (jsonObj.userOnline[i].user_priv=="moci") usr_priv=" <img src=\"img/moci_i.png\" alt=\"moci\" title=\"Moci\">";
  1291. if (jsonObj.userOnline[i].user_priv=="ordogcsaj") usr_priv=" <img src=\"img/ordogcsaj_i.png\" alt=\"ordogcsaj\" title=\"Ördögcsaj\">";
  1292. if (jsonObj.userOnline[i].user_priv=="biciklis") usr_priv=" <img src=\"img/biciklis_i.png\" alt=\"biciklis\" title=\"Bicajos Csaj\">";
  1293. if (jsonObj.userOnline[i].user_priv=="king") usr_priv=" <img src=\"img/king_i.png\" alt=\"king\" title=\"king\">";
  1294. if (jsonObj.userOnline[i].user_priv=="dj") usr_priv=" <img src=\"img/dj_i.png\" alt=\"dj\" title=\"dj\">";
  1295. if (jsonObj.userOnline[i].user_priv=="speaker") usr_priv=" <img src=\"img/speaker_i.png\" alt=\"speaker\" title=\"speaker\">";
  1296. if (jsonObj.userOnline[i].user_priv=="sheriff") usr_priv=" <img src=\"img/sheriff_i.png\" alt=\"sheriff\" title=\"Sheriff\">";
  1297. if (jsonObj.userOnline[i].user_priv=="spiler") usr_priv=" <img src=\"img/spiler_i.png\" alt=\"spiler\" title=\"Spiler\">";
  1298. if (jsonObj.userOnline[i].user_priv=="king") usr_priv=" <img src=\"img/king_i.png\" alt=\"king\" title=\"king\">";
  1299. if (jsonObj.userOnline[i].user_priv=="quen") usr_priv=" <img src=\"img/quen_i.png\" alt=\"quen\" title=\"quen\">";
  1300. if (jsonObj.userOnline[i].user_priv=="zsana") usr_priv=" <img src=\"img/zsana_i.png\" alt=\"zsana\" title=\"Zsana\">";
  1301. if (jsonObj.userOnline[i].user_priv=="dinnye") usr_priv=" <img src=\"img/dinnye_i.png\" alt=\"dinnye\" title=\"Dinnye\">";
  1302. if (jsonObj.userOnline[i].user_priv=="pandus") usr_priv=" <img src=\"img/pandus_i.png\" alt=\"pandus\" title=\"Pandus\">";
  1303. // -----------------
  1304.  
  1305. //status ----
  1306. if (!jsonObj.userOnline[i].user_simg.empty()) var user_status_anz = " <img src=\"img/"+jsonObj.userOnline[i].user_simg+".png\" alt=\""+jsonObj.userOnline[i].user_stext+"\" title=\""+jsonObj.userOnline[i].user_stext+"\">";
  1307. else var user_status_anz = "";
  1308.  
  1309. //hide User
  1310. if (!jsonObj.userOnline[i].user_simg.empty() && jsonObj.userOnline[i].user_simg=='status_invisible') var user_style="display:none;";
  1311. else var user_style="";
  1312.  
  1313. // strike user
  1314. if (jsonObj.userOnline[i].user.slice(0, 8) == '<strike>'){
  1315. jsonObj.userOnline[i].user = jsonObj.userOnline[i].user.slice(8, jsonObj.userOnline[i].user.length);
  1316. var user_style2="text-decoration: line-through;";
  1317. }else var user_style2="";
  1318.  
  1319. if (self.user_id==jsonObj.userOnline[i].user_id){
  1320. if (jsonObj.userOnline[i].user_sex=="m") var gender_icon="user_comment_m_self.png";
  1321. if (jsonObj.userOnline[i].user_sex=="f") var gender_icon="user_comment_w_self.png";
  1322. if (jsonObj.userOnline[i].user_sex=="n") var gender_icon="user_comment_n_self.png";
  1323. inner_html+="<div id=\"user_div_"+jsonObj.userOnline[i].user_id+"\" style=\""+user_style+"\">\
  1324. <div style=\"float:left;\">\
  1325. <img src=\"img/"+gender_icon+"\" width=\"16\" height=\"16\" /> \
  1326. <span id=\"user_"+jsonObj.userOnline[i].user_id+"\"><b>"+admin_user+jsonObj.userOnline[i].user+"</b></span>\
  1327. </div>\
  1328. <div style=\"float:right; margin-right: 2px;\">"+usr_priv+user_status_anz+"</div>\
  1329. <div style=\"clear:both\"></div>\
  1330. </div>";
  1331. }
  1332. else{
  1333. if (jsonObj.userOnline[i].user_sex=="m") var gender_icon="user_comment_m.png";
  1334. if (jsonObj.userOnline[i].user_sex=="f") var gender_icon="user_comment_w.png";
  1335. if (jsonObj.userOnline[i].user_sex=="n") var gender_icon="user_comment_n.png";
  1336. inner_html+="<div id=\"user_div_"+jsonObj.userOnline[i].user_id+"\" style=\""+user_style+"\">\
  1337. <div style=\"float:left;\">\
  1338. <img src=\"img/"+gender_icon+"\" id=\"user_"+jsonObj.userOnline[i].user_id+"\" style=\"cursor:pointer\" title=\""+lang_updateUserOnlineAnzeige_3+"\" alt=\""+lang_updateUserOnlineAnzeige_3+"\" />\
  1339. <span id=\"infoblock_"+jsonObj.userOnline[i].user_id+"\" style=\""+user_style2+"cursor:pointer\" >"+admin_user+jsonObj.userOnline[i].user+"</span>\
  1340. </div>\
  1341. <div style=\"float:right; margin-right: 2px;\">"+usr_priv+user_status_anz+"</div>\
  1342. <div style=\"clear:both\"></div>\
  1343. </div>";
  1344. }
  1345. if (self.user_id==jsonObj.userOnline[i].user_id) var aktuell_room="room_"+aktuelle_room_id;
  1346.  
  1347. }
  1348.  
  1349. try{
  1350. for (var i=0; i<jsonObj.all_empty_rooms.length; i++)
  1351. if (jsonObj.all_empty_rooms[i].room_allowed==1) inner_html+="<div class=\"rooms\" id=\"room_"+jsonObj.all_empty_rooms[i].room_id+"\">"+jsonObj.all_empty_rooms[i].room+"</div>";
  1352. else {
  1353. if (jsonObj.all_empty_rooms[i].room_allowed==2) inner_html+="<div class=\"rooms_not_allowed\" id=\"pwroom_"+jsonObj.all_empty_rooms[i].room_id+"\">"+jsonObj.all_empty_rooms[i].room+"<img id=\"pwroomimg_"+jsonObj.all_empty_rooms[i].room_id+"\" src=\"img/keylayer.png\" width=\"11\" height=\"11\" style=\"margin-left:5px;\" /></div>";
  1354. else inner_html+="<div class=\"rooms_not_allowed\" id=\"notallowedroom_"+jsonObj.all_empty_rooms[i].room_id+"\">"+jsonObj.all_empty_rooms[i].room+"<img id=\"notallowedroomimg_"+jsonObj.all_empty_rooms[i].room_id+"\" src=\"img/locklayer.png\" width=\"11\" height=\"10\" style=\"margin-left:5px;\" /></div>";
  1355. }
  1356. } catch(e){/*nix*/}
  1357. // Wachmann hinzufuegen #eeddbb
  1358. inner_html+="<div id=\"user_div_0\" style=\"border:1px dashed #000000;\">\
  1359. <div style=\"float:left;\">\
  1360. <img src=\"img/Lovers.png\" width=\"16\" height=\"16\" title=\"Lover's-BOT\" alt=\"Lover's-BOT\" /> \
  1361. <img src=\"img/delete_inactive.png\" width=\"16\" height=\"16\"/ title=\"Nem Blokkolható\" alt=\"Nem Blokkolható\"> \
  1362. <span id=\"user_2\"><b>Lover's-BOT</b></span>\
  1363. </div>\
  1364. <div style=\"float:right; margin-right: 2px;\"><a href=\"http://loversradio.hu/profile.php?lookup=1\" target=\"_blank\" style=\"text-decoration:none;\" title=\"Profil Megtekintése\"><img src=\"img/information.png\" style=\"text-decoration:none;border:0px;\" alt=\"Profil anzeigen\" title=\"Profil Megtekintése\"></a> <img src=\"img/status_invisible.png\" style=\"text-decoration:none;border:0px;\" alt=\"Figyellek !\" title=\"Figyellek !\"></a> <img src=\"img/devil.png\" style=\"text-decoration:none;border:0px;\" alt=\"MODERA !\" title=\"MODERA !\"></div>\
  1365. <div style=\"clear:both\"></div>\
  1366. </div>";
  1367.  
  1368. $("onlinelist").innerHTML = inner_html;
  1369. $(aktuell_room).style.fontWeight="bold";
  1370.  
  1371. }
  1372. }
  1373.  
  1374.  
  1375. var changeUserEvent = function(ereignis){
  1376.  
  1377. //##############################################################################################################
  1378. if (ereignis.slice(0, 7)=="privat_") {
  1379.  
  1380. $("privat").value = ereignis.slice(7, ereignis.length);
  1381.  
  1382.  
  1383. // Hier ird anhand der User_ID der entsprechende Username aus dem JSON Resultarray herausgefischt
  1384. for (var i=0; i < self.jsonObjUserGlobal.userOnline.length; i++)
  1385. if (self.jsonObjUserGlobal.userOnline[i].user_id==$("privat").value)
  1386. self.privat_an = self.jsonObjUserGlobal.userOnline[i].user;
  1387.  
  1388. // Privat window
  1389. var user_name_p = (self.privat_an.length > 20) ? self.privat_an.slice(0, 20)+"..." : self.privat_an;
  1390.  
  1391. $("privat_anzeige").innerHTML=lang_changeUserEvent_privat_1+" <b>"+user_name_p+"</b>&nbsp;&nbsp;&nbsp;<span id=\"close_privat\">"+lang_changeUserEvent_privat_2+"</span>";
  1392.  
  1393. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1394. new Effect.Highlight("message",{startcolor:"#ff6666"});
  1395. $("message").focus();
  1396.  
  1397. //alert(self.jsonObjUserGlobal.userOnline[0].room);
  1398. }
  1399.  
  1400.  
  1401.  
  1402. //##############################################################################################################
  1403.  
  1404.  
  1405.  
  1406. if (ereignis.slice(0, 10)=="privatwin_") {
  1407.  
  1408. var privat2id = ereignis.slice(10, ereignis.length);
  1409.  
  1410. // Hier ird anhand der User_ID der entsprechende Username aus dem JSON Resultarray herausgefischt
  1411. for (var i=0; i < self.jsonObjUserGlobal.userOnline.length; i++)
  1412. if (self.jsonObjUserGlobal.userOnline[i].user_id==privat2id)
  1413. var privat2name = self.jsonObjUserGlobal.userOnline[i].user;
  1414.  
  1415. // Privat window
  1416. //var user_name_p = (privat2name.length > 20) ? privat2name.slice(0, 20)+"..." : privat2name;
  1417.  
  1418. var win_id1=self.user_id+'00000'+privat2id;
  1419. var win_id2=privat2id+'00000'+self.user_id;
  1420. if (typeof self.win_private[win_id1]!="object" && typeof self.win_private[win_id2]!="object"){
  1421.  
  1422. var privat_win_opponent = privat2name;
  1423. var privat_win_opponent_id = privat2id;
  1424.  
  1425. self.win_private[win_id1] = new Window({className: self.win_style, title: "Privát Vele: "+privat_win_opponent, width:420, height:210, top:eval(50 + Math.round(Math.random()*50)), left:eval(50 + Math.round(Math.random()*50)), resizable: true, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5, afterFinish:function(effect){ $('pivate_win_'+int_id).scrollTop = $('pivate_win_'+int_id).scrollHeight}}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: true, maximizable: false, destroyOnClose: false, opacity: 1});
  1426. self.win_private[win_id1].setHTMLContent('<div id="pivate_win_'+win_id1+'" class="privat_mesages_window"></div><div><form style="display:inline" id="win_form_'+win_id1+'"><table cellspacing="0" cellpadding="0"><tr><td><input type="text" class="private_message_field" id="message_win_'+win_id1+'" ></td><td><img src="img/Checked_small.png" id="submit_img_'+win_id1+'" style="padding-left: 4px; cursor:pointer;"></td><td><img src="img/Smiley_small.png" id="smileys_img_'+win_id1+'" style="padding-left: 4px; cursor:pointer;"></td></tr></table></form></div></div>');
  1427.  
  1428. // Set up a windows observer, check ou debug window to get messages
  1429. myObserver = {
  1430. onEndResize: function(eventName, win) {
  1431. if (win == self.win_private[win_id1])
  1432. $("pivate_win_"+win_id1).style.height=eval(win.getSize().height - 33)+"px";
  1433. },
  1434. onClose: function(eventName, win) { $("message").focus(); }
  1435. }
  1436. Windows.addObserver(myObserver);
  1437.  
  1438. $('win_form_'+win_id1).onsubmit = function() {
  1439. self.send2privatwin('message_win_'+win_id1, privat2id);
  1440. return false;
  1441. }
  1442. $('submit_img_'+win_id1).onclick = function() {
  1443. self.send2privatwin('message_win_'+win_id1, privat2id);
  1444. return false;
  1445. }
  1446. $("smileys_img_"+win_id1).onclick = function(){
  1447. open_close_smileys_win('message_win_'+win_id1);
  1448. }
  1449. $('message_win_'+win_id1).onfocus = function() {
  1450. $('message_win_'+win_id1).style.color = $('message').style.color;
  1451. $('message_win_'+win_id1).style.fontWeight = $('message').style.fontWeight;
  1452. $('message_win_'+win_id1).style.fontStyle = $('message').style.fontStyle;
  1453. }
  1454. }
  1455.  
  1456. var int_id = (typeof self.win_private[win_id1]=="object") ? win_id1 : win_id2;
  1457. try{self.win_private[int_id].show()} catch(w){}
  1458.  
  1459. // $('message_win_'+win_id1).focus() war zuerst in win_private[int_id].showEffectOptions.afterFinisch,
  1460. // jedoch wird das immer nach win_private[int_id].show() ausgefuehrt. D.h. jedes mal nach einer Message und das geht nicht.
  1461. // Loesung einfach separat ein Timeout setzen mit 600ms laenger als Effekt Duration-Time von 0.5s
  1462. setTimeout(function(){ try{$('message_win_'+win_id1).focus();} catch(e){} }, 600);
  1463.  
  1464. }
  1465.  
  1466. //##############################################################################################################
  1467. if (ereignis.slice(0, 5)=="room_"){
  1468.  
  1469. if ($("room").value==ereignis.slice(5, ereignis.length)) return false;
  1470. $('chatinhalt').innerHTML='';
  1471. $("room").value=ereignis.slice(5, ereignis.length);
  1472.  
  1473. // Hier ird anhand der Room_ID der entsprechende Roomname aus dem JSON Resultarray herausgefischt
  1474. for (var i=0; i < self.jsonObjUserGlobal.userOnline.length; i++)
  1475. if (self.jsonObjUserGlobal.userOnline[i].room_id==ereignis.slice(5, ereignis.length)){
  1476. var roomName = self.jsonObjUserGlobal.userOnline[i].room;
  1477. }
  1478.  
  1479. // try weil wenn es keine freien Raeume gibt, entsteht error
  1480. try{
  1481. for (var i=0; i < self.jsonObjUserGlobal.all_empty_rooms.length; i++)
  1482. if (self.jsonObjUserGlobal.all_empty_rooms[i].room_id==ereignis.slice(5, ereignis.length)){
  1483. var roomName = self.jsonObjUserGlobal.all_empty_rooms[i].room;
  1484. }
  1485. } catch(e){ /* nix */ }
  1486.  
  1487. self.sendSysMessages ( $("room").value, lang_changeUserEvent_room_1, 0, true);
  1488. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1489.  
  1490. setTimeout( updateUserOnlineAnzeigeAfterRoomChange ,700);
  1491. }
  1492. //##############################################################################################################
  1493. // User Blockieren. ANFANG
  1494. if (ereignis.slice(0, 10)=="infoblock_" || ereignis.slice(0, 10)=="inflblock_"){
  1495.  
  1496. if (ereignis.slice(0, 10)=="inflblock_"){
  1497. var pos_top = eval(self.mouse_top-25);
  1498. var pos_left = eval(self.mouse_left+10);
  1499. }
  1500. if (ereignis.slice(0, 10)=="infoblock_"){
  1501. var pos_top = eval(self.mouse_top-10);
  1502. var pos_left = eval(self.mouse_left-280);
  1503. }
  1504.  
  1505. // Hier ird anhand der User_ID der entsprechende Username aus dem JSON Resultarray herausgefischt
  1506. for (var i=0; i < self.jsonObjUserGlobal.userOnline.length; i++)
  1507. if (self.jsonObjUserGlobal.userOnline[i].user_id==ereignis.slice(10, ereignis.length)){
  1508. var user_name = self.jsonObjUserGlobal.userOnline[i].user;
  1509. var user_priv = self.jsonObjUserGlobal.userOnline[i].user_priv;
  1510. }
  1511.  
  1512. // kein User in der Onlinelist mehr vorhanden
  1513. if (user_name==undefined) return false;
  1514.  
  1515. var id = ereignis.slice(10, ereignis.length);
  1516.  
  1517. if (typeof self.win_block[id]!="object"){
  1518.  
  1519. if (user_name.length > 20) user_name = user_name.slice(0, 20)+"...";
  1520.  
  1521. self.win_block[id] = new Window({className: self.win_style, title:lang_changeUserEvent_infoblock_1+' '+user_name, width:250, height:90, top:pos_top, left:pos_left, resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.4, afterFinish:function(effect){ close_info_win(self.win_block[id].getId()) }}, hideEffectOptions: {duration:0.4}, draggable: true, minimizable: true, maximizable: false, destroyOnClose: false, opacity: 1});
  1522.  
  1523. var disabled_block = (user_priv=='admin' || user_priv=='mod') ? 'disabled' : '';
  1524.  
  1525. var separate_win_privat_menue = (self.allowed_privates_in_separate_win) ? '<img src="img/privat_win.png" align="left" />&nbsp;&nbsp;<a href="#" id="info_privatf_'+id+'" >'+lang_changeUserEvent_infoblock_4+'</a><br />' : '';
  1526. var chat_privat_menue = (self.allowed_privates_in_chat_win) ? '<img src="img/privat_chat.png" align="left" />&nbsp;&nbsp;<a href="#" id="info_privatm_'+id+'" >'+lang_changeUserEvent_infoblock_3+'</a><br />' : '';
  1527. var block_option4privat = (!self.allowed_privates_in_separate_win && !self.allowed_privates_in_chat_win) ? '' : '<input type="Checkbox" id="blokiere_user_priv_'+id+'" '+disabled_block+'> '+lang_changeUserEvent_infoblock_7;
  1528.  
  1529. self.win_block[id].setHTMLContent('\
  1530. <img src="img/set_name.png" align="left" />&nbsp;&nbsp;<a href="#" id="info_set_name_'+id+'" >'+lang_changeUserEvent_infoblock_2+'</a><br />\
  1531. '+chat_privat_menue+'\
  1532. '+separate_win_privat_menue+'\
  1533. <img src="img/delete.png" align="left" />&nbsp;&nbsp;<a href="#" id="info_blockform_'+id+'" >'+lang_changeUserEvent_infoblock_5+'</a>\
  1534. <div id=\"block_form_div_'+id+'\" style="display:none;margin-top:2px;"><form name="user_block_'+id+'" style="display:inline;" >\
  1535. <input type="Checkbox" id="blokiere_user_all_'+id+'" '+disabled_block+'> '+lang_changeUserEvent_infoblock_6+'&nbsp;&nbsp;&nbsp;\
  1536. '+block_option4privat+'</form></div>');
  1537.  
  1538. var make_ajax_request_of_blocking = true;
  1539.  
  1540. // Sonst hat IE Problemmen mit "Luecken" im Array
  1541. self.win_block_ids.push(id);
  1542.  
  1543. }else{
  1544. self.win_block[id].setLocation(pos_top, pos_left);
  1545. var make_ajax_request_of_blocking = false;
  1546. }
  1547. self.win_block[id].show();
  1548. self.win_block[id].toFront();
  1549.  
  1550.  
  1551. $("info_set_name_"+id).onclick = function(){
  1552. $('block_form_div_'+id).hide();
  1553. changeUserEvent('user_'+id);
  1554. self.win_block[id].close();
  1555. }
  1556.  
  1557. if((self.allowed_privates_in_chat_win))
  1558. $("info_privatm_"+id).onclick = function(){
  1559. $('block_form_div_'+id).hide();
  1560. changeUserEvent('privat_'+id);
  1561. self.win_block[id].close();
  1562. }
  1563.  
  1564. if((self.allowed_privates_in_separate_win))
  1565. $("info_privatf_"+id).onclick = function(){
  1566. $('block_form_div_'+id).hide();
  1567. changeUserEvent('privatwin_'+id);
  1568. self.win_block[id].close();
  1569. }
  1570.  
  1571. $("info_blockform_"+id).onclick = function(){
  1572. $('block_form_div_'+id).toggle();
  1573.  
  1574. // Ist leider noetig im falle einer Aktualisierung der Seite (F5). Sonst ist es nicht eindeutig, was zufor bereits ausgewaehlt wurde.
  1575. if (make_ajax_request_of_blocking)
  1576. new Ajax.Request(
  1577. "./?BlockUser",
  1578. {
  1579. onSuccess: function(result) {
  1580. if (result.responseText == "all") $("blokiere_user_all_"+ereignis.slice(10, ereignis.length)).checked=true;
  1581. else $("blokiere_user_all_"+ereignis.slice(10, ereignis.length)).checked=false;
  1582. if (result.responseText == "priv") $("blokiere_user_priv_"+ereignis.slice(10, ereignis.length)).checked=true;
  1583. else $("blokiere_user_priv_"+ereignis.slice(10, ereignis.length)).checked=false;
  1584. },
  1585. postBody: "show="+ereignis.slice(10, ereignis.length)
  1586. }
  1587. );
  1588. make_ajax_request_of_blocking = false;
  1589. }
  1590.  
  1591. $("blokiere_user_all_"+id).onclick = function(){
  1592. try { $("blokiere_user_priv_"+id).checked=false; } catch(e){}
  1593.  
  1594. new Ajax.Request(
  1595. "./?BlockUser",
  1596. {
  1597. onSuccess: function(){ $('block_form_div_'+id).hide(); self.win_block[id].close(); updateUserOnlineAnzeigeAfterRoomChange(); },
  1598. postBody: "block_all="+id
  1599. }
  1600. );
  1601. }
  1602.  
  1603. if((self.allowed_privates_in_separate_win || self.allowed_privates_in_chat_win))
  1604. $("blokiere_user_priv_"+id).onclick = function(){
  1605. $("blokiere_user_all_"+id).checked=false;
  1606.  
  1607. new Ajax.Request(
  1608. "./?BlockUser",
  1609. {
  1610. onSuccess: function(){ $('block_form_div_'+id).hide(); self.win_block[id].close(); updateUserOnlineAnzeigeAfterRoomChange(); },
  1611. postBody: "block_priv="+id
  1612. }
  1613. );
  1614. }
  1615. }
  1616. // User Blokieren. ENDE
  1617. //##############################################################################################################
  1618. // Wenn der User zu anministrieren ist.
  1619. if (ereignis.slice(0, 7)=="adminu_"){
  1620.  
  1621. // Hier ird anhand der User_ID der entsprechende Username aus dem JSON Resultarray herausgefischt
  1622. for (var i=0; i < self.jsonObjUserGlobal.userOnline.length; i++)
  1623. if (self.jsonObjUserGlobal.userOnline[i].user_id==ereignis.slice(7, ereignis.length)){
  1624. var user_ip = self.jsonObjUserGlobal.userOnline[i].user_ip;
  1625. var user_name = self.jsonObjUserGlobal.userOnline[i].user;
  1626. var user_priv = self.jsonObjUserGlobal.userOnline[i].user_priv;
  1627. }
  1628.  
  1629. var id = ereignis.slice(7, ereignis.length);
  1630.  
  1631. if (typeof self.win_admin_user[id]!="object"){
  1632. self.win_admin_user[id] = new Window({className: self.win_style, width:350, height:180, top:eval(self.mouse_top-10), left:eval(self.mouse_left-390), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: false});
  1633. }
  1634. if (user_priv!='admin' && user_priv!='mod')
  1635. self.win_admin_user[id].setHTMLContent('<b>'+user_name+'</b><br /><i>'+user_ip+'</i><br /><br />'+lang_changeUserEvent_adminu_1+'<form>\
  1636. <select id="blacklist_time" size="1">\
  1637. <option value="0">'+lang_changeUserEvent_adminu_opt_1+'</option>\
  1638. <option value="600">'+lang_changeUserEvent_adminu_opt_2+'</option>\
  1639. <option value="1800">'+lang_changeUserEvent_adminu_opt_3+'</option>\
  1640. <option value="3600">'+lang_changeUserEvent_adminu_opt_4+'</option>\
  1641. <option value="10800">'+lang_changeUserEvent_adminu_opt_5+'</option>\
  1642. <option value="86400">'+lang_changeUserEvent_adminu_opt_6+'</option>\
  1643. <option value="604800">'+lang_changeUserEvent_adminu_opt_7+'</option>\
  1644. <option value="94348800">'+lang_changeUserEvent_adminu_opt_8+'</option>\
  1645. </select> &nbsp;&nbsp;&nbsp;<a href="#" id="sperre_user_'+ereignis.slice(7, ereignis.length)+'">'+lang_changeUserEvent_adminu_2+'</a></form>');
  1646. else
  1647. self.win_admin_user[id].setHTMLContent('<b>'+user_name+'</b> '+lang_changeUserEvent_adminu_3+' ' + user_priv + ' '+lang_changeUserEvent_adminu_4);
  1648.  
  1649. self.win_admin_user[id].show();
  1650.  
  1651.  
  1652. try{
  1653. $("sperre_user_"+id).onclick = function(){
  1654. new Ajax.Request(
  1655. "./?Insert2Blacklist",
  1656. {
  1657. onSuccess: function(){ self.win_admin_user[id].close() },
  1658. postBody: "user_id="+id+"&time="+$("blacklist_time").value
  1659. }
  1660. );
  1661. }
  1662. }
  1663. catch(e){/* nix */}
  1664.  
  1665. }
  1666.  
  1667. //##############################################################################################################
  1668. if (ereignis.slice(0, 9)=="smilchat_") {
  1669. $('message').value += ereignis.slice(9, ereignis.length);
  1670. $('message').focus();
  1671. }
  1672. //##############################################################################################################
  1673. if (ereignis.slice(0, 5)=="user_" || ereignis.slice(0, 5)=="usch_"){
  1674.  
  1675. for (var i=0; i < self.jsonObjUserGlobal.userOnline.length; i++)
  1676. if (self.jsonObjUserGlobal.userOnline[i].user_id==ereignis.slice(5, ereignis.length))
  1677. var user_name = self.jsonObjUserGlobal.userOnline[i].user;
  1678. $("message").value +=': '+ user_name.unescapeHTML()+':';
  1679. // $("message").value += user_name.unescapeHTML();
  1680. $("message").focus();
  1681. }
  1682. //##############################################################################################################
  1683. if (ereignis.slice(0, 15)=="notallowedroom_" || ereignis.slice(0, 18)=="notallowedroomimg_") {
  1684.  
  1685. var win_allowed = new Window({className: self.win_style, width:240, height:80, top:eval(self.mouse_top-10), left:eval(self.mouse_left-280), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: true, opacity: 1});
  1686. win_allowed.setHTMLContent(lang_changeUserEvent_notallowedroom_1+'<br><br><div style="width:90px;cursor:pointer;border:1px solid black;text-align:center;" id="close_room_warning">'+lang_changeUserEvent_notallowedroom_2+'</div>');
  1687. win_allowed.show();
  1688.  
  1689. try{
  1690. $("close_room_warning").onclick = function(){
  1691. win_allowed.close();
  1692. }
  1693. }catch(e){/* nix */}
  1694. }
  1695. //##############################################################################################################
  1696.  
  1697. if (ereignis.slice(0, 7)=="pwroom_" || ereignis.slice(0, 10)=="pwroomimg_") {
  1698.  
  1699. var room_id_now = (ereignis.slice(0, 7)=="pwroom_") ? ereignis.slice(7, ereignis.length) : ereignis.slice(10, ereignis.length);
  1700.  
  1701. // Hier ird anhand der Room_ID der entsprechende Roomname aus dem JSON Resultarray herausgefischt
  1702. for (var i=0; i < self.jsonObjUserGlobal.userOnline.length; i++)
  1703. if (self.jsonObjUserGlobal.userOnline[i].room_id==room_id_now)
  1704. var roomName = self.jsonObjUserGlobal.userOnline[i].room;
  1705.  
  1706. // try weil wenn es keine freien Raeume gibt, entsteht error
  1707. try{
  1708. for (var i=0; i < self.jsonObjUserGlobal.all_empty_rooms.length; i++)
  1709. if (self.jsonObjUserGlobal.all_empty_rooms[i].room_id==room_id_now)
  1710. var roomName = self.jsonObjUserGlobal.all_empty_rooms[i].room;
  1711. } catch(e){ /* nix */ }
  1712.  
  1713. var win_laypw = new Window({className: self.win_style, title: roomName, width:240, height:100, top:eval(self.mouse_top-10), left:eval(self.mouse_left-280), resizable: false, showEffect:Effect.Appear, hideEffect: Effect.Fade, showEffectOptions: {duration:0.5, afterFinish:function(){$('layerpw').focus();}}, hideEffectOptions: {duration:0.5}, draggable: true, minimizable: false, maximizable: false, destroyOnClose: true, opacity: 1});
  1714. win_laypw.setHTMLContent('<form id="layerpw_form">'+lang_changeUserEvent_pwroom_1+' <div id="pwroom_error"></div><br /><input type="password" name="layerpw" id="layerpw" style="float:left" />'+'<div style="width:60px;cursor:pointer;border:1px solid black;text-align:center;float:left; margin:2px;" id="send_room_pw">'+lang_changeUserEvent_notallowedroom_2+'</div></form>');
  1715. win_laypw.show();
  1716.  
  1717. $('pwroom_error').innerHTML = "";
  1718.  
  1719. try{
  1720. $("send_room_pw").onclick = function(){
  1721. check_room_pw(win_laypw, room_id_now, roomName);
  1722. }
  1723. $("layerpw_form").onsubmit = function(){
  1724. check_room_pw(win_laypw, room_id_now, roomName);
  1725. return false;
  1726. }
  1727. }catch(e){/* nix */}
  1728. }
  1729. //##############################################################################################################
  1730.  
  1731. }
  1732.  
  1733. var check_room_pw = function(win_laypw,room_id_now, roomName){
  1734. new Ajax.Request(
  1735. "./?CheckRoomPw",
  1736. {
  1737. onSuccess: function(result){
  1738. if (result.responseText==1){
  1739. win_laypw.close();
  1740.  
  1741. $('chatinhalt').innerHTML='';
  1742. $("room").value=room_id_now;
  1743.  
  1744. self.sendSysMessages ( $("room").value, lang_changeUserEvent_room_1, 0, true );
  1745. setTimeout(updateUserOnlineAnzeigeAfterRoomChange, 400);
  1746. }
  1747. else{$('pwroom_error').innerHTML = "<b>"+lang_changeUserEvent_pwroom_2+"</b>";}
  1748. },
  1749. postBody: "layerpw="+$('layerpw').value+"&roomid="+room_id_now
  1750. }
  1751. );
  1752. }
  1753.  
  1754.  
  1755.  
  1756. var updateUserOnlineAnzeigeAfterRoomChange = function(){
  1757. new Ajax.Request(
  1758. "./?ReloaderUserOnline",
  1759. {
  1760. onSuccess: updateUserOnlineAnzeige,
  1761. postBody: "reloadsequenz="+self.reload_interval
  1762. }
  1763. )
  1764. }
  1765.  
  1766. //###############################################################################################################
  1767. // Little helpers
  1768. var dec2hex = function(n){
  1769. n = parseInt(n); var c = 'ABCDEF';
  1770. var b = n / 16; var r = n % 16; b = b-(r/16);
  1771. b = ((b>=0) && (b<=9)) ? b : c.charAt(b-10);
  1772. return ((r>=0) && (r<=9)) ? b+''+r : b+''+c.charAt(r-10);
  1773. }
  1774. var hex2dec = function(n) { return parseInt( n, 16 ); }
  1775.  
  1776. }
  1777.  
  1778. //#####################################################################################
  1779. //############## END ##################################################################
  1780. //#####################################################################################
Add Comment
Please, Sign In to add comment