
var show_user;

var sb = 0;
if (location.href.indexOf("shoutbox") != -1) sb = 1;

var check_n = 0;
var old_data = "--";
var old_result = 1;


var anz_opt = "Anzeigeoptionen";

var light;
light = "no";

var nick;
nick = "";

// http://www.validome.org/doc/HTML_ge/navigation/anzeige/rechte_maustaste.htm
function click (e) {
  if (!e)
    e = window.event;
  if ((e.type && e.type == "contextmenu") || (e.button && e.button == 2) || (e.which && e.which == 3)) {
    if (window.opera)
      window.alert("Benutzer \u00e4lterer Opera-Versionen k\u00f6nnen die Rechtsklick-Funktion hier eventuell nicht nutzen.\n\nFalls die Einladung nicht im Textfeld erscheint,\nbitte die entsprechenden Tastaturbefehle benutzen siehe Hilfe.\n\n");
    return false;
  }
}
if (document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = click;


function strpos (haystack, needle, offset) {
    // Finds position of first occurrence of a string within another  
    // discuss at: http://phpjs.org/functions/strpos    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: strpos('Kevin van Zonneveld', 'e', 5);    // *     returns 1: 14
    var i = (haystack+'').indexOf(needle, (offset || 0));
    return i === -1 ? false : i;
}

function klapp(beitrag) {
     if (document.getElementById) {
          if (document.getElementById(beitrag ).style.display == 'none') {
              document.getElementById(beitrag).style.display = "block";
              document.getElementById('einaus_' +beitrag).innerHTML = anz_opt+' [&#8722;]';
          } else  {
              document.getElementById(beitrag).style.display = "none";
              document.getElementById('einaus_' + beitrag).innerHTML = anz_opt+' [+]';
          }
     }
}

function FensterOeffnen (Adresse) {
     document.getElementById('line').focus();
     MeinFenster = window.open(Adresse,'usr_smileys','width=600, height=660, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=yes, dependent=yes').focus();
     //MeinFenster.focus();
}

var cookieWert;
function holeCookie(keksname) {
      var alleCookies, i;
	alleCookies=document.cookie;
	cookieArr=alleCookies.split(";");
	for(var i=0;i<cookieArr.length;i++) {
		if(cookieArr[i].split("=")[0].replace(/\s+/,"") == keksname) {
			cookieWert=cookieArr[i].split("=");
			cookieWert=decodeURIComponent(cookieWert[1].replace(/\+/g," "));
			return true;
		}
	}
  	return false;
}


// Abfrage, ob Admin:
var isadmin = "0";


allow_url_fopen = 1;


// die Anzeige der online-Zeit bei reloads oder Raumwechsel nicht zurücksetzen:
var Jetzt = new Date();
cookieWert ="";
holeCookie("Ankunft");
if (cookieWert != "") {
	login = cookieWert;
} else {
	login = Jetzt.getTime();
}




// unerlaubte Raumnamen zurueckweisen:
function room_name() {
         // if (document.room1.room.value.match(/\W/)) {
         if (document.forms[2].room.value.match(/\W/)) {

                  alert ("Nicht erlaubte Zeichen im Raumnamen!");
                  return false;
         }
}


// die Javascript Funktionen zur Steuerung des Players:
function playmp3(typ) {
        if (flashinstalled == 2) {
        	document.getElementById("mp3").innerHTML = '<object data="sound.swf?src='+typ+'&amp;autostart=yes" type="application/x-shockwave-flash" style="-moz-user-focus:ignore; width:1px; height:1px;"><param name="movie" value="sound.swf?src='+typ+'&amp;autostart=yes" /><\/object>';
        } else {
               // neues Fenster, wenn kein Flash installiert:
               playerwindow = window.open(typ, "Player");
               playerwindow.focus();
        }
}


time_init = 2000;
if (time_init < 500) time_init = 500;

disconnect = time_init * 2.5; // disconnect bei Erreichen dieses refresh Wert


slowdown = 0;
meldung = '..... Chat disconnected (timeout) \n\nHey, hier ist ein Chat, und keine \u00f6ffentliche W\u00e4rmestube!' ;


// Online Zeit anzeigen:
// erst nach 10 Min. Inaktivität startet ein reload oder Raumwechsel die online Zeit neu:
var ablauf = new Date();
var Minuten = ablauf.getTime() + (10 * 60 * 1000); 
ablauf.setTime(Minuten);
document.cookie="Ankunft="+login+"; expires=" + ablauf.toGMTString();



function ZeitAnzeigen () {
         if (document.getElementById('Anzeige2')) {
        	 var absSekunden = Math.round(ZeitBerechnen());
        	 var relSekunden = absSekunden % 60;
        	 var absMinuten = Math.abs(Math.round((absSekunden - 30) / 60));
        	 var relMinuten = absMinuten % 60;
        	 var absStunden = Math.abs(Math.round((absMinuten - 30) / 60));
        	 var anzSekunden = "" + ((relSekunden > 9) ? relSekunden : "0" + relSekunden);
        	 var anzMinuten = "" + ((relMinuten > 9) ? relMinuten : "0" + relMinuten);
        	 var anzStunden = "" + ((absStunden > 9) ? absStunden : "0" + absStunden);
                	 if (absStunden >= 1) {
                        	 document.getElementById('Anzeige2').innerHTML = anzStunden + ":" + anzMinuten + ":" + anzSekunden;
                         } else {
                               document.getElementById('Anzeige2').innerHTML = anzMinuten + ":" + anzSekunden;
                         }
        	 setTimeout("ZeitAnzeigen()", 1000);
         }
}

function ZeitBerechnen () {
	 var Immernoch = new Date();
	 return ((Immernoch.getTime() - login) / 1000);
}


// Uhr anzeigen:
function UhrAnzeigen() {
      if (document.getElementById('Uhr_Anzeige2')) {
	    realtime();
	    window.setInterval("realtime()", 1000);
      }
}

function realtime() {
	var now = new Date();
	hours = now.getHours();
	minutes = now.getMinutes();
	seconds = now.getSeconds();

	thetime = (hours < 10) ? "0" + hours + ":" : hours + ":";
	thetime += (minutes < 10) ? "0" + minutes + ":" : minutes + ":";
	thetime += (seconds < 10) ? "0" + seconds : seconds;

	element2 = document.getElementById("Uhr_Anzeige2").innerHTML = thetime;
}

	

function jump(form) { 
	order = form.menu1.selectedIndex; 
	if (form.menu1.options[order].value != 0) { 
		ads(form.menu1.options[order].value);
	}  
} 


var ablauf2 = new Date();
var Minuten2 = ablauf2.getTime() + (30 * 24 * 60 * 60 * 1000);
ablauf2.setTime(Minuten2);
function jump2(form) {
	order = form.menu2.selectedIndex;
	if (form.menu2.options[order].value != 0) {
               var style = form.menu2.options[order].value;
               document.cookie="Style="+style+"; expires=" + ablauf2.toGMTString();
               window.location.reload();
	}
}

function setlang(lg) {
               document.cookie="lang="+lg+"; expires=" + ablauf2.toGMTString();
}

function playsound(typ) { // die standardkonforme Lösung für alle Browser
      if (document.getElementById('ton')) {
      	document.getElementById("ton").innerHTML = '<object data="'+typ+'" type="application/x-shockwave-flash" width="0" height="0"><param name="movie" value="'+typ+'" /><param name="loop" value="false" />Bitte Flash aktivieren fuer die Soundunterstuetzung</object>';
      }
}

time1 = time_init;

function refresh_cb(new_data) {
                 msg_pos = 0;
                 teil_msg = "";
	if (typeof old_data == "undefined" || old_data == "--") {
                // playsound('reload2.swf'); // Sound bei reload
                if (playsound) playsound('sounds/reload2.swf'); // Sound bei reload
	} else {
		if (typeof handle != "string") {
		
//		     holeCookie("nick");

                 msg_pos = new_data.lastIndexOf("color:#");
                 last_msg = new_data.substr(msg_pos);
                 if (old_msg != last_msg && last_msg.indexOf("/pn") == -1) {
                   	playsound('sounds/eingang.swf'); // Sound bei nicht /pn
                 }
                 // wenn Admin pn kriegt, kein sound
                 if (old_msg != last_msg && last_msg.indexOf(cookieWert) != -1) {
                  	playsound('sounds/eingang.swf'); // Sound bei /pn an mich
                 }
                 

                 if (isadmin == 1 && last_msg.indexOf("/pn") != -1) {
                  	playsound('sounds/eingang.swf'); // Sound für Admin bei allen /pn
                 }
                 
                 // der Alarmruf:
                 if (last_msg.indexOf("/alarm") != -1 && last_msg.indexOf(cookieWert) != -1) {
                  	playsound('sounds/alarm3.swf');
                 }

            }
	}

	old_msg = "";
      	if (typeof last_msg == "string") old_msg = last_msg;
	handle = 1;

	document.getElementById("wall").innerHTML = new_data;
	setTimeout('document.getElementById("wall").scrollTop = 9999',500);


	// ARIA
	if (document.getElementById("jaws")) {
		msg_pos = new_data.lastIndexOf('pointer');
		last_msg = new_data.substr(msg_pos + 9);

      if (last_msg.indexOf("<img") != -1 && last_msg.indexOf("alt") != -1) { // alt-Attribut für ARIA aufbereiten
         start_img = strpos(last_msg, '<img', 0);
         sub0_aria = last_msg.substring(0,start_img); // alles vor <img
         start_alt = strpos(last_msg, 'alt=', 0);
         sub1_aria = last_msg.substring(start_alt +5); // alles nach alt=
         end_alt = strpos(sub1_aria, '"',0);
         sub2_aria = sub1_aria.substring(0,end_alt); // das komplette alt-Attribut
         rest = strpos(sub1_aria,'>',0);
         sub3_aria = sub1_aria.substring(rest + 1); // alles nach dem img
         last_msg = sub0_aria + sub2_aria + sub3_aria;
      }

		// eigene Meldungen nicht
      //		if (last_msg.indexOf('pointer">'+nick+':') == -1) {
			document.getElementById("jaws").innerHTML = '<p>' + last_msg + '</p>';
      //		}
	}


	old_data = new_data;
      	time1 = time_init; // bei Eingang einer neuen Meldung wirds wieder schnell
	setTimeout("changed_data()", time1);
	
}

// Filesize abfragen vor dem AJAX refresh
var old_size;
function set_file_changed(new_size) {

    // per cookie den refresh vermeiden:
    if (holeCookie) holeCookie("stop");

    if (cookieWert != "stop") {
         if ( typeof old_size == "undefined" || new_size != old_size) {
                 old_size = new_size;
                 x_refresh(refresh_cb);
         } else { // hierher die Waermestube!
                if (typeof time1 != "undefined") {
                        time1 = time1 * (1 + slowdown*0.001); // wenn nix los ist, wirds immer langsamer, bis zum timeout:
                        if (time1 > disconnect) {
                      		 alert(meldung);
                               time1 = disconnect*0.5;     // es bleibt rel. langsam, umd der Alert kommt schneller
//                               if (light != "yes" && show_user != "no" && sb != 1) u_online();                // könnte man so nach dem Alert die user wieder anzeigen?
                               if (light != "yes" && show_user != "no") u_online();                // könnte man so nach dem Alert die user wieder anzeigen?
        	               if (light != "yes" && show_user != "no" && sb != 1)u_online_room();
                        }
                        setTimeout("x_file_changed(set_file_changed)",time1);
                }
         }
     } else {
         setTimeout("changed_data()",time1);
     }
}

function changed_data() {
	x_file_changed(set_file_changed);
}



function add_cb() {
	// we don't care..
}



var handle; // Var global wg. Klick on send
function add() {

//	var line;
	line = document.getElementById("line").value;

	handle = document.getElementById("handle").value;



        // Flüstern nur erlauben, wenn ein Admin beteiligt ist
        var user_whisper = "";
        if (user_whisper == "admin") {
              if (line.indexOf("/pn") != -1) {
                   if (isadmin != 1 ) { // der Admin darf alle anflüstern
                      // suchen, ob einer der Admins angesprochen wird
                      var at_admin = 0;
                      for (var i = 0; i < all_admins.length; i++) {
                          //alert (all_admins[i]);
                          if (line.indexOf('@'+all_admins[i]+' ') != -1) {
                              var at_admin = 1;
                          }
                      }
                      if (at_admin != 1) {
                          alert("Fl\u00fcstern ist nur erlaubt, wenn ein Admin beteiligt ist.");
                          document.getElementById("line").focus();
                          return;
                      }
                   }
              }
        }





      // keine leere Nachricht zulassen:
	line = document.getElementById("line").value;
	if (line == "" || line == "(Deine Nachricht)" ) {
		document.getElementById("line").focus();
		return;
	}
	
      if (line.indexOf("file://") != -1) {
            alert ("Nicht erlaubte Zeichen in der Nachricht!");
		document.getElementById("line").focus();
		return;
	}


      if (line.indexOf("/add ") != -1 && isadmin == 1 && allow_url_fopen != 1) {
           alert ("Dein Server erlaubt das leider nicht (allow_url_fopen=off)");
           document.getElementById("line").focus();
           return;
      }

	// die Versionsanzeige
      
      if (line.indexOf("/version") != -1) {
           alert ("Chat by webdesign.weisshart.de \nVersion: 1.80.03");
           document.getElementById("line").value = "";
           document.getElementById("line").focus();
           return;
      }


      var user_whisperroom = "";
      if (user_whisperroom == "admin") {
            if (line.indexOf("_pr") != -1 && isadmin != 1) {
                 alert ("Fl\u00fcsterr\u00e4ume darf nur der Admin \u00f6ffnen.");
                 document.getElementById("line").value = "";
                 document.getElementById("line").focus();
                 return;
            }
      }

      var guest_write = "";
      if (guest_write == "no" ) {
//            var isreg = "0";
//            if (isreg != 1) {
			var nickname = "";
			if (nickname.indexOf("Gast") !== -1) {
                 alert ("Als Gast kannst du nicht schreiben.\n\nUm zu schreiben, log dich bitte aus,\nund melde dich mit deinem registrierten Nicknamen an,\noder registriere dich.");
                 document.getElementById("line").value = "";
                 document.getElementById("line").focus();
                 return;
            }
      }



      Check = "true";
      if (isadmin == 1  && line.indexOf("/del ") != -1) {
           Check = confirm("Willst du den eingegebenen Raum wirklich l\u00f6schen und entfernen?\n\nHinweis: den Raum, in dem du dich befindest, kannst du nicht l\u00f6schen.");
           if (Check == false) {
           		document.getElementById("line").focus();
      		return;
           }
      }

      // mehr als 4 mal das gleiche Zeichen oder die gleiche Zeichenfolge (z.B. smileys) zurückweisen und umwandeln
      if (isadmin != 1) {
            if (line.search(/(.+)\1{4,}/) != -1 && line.indexOf("#") == -1) {
               alert("Sieht so aus, als ob deine Tastatur klemmt?\nBitte \u00fcberpr\u00fcfe deine Eingabe.");
               return;
            }
      }

      // Schreien (nur Großbuchstaben) zurückweisen:
      if (isadmin != 1) {
           if (!line.match(/[a-z0-9:)]/) && line.length > 4) {
              alert("Sieht so aus, als ob deine Tastatur kaputt ist.\nHast du nur Gro\u00dfbuchstaben?\nSo etwas gilt im Chat als unh\u00f6flich.");
           }
	   // Mehrfacheingabe von Upload oder sonstiger Links unterbinden
           if (line.lastIndexOf("http:") - line.indexOf("http:") > 0 && line.indexOf("smileys")  == -1  ) {
              alert("Sieht so aus, als ob deine Tastatur klemmt?\nBitte \u00fcberpr\u00fcfe deine Eingabe.[2]");
              return;
           }
      }

      if (line.indexOf("/away") != -1 ) {
         alert("Du bist jetzt (vor\u00fcbergehend) vom Chat abgemeldet, \nund f\u00fcr Andere nicht mehr sichtbar, \nsolange bis du diese Meldung mit OK best\u00E4tigst.");
         document.getElementById("line").value = "";
         document.getElementById("line").focus();
     		return;
      }


      // bestimmte Befehle zurueckweisen, wenn nicht Admin:
      if (isadmin != 1) {
            if (line.indexOf("/ban") != -1
                  || line.indexOf("/kick") != -1
                  || line.indexOf("/maulkorb") != -1
                  || line.indexOf("/maul") != -1
                  || line.indexOf("/ghost") != -1
                  || line.indexOf("/peep") != -1
                  || line.indexOf("/nopeep") != -1
                  || line.indexOf("/approve") != -1
                  || line.indexOf("/add") != -1
                  || line.indexOf("/offline") != -1
                  || line.indexOf("/del") != -1
                  || line.indexOf("/archiv") != -1
                  || line.indexOf("/topic") != -1
                  || line.indexOf("/pixel") != -1
            ) {
                  alert("Dieser Befehl steht nur dem Admin zur Verf\u00fcgung!");
      		document.getElementById("line").focus();
      		return;
      	}

            p_room = "";
            if (line.indexOf("/clear") != -1 && p_room.indexOf("_pr") == -1) {
                  alert("Dieser Befehl steht nur dem Admin zur Verf\u00fcgung!");
      		document.getElementById("line").focus();
      		return;
      	}

            if (line.indexOf("/erase") != -1 ) {
                  alert("Dieser Befehl steht nur dem Admin zur Verf\u00fcgung!");
      		document.getElementById("line").focus();
      		return;
      	}
     	
      }

      	// nicht erlaubte IRC Befehle zurueckweisen:
            if (line.match(/^\/\S+/)
                  && line.indexOf("/profil") == -1
                  && line.indexOf("/xprofil") == -1
                  && line.indexOf("/showprofil") == -1
                  && line.indexOf("/me") == -1
                  && line.indexOf("/pn") == -1
                  && line.indexOf("/pm") == -1
                  && line.indexOf("/alarm") == -1
                  && line.indexOf("/browser") == -1
                  && line.indexOf("/clear") == -1
                  && line.indexOf("/color") == -1
                  && line.indexOf("/ignore") == -1
                  && line.indexOf("/show") == -1
                  && line.indexOf("/stop") == -1
                  // && line.indexOf("/go") == -1
                  && line.indexOf("/help") == -1
                  && line.indexOf("/hilfe") == -1
                  && line.indexOf("/lizenz") == -1
                  && line.indexOf("/list") == -1
                  && line.indexOf("/nick") == -1
                  && line.indexOf("/name") == -1
                  && line.indexOf("/who") == -1
                  && line.indexOf("/msg") == -1
                  && line.indexOf("/rev") == -1
                  && line.indexOf("/time") == -1
                  && line.indexOf("/ghost") == -1
                  && line.indexOf("/peep") == -1
                  && line.indexOf("/nopeep") == -1
                  && line.indexOf("/maul") == -1
                  && line.indexOf("/ban") == -1
                  && line.indexOf("/kick") == -1
                  && line.indexOf("/erase") == -1
                  && line.indexOf("/add") == -1
                  && line.indexOf("/approve") == -1
                  && line.indexOf("/offline") == -1
                  && line.indexOf("/del") == -1
                  && line.indexOf("/archiv") == -1
                  && line.indexOf("/hallo") == -1
                  && line.indexOf("/topic") == -1
                  && line.indexOf("/away") == -1
                  && line.indexOf("/pixel") == -1
                  && line.indexOf("/youtube") == -1
                  ) {
                  alert("HIer ist kein IRC!\nBitte schau' in der Hilfe, welche Befehle hier verf\u00fcgbar sind.");
      		document.getElementById("line").focus();
      		return;
      	}




//  wozu war das?      cookie_allowed = holeCookie("test");

	nick_angemeldet = holeCookie("nick");
	var nickname = "";
    hello = "yes";
    hello = "yes";

    if(hello != "no" && cookieWert != nickname) {
		document.cookie="nick="+nickname;
		x_add_line("Willkommen im Chat, \"" + handle +"\": " + line, add_cb);
    } else {
		x_add_line(handle + ": " + line, add_cb);
    }

	
	// Anwesenheitscookie erneuern beim Schreiben einer msg
	var ablauf = new Date();
	var Minuten = ablauf.getTime() + (10 * 60 * 1000); 
	ablauf.setTime(Minuten);

	if (typeof gesetzt == "undefined") gesetzt = 0;
	if ((Minuten - gesetzt) > (8 * 60 * 1000)) { // cookie fruehestens nach 8 Minuten schreiben - Perfomance?
		//alert("jetzt cookie schreiben");
		document.cookie="Ankunft="+login+"; expires=" + ablauf.toGMTString();
		gesetzt = Minuten;
	} 

	document.getElementById("line").value = "";
	document.getElementById("line").focus();

}

