build/utils.js
function(target) {
	var undef;

	each(arguments, function(arg, i) {
		if (i > 0) {
			each(arg, function(value, key) {
				if (value !== undef) {
					if (typeof(target[key]) === typeof(value) && (typeof(value) === 'object' || util.isArray(value))) {
						extend(target[key], value);
					} else {
						target[key] = value;
					}
				}
			});
		}
	});
	return target;
}
function(target) {
	var undef;

	each(arguments, function(arg, i) {
		if (i > 0) {
			each(arg, function(value, key) {
				if (value !== undef) {
					if (typeof(target[key]) === typeof(value) && (typeof(value) === 'object' || util.isArray(value))) {
						extend(target[key], value);
					} else {
						target[key] = value;
					}
				}
			});
		}
	});
	return target;
}
Extends the specified object with another object.

@author Moxiecode
@method extend
@param {Object} target Object to extend.
@param {Object} [obj]* Multiple objects to extend with.
@return {Object} Same as target, the extended object.