/**
 * DESCRIPTION: open the AGBs
 *
 * @param url
 * @param string <opt>, desired AGB-template
 * @return -
 */
function show_user_AGB(url,opt) {
  var flags = '';
  window.open(url + "/" + opt, '_blank', flags);
}

/**
 * DESCRIPTION: shows the alternative username, if the username is already given
 *
 * @param request
 * @param _names
 * @param _caller
 * @return -
 */
function showAlternatives(request, _names, _caller) {

  if(_names) {
    var newSelect = $('layerUsernameUsed').innerHTML;
    var SelectLines = "";
    var prefix = newSelect.substr(0, newSelect.indexOf("<!--START") -1);
    if(prefix.length > 0) {                                                     // Determine if formatting was used
      var suffix = newSelect.substr(newSelect.indexOf("END-->") + 6);

      // Extract Formatting String
      var format_string = newSelect.match(/<!--{(.*)}-->/i, newSelect)[1];


      for(var i=0; i < _names.length; i++) {                                     // Create line entry for each username suggestion
        SelectLines += format_string.replace(/%name%/gi,_names[i]).replace(/%count%/gi, i);
      }

      newSelect = prefix + "<!--START--><!--{" + format_string +"}-->" + SelectLines + "<!--END-->"+ suffix;

      $('layerUsernameUsed').innerHTML = newSelect;

    }
    if (_caller=='fullReg') {
      _anchor = 'fusernameLink';
    }
    overlay(_anchor, 'layerUsernameUsed', 'bottom', 'xlinkUsername', 'xlinkUsername', 'buttonIsLeft');
    return false;
  }
  else {
    overlaycloseOnChange('usernameLink', 'layerUsernameUsed', ' ', 'xlinkUsername', 'layerUsernameUsed', 'bottom', 'xlinkUsername', 'xlinkUsername', 'buttonIsLeft');
  }
}

/**
 * DESCRIPTION: validates an email-address
 *
 * @param email - the id for the html email element
 * @param err_holder - the id for the html error container
 * @return true | false
 */
function validateEmail(email, err_holder) {
  if($(email).value.trim().match(/^[0-9]*[a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w\.]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9}$/i)) {
    $(err_holder).innerHTML = '';
    return true;
  } else {
    $(err_holder).innerHTML = 'Bitte geben Sie eine g&uuml;ltige EMail-Adresse an.';
    $(email).focus();
    return false;
  }
}

/**
 * DESCRIPTION: validates the birthday for the html container: bday_day, bday_month, bday_year
 *
 * @return true | false
 */
function validateBday() {
  ret = true;
  $('error_for_bday').innerHTML = '';

  if ($('bday_day').value || $('bday_month').value || $('bday_year').value){
    if (!$('bday_day').value || !$('bday_month').value || !$('bday_year').value){
      $('error_for_bday').innerHTML = 'Bitte geben Sie Ihren vollst&auml;ndigen Geburtstag an.';
      ret = false;
    }
  }
  return ret;
}

/**
 * DESCRIPTION: validates the requiered parameter during the registration prozess
 *
 * @return valid_flag: true | false
 */
function validate_fullreg() {
  valid_flag  = true; // return flag

  // reset messages
  $('error_for_firstname').innerHTML = '';
  $('error_for_lastname').innerHTML = '';
  $('error_for_password').innerHTML = '';
  $('error_for_street').innerHTML = '';
  $('error_for_plz').innerHTML = '';
  $('error_for_city').innerHTML = '';
  $('error_for_country').innerHTML = '';
  $('error_for_bday').innerHTML = '';
  $('error_for_username').innerHTML = '';
  $('error_for_agb').innerHTML = '';
  $('error_for_password2').innerHTML = '';


  if ($('error_for_email').innerHTML != '') {
    $('email').focus();
    valid_flag = false;
  }
  else {
    if (!validateEmail('email','error_for_email')) {
      $('email').focus();
      valid_flag = false;
    }
  }

  if ($('error_for_username').innerHTML != '') {
   $('username').focus();
    valid_flag = false;
  }
  else if (!$('username').value || !$('username').value.match(/^([a-z0-9_.-]{4,30})$/i)) {
    $('error_for_username').innerHTML = 'Bitte geben Sie hier einen g&uuml;ltigen Nicknamen an.';
    $('username').focus();
    valid_flag = false;
  }

  if(!$('password').value) {
    $('error_for_password').innerHTML = 'Bitte geben Sie ein Passwort mit mindestens 5 Zeichen ein.';
    if (valid_flag) {
      $('password').focus();
    }
    valid_flag = false;
  }

  if(!$('password2').value) {
    $('error_for_password2').innerHTML = 'Bitte wiederholen Sie zur Sicherheit Ihr persönliches Passwort.';
    if (valid_flag) {
      $('password2').focus();
    }
    valid_flag = false;
  }

  if ($('password').value.length<5){
    $('error_for_password').innerHTML = 'Bitte geben Sie ein Passwort mit mindestens 5 Zeichen ein.';
    if (valid_flag) {
      $('password').focus();
    }
    valid_flag = false;
  }

  if ($('password').value.length>30){
    $('error_for_password').innerHTML = 'Bitte geben Sie ein Passwort mit maximal 30 Zeichen ein.';
    if (valid_flag) {
      $('password').focus();
    }
    valid_flag = false;
  }

  if(($('password').value != $('password2').value) && ($('password').value && $('password2').value) ) {
    $('error_for_password').innerHTML = 'Passw&ouml;rter sind nicht gleich';
    if (valid_flag) {
      $('password').focus();
    }
    valid_flag = false;
  }

  if(!$('agb').checked) {
    $('error_for_agb').innerHTML = 'F&uuml;r die Registrierung m&uuml;ssen die AGB und die Datenschutzbestimmungen akzeptiert werden.';
    valid_flag = false;
  }

  if(!$('firstname').value) {
    $('error_for_firstname').innerHTML = 'Bitte geben Sie Ihren Vornamen an';
    if (valid_flag) {
      $('firstname').focus();
    }
    valid_flag = false;
  }

  if(!$('lastname').value) {
    $('error_for_lastname').innerHTML = 'Bitte geben Sie Ihren Nachnamen an';
    if (valid_flag) {
      $('lastname').focus();
    }
    valid_flag = false;
  }

  if(!$('street').value) {
    $('error_for_street').innerHTML = 'Bitte geben Sie Ihre Straße und Hausnummer an';
    if (valid_flag) {
      $('street').focus();
    }
    valid_flag = false;
  }

  if(!$('plz').value) {
    $('error_for_plz').innerHTML = 'Bitte geben Sie Ihre Postleitzahl an';
    if (valid_flag) {
      $('plz').focus();
    }
    valid_flag = false;
  }

  if(!$('city').value) {
    $('error_for_city').innerHTML = 'Bitte geben Sie Ihre Stadt an';
    if (valid_flag) {
      $('city').focus();
    }
    valid_flag = false;
  }

  if(!$('country').value) {
    $('error_for_country').innerHTML = 'Bitte wählen Sie ein Land aus';
    if (valid_flag) {
      $('country').focus();
    }
    valid_flag = false;
  }

  if (!validateBday()) {
    if (valid_flag) {
      $('bday_year').focus();
    }
    valid_flag = false;
  }

  return valid_flag;
}

