/**
 * Dateiname       : javascript/InputFilter.js
 * Autor           : Carsten Kube
 * Version         : 1.1
 * Letzte Akt.     : 28.08.2008 (CK)
 * 
 * (c) Copyright Carsten Kube
 */

var secra;
if(!secra){secra = {};}
else if(typeof secra !== "object"){throw new Error("secra ist kein Objekt!");}
if(secra.InputFilter){throw new Error("secra.InputFilter existiert bereits!");}

secra.InputFilter = function(allowedChars, id) {
  this.allowed = allowedChars.join("");
  this.elem = document.getElementById(id);
  if(this.elem) {
    this.elem.filterObj = this;
    this.elem.onkeypress = this.filter;
  }
};

secra.InputFilter.prototype.filter = function(event) {
  var e = event || window.event;
  var code = e.charCode || e.keyCode;
  if(e.charCode == 0) {
    return true;
  }
  if(e.ctrlKey || e.altKey) {
    return true;
  }
  if(code < 32) {
    return true;
  }
  var c = String.fromCharCode(code);
  if(this.filterObj.allowed.indexOf(c) != -1) {
    return true;
  } else {
    if(e.preventDefault) {
      e.preventDefault();
    }
    if(e.returnValue) {
      e.returnValue = false;
    }
    return false;
  }
};