function set_user(result) {
        if (document.getElementById('uo')) document.getElementById('uo').innerHTML = result;

        if (typeof old_result != "undefined") {
        	if (result.length > old_result.length) {
        		playsound('sounds/rein.swf'); // sound wenn user in den Raum kommt, und bei Betreten eines Raumes, in dem user sind.
        	}
        	if (result.length < old_result.length) {
        		playsound('sounds/raus.swf'); // sound wenn user in den Raum verlaesst, und bei Betreten eines Raumes, in dem user sind.
        	}

        }
        old_result = result;
}

function u_online() {
    // per cookie den refresh vermeiden:
    if (holeCookie) holeCookie("stop");
	x_user_online(set_user);
      if (cookieWert != "stop") {
        if (time1 < disconnect)	setTimeout("u_online()", 7000);
      }
}


function set_user_room(result1) {
        if (document.getElementById('user_pro_room')) document.getElementById('user_pro_room').innerHTML = result1;
}

function u_online_room() {
    // per cookie den refresh vermeiden:
    if (holeCookie) holeCookie("stop");
    if (cookieWert != "stop") {
	  x_user_room(set_user_room);
        if (time1 < disconnect)	setTimeout("u_online_room()", 5555); // darf nicht dynamisch genacht werden, da in der inc feste Lebensdauern
    }
}


