if(!Restrictions){
  var Restrictions = new function() {
    var _initiated = false;
    this.restr = new Array();
    this.add = function( objName, maxChars ) {
      this.restr[this.restr.length] = new function() {
        this.obj = objName.substring(0,9) == 'document.' ? objName.substring(9) : objName;
        this.max = maxChars;
      }
    }//add

    this.check = function() {
      for(var i=0; i<Restrictions.restr.length; i++)
        if( eval(Restrictions.restr[i].obj) == this ) {
          if( (Restrictions.restr[i].max-this.value.length)<0) {
            this.value = this.value.substr(0,Restrictions.restr[i].max);
            alert('Przekroczono dopuszczalną liczbę znaków!!!\nMaksymalnie można wprowadzić '+Restrictions.restr[i].max+'.');
            return false;
          }
          this.onfocus();
          return true;
        }
    }//check

    this.showInfo = function() {
      for(var i=0; i<Restrictions.restr.length; i++){
        //alert(Restrictions.restr[i].obj);
        if( eval(Restrictions.restr[i].obj ) == this ) {
          window.status = "Pozostało znaków do wprowadzenia: "+(Restrictions.restr[i].max-this.value.length);
          return true;
        }
      }
    }//showInfo

    this.init = function() {
      if(_initiated) return;
      //var objName = '';
      for(var i=0; i<this.restr.length; i++) with(this.restr[i]) {
        var objDomElements = obj.split('.');
        var objLoc = 'document';
        var bad = false;
        for(var j=0;j<objDomElements.length;j++){
          objLoc += '.'+objDomElements[j];
          if(!eval(objLoc)) {bad=true;break}
        }
        obj = !bad ? objLoc : Doc.findObj(obj,true);
        eval(obj+'.onfocus=Restrictions.showInfo');
        //var actionOld = eval(obj+'.onkeyup');
        //var actionOld = obj+'.onkeyup';
        //alert(actionOld);
        //eval(obj+'.onkeyup=function() {actionOld(); Restrictions.check; }');
        //alert(obj+'.onkeyup');
        eval(obj+'.onkeyup=Restrictions.check;');
        eval(obj+'.onblur=function(){window.status=""}');
      }
      _initiated = true;
    }//init

    this.getRestriction = function(elementName) {
      for(var i=0; i<this.restr.length; i++){
        if(String(this.restr[i].obj)==elementName ) return this.restr[i];
      }
      return false;
    }//getRestriction
  }//Restrictions
}//if(!Restrictions)