///////////////////////////////////////////
// KONFIGURATION (jeweils anpassen)
///////////////////////////////////////////
// LEGENDE:
// - str: prueft ob ein wert leer ist
// - int: prueft ob ein wert nur zahlen enthaelt
// - email: validiert eine email adresse syntaktisch
// - check: prüft ob eine checkbox od. radiobox ausgewaehlt wurde
///////////////////////////////////////////

// pflichtfelder newsletter
var req_newsletter= { 'E-Mail': 'email' };
// pflichtfelder kontakt
var req_contact = { 'Name': 'str', 'E-Mail': 'email', 'Nachricht': 'str' }
// pflichtfelder login
var req_login = { 'Benutzer': 'str', 'Passwort': 'str' }

//////////////////////////////////////////
// KONFIGURATION ENDE
//////////////////////////////////////////

//////////////////////////////////////////
// PUBLIC FUNCTIONS
//////////////////////////////////////////
function validate( type, form ) {

  var validator;
  var valid = true;
  var outbox = 'fehler-' + type;

  switch( type ) {
    case 'newsletter':
      validator = req_newsletter;
      break;

    case 'contact':
      validator = req_contact;
      break;

    case 'login':
      validator = req_login;
      break;

    default:
      return false;
  }

  for( var field in validator ) {

    var validate = validator[ field ];
    var value = form.elements[ field ];
    var label = 'label-' + type + '-' + field.toLowerCase( );

    switch ( validate )
    {
      case 'str' :
        if( isEmpty( value ) ) {
          valid = false;
          $( label ).className = 'error-required';
        }
        break;

      case 'int' :
        if( !isInt( value ) ) {
          valid = false;
          $( label ).className = 'error-required';
        }
        break;

      case 'email' :
        if( !isEmail( value ) ) {
          valid = false;
          $( label ).className = 'error-required';
        }
        break;

      case 'check' :
        if( !isChecked( value ) ) {
          valid = false;
          $( label ).className = 'error-required';
        }
        break;

      default: continue;
    }
  }

  if( valid === true ) {
    if( type == 'login' ) {
      form.elements[ 'Passwort' ].value = hex_md5( form.elements[ 'Passwort' ].value );
    }
    return true;
  }

  $( outbox ).style.display = 'block';
  return false;
}

function login_testUrl( ) {

  var parms = document.location.search.substr( 1 ).split( '&' );
  for( i=0; i<parms.length; i++ ) {
    parm = parms[ i ].split( '=' );
    if( parm[ 0 ] != '__invalid' ) continue;
    if( parm[ 0 ] == '__invalid' && parm[ 1 ] == 1 ) {
      $( 'fehler-login' ).style.display = 'block';
    }
  }
}

//////////////////////////////////
// PRIVATE FUNCTIONS
//////////////////////////////////

function $( idname ) {

  if( document.getElementById( idname ) )
    return document.getElementById( idname );

  return false;

}

function isEmpty( element ) {

  return ( element.value == '' );

}

function isInt( element ) {

  return ( !isNan( parseInt( element.value ) ) );

}

function isEmail( element ) {

  return ( element.value.match( /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/ ) );

}

function isChecked( element ) {

  return ( element.checked );

}