/*
 * Title:
 * Description:
 * Aucthor: 曾宪斌
 * Email: zengxianbin@gmail.com
 * Create Date:2009-06-18
 * Copyright 2009
 */ 
Z = {};
Z.apply=function (C,D,B){
	if(B){
		$.apply(C,B);
	}if(C&&D&&typeof D=="object"){
		for(var A in D){
		  C[A]=D[A];
		}
	}
	return C;
};

Z.override = function(origclass, overrides){
    if(overrides){
       var p = origclass.prototype;
       for(var method in overrides){
           p[method] = overrides[method];
       }
    }
}
Z.extend = function(){
    // inline overrides
    var inlineOverride = function(o){
        for (var m in o) {
            this[m] = o[m];
        }
    };
    return function(subFn, superFn, overrides){
        if (typeof superFn == 'object') { 
           //如果subFn也是对象的话（一般来说subFn这里放的是父类的构造函数），那么第三个参数overrides参数相当于被忽略掉
            overrides = superFn;
            superFn = subFn;
           //subFn重新定义了函数 
            subFn = function(){
                superFn.apply(this, arguments);
            };
        }
        var F = function(){
        }, subFnPrototype, superFnPrototype = superFn.prototype;

        F.prototype = superFnPrototype;
        subFnPrototype = subFn.prototype = new F();
		subFnPrototype.constructor = subFn;
        subFn.superclass = superFnPrototype;
		if (superFnPrototype.constructor == Object.prototype.constructor) {
            superFnPrototype.constructor = superFn;
        }
        subFn.override = function(obj){
            Z.override(subFn, obj);
        };
        subFnPrototype.override = inlineOverride;
        Z.override(subFn, overrides);
        return subFn;
    };
}();


Z.isInt = function(str){
	return /^\-?\d+$/.test(""+str);
};

Z.isNumber = function(str){
	var t = ""+str;
	for(var i=0;i<str.length;i++){
		var chr = str.charAt(i);
		if(chr!="."&&chr!="E"&&isNaN(parseInt(chr))){
			return false;
		}
	}
	return true;
};

Z.isTime = function(str){
	var arr = str.split(":");
	if(arr.length!=3){
		return false;
	}
	var date = new Date();
	date.setHours(arr[0]);
	date.setMinutes(arr[1]);
	date.setSeconds(arr[2]);
	return date.toString().indexOf("Invalid")<0;
};

Z.isDate = function(str){
	var arr = str.split("-");
	if(arr.length!=3){
		return false;
	}
	var date = new Date();
	date.setFullYear(arr[0]);
	date.setMonth(arr[1]);
	date.setDay(arr[2]);
	return date.toString().indexOf("Invalid")<0;
};

Z.isArray = function(obj) {
	 if(!obj){
	 	 return false;
	 }
   if (obj.constructor.toString().indexOf("Array") == -1){
      return false;
   } else{
      return true;
   }
};

