﻿       
        var XMLHttpRequestObject = false;

            /*erzeugt HTTP-Request Objekt*/
                if (window.XMLHttpRequest) {
                XMLHttpRequestObject = new XMLHttpRequest();
              } else if (window.ActiveXObject) {
                XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
              }

        var count=0;
        var msgCount=10;

					//TODO: umbenennen "pfad" ist hier eigentlich nur mehr der dateiname.. z.b: index.html
              function getMessages(filename)
              {
                //Hack: wenn verzeichnis aufgerufen wird, und nicht index.php dann ist pfad leer.
				//folgendes befüllt es wieder... aber was ist bei z.B. php5..? fehler! 
				if(filename==""){filename="index.php"}
				pathname =window.location.pathname;
			    pathname = pathname.substring(1, pathname.lastIndexOf("/")+1);  //ermittelt den pfad (ohne www.drehu...at und ohne index.php
				
				if(XMLHttpRequestObject) {
                    /* erzeugt den Request. Das erste Argument der "open function" ist (POST/GET)
                       und das zweite Argument ist de URL! (man kann auch parameter anhÃ¤ngen)
                     */
                  XMLHttpRequestObject.open("GET", '/getComments.php?action=getComments&id='+filename+'&pathname='+pathname+'&msgCount='+msgCount);
                  count=count+20;

                  /* Function die aufgerufen wird, bei state-Änderung und wenn die RESPONSE empfangen wird */
                  XMLHttpRequestObject.onreadystatechange = function()
                  {
                    if (XMLHttpRequestObject.readyState == 4 &&
                      XMLHttpRequestObject.status == 200) {

                        /* man hat nun die Response
                        mit "responseText" bekommt man den inhalt des XmlhttpRequest Objects*/
                        if (XMLHttpRequestObject.overrideMimeType) {
                         XMLHttpRequestObject.overrideMimeType('text/xml');
                        }
                   
                       var response = XMLHttpRequestObject.responseXML;
                       var wurzel = response.getElementsByTagName("content")[0];
						

                      //es werden IMMER nur 10 nachrichten angezeigt.. 
                      for(var i=9;i>=0;i--){ 
                          if(response.getElementsByTagName("text")[i] != null){
                           var id       = response.getElementsByTagName("message")[i].getAttribute('id');
                           var text     = response.getElementsByTagName("text")[i].childNodes[0].nodeValue;						   
                           var name     = response.getElementsByTagName("name")[i].childNodes[0].nodeValue;						  
                           var datum    = response.getElementsByTagName("datum")[i].childNodes[0].nodeValue;
                           printMessage(text,name, datum, id);     //Anzeige der eigenen Nachricht im Chatfenster
                          } 
                           else{continue;} 
                      }
                      
                       
                   }
                  }
                /* Sende die Daten. Bei der POST-methode ist das NICHT null */
                  XMLHttpRequestObject.send(null);
                }
              }


              function sendMessage(pfad, name, text){
                  
				    filename = getFileName(pfad); //danach index.php oder turnier.php falls "" dann index.php
					
					pathname =window.location.pathname;
			    	pathname = pathname.substring(1, pathname.lastIndexOf("/")+1); 
					//pfadname = getPfadName(pfad);
					//Hack: wenn verzeichnis aufgerufen wird, und nicht index.php dann ist pfad leer.
				//folgendes befüllt es wieder... aber was ist bei z.B. php5..? fehler! 
				
                     if(text !=''){

                          if(name == ''){
                          name= "Anonym"; 
                          }

                          if(XMLHttpRequestObject) {
                                XMLHttpRequestObject.open("POST", "/postComments.php",true);
                                    XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded") ;
                                   if (XMLHttpRequestObject.overrideMimeType) {
                                         XMLHttpRequestObject.overrideMimeType('text/xml');
                         //um XML-daten empfangen zu können:
                         //1) content type auf xml einstellen(vorsicht, muss an erster stelle stehen
                         //2) wenns noch imma ned geht, dann mit einem reinen HTML-Texteditor wie
                         //z.B. Phase5, so zeigt er ein paar sonderbare Zeichen zu Beginn des Dokumentes. diese entfernen und speichern
                                      }
                                    XMLHttpRequestObject.onreadystatechange = function(){

                                  if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {

                              //die Response die vom php zurückkommt! gibt das ausgelesene XML zurück
                              var response = XMLHttpRequestObject.responseXML;
                              var id       = response.getElementsByTagName("message")[0].getAttribute('id');
							  var text     = response.getElementsByTagName("text")[0].childNodes[0].nodeValue;                             
							  var name     = response.getElementsByTagName("name")[0].childNodes[0].nodeValue;
                              var datum    = response.getElementsByTagName("datum")[0].childNodes[0].nodeValue;                           
                              printMessage(text,name, datum, id);     //Anzeige der eigenen Nachricht im Chatfenster
							  deleteText();	
                            }
                         }
                        
						 name= escape(name);
                         text= escape(text);
						
                          XMLHttpRequestObject.send('action=postComment&filename='+filename +'&pathname='+pathname+'&name='+name+'&text='+text);
                          }
                     }
                     else{
                     alert("Bitte gib eine Nachricht ein!");
                     }
              }

             
             
			
			 /*
              * löscht den Text vom inputfeld
              */			 
			 function deleteText(){
			 	document.getElementById("name").value ="";
				document.getElementById("comment").value ="";				
			 }
			 
			 
			 /*
			  * beim uploaden des Bilderalbums
			  */
			 function uploadFile(){
			 	document.getElementById("chooseFile").disabled = true;	
				document.getElementById("submitFile").disabled = true;
				
			 }
			 			 
			 
           /*
            *  gibt den geschriebenen Kommentar aus
            */
            function printMessage(text,name, datum, id){

              var infoTag = document.createElement('p');
              infoTag.setAttribute('class', 'messageInfo');

              var infoTag2 = document.createElement('p');
              infoTag2.setAttribute('class', 'messageText');
              
              var messageTag = document.createElement('div');
              messageTag.setAttribute('class', 'message');
              messageTag.setAttribute('id', id);

              var strongTag1= document.createElement('strong');
              var strongTag2= document.createElement('strong');

                var tnName  = document.createTextNode(name);
                var tnText  = document.createTextNode(text);
                var tnDatum = document.createTextNode(datum);
                var tnAM = document.createTextNode(" am ");

                strongTag1.appendChild(tnName);
                strongTag2.appendChild(tnDatum);

                infoTag.appendChild(strongTag1);
                infoTag.appendChild(tnAM);
                infoTag.appendChild(strongTag2);

                infoTag2.appendChild(tnText);

             //hängt element unten an:
             //document.getElementById('messages').appendChild(infoTag);
             //document.getElementById('messages').appendChild(infoTag2);
             
             messageTag.appendChild(infoTag);
             messageTag.appendChild(infoTag2);
                        
             //fügt element immer ganz oben ein:
             document.getElementById("messages").insertBefore(messageTag, document.getElementById("messages").firstChild);
            // document.getElementById("messages").insertBefore(infoTag, document.getElementById("messages").firstChild);
             }




       /* open and closes "Kommentare" */
          var open=false;

         function showComments(pfad){
         filename = getFileName(pfad);

           if(!open){
             document.getElementById('comments').style.display = 'block';
             open = !open;
             getMessages(filename);
            }
           else{
            open = !open;
            document.getElementById('comments').style.display = 'none';
           }
         }


         /*
         *  Diese Funktion wird aufgerufen wenn man auf "more Messages" klickt,
         *  dann werden die nächsten 10 messages abgerufen
         */
         function getMoreMessages(pfad){
                 msgCount= msgCount+10;
                 getMessages(pfad);
         }
			
		
		
		function chooseAlbum(dirname, title){
				//setDirectory in Innertext und HIDDEN field(dort noch escaped!)
				document.getElementById("dirName").innerText = document.getElementById("dirName").textContent = unescape(dirname);
				document.getElementById("directory").value = dirname;
				title = escape(title);
				//setAlbumTitle in InnerText und HiddenField(dort noch escaped!) 
				document.getElementById("albumTitle").value = title;
				document.getElementById("albumID").innerText = document.getElementById("albumID").textContent = unescape(title);
				
				//löscht errormessage falls vorhanden
				document.getElementById("errMsg").innerText = document.getElementById("errMsg").textContent = "";
				//löscht Text von Eingabefeld
				document.getElementById("newname").value ="";
				
				document.getElementById("uploadForm").style.display = 'block';
				
			return false;
		}
		
		function checkFile(){
			
			if(document.getElementById("chooseFile").value=="" || document.getElementById("password").value==""){
				return false;
							}
			else{
				return true;
			}
		}
		
		/*
		 * Holt sich den Namen des Albums
		 * -->Trim darf nicht leer sein.
		 * -->escaped/unescaped ihn.(keine illegalen zeichen)
		 * und so übermittelt.. php muss zeichen zusätzlich nochmals überprüfen
		 */
		function setAlbumTitle(){
			var name = document.getElementById("newname").value;
			name = trim(name); //leerzeichen am anfang und ende entfernen.
			
			//entfernt alle nichtalphanummerischen Zeichen
			var dirname= removeNoneAlphanumeric(name);
			dirname = trim(dirname);
			
			name = escape(name);
			//wenn der Name nur aus leerzeichen besteht, oder kein gültiger verzeichnisnamen erstellt werden kann
			if (name == "" || dirname == "") {
				document.getElementById("errMsg").innerText  = document.getElementById("errMsg").textContent = "Bitte gib einen anderen Namen ein. Die verwendeten Zeichen sind nicht erlaubt!";
				
				//löscht werte in hidden-fields
				document.getElementById("albumTitle").value  = "";
				document.getElementById("directory").value   = "";
				//löscht werte in Innertext
				document.getElementById("albumID").innerText = document.getElementById("albumID").textContent = "";
				document.getElementById("dirName").innerText = document.getElementById("dirName").textContent = "";
				document.getElementById("uploadForm").style.display = 'none';
			}
			else {
				//setDirectory in Innertext und HIDDEN field(dort noch escaped!)
				document.getElementById("dirName").innerText = document.getElementById("dirName").textContent = unescape(dirname);
				document.getElementById("directory").value = dirname;
				
				//setAlbumTitle in InnerText und HiddenField(dort noch escaped!) 
				document.getElementById("albumTitle").value = name;
				document.getElementById("albumID").innerText = document.getElementById("albumID").textContent = unescape(name);
				
				//löscht errormessage falls vorhanden
				document.getElementById("errMsg").innerText = document.getElementById("errMsg").textContent = "";
				document.getElementById("uploadForm").style.display = 'block';
			}
		}
		
		
		
		function removeNoneAlphanumeric(name){
			var name = name.replace(/ä/g,"a");
			var name = name.replace(/ö/g,"o");			
			var name = name.replace(/ü/g,"u");
			var name = name.replace(/Ä/g,"A");
			var name = name.replace(/Ö/g,"O");			
			var name = name.replace(/Ü/g,"U");
			var name = name.replace(/ß/g,"ss");
			var name = name.replace(/ñ/g,"n");
			var name = name.replace(/ó/g,"o");
			var name = name.replace(/ò/g,"o");
			name = name.replace(/[^a-zA-Z 0-9 \-]+/g,'');  //remove allnonalphanumeric			
			name = name.split(' ').join('-');			//remove allwhitespace
			return name;
		}
		

 		// Erst führende, dann Abschließende Whitespaces entfernen
  		// und das Ergebnis dieser Operationen zurückliefern
		function trim (zeichenkette) {  
  			return zeichenkette.replace (/^\s+/, '').replace (/\s+$/, '');
		}	


	/* =============================================*/


            /*
            * bekommt eine Url und gibt dateinamen zurück zB yourbase.at/main.php --> main.php
            */
             function getFileName(url){
                  var strFilename;
              var strHref;
              strHref = url.replace(/\//g,"\\");
              var iIdx = strHref.lastIndexOf("\\");
              if (-1<iIdx) {
                strFilename = strHref.substring(iIdx+1);
                } else {
                strFilename = strHref;
              }
			  
			  
			  strFilename = strFilename.substring(0, strFilename.indexOf(".php")+4);
			  
        return strFilename;
              }
