/**
 * Dateiname       : javascript/InputFilter.js
 * Letzte Akt.     : 08.02.2011
 * 
 * (c) Copyright SECRA GmbH
 */

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);
  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;
  }
};

