/*	Named Arguments Version 1.0.1
	Copyright 2004 Mark Wubben

	Adds named arguments support to JavaScript. See also <http://novemberborn.net/javascript/named-arguments>
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

function named(oArgs){ 
	return new named.Arguments(oArgs);
};

named.Arguments = function(oArgs){
	this.oArgs = oArgs;
};

named.Arguments.prototype.constructor = named.Arguments;

named.extract = function(listPassedArgs, oMapping){
	var oNamedArgs, passedArg;
	
	for(var i = 0; i < listPassedArgs.length; i++){
		passedArg = listPassedArgs[i];
		if(passedArg != null && passedArg.constructor != null && passedArg.constructor == named.Arguments){
			oNamedArgs = listPassedArgs[i].oArgs; /* oNamedArgs isn't the named.Arguments class! */
			break;
		};
	};
	
	if(oNamedArgs == null){ return };
	
	for(var sName in oNamedArgs){
		if(sName in oMapping){
			oMapping[sName](oNamedArgs[sName]);
		};
	};
	
	return;
};