function Delegate(){};
Delegate.create = function(t, m){
	var target = t;
	var method = m;
	var type = typeof(method);
	var args = [];
	for(var i=2; i < arguments.length; i++){ args[i-2] = arguments[i]; };
	return function(){
		var arr = [];
		for(var i=0; i < args.length; i++){ arr[i] = args[i]; };
		for(var i=0; i < arguments.length; i++){ arr[arr.length] = arguments[i]; };
		switch(typeof(method)){
			case "string":
				return (target[method] || eval(method)).apply(target, arr);
			case "function":
				return method.apply(target, arr);
			default:
				alert("WARNING: Delegate.create unexpected method type: "+typeof(method));
		}
		return null;
	};
};