var status="";
var charLimit=500; //character limit  für Textarea comment

function stat(s){
   status=s;
}


/**
 *  prüft ob die übergebene Emailadress gültig ist
 *  prüft zunächst ob das Feld leer ist, -> gültig
 *  andernfalls wird Syntaxprüfung vorgenommen
 *  
 * @param s
 * @return
 */
function check_email(s)
{var email=s.trim();
 if (email == "") return true;
 var ret=checkEMail(email);
 if(! ret) alert("das ist keine formal gültige Emailadresse : \n        "+email+"\nDie Adresse sollte auch existieren!");
 return ret;
 }

/** testet ob eine übergebene Mailadresse formal gültig ist 
 *  Die Adresse wird später auch noch per DNS überprüft
 *  
 * @param s		übergebene Mailadresse
 * @return 		true bei gültiger,  false bei ungültiger Adresse
 */
function checkEMail(s)
{
	var res = false;
	var reg = null;
	/*
var a = false;
if(typeof(RegExp) == 'function')
{
 var b = new RegExp('abc');
 if(b.test('abc') === true){a = true;}
 }

if(a === true)
{ 
*/
reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                  '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                  '(\\.)([a-zA-Z]{2,4})$');
 res = (reg.test(s));
/*}
else
{  
res = (s.search('@') >= 1 &&
        s.lastIndexOf('.') > s.search('@') &&
        s.lastIndexOf('.') >= s.length-5);
// } */
return (res);
}

/**
 * Prüft str auf Alpha-Inhalt und ungleich leer (mindestens 1 Zeichen)
 * @param str
 * @return
 */
function check_alpha(str) {
    var res=0; 
	var reg = new RegExp('^[a-zA-ZüöäßÜÖÄ]+[a-zA-Z0-9üöäßÜÖÄ&!?;:()\\s\\.\\_\\[\\]/-]+$');
	res =reg.test(str);
	return res;
}

/**
 *  Prüft eine Telefonnummer auf Gültigkeit
 *  erlaubte Zeichen 0-9  + - / ()
 * @param str 	die Telefonnummer
 * @return
 */
function check_phone(str) {
    var res=0; 
	var reg = new RegExp('^[+-\\/0-9 ()]{3,25}$');
	res =reg.test(str);
	return res;
}
/**
 * 
 * @return
 */
function checkCommentFormular() {
	var valid=true;
	var ret=true;
	var msg="";
	var code=document.getElementById("com_code").value;
	var email=document.getElementById("com_email").value;
	var nachname=document.getElementById("com_name").value;
	var vorname=document.getElementById("com_vorname").value;
	var title=document.getElementById("com_title").value;
	var posting=document.getElementById("com_posting").value;
	if(code.trim()=="" )  { valid = false; msg += "Code : "+code+ "Eingabe erforderlich\n"; }
	if(! checkEMail(email.trim()))  { valid = false; msg += "Mailadresse : "+email+ " ungültig \n"; }
	if(! check_alpha(nachname.trim())) { valid = false; msg += "Nachname : "+nachname+"  ungültig \n"; }
	if(! check_alpha(vorname.trim())) { valid = false; msg += "Vorname : "+vorname+"  ungültig \n"; }
	if(! check_alpha(title.trim())) { valid = false; msg += "Titel : "+title+"  ungültig \n"; }
	
	if(valid) {storeComment();}
	else {alert("Fehlernachricht checkForm() :\n"+msg); }
}

function clearCommentFormular() {
	document.getElementById("com_name").value="";
	document.getElementById("com_vorname").value="";
	document.getElementById("com_email").value="";
	document.getElementById("com_title").value="";
	document.getElementById("com_posting").value="";
	document.getElementById("code").value="";
	return false;
}
/**
 *  fügt smilies an der Cursorposition ein
 *  der fixe name com_posting muß noch überarbeitet (variabel) werden
 *  
 * @param thesmilie
 * @return
 */
