// JavaScript Document

String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }  
String.prototype.trimLeft = function() { return this.replace(/(^\s*)/g, ""); }  
String.prototype.trimRight = function() { return this.replace(/(\s*$)/g, ""); } 
//String.prototype.length = function(){ var arr=this.match(/[^\x00-\xff]/ig);return this.length+(arr==null?0:arr.length);}
String.prototype.getChar = function(index) { return this.substr(index,1); }  
String.prototype.endWith = function(value) { return this.getChar(this.length-1) == value; }  

Array.prototype.add = function(value){ this.push(value);}
Array.prototype.addat = function(index,value){ this.splice(index,0,value);}
Array.prototype.remove = function(index,length){ this.splice(index,length);}
Array.prototype.removeat = function(index){ this.remove(index,1);}
Array.prototype.clear = function(){ this.splice(0,this.length);}
Array.prototype.contains = function(value){for(var i=0;i<this.length;i++){if(this[i] == value)return true;}return false;}
Array.prototype.joinArray = function(array,flag){for(var i=0;i< array.length;i++){if(flag){if(!this.contains(array[i])){this.add(array[i]);}}else{this.add(array[i]);}}return this;}

function $(id){return document.getElementById(id);}
function T(tag){return document.getElementsByTagName(tag);}
function N(name){return document.getElementsByName(name);}

/* 公共函数 */
function extend(des, src) {if (!des)des = {};if (src) {for (var i in src) {des[i] = src[i];}}return des;}
function namespace(ns){
    if(typeof(ns)!="string")return;
    ns=ns.split(".");
    var o,ni;
    for(var i=0,len=ns.length;i<len,ni=ns[i];i++){
       try{o=(o?(o[ni]=o[ni]||{}):(eval(ni+"="+ni+"||{}")))}catch(e){o=eval(ni+"={}")}
    }
}

var ClassHelper = {};
ClassHelper.extend = function(superclass, constructor){
   var clazz = (function() {
      this.initialize.apply(this, arguments);
   });
 
	//如果无参数,直接返回类.
	if(arguments.length == 0)
    return clazz;
 
  //如果无父类,此时constructor应该为一个纯对象,直接复制属性返回.
  if(!superclass){
  	extend(clazz.prototype, constructor);
  	return clazz;
  }
 
  var absObj = clazz.prototype,
      sprPropty = superclass.prototype;
 
  if(sprPropty){
			//用于访问父类方法
      clazz.superclass = sprPropty;
      extend(absObj, sprPropty);
 
      //调用属性构造函数创建属性,这个是实现关键.
      extend(absObj, constructor(sprPropty));
 
      // 子类实例直接通过obj.superclass访问父类属性,
      // 如果不想造成过多引用,也可把这句注释掉,因为多数时候是没必要的.
      absObj.superclass = sprPropty;
      //
      clazz.constructor = constructor;
  }
 
  return clazz;
}

Knet = ClassHelper.extend(null,{
        initialize : function(options){
		extend(this, options);
	}
});

namespace('Knet');
Knet.Basic = ClassHelper.extend(Knet,function(superclass){
});



