Function.prototype.partial = function(){
	var fn = this, args = Array.prototype.slice.call(arguments);
	return function(){
		var arg = 0;
		for ( var i = 0; i < args.length && arg < arguments.length; i++ )
			if ( args[i] === undefined )
				args[i] = arguments[arg++];
		return fn.apply(this, args);
	};
};