function smilie(thesmilie) {
     var textfeld=document.getElementById('com_posting');
     var text=document.getElementById('com_posting').value;
     if (textfeld.createTextRange && textfeld.caretPos) {
          var caretPos = textfeld.caretPos;
          caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? thesmilie + ' ' : thesmilie;
     } else if (textfeld.selectionStart || textfeld.selectionStart == '0') {
          var start_selection = textfeld.selectionStart;
          var end_selection = textfeld.selectionEnd;
          var start = (textfeld.value).substring(0, start_selection);
          var middle = thesmilie;
          var end = (textfeld.value).substring(end_selection, textfeld.textLength);
          textfeld.value = start + middle + end;
          textfeld.selectionStart = end_selection + middle.length; textfeld.selectionEnd = start_selection + middle.length;
     } else { textfeld.value += thesmilie; }
     textfeld.focus();
}

function storeCaret( id ) {
   if (id.createTextRange) id.caretPos = document.selection.createRange().duplicate();
 }

/**
 * fügt einen UBB-Code für einen selektierten Bereich ein.
 * Falls kein Bereich selektiert ist, wird ein Text angefordert.
 * 
 * @param feld 
 * @param ubbcode
 * @param prompttext
 * @param beschreibung
 * @return
 */
function insertcode(feld,ubbcode,prompttext,beschreibung) {
   var code = "";
   var textfeld = document.getElementById(feld);
   if (ubbcode == "IMG") {
       textprint = prompt("Wir weisen Sie darauf hin, das nur Bilder eingebunden werden dürfen, auf denen keine Copyright liegt. Diese Ausgabe wird erzeugt: ["+ubbcode+"]BILD-LINK[/"+ubbcode+"]","http://"); }
   else if (ubbcode == "URL") {
       textprint = prompt("Bitte geben Sie die Internetadresse ein, auf die Sie verlinken möchten.\nDiese Ausgabe wird erzeugt: ["+ubbcode+"]URL[/"+ubbcode+"]","http://"); }

   // alert(textfeld+"   "+textfeld.selectionStart+"  "+ textfeld.selectionEnd+"\n"+ubbcode);

   if (textfeld.selectionEnd > textfeld.selectionStart ) {
      textprint = (textfeld.value).substring(textfeld.selectionStart,textfeld.selectionEnd);
      code = "["+ubbcode+"]"+textprint+"[/"+ubbcode+"] ";
     javascript:smilie(code);
      return;
      }
   else { textprint = prompt("Bitte geben Sie den Text ein, den Sie "+beschreibung+" wollen\nDiese Ausgabe wird erzeugt: ["+ubbcode+"]IHR TEXT[/"+ubbcode+"]",prompttext); }

   if ((textprint != null) && (textprint != ""))  code = "["+ubbcode+"]"+textprint+"[/"+ubbcode+"] ";
   if (textprint){ javascript:smilie(code); }
}


function returntoforum() {
   return confirm("Sind Sie wirklich sicher, das Sie Ihren Beitrag nicht abschicken wollen? ");
 }

/**    
 *   erzeugt den AJAX-Call für die Speicherung der Daten.
 *   Da in den Daten auch teilweise Blanks und Sonderzeichen vorhanden sind
 *   werden sie alle durch  encodeURIComponent  gejagt.
 
 *  encodeURI kodiert werden alle Zeichen außer den folgenden:
 * 0 bis 9
 * A bis Z
 * a bis z
 *- _ . ! ~ * ' ( )
 * , / ? : @ & = + $
 * encodeURIComponent kodiert auch
 * , / ? : @ & = + $
 *  das ist erforderlich, damit ein & nicht als Beginn eines neuen Parameters gilt.
 *  
 * Kodiert werden also beispielsweise deutsche Umlaute und Sonderzeichen,
 * auch Leerzeichen, eckige und geschweifte Klammern usw.
 *   
 * Encodes a Uniform Resource Identifier (URI) by replacing each instance of 
 * certain characters by one, two, or three escape sequences representing 
 * the UTF-8 encoding of the character.
 *   
 */
  function storeComment()  {
     var pars="mode=store";
     var i=0;
     var parstr="";
     if(dbg) { dbg_show("\n\n\n storeComment() : filename="+flnname_com); }
     var nachname=document.getElementById("com_name").value;
     var vorname=document.getElementById("com_vorname").value;
     var email=document.getElementById("com_email").value;
     var title=document.getElementById("com_title").value;
     var title=document.getElementById("com_title").value;
     var code=document.getElementById("com_code").value;   
     var posting=document.getElementById("com_posting").value;  
     if(dbg) dbg_show("\nFilename="+flnname_com); 
 
     if((flnname_com.length) > 0) { 
	      // ohne encodeURIComponent wurde der POST nicht gesendet   
	      // leere Felder werden dann mit encodeUri als %20 kodiert
	  	   pars += "&fln="+encodeURIComponent("../comment/"+flnname_com)+"&nachname="+encodeURIComponent(nachname)+
	  	   			"&vorname="+encodeURIComponent(vorname)+"&email="+encodeURIComponent(email)+
	  	           "&title="+encodeURIComponent(title)+"&code="+encodeURIComponent(code)+
	  	           "&posting="+encodeURIComponent(posting.trim());
	  	         
		 var url="/common_classes/ajax/store_comment.php";
	     var myAjaxStore = new Ajax.Request(url,
	       {
	           method: 'post',
	           parameters: pars,
	           onComplete: comment_store_complete
	       });
     }
     else { alert(__LINE__+"Kein Dateiname vorhanden"); }
 }

/**
*   Callback-funktion von store 
*   mode könnte evtl noch ausgewertet werden.
*   
*   
*    @param originalRequest  Rückgabe der 
*/
function comment_store_complete(originalRequest)
{   if(dbg) dbg_show(originalRequest.responseText);
      var text=originalRequest.responseText;
      var mode="";
      var ret="";
      var pos=text.indexOf("mode=");
        if(pos != -1) {
  	    	  ret=text.substring(pos+6);
	//    	  Der Benutzer kann/soll  nicht mehr als einen Kommentar einfügen können
	// 		  weitere nur bei neuem Aufruf
	    	  var p=ret.indexOf('comtext">');
	    	  if(p> 0) {
	    		  document.getElementById("insCOMMENT").innerHTML=ret.substring(p+9, ret.length-7);
	    		  document.getElementById("capt").src = src_new(document.getElementById("capt").src) + "?" + String(new Date());
	    	  }
	    	  else {
	    		  document.getElementById("insCOMMENT").innerHTML=ret;
	    	 	  }
       }
	  else {  pos=text.indexOf("error=");
	       if(pos != -1) {
	    	   ret=text.substr(pos+13); 		//,text.length-1);
	    	   alert(pos+" err   "+ret);
	    	   document.getElementById("insCOMMENT").innerHTML='<p><span class="comErr">ERROR : </span><br>'+ret+'</p>';
	       }   
	       else {  alert("Unbekannter Error mode="+mode+"   \n"+ret); }
	  }
      // src verweist zwar auf captcha.php aber ein reload muß hier erzwungen werden, 
      // ohne dass der Browser auf den cache zugreift. Durch das Anhängen von date()
      // wird in jedem Fall ein Load durchgeführt ( ohne cache ).
      document.getElementById("capt").src = src_new(document.getElementById("capt").src) + "?" + String(new Date());
   return;
}

/**
 *  verhindert das anwachsen des 
 * @param str
 * @return
 */
function src_new(str) {
	  var qmark=str.indexOf("?");
	  if(qmark >0) return str.substr(0,qmark);
	  else return str;

}

function postUserComment() {
	document.getElementById('commentform').submit();
}

function gdelay() {setTimeout("gcount()",200);}
function gcount() {
  var gUndo="";
  var pos=0;
  var txt="";
  txt=document.getElementById('commentform').com_posting.value;
  if (txt.length>charLimit) {document.getElementById('commentform').com_posting.value=txt.substring(0,charLimit);}
  document.getElementById('commentform').maxcom.value=(charLimit-txt.length)+" Zeichen verbleiben";
  var t2=txt.toLowerCase();
  pos=t2.indexOf("<a href=");
  if (pos == -1 ){pos= t2.indexOf("http://")}
  if(pos != -1){
    alert("Es sind keine HTML Befehle erlaubt\n SPAM  will ich nicht!!"); 
    gUndo=t.substring(0,pos);    					// Ungültige Sequenz abschneiden
    document.getElementById('commentform').com_posting.value=gUndo; // und weg damit
  }
   else {gUndo=txt;}
} 

  /**
   * Die Funktion ersetzt mit Hilfe von Ajax.Updater den Inhalt der augenblicklich
   * angezeigten Kommentare duch den Inhalt der angeklickten Datei. Die Nummer der
   * Datei wird übergeben, der rele Dateiname daraus berechnet.
   * 
   * @param neu		Seitennummer
   * @param max		Maximale Anzahl der Seiten
   * @return
   */
  function switch_content(neu,max){
	  seite="";
	  if(neu > 0)seite="_"+(max-neu);
	  var actfln=flnname_com.substr(0,flnname_com.length -4);
	  var fln="/common_classes/comment/"+actfln+seite+".php";
 
	  loadContent(fln,"com_pages");
  }
  
  /**
   * Holt die angesprochene Datei und ersetzt den Inhalt des angebenenen Elements (idR. Div)
   * gdurch den gelesenen Inhalt.
   * 
   * @param file		Voller Path
   * @param element		zu ersezendes Element
   * @return
   */
  function loadContent(file,element)
  {
    /* Nun führen wir einfach den Ajax.Updater aus mit den definierten Parametern.
     Außerdem geben wir dem Updater noch die Methode "GET" mit damit er sich den Content "HOLT"
    */
    new Ajax.Updater(element,file, {
      method: 'get'
    });
  }

//  werden hier nicht verwendet  
//  function makeNewNote(){
//	    mainDivElement = document.getElementById("mainDiv");
//
//	    newNote = document.createElement("div");
//	    newNote.setAttribute("id", "note"+getCurrentNumber());
// //	...
//
//	      editLink = getEditLink("note"+getCurrentNumber());
//	      newNote.appendChild(editLink);
//	      newNote.appendChild(document.createElement("br"));
//	 
//	      noteText = document.createTextNode("New Form");
//	      newNote.appendChild(noteText);
//
//	    mainDivElement.appendChild(newNote);
//
//	    incrementCurrent();
//
//	  }
//
//	    function getEditLink(thisId){
//	      editLink = document.createElement("a");
//	      linkText = document.createTextNode("edit");
//
//	      editLink.setAttribute("href", "javascript:editNote('"+thisId+"')");
//	        
//	      editLink.appendChild(linkText);
//	      return editLink;
//	    }
//	    
//	    function editNote(editLink){
//	        theDiv = document.getElementById(editLink);
//	        newText = prompt("What should the note say?");
//
//	        oldNode = theDiv.firstChild.nextSibling.nextSibling;
//	        theDiv.removeChild(oldNode);
//
//	        newNode = document.createTextNode(newText);
//	        theDiv.appendChild(newNode);
//
//	      }
//	    
//	    function editNote(editLink){
//	        theDiv = document.getElementById(editLink);
//	        newText = prompt("What should the note say?");
//
//	        oldNode = theDiv.firstChild.nextSibling.nextSibling;
//	        newNode = document.createTextNode(newText);
//	        theDiv.replaceChild(newNode, oldNode);
//	      }
//
//	    function editNote(editLink){
//	        theDiv = document.getElementById(editLink);
//	        newText = prompt("What should the note say?");
//
//	        theDiv.firstChild.nextSibling.nextSibling.nodeValue=newText;
//	      }

