 var SonderZeichen = new Array('ä','ö','ü','Ä','Ö','Ü','ß','²','³','\\','}',']','[','{','ø','^','°','"','§','$','%','&','/','(',')','=','?','`','´','*','+','~','#','_','.',':',';','@','€',' ');
// Select-Feld als Menü
function switcher(box) {
 var item = box.selectedIndex;
 box.selectedIndex = 0;
 location = box.options[item].value;
}
// FormFelder checken oder setzen
// zum Feld zurückkehren
function Highlight(Element){
 Element.focus();
 if (Element.type == 'text' || Element.type == 'textarea' || Element.type == 'password')
  Element.select();
}
// Zeichenraum prüfen
function PruefeZeichen(Element, ZugelasseneZeichen, FehlerMeldung){
 for (var Pos = 0; Pos < Element.value.length; Pos++){
  if (ZugelasseneZeichen.indexOf(Element.value.charAt(Pos)) == -1){
   FehlerMeldung += "\n\nIhre Eingabe enthält das Zeichen '";
   FehlerMeldung += Element.value.charAt(Pos);
   FehlerMeldung += "'. Sie dürfen nur diese Zeichen verwenden:\n";
   FehlerMeldung += ZugelasseneZeichen;
   if (ZugelasseneZeichen.indexOf(" ") == -1){
    FehlerMeldung += "\nLeerzeichen sind nicht erlaubt";
   }else{
    FehlerMeldung += "\nund das Leerzeichen";
   }
   alert(FehlerMeldung);
   return true;
  }
 }
 return false;
}
// Vars testen
function isEmpty(str) {
// if(str == 'undefined') return false;
 var c;
 for (var i = 0; i < str.length; i++) {
  c = str.charAt(i);
  if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
 }
 return true;
}
function noEmpty(str){
 if(!isEmpty(str)){
  return true;
 }
 return false;
}
function noNumber(str) {
 var a = str.split('');
 for (var i in a) {
  if (a[i] < '0' || a[i] > '9') return true;
 }
 return false;
}
function noSonderZeichen(str){
 var a = str.split('');
 
 for (var str in SonderZeichen){
  for (var i in a) {
   if (SonderZeichen[str] == a[i]) return false;
  }
 }
 return true;   
}
// Wert auf DD.MM.YYYY testen 
function isDateFormat(Data){
 var Datumstring=Data.split("."); 
 if (Datumstring.length != 3 ){
  alert("Ungültiges Datum");
  return false;
 }
 if (isNaN(Datumstring[0]) ||isNaN(Datumstring[1])||isNaN(Datumstring[2])){
  alert("Ungültiges Datum")
  return false;
 }
 var Jahr = Datumstring[2];
 var Monat = Datumstring[1];
 var Tag = Datumstring[0];
 if (Jahr.length< 4  || Jahr.length > 4){
  alert("Ungültiges Jahresformat")
  return false;
 }
 if (Monat < 1 || Monat > 12 ){
  alert("Ungültiger Monat\n gültiger Wert 1-12")
  return false;
 }
 var Maxtag = 31;
 if(Monat==4 ||Monat==6 || Monat==9 || Monat==11 )
  Maxtag=Maxtag-1;
 if(Monat==2){
  Maxtag=28;
  if(Jahr%4==0)
   Maxtag=Maxtag+1;
  if(Jahr%100==0)
   Maxtag=Maxtag-1;
  if(Jahr%400==0)
   Maxtag=Maxtag+1;
 }
 if (Tag < 1 || Tag > Maxtag){
  alert("Ungültiger Tag\n gültiger Wert 1-"+Maxtag)
  return false;
 }
 return true;
}
// Wert auf hh:mm testen 
function isTimeFormat(Data){
 var Datumstring=Data.split(":"); 
 if (Datumstring.length != 2 ){
  alert("Ungültige Zeit");
  return false;
 }
 if (isNaN(Datumstring[0]) ||isNaN(Datumstring[1])){
  alert("Ungültige Zeit")
  return false;
 }
 var Minute = Datumstring[1];
 var Stunde = Datumstring[0];
 if (Stunde.length< 2  || Stunde.length > 2){
  alert("Ungültiges Stundenformat")
  return false;
 }
 if (Stunde < 0 || Stunde > 23 ){
  alert("Ungültige Stunde\n gültiger Wert 0-23")
  return false;
 }
 if (Minute.length< 2  || Minute.length > 2){
  alert("Ungültiges Minutenformat")
  return false;
 }
 if (Stunde < 0 || Stunde > 59 ){
  alert("Ungültige Minute\n gültiger Wert 0-59")
  return false;
 }
 return true;
}