/**
 * DESCRIPTION: validates the requiered parameter during the editMyPage prozess
 *
 * @return valid_flag: true | false
 */
function validate_profile_update() {
  valid_flag  = true; // return flag

  // reset messages
  $('error_for_firstname').innerHTML = '';
  $('error_for_lastname').innerHTML = '';
  $('error_for_epassword').innerHTML = '';
  $('error_for_epassword2').innerHTML = '';
  $('error_for_street').innerHTML = '';
  $('error_for_plz').innerHTML = '';
  $('error_for_city').innerHTML = '';
  $('error_for_country').innerHTML = '';
  $('error_for_bday').innerHTML = '';

  if ($('error_for_email').innerHTML != '') {
    $('edit_email').focus();
    valid_flag = false;
  }
  else {
    if (!validateEmail('edit_email','error_for_email')) {
      $('edit_email').focus();
      valid_flag = false;
    }
  }

  if ($('edit_password').value && $('edit_password').value.length<5){
    $('error_for_epassword').innerHTML = 'Bitte geben Sie ein Passwort mit mindestens 5 Zeichen ein.';
    if (valid_flag) {
      $('edit_password').focus();
    }
    valid_flag = false;
  }

  if ($('edit_password').value && $('edit_password').value.length>30){
    $('error_for_epassword').innerHTML = 'Bitte geben Sie ein Passwort mit maximal 30 Zeichen ein.';
    if (valid_flag) {
      $('edit_password').focus();
    }
    valid_flag = false;
  }

  if(($('edit_password').value != $('edit_password_repeat').value) && ($('edit_password').value && $('edit_password_repeat').value) ) {
    $('error_for_epassword').innerHTML = 'Passw&ouml;rter sind nicht gleich';
    if (valid_flag) {
      $('edit_password').focus();
    }
    valid_flag = false;
  }

  if(!$('edit_firstname').value) {
    $('error_for_firstname').innerHTML = 'Bitte geben Sie Ihren Vornamen an';
    if (valid_flag) {
      $('edit_firstname').focus();
    }
    valid_flag = false;
  }

  if(!$('edit_lastname').value) {
    $('error_for_lastname').innerHTML = 'Bitte geben Sie Ihren Nachnamen an';
    if (valid_flag) {
      $('edit_lastname').focus();
    }
    valid_flag = false;
  }

  if(!$('edit_street').value) {
    $('error_for_street').innerHTML = 'Bitte geben Sie Ihre Straße und Hausnummer an';
    if (valid_flag) {
      $('edit_street').focus();
    }
    valid_flag = false;
  }

  if(!$('edit_plz').value) {
    $('error_for_plz').innerHTML = 'Bitte geben Sie Ihre Postleitzahl an';
    if (valid_flag) {
      $('edit_plz').focus();
    }
    valid_flag = false;
  }

  if(!$('edit_city').value) {
    $('error_for_city').innerHTML = 'Bitte geben Sie Ihre Stadt an';
    if (valid_flag) {
      $('edit_city').focus();
    }
    valid_flag = false;
  }

  if(!$('edit_country').value) {
    $('error_for_country').innerHTML = 'Bitte wählen Sie ein Land aus';
    if (valid_flag) {
      $('edit_country').focus();
    }
    valid_flag = false;
  }

  if (!validateBday()) {
    if (valid_flag) {
      $('edit_birthday').focus();
    }
    valid_flag = false;
  }

  return valid_flag;
}

