Stephan: KeyDown Event für HTML Table Cell

Beitrag lesen

.bind ist eine Methode aus dem Objekt Prototypen der ajaxpro DLL

//--------------------------------------------------------------
// Copyright (C) 2006 Michael Schwarz (http://www.ajaxpro.info).
// All rights reserved.
//--------------------------------------------------------------

// prototype.js
Object.extend = function(dest, source, replace) {
 for(var prop in source) {
  if(replace == false && dest[prop] != null) { continue; }
  dest[prop] = source[prop];
 }
 return dest;
};

Object.extend(Function.prototype, {
 apply: function(o, a) {
  var r, x = "__fapply";
  if(typeof o != "object") { o = {}; }
  o[x] = this;
  var s = "r = o." + x + "(";
  for(var i=0; i<a.length; i++) {
   if(i>0) { s += ","; }
   s += "a[" + i + "]";
  }
  s += ");";
  eval(s);
  delete o[x];
  return r;
 },
 bind: function(o) {
  if(!Function.__objs) {
   Function.__objs = [];
   Function.__funcs = [];
  }
  var objId = o.__oid;
  if(!objId) {
   Function.__objs[objId = o.__oid = Function.__objs.length] = o;
  }

var me = this;
  var funcId = me.__fid;
  if(!funcId) {
   Function.__funcs[funcId = me.__fid = Function.__funcs.length] = me;
  }

if(!o.__closures) {
   o.__closures = [];
  }

var closure = o.__closures[funcId];
  if(closure) {
   return closure;
  }

o = null;
  me = null;

return Function.__objs[objId].__closures[funcId] = function() {
   return Function.__funcs[funcId].apply(Function.__objs[objId], arguments);
  };
 }
}, false);

Object.extend(Array.prototype, {
 push: function(o) {
  this[this.length] = o;
 },
 addRange: function(items) {
  if(items.length > 0) {
   for(var i=0; i<items.length; i++) {
    this.push(items[i]);
   }
  }
 },
 clear: function() {
  this.length = 0;
  return this;
 },
 shift: function() {
  if(this.length == 0) { return null; }
  var o = this[0];
  for(var i=0; i<this.length-1; i++) {
   this[i] = this[i + 1];
  }
  this.length--;
  return o;
 }
}, false);

Object.extend(String.prototype, {
 trimLeft: function() {
  return this.replace(/^\s*/,"");
 },
 trimRight: function() {
  return this.replace(/\s*$/,"");
 },
 trim: function() {
  return this.trimRight().trimLeft();
 },
 endsWith: function(s) {
  if(this.length == 0 || this.length < s.length) { return false; }
  return (this.substr(this.length - s.length) == s);
 },
 startsWith: function(s) {
  if(this.length == 0 || this.length < s.length) { return false; }
  return (this.substr(0, s.length) == s);
 },
 split: function(c) {
  var a = [];
  if(this.length == 0) return a;
  var p = 0;
  for(var i=0; i<this.length; i++) {
   if(this.charAt(i) == c) {
    a.push(this.substring(p, i));
    p = ++i;
   }
  }
  a.push(s.substr(p));
  return a;
 }
}, false);

Object.extend(String, {
 format: function(s) {
  for(var i=1; i<arguments.length; i++) {
   s = s.replace("{" + (i -1) + "}", arguments[i]);
  }
  return s;
 },
 isNullOrEmpty: function(s) {
  if(s == null || s.length == 0) {
   return true;
  }
  return false;
 }
}, false);

if(typeof addEvent == "undefined")
 addEvent = function(o, evType, f, capture) {
  if(o == null) { return false; }
  if(o.addEventListener) {
   o.addEventListener(evType, f, capture);
   return true;
  } else if (o.attachEvent) {
   var r = o.attachEvent("on" + evType, f);
   return r;
  } else {
   try{ o["on" + evType] = f; }catch(e){}
  }
 };

if(typeof removeEvent == "undefined")
 removeEvent = function(o, evType, f, capture) {
  if(o == null) { return false; }
  if(o.removeEventListener) {
   o.removeEventListener(evType, f, capture);
   return true;
  } else if (o.detachEvent) {
   o.detachEvent("on" + evType, f);
  } else {
   try{ o["on" + evType] = function(){}; }catch(e){}
  }
 };