// ELEMENTE testen
function noEmptyElement(Element){
 if(!isEmpty(Element.value)){
  return true;
 }
 alert ("Das Feld " + Element.name + " darf nicht leer sein!");
 Highlight(Element);
 return false;
}
function isChecked(Element){
 if(Element.checked == true){
  return true;
 }
 alert ("Das Feld " + Element.name + " ist nicht markiert!");
 Highlight(Element);
 return false;
}
function isPLZ(Element) {
 if (noNumber(Element.value)){
  alert ("Das Feld " + Element.name + " darf nur Ziffern enthalten!");
  Highlight(Element);
  return false;
 }
 if (Element.value.length != 5){
  alert ("Das Feld " + Element.name + " hat zuwenig Ziffern ("+ Element.length +")!");
  Highlight(Element);
  return false;
 }
 if ((Element.value > 0) && (Element.value < 99999)){
  return true;
 }else{
  alert ("Das Feld " + Element.name + " ist nicht korrekt!");
  Highlight(Element);
  return false;
 }
 return true;
}
function isDatum(Element){
 if(!isDateFormat(Element.value)){
  Highlight(Element);
  return false;
 }
 return true;
}
function isDatumZeit(Element){
 var Datumstring=Element.value.split(" ");
 if(!isDateFormat(Datumstring[0])){
  Highlight(Element);
  return false;
 }
 if(!isTimeFormat(Datumstring[1])){
  Highlight(Element);
  return false;
 }
 return true;
}
function isDatumOptionalZeit(Element){
 var Datumstring=Element.value.split(" ");
 if(!isDateFormat(Datumstring[0])){
  Highlight(Element);
  return false;
 }
 if(Datumstring[1] != ''){
  if(!isTimeFormat(Datumstring[1])){
   Highlight(Element);
   return false;
  }
 }
 return true;
}

function isTelefon(Element){
 if (PruefeZeichen(Element, "0123456789 /-+()", "Bitte prüfen Sie das Feld " + Element.name)){
  Highlight(Element);
  return false;  
 }
 return true;
}
function isBLZ(Element) {
 if (noNumber(Element.value)){
  alert ("Das Feld " + Element.name + " darf nur Ziffern enthalten!");
  Highlight(Element);
  return false;
 }
 if (Element.value.length != 8){
  alert ("Das Feld " + Element.name + " hat zuwenig Ziffern ("+ Element.value.length +")!");
  Highlight(Element);
  return false;
 }
 if ((Element.value > 0) && (Element.value < 99999999)){
  return true;
 }else{
  alert ("Das Feld " + Element.name + " ist nicht korrekt!");
  Highlight(Element);
  return false;
 }
 return true;
}
function isKontoNR(Element) {
 if (noNumber(Element.value)){
  alert ("Das Feld " + Element.name + " darf nur Ziffern enthalten!");
  Highlight(Element);
  return false;
 }
// if (Element.value.length != 8){
//  alert ("Das Feld " + Element.name + " hat zuwenig Ziffern ("+ Element.value.length +")!");
//  Highlight(Element);
//  return false;
// }
// if ((Element.value > 0) && (Element.value < 99999)){
//  return true;
// }else{
//  alert ("Das Feld " + Element.name + " ist nicht korrekt!");
//  Highlight(Element);
//  return false;
// }
 return true;
}
function isEMail(Element){
 var s = Element.value;
 var a = false;
 var res = 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)
 }
 if (res){
  return true;
 }else{
  alert("Bitte geben Sie gültige E-Mail Adresse an.");
  Highlight(Element);
  return false;
 }
}
function isEMAIL1(Element){
 var email = Element.value;
 var blanks = ''*100;
 var naughty = new Array("arse","bastard","cunt","fuck","shit","wanker","piss","twat");
 var sneaky = email.toLowerCase();
 var illegal = "You have entered illegal characters.\nOnly characters listed here allowed.\n\nLetters of Alphabet [lower and upper case]\nNumbers\nOne @ symbol only\nFull stops\nHyphens [Minus sign]\nUnderscores\n\n";
//mail check
 if (email <= blanks){
  alert("Bitte geben Sie eine E-Mail Adresse ein.");
  Highlight(Element);
  return false;
 }else if (email.length > 62){
   alert('Maximal 63 Zeichen sind erlaubt.');
   Highlight(Element);
   return false;
 }else if (email.charAt(0) == " "){
   alert('Leerzeichen am Anfang der EMail-Adresse sind nicht erlaubt');
   Highlight(Element);
   return false;
 }else if (email.charAt(email.length-1) == " "){
   alert('Leerzeichen am Ende der EMail-Adresse sind nicht erlaubt');
   Highlight(Element);
   return false;
 }else if (email.indexOf(" ") !=-1){
   alert('Leerzeichen in der EMail-Adresse sind nicht erlaubt');
   Highlight(Element);
   return false;
 }
//CHECK FOR ILLEGAL CHARACTERS 1
 for (i=0; i < email.length; i++){
  var caps = "a".toUpperCase();
  var E = email.substring(i, i + 1);
  if ((E < "0" || "9" < E ) && E != "@"  && E !="." && E !="-"  && E !="_"  &&  E < caps || "z" < E){
   alert(illegal);
   Highlight(Element);
   return false;
  }
 }
//CHECK FOR ILLEGAL CHARACTERS 2
 if ((email.indexOf('`',0) != -1) || (email.indexOf(String.fromCharCode(94)) != -1) || (email.indexOf(String.fromCharCode(92)) != -1) || (email.indexOf('[',0) != -1) || (email.indexOf(']',0) != -1)){
  alert(illegal);
  Highlight(Element);
  return false;
 }
//CHECK FOR SWEARING
 for (i=0; i < email.length; i){  
  if (sneaky.indexOf(naughty[i]) != -1){
   alert('Please remove the swear word - '+naughty[i].toUpperCase());
   Highlight(Element);
   return false;
  }
  i++;
 }
 for (i=0; i < email.length; i++){
  if (email.charAt(i) ==" ")
   email.charAt(i)="";
  }
//  alert(email);
//GENERAL FORMATING
 if (email.charAt(0) =="."){
  alert('An e-mail address cannot start with a full stop');
  Highlight(Element);
  return false;
 }else if (email.split('@').length > 2){
  alert('Nur 1 @ Zeichen ist in der e-mail Addresse erlaubt.');
  Highlight(Element);
  return false;
 }else if (email.indexOf ('@',0) == -1){
  alert("Das @ Zeichen fehlt");
  Highlight(Element);
  return false;
 }else if (email.indexOf("@") < 2){
  alert("Vor dem @ Zeichen müssen mindestens 2 weitere Zeichen stehen.");
  Highlight(Element);
  return false;
 }else if (email.charAt(email.length-1) == "@"){
  alert('An e-mail address cannot finnish with @');
  Highlight(Element);
  return false;
 }else if (email.indexOf ('.') == -1){
  alert("An e-mail address must contain at least 1 full stop");
  Highlight(Element);
  return false;
 }else if (email.indexOf('.',email.indexOf('@')) == -1){
  alert('The full stop after the @ is missing');
  Highlight(Element);
  return false;
 }else if (email.substring(email.indexOf('@'),email.length).indexOf(".") < 3){
  alert('Es müssen mindestens 2 Zeichen zwischen dem @ und dem nächsten Punkt stehen.');  
  Highlight(Element);
  return false;
 }else if (email.lastIndexOf(".")+2 == email.length){
  alert('There must be at least 2 characters after last full stop');
  Highlight(Element);
  return false;
 }else if (email.substring(email.lastIndexOf("."),email.length).length > 4){
  alert('Only 3 characters allowed after last full stop');
  Highlight(Element);
  return false;
 }else if (email.charAt(email.length-1) =="."){
  alert('An e-mail address cannot finnish with a full stop');
  Highlight(Element);
  return false;
 }
// CONFIRM EMAIL
// ok=null;
// confirm('Sie haben folgende EMail angegeben:  - '+email+'\nKeine Fehler gefunden.\n\nSoll diese EMail - Adresse übernommen werden?')?ok=1:ok=0;
// if (ok==1)
  return true;
// else
// return false;
 }
