(function(jq) {
	var asArray = function(a) {
		return Array.prototype.slice.call(a,0);
	}
	jq.delegate = function(func, scope, params, overwriteDefault) {
		if(params != null){
			if(!jq142.isArray(params)){ 
				params = [params];
			}
		}
		return function() {
			if(!overwriteDefault) func.apply(scope, asArray(arguments).concat(params));
			else func.apply(scope, args);
		}
	}	
	jq.callback = function(func, params, overwriteDefault) {
		return jq.delegate(func, this, params, overwriteDefault);
	}
})(jq142);