function ads(smiley) {
      if (document.getElementById('line').value.indexOf('Deine Nachricht') !== -1) {
		document.getElementById('line').value = "";
	}
	document.getElementById('line').value = document.getElementById('line').value + ' ' + smiley + ' ';
	document.getElementById('line').focus();
}


function load() {

      if (document.getElementById('jaws')) {
         document.getElementById('jaws').setAttribute('aria-relevant', 'all');
         document.getElementById('jaws').setAttribute('aria-live', 'assertive');
      }
      var show_user;
      show_user = "yes";

      var show_rooms;
      show_rooms = "yes";

      var raum;
      if (window.location.search.indexOf("_pr") !== -1) raum = "pr";

      setTimeout("changed_data()",500);

      var klapp_options;
      klapp_options = "1";

      if (sb != 1 && klapp_options != 0) klapp('ae');

      var u_on_room = 1;
      if (sb == 1) u_on_room = 0;
      if (light == "yes") u_on_room = 0;
      if (raum == "pr" && show_rooms == "no" && isadmin != 1 ) u_on_room = 0;
      if (u_on_room == 1) u_online_room();


      var u_on = 1;
      //      if (sb == 1) u_on = 0;  // in der SB u_online zeigen, weil sonst ghost
      if (light == "yes") u_on = 0;
      if (show_user == "no") u_on = 0;
      if (u_on == 1) u_online();


      if (focus != 0 && document.URL.indexOf("Buglist") == -1 && document.URL.indexOf("Info") == -1 ) document.getElementById('line').focus();

      if (light != "yes" && sb != 1) ZeitAnzeigen();

      if (light != "yes" && sb != 1) UhrAnzeigen();
}


function ProfilOeffnen (Adresse) {
  MeinFenster = window.open(Adresse, "Zweitfenster", "width=500,height=550,left=100,top=100");
  MeinFenster.focus();
}


holeCookie("Ankunft");
if (cookieWert != "") {
      window.onload=load;
} else {
      document.write('<p style="font-weight:bold; color:red"><br /><br />Ohne cookies l&auml;uft der Chat leider nicht korrekt. Bitte erlaube cookies in Deinem Browser.<br /></p>');
}