function isKontonummer(Element){
   if (noNumber(Element.value)) {
        alert("Bitte geben Sie die Kontonummer an.");
        Element.focus();
        return false;
    }
}
function isBankleitzahl(Element){
  if (noNumber(Element.value)) {
    alert("Bitte geben Sie die Bankleitzahl an.");
    Element.focus();
    return false;
  }
  if (!(Element.value.length == 8)) {
    alert("Bitte geben Sie eine korrekte achtstellige Bankleitzahl an.");
    Element.focus();
    Element.select();
    return false;
  }
  return true;
}
// Zusatz
function prepStr(str){
 str = str.toLowerCase();
 str = str.replace(/['"-]/g,"");
 str = str.replace(/\W/g,   " ");
 str = str.replace(/\s+/g,  " ");
 return str;
}
function wordCount(Element,Output){
// Output 1 == Anzahl Wörter, 2 == Anzahl pro Wort
 var str = prepStr(Element.value);
 var tmpArray = str.split(' ').sort();
 if (Output == 2){
  var wordArray = new Array();
  for (var i = 0; i < tmpArray.length; i++){
   if (wordArray[tmpArray[i]]){
    wordArray[tmpArray[i]]++;
   }else{
    wordArray[tmpArray[i]] = 1;
   }
  }
  var table = '<table><tr><td colpan=2>benutze W&ouml;rter</td></tr><tr><td>Wort</td><td>Anzahl</td></tr>';;
  for (word in wordArray){
   if (word != ''){
    table += '<tr><td>' + word + '</td><td>' + wordArray[word] + '</td></tr>';
   }
  }
  table += '</table>';
  return table;
 }else{
  return tmpArray.length;
 }
}
// Formatieren
function FormatPreis(preis) {
  var string_preis = (Math.round(preis*100) / 100).toString(10);
  var a = string_preis.split(".");
  if (! a[1]) {
   string_preis = string_preis + ".00";
  } else {
   if (a[1].length == 1) {
    string_preis = string_preis + "0";
   }
  }
  return string_preis;
}