var LOCALIZED_TEXT_VALIDATED = false;
var LOCALIZED_TEXT_FAILED = false;
var ERR_MSG = "ERROR - Text is missing from library for ";

function localize(key, arg0, arg1, arg2)
//##############################################################
{
	var ok = ensure_localized_map_exists();
	if (! ok)
	{
		return ERR_MSG + key;
	}

	if (key == undefined || ! key.match(/\S/) )
	{	debug("localize() key is blank");
		return ERR_MSG + "blank key";
	}

	var val = LOCALIZED_TEXT[key];

	if (val == undefined || ! val.match(/\S/) )
	{	debug("localize() value for (" + key + ") is blank");
		return ERR_MSG + key;
	}

	// TODO - make this more flexible
	val = val.replace(/\{0\}/g, arg0);
	val = val.replace(/\{1\}/g, arg1);
	val = val.replace(/\{2\}/g, arg2);

	return val;
}

function ensure_localized_map_exists()
//##############################################################
{
	if (LOCALIZED_TEXT_FAILED)
	{
		return false;
	}

	if (LOCALIZED_TEXT_VALIDATED)
	{
		return true;
	}

	if (this.LOCALIZED_TEXT == undefined)
	{
		debug("localize() LOCALIZED_TEXT map is null or malformed.  Go fix localized_text.js");
		LOCALIZED_TEXT_FAILED = true;
		return false;
	}

/*	var type = this.LOCALIZED_TEXT.constructor;

	if (type != Array)
	{
		debug("localize() LOCALIZED_TEXT is a "+type+" not a map");
		LOCALIZED_TEXT_FAILED = true;
		return false;
	}
*/
	LOCALIZED_TEXT_VALIDATED = true;
	return true;
}
