// Returns true if a string contains only whitespace characters.
function isBlank(s) {
  if (s == null) {
    return true;
  }
  for(var i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if ((c != ' ') && (c != '\n') && (c != '\t')) {
      return false;
    }
  }
  return true;
}

// Returns true if a form field contains only whitespace characters.
// Do not call isEmpty(form.field.value) instead of isEmpty(form.field).
function isEmpty(field) {
  if ((field == null) || (field == "")) {
    return true;
  }
  return isBlank(field.value);
}

// Im Formular 'form' alle Checkboxen des Namens 'name' auf den Wert 'checked' (true/false) setzen.
function setCheckboxes(form, name, checked) {
  for (var i=0; i < form.elements.length; ++i) {
    var e = form.elements[i];
    if (e.name == name)
      e.checked = checked;
  }
}

// Returns a copy of the string with leading and trailing blanks omitted.
function trim(s)
{
  if (s == null)
    return null;
  var i = 0;
  while(i < s.length && s.charAt(i) == ' ')
    ++i;
  if (i >= s.length)
    return '';
  var j = s.length - 1;
  while(j >= 0 && s.charAt(j) == ' ')
    --j;
  return s.substring(i, ++j);
}

// Sehr einfache Prüfung von E-Mail-Adressen
// Ohne reguläre Ausdrücke, weil die nicht in allen Versionen von JavaScript unterstützt werden.
function check_email(field) {
  var ok = false;
  var at = field.value.indexOf('@');
  if (at >= 1 && at <= field.value.length - 5) {  // a@b.de => mindestens ein Zeichen vor und vier nach @
    var pt = field.value.indexOf('.', at);
    if (pt >= 3 && pt <= field.value.length - 3) {  // a@b.de => mindestens drei Zeichen vor und zwei nach .
      var bl = field.value.indexOf(' ');
      if (bl < 0)
        ok = true;
      else alert("Die E-Mail-Adresse ist ungültig, sie enthält Leerzeichen.");
    } else alert("Die E-Mail-Adresse ist ungültig, sie enthält keine gültige Domain.");
  } else alert("Die E-Mail-Adresse ist ungültig, sie enthält kein @ oder keine gültige Domain.");
  if (!ok)
    field.focus();
  return ok;
}


// Sehr einfache Prüfung von E-Mail-Adressen (englische Version)
// Ohne reguläre Ausdrücke, weil die nicht in allen Versionen von JavaScript unterstützt werden.
function check_email_en(field) {
  var ok = false;
  var at = field.value.indexOf('@');
  if (at >= 1 && at <= field.value.length - 5) {  // a@b.de => mindestens ein Zeichen vor und vier nach @
    var pt = field.value.indexOf('.', at);
    if (pt >= 3 && pt <= field.value.length - 3) {  // a@b.de => mindestens drei Zeichen vor und zwei nach .
      var bl = field.value.indexOf(' ');
      if (bl < 0)
        ok = true;
      else alert("The email address is invalid, it contains whitespaces.");
    } else alert("The email address is invalid, it does not contain a valid domain name.");
  } else alert("The email address is invalid, it does not contain a @.");
  if (!ok)
    field.focus();
  return ok;
}

// Besteht das Argument nur aus Ziffern von 0 bis 9
function check_number(x) {
  for (var i = 0; i < x.length; ++i) {
    var c = x.charAt(i);
    if (c < '0' || c > '9')
      return false;
  }
  return true;
}

// Prüfung einer EAN
function check_ean(ean) {
  if ((ean.length != 8) && (ean.length != 13) && (ean.length != 14)) {
    alert("Die EAN ist ungültig, weil sie nicht aus 8, 13 oder 14 Ziffern besteht.");
    return false;
  }
  if (!check_number(ean)) {
    alert("Die EAN ist ungültig, weil sie nicht ausschließlich aus Ziffern besteht.");
    return false;
  }

  var faktor = 3;
  var summe = 0;
  for (var i = ean.length - 2; i >= 0; --i) {
    summe += ean.charAt(i) * faktor;
    faktor = 4 - faktor;
  }
  if ((1000 - summe) % 10 != ean.charAt(ean.length - 1)) {
    alert("Die EAN ist ungültig, weil ihre Prüfziffer nicht stimmt.");
    return false;
  }
  return true;
}

// Prüfung einer ISBN
function check_isbn(isbn) {
  if (isbn == null || isBlank(isbn) || isbn.length < 10) {
    alert("Die ISBN ist ungültig, weil Sie zu kurz bzw. leer ist.");
    return false;
  }

  // alle Sonderzeichen entfernen, sodass nur die Ziffern und die letzte Stelle übrig bleiben.
  var s = "";
  var i, c;
  for (i = 0; i < isbn.length - 1; ++i) {
    c = isbn.charAt(i);
    if (c >= '0' && c <= '9')
      s += c;
  }
  if (s.length < 9) {
    alert("Die ISBN ist ungültig, weil Sie zu wenig Ziffern enthält.");
    return false;
  }

  // Checksumme berechnen
  var sum = 0;
  for (i = 0, faktor = 11; i < 9; ++i)
    sum += --faktor * s.charAt(i);

  // letztes Zeichen ist die Prüfziffer
  c = isbn.charAt(isbn.length - 1);
  var pz = (c == 'X') ? 10 : 1*c;
  if (((sum + pz) % 11) != 0) {
    alert("Die ISBN " + s + c + " ist ungültig, weil die Prüfziffer nicht stimmt.");
    return false;
  }
  return true;
}

// Prüfen, ob ein Radion-Button ausgewählt ist.
function isRadioChecked(radios) {
  for (var i=0; i < radios.length; ++i) {
    if (radios[i].checked)
      return true;
  }
  return false;
}

function ss(w){window.status=w;return true;}
function cs(){window.status='';}

