/*-------------------------------------------------------------------------------*
 Program : validation.js
 
 Sprache:  javascript ab Browser V4.0
 
 Funktion: überprüfen von Werten, die in einem Formular eingegeben wurden.
 
 --------------------------------------------------------------------------------*
 Copyright (c) 2001 Bestview GmbH, Uster
 --------------------------------------------------------------------------------*
 
 Revisions:
   1.1b - 12.9.2001 / ra

     - Check Email eingebaut 
   
   1.1a - 19.6.2001 / ra

     - intMinMax, wenn eine integerzahl eine vorangestellte 0 hat, 
       gibt parseInt 0 zurück. Somit wird erst ein parseFloat gemacht.
       
   1.1 - 22.05.2001 / ra

     - Integer Feld Reqired integriert

   1.0 - 13.12.1999 / ra
     - Initial release
     
 --------------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------------*

  Name       testText
  
  Funktion   Testet, ob der Wert aus aInput nicht leer ist, ist der
             Wert leer, wird die eingabezeile fokusiert + false
             zurückgegeben.
             
 --------------------------------------------------------------------------------*/
 
function testText(aInput,Caption,aRequired) {
  if ( aInput.value == "" && aRequired)
  {
    alert ("Ungültige Eingabe in "+Caption+", kein leerer Wert erlaubt!") ;
    aInput.focus() ;
    aInput.select() ;
    return false ;
  } else {
    return true ;
  }
}

/*-------------------------------------------------------------------------------*

  Name       testEmail
  
  Funktion   Testet, ob der Wert aus aInput nicht leer ist, ist der
             Wert leer, wird die eingabezeile fokusiert + false
             zurückgegeben.
             
 --------------------------------------------------------------------------------*/
 
function testEmail(aInput,aCaption,aRequired) {
  v=aInput.value;
  if (v == "") {
    if (aRequired) {
      alert ("Emailadresse darf nicht leer sein") ;
      aInput.focus() ;
      aInput.select() ;
      return false ;
    } else {
      return true ;
    }
  } else {
    a = v.indexOf("@") ;
    p = v.lastIndexOf(".") ;
    l = v.length ;
    if ( (p > a) && ((l - p) >= 3) && ((p-a) >=3) && (a>=1)) {
      return true ;
    } else {
      alert ("Ungültige Emailadresse "+ aCaption) ;
      aInput.focus() ;
      aInput.select() ;
      return false ;
    }
  }
}

function testInt(aInput,aCaption,aRequired) {
  if ((!aRequired) && (aInput.value == "")) {
    return true ;
  } else {
    if (isNaN(aInput.value) || (parseInt(aInput.value) != parseFloat(aInput.value)))
    {
      alert ("ungültige Eingabe, in "+aCaption+", Nummer erwartet!") ;
      aInput.focus() ;
      aInput.select() ;
      return false ;
    } else {
      return true ;
    }
  }
}

function intMinMax(aValue,aMin,aMax) {
  res = false ;
  aValue = parseFloat(aValue) ;
  if (isNaN(aValue) || (parseInt(aValue) != parseFloat(aValue)))
  {
    return false ;
  } else {
    i = parseInt(aValue) ;
    if ((i <= aMax) && (i >= aMin)) {
      return i ;
    } else {
      return false ;
    }      
  }
}

function testIntMaxMin(aInput,aCaption,aMax,aMin,aRequired) {
  res = false ;
  if (isNaN(aInput.value) || (parseInt(aInput.value) != parseFloat(aInput.value)))
  {
    aInput.focus() ;
    aInput.select() ;
    return false ;
  } else {
    return true ;
  }
}

function testFloat(aInput,aCaption,aRequired) {
  //alert(aInput.value+", "+parseInt(aInput.value)+", "+parseFloat(aInput.value)+", "+ (aInput.value.indexOf("."))) ;
  
  if ((isNaN(aInput.value) || (aInput.value.indexOf(".") < 0)) && aRequired)
  {
    alert ("ungültige Eingabe, in "+aCaption+", Nummer erwartet!") ;
    aInput.focus() ;
    aInput.select() ;
    return false ;
  } else {
    return true ;
  }
}

function testVarName(aInput,aCaption) {
  var s = aInput.value ;
  for (var i = 0 ; i < s.length ; i++) {
    if (! (
        (s.charAt(i) >= '0' && s.charAt(i) <= '9') ||
        (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') ||
        (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') ||
        (s.charAt(i) == '-') ||
        (s.charAt(i) == '_')
        )
       )
    {
      alert ("Ungültige Eingabe, in "+Caption+", Name (A..z,0..9,_,-) erwartet !"+i) ;
      aInput.focus() ;
      aInput.select() ;
      return false ;
    }        
  }
  return true ;
}

/*-------------------------------------------------------------------------------*

  Name       testDateTime
  
  Funktion   
  
  Mögliche Datumsformate :
  
    dd.mm.yy[yy] [hh][:mm][:nn]

 --------------------------------------------------------------------------------*/

function sayAlert(aInput,aMessage) {
  alert (aMessage) ;
  aInput.focus() ;
  aInput.select() ;
}

function testDateTime(aInput,aCaption,aDateRequired) {
  var error = false;

  var mdc = new Array(31,28,31,30,31,30,31,31,30,31,30,31) ;

  s = aInput.value ;

  if (s == "") {
     if (aDateRequired) {
       sayAlert (aInput,"Ungültige Eingabe in "+aCaption+", Datumseingabe erforderlich") ;
       return false ;
     } else {
       return true ;
     }
  }
  
  var a = new Array() ;
  a = s.split(" ") ; 
  hasTime = a.length > 1 ;
  
  var d = new Array() ;
  d = a[0].split(".") ;
    
  if (d.length != 3) {
    sayAlert (aInput,"Ungültiges Datum in "+aCaption + " Format (31.12.1999)") ;
    return false ;
  }
  
  yy = intMinMax(d[2],0,3000) ;
  mm = intMinMax(d[1],1,12) ;
  dim = mdc[mm-1] ;
  dd = intMinMax(d[0],1,dim) ;

  if (yy == false) {
    sayAlert (aInput,"Ungültige Jahresangabe in "+aCaption) ;
    return false ;
  } else if (mm == false) {
    sayAlert (aInput,"Ungültige Monatsangabe in "+aCaption) ;
    return false ;
  } else if (dd == false) {
    sayAlert (aInput,"Ungültiger Tag in "+aCaption) ;
    return false ;
  } else {
    // Zeitfenster
    if (yy < 80) {
      yy += yy + 1900 ;
    }
  }   

  /******************************************************************
   * Zeitangabe in String Prüfen falls vorhanden Format hh:nn[:ss]
   *******************************************************************/
  if (hasTime) {
    t = a[1].split(":") ;
    if (t.length < 2) {
      sayAlert (aInput,"Ungültige Zeitangabe in "+aCaption + " Format hh:nn[:ss]") ;
      return false ;
    }
    
    hh = intMinMax(t[0],0,23) ;
    mm = intMinMax(t[1],0,59) ;
    ss = 0 ;
    if (a.lenght > 2) {
      ss = intMinMax(a[2],0,59) ;
    }
    if (hh == false) {
      sayAlert (aInput,"Ungültige Stundenagabe in "+aCaption) ;
      return false ;
    } else if (mm == false) {
      sayAlert (aInput,"Ungültige Minutenangabe in "+aCaption) ;
      return false ;
    } else if (ss == false) {
      sayAlert (aInput,"Ungültige Sekundenangabe in "+aCaption) ;
      return false ;
    }
    
  }
  return true ;
}


