/*Leerzeichen entfernen, mit Parameter l/r, voreinst. l+r*/
/* Syntax: var_mit_string.stripspace(dir);*/
String.prototype.stripspace = function(dir) {
  switch(dir) {
      case 'r':
        return this.replace(/\s+$/g,'');
          break;
      case 'l':
        return this.replace(/^\s+/g,'');
          break;
      default:
        return this.replace(/(^\s+|\s+$)/g,'');
    }
}
/*Newlines entfernen*/
String.prototype.chomp = function() {
  return this.replace(/\n$/,'');
}
// Beginn JS
/* # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
Angepasstes Universal-Javascript-Funtktionsduo - angepasst und
ins deutsche &uuml;bertragen von R. Hempel erzWEB Agentur
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
JS-Funktionsduo zur Formular&uuml;berpr&uuml;fung - universell verwendbar - funktioniert
im IE / NS / Mozilla / Firefox
&Uuml;bergabe/Aufruf: MM_validateForm('feldname','Meldung_f_Feld','checkart')
immer Dreiergruppen: ('HTM-feldname','alert-Feldname','Art')
Art: [R|N]inRange1:5     erforderl|nicht erf. - Zahlbereich (hier 1-5)
     [R|N]isEmail        erforderl|nicht erf. - Email-Check
     							 (auf @ und ., Länge ges.mind. 7 Z. (TLD mind. 2 Z., domain mind. 3) . )
     [R|N]isDate			 erforderl|nicht erf. - auf Datum in Form TT.MM.JJJJ
     [R|N]isTelNr			 erfoderl|nicht erf. - auf Telefonnummer nur Ziffern, - und / erlaubt

     [R|N]1              nicht erforderl. - wenn drin, dann Zahl(jede bel. 1-stell. Ziffer nach R geht hier)
     [R0|N0]digits4:6	 Nur Zahlen mit hier mind. 4, h&ouml;chstens 6 Stellen ohne ":" Mindestl&auml;nge
     [R|N]isLength1:5	 Anzahl Stellen von 1 bis 5, bei ohne ":" Mindestl&auml;nge
#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
Einsatz im Submit-Button-Tag bzw. Link zum Absenden des Forms f&uuml;r das onClick-Ereignis wie folgt:
- Triplett aus 'Feldname','Meldung','Prüfterm' für jedes zu püfende Feld
 = "onclick="MM_validateForm('Feldname','Meldung','Prüfterm','ff_name=','Name','RisLength3','ff_mailadress=','E-Mail','RisEmail','ff_objektnr=','Objektnummer','R0digits9:9','ff_strasse=','Strasse','RisLength5','ff_nummer=','Nr.','R','ff_plz=','PLZ','R0digits5:5','ff_wohnort=','Ort','RisLength3');return document.MM_returnValue"";
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# */
function MM_findObj(n, d) { //v3.0 &copy Macromedia - Anpassung R. Hemnpel HASO-Computer
  var p,i,x;
  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all)x=d.all[n];
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  return x;
}
// #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .# //
function MM_validateForm() { //v3.0 &copy Macromedia - Anpassung R. Hemnpel HASO-Computer
var i,p,q,nm,test,num,min,max,errors='',nerrs=0,plural,args=MM_validateForm.arguments,valz;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if(args[i+1]) { nm=args[i+1] };  //wenn val wahr
        if ( (val=val.value.replace(/^\\s*/,''))!="" ) { // wenn val nach Leerzeichen raus raus nicht leer

          if (test.indexOf('isEmail')!=-1) { // Test auf EMail
	          p=val.indexOf('\@');l=val.length; d=val.lastIndexOf('.');
	          ls=val.indexOf(' '); t=val.substring(d+1).length;
	            if (p<1 || p==(val.length-6) || d<4 || l<7 || t<2 || ls>-1) {
	            ++nerrs;errors+='- '+nm+' scheint keine gültige eMail-Adresse zu sein.\n';
            	}// E if emailteile vergleichen
          // E test auf Mail - - - - - - - - - - - - - - - - - - - - - - - - - -
          } else if (test.indexOf('isDate')!=-1){ // A Test auf Datum
	          pcheck=0;numcheck=0;lcheck=0;
	          p=val.indexOf('.'); dag=val.substr(0,p); st=val.substr(p+1);
	          p2=st.indexOf('.'); mon=val.substr(p+1,p2); jar=st.substr(p2+1);
	          ldag = dag.length; lmon = mon.length; ljar=jar.length;
	          numdag = parseFloat(dag); nummon=parseFloat(mon); numjar=parseFloat(jar);
	            if (p ==-1 || p2 ==-1) pcheck = 1;
	            if (ldag !=2 || lmon !=2 || ljar  != 4) lcheck = 1;
	            if (isNaN(numdag) || isNaN(nummon) || isNaN(numjar)) numcheck = 1;
	          if (pcheck == 1 || lcheck==1 || numcheck==1){
	          ++nerrs;errors+='- '+nm+' scheint kein gültiges Datum zu sein.\n\t[ Bitte Form TT.MM.JJJJ verwenden - Bsp.: 03.03.1960 ]';
            }
          // E test auf Datum - - - - - - - - - - - - - - - - - - - - - - - - -
			 } else if (test.indexOf('isTelNr')!=-1){ // A Test auf Telefonnummer
	          valz = val.replace(/^\+/,''); 
	          valz = valz.replace(/\s/g,''); 
	          valz = valz.replace(/\//g,'');
	          valz = valz.replace(/-/g,''); 
	          valz = valz.replace(/\./g,'x');
	          valz = valz.replace (/\((0)\)/, '$1');
	          num = parseFloat(valz); //alert('valz hat den wert\n\t'+valz+'\nnum hat den wert\n\t'+num+'');
	            if (isNaN(valz)) { // check auf Ziffern
	            ++nerrs;errors+='- '+nm+' enthält ungültige Zeichen!.\n\t[ Nur Ziffern, "-", "/", Leerzeichen und\n\t"+" vor internat. Vorwahl erlaubt -  Bsp.: +49 / 030/124-35 ]\n';
	            } else if (valz.length < 6){
                     ++nerrs;errors+='- '+nm+' ist keine gültige Telefonnummer\n\t[zuwenig Stellen - Vorwahl und Nr. eingeben - Bsp.:030/1234 ]\n';}
          // E Test auf Telefonnummer - - - - - - - - - - - - - - - - - - - - -
          } else if (test.indexOf('isURL')!=-1){ // Test auf URL
	          w=val.indexOf('www'); p=val.indexOf('.'); st = val.substr(p+1);
	          d=st.indexOf('.');l=val.length; h=val.indexOf('http');h1=val.indexOf('http://');
	          sl=val.indexOf('//');
	            if (h!=-1 || h1!=-1) { ++nerrs; errors+='- '+nm+' bitte ohne "http://" eingeben\n'; }
	            else if (w != 0) {  ++nerrs; errors+='- '+nm+' muss mit "www" beginnen.\n'; }
	            else if (l < 10 || p<3 || d<3) { ++nerrs; errors+='- '+nm+' ist für eine gültige URL zu kurz\nund/oder Punkte als Trennzeichen nicht vorhanden\n(Eingabe bitte in der Form: www.domain.de)'; }
	            else if ( sl!=-1) { ++nerrs; errors+='- '+nm+'// in URL nicht erlaubt.\n'; }
          // E Test auf URL - - - - - - - - - - - - - - - - - - - - - - - - - -
          }else if (test.indexOf('isLength')!=-1){ // A Test auf Laenge
             dp = test.indexOf(':'); li = (test.indexOf('isLength') + 8);
             if (dp !=-1){
             minl = test.substr(li,dp-li);maxl = test.substr(dp + 1);
             } else {
             minl = test.substr(li); maxl = '';
             } // E if/else minl:maxl
             if (minl!=maxl && val.length < minl){
             ++nerrs;errors+='- '+nm+' muss mindestens '+minl+' Zeichen lang sein\n';
             }else if (maxl!='' && minl!=maxl && val.length > maxl){
             ++nerrs;errors+='- '+nm+' darf höchstens '+maxl+' Zeichen lang sein\n';
             } else if ( minl==maxl &&  val.length != minl ){
             ++nerrs;errors+='- '+nm+' muss '+minl+' Zeichen lang sein\n';
             }// E minl/maxl
          // E Test auf Länge - - - - - - - - - - - - - - - - - - - - - - - - -
          } //else if (test!='R'){// Test auf nichtPflicht, dann Test auf Zahl
			 else if (isFinite(test.charAt(1))){// Test ob auf Zahl geprüft werden soll
          valz = val.replace(/\\s/g,''); //Leerzeichen weg (Gruppierte Zahlen)
          valz = valz.replace(/,/g,'.'); // Komma durch Punkt ersetzen - JS-Konvention f. Dezimalzahlen
          dt = valz.indexOf('.'); //valzg = valz.substr(0,dt); // Ganzzahlteil vor Komma rausfiltern (wegen Stellenzahl)
          if (dt>=0) {valzg = valz.substr(0,dt);} else {valzg = valz;} // Ganzzahlteil vor Komma rausfiltern (wegen Stellenzahl)
          // alert ('valz ist jetzt '+valz+'\nvalzg ist '+valzg+'');
          num = parseFloat(valz);
            if (test.indexOf('digits' != -1)){ // Test auf Anzahl Stellen min[:max]
            dp = test.indexOf(':'); li = (test.indexOf('digits') + 6);
               if (dp !=-1){
               minl = test.substr(li,dp-li);maxl = test.substr(dp + 1);
               } else {
               minl = test.substr(li); maxl = '';
               }// E if/else minl:maxl
	            if (isNaN(valz)){
	            // alert ('valz isNaN\n'+val.length+' Zeichen lang\nKeine Zahl!');
	            ++nerrs;errors+='- '+nm+' muss eine Zahl sein\n';
	            } else {
	              if ( minl!=maxl && valzg.length < minl ){//maxl !='' &&
	              ++nerrs;errors+='- '+nm+' muss mindestens eine '+minl+' stellige Zahl sein.\n';
	              } else if (maxl != '' && minl!=maxl && valzg.length > maxl){
	              ++nerrs;errors+='- '+nm+' darf höchstens eine '+maxl+' stellige Zahl sein.\n';
	              } else if (minl==maxl && valzg.length != minl && minl ){
	              ++nerrs;errors+='- '+nm+' muss eine '+minl+' stellige Zahl sein.\n';
	              }
	              // E minl/maxl
	            } // E if/else isNaN
            } // e test auf digits
            if (test.indexOf('inRange') != -1) { // Test auf Bereich von:bis
            p=test.indexOf(':');min=test.substring(8,p);max=test.substring(p+1);
              if (num<min || max<num) {
              ++nerrs;errors+='- '+nm+' muss eine Zahl zwischen '+min+' und '+max+' sein.\n';
              } // E Zahl Bereich abfragen
            } // E inRange Test
          } //E if isFinite
       // E if !R
       } else if (test.charAt(0) == 'R'){ // check auf Pflichtfeld
       ++nerrs;errors += '- Eingabe im Feld '+nm+' erforderlich.\n';
       } // E if val nicht leer / vorher Leerz. und Perl-Varnamen entfernt
    } //E for (jedes übergebene Werte-Triplet
}//E if val definiert
  if (errors) {
      if(nerrs==1)plural='Folgender Fehler';else plural='Folgende '+nerrs+' Fehler';
      alert(plural+' bei der Eingabe:\n'+errors);
      }
  document.MM_returnValue = (errors == '');
}

/* # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
Scrippt zur Überprüfung Dateinamen in Dateifeldern auf Leerzeichen und Umlaute*/
function check_dateifeld(feldname){
var felder = feldname.split(",");
var feldwert,errors = "",nerrs=0,cnt=0,i=0;
	for (i=0;i<felder.length;++i){
	   var feldnm = felder[i];
	   if (feldnm.indexOf(":=") < 0){feldnm = feldnm+':=';}
	   //alert("Feldname: "+feldnm+"");
	   feldwert = document.getElementsByName(feldnm)[0].value;
	   if (feldwert.indexOf("\\") != -1) { // nur wenn Pfad dabei
	      feldwert = feldwert.substring(feldwert.lastIndexOf("\\")+1, feldwert.length);
	   }
      feldwert=feldwert.replace(/\./,"_");
	   if ( feldwert.indexOf(" ")!=-1 || feldwert.match(/ä|ö|ü|ß|\W/i) ){
      	if (felder.length>1){++nerrs;errors+='Dateifeld Nr. '+(i+1)+'\n\t';}
      	else {++nerrs;errors+='';}
	   }
	}
   if(nerrs>0){
   	alert('Fehler bei der Eingabe:\nLeerzeichen,Umlaute und Sonderzeichen\nin Dateinamen nicht erlaubt\n\t'+errors+'\n' );
   	return false;
   } else {
   return true;
   }
}
/* # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#*/
/* Funktion zum Ein- und Ausblenden von Elementen (id / Text als Übergabeparameter)*/
function showhide(id,txt_show,txt_hide){
   var txt="txt_"+id;
   var txt_show_i = "Zweig erweitern"; var txt_hide_i = "Zweig verbergen";
   if (typeof txt_show == "undefined") { txt_show = txt_show_i;}
   if (typeof txt_hide == "undefined") { txt_hide = txt_hide_i;}
   txt_hide && txt_hide.length>0 ? txt_hide : "Zweig verbergen";
   e=document.getElementById(id);t=document.getElementById(txt);
   //alert("id: "+id+"\ne:"+e+"\n+t: "+t+"\ntxt_show: "+txt_show+"\ntxt_hide: "+txt_hide);
   if(e.style.display=="block"){ 
      e.style.display = "none"; t.firstChild.nodeValue = txt_show;
   } else {
      e.style.display="block";t.firstChild.nodeValue = txt_hide;
   }  
}
function hide(id, txt_hide){
   var txt="txt_"+id; txt_hide_i = "Zweig erweitern";
   if (typeof txt_hide == "undefined") { txt_hide = txt_hide_i;}
   e = document.getElementById(id);t = document.getElementById(txt);
   e.style.display = "none";
   t.firstChild.nodeValue = txt_hide;}
function write_htm(htm) { document.write(htm);}



