function set_def_select (sel_id, sel_val)
{
	var sel_el = document.getElementById(sel_id);
	for (i=0; i < sel_el.options.length; i++)
	{
		if (sel_el.options[i].value == sel_val)
		{
			sel_el.selectedIndex = i;
		}
	}
}

function url (module, page, params)
{
	if (!url_path) 
	{
		alert("Redirection error: url_path not set");
		return false;
	}

	var url_form = "{url_path}/index.php?request:{module}-{page}{&{param}={value}}";
	var url_addr = url_form;
	var param_block = "";
	var param_block_form = null;
	
	// replace url_path
	url_addr = url_addr.replace(/\{url_path\}/, url_path);
	
	// replace module
	url_addr = url_addr.replace(/\{module\}/, module);
	
	// replace page
	url_addr = url_addr.replace(/\{page\}/, page);
	
	// get param block
	var re = new RegExp(/\{[^\{\}]?\{(param|value)\}[^\{\}]?\{(param|value)\}[^\{\}]?\}/);
	var m = re.exec(url_addr);
	if (m == null)
	{
		alert("Redirection error: url_form could not be processed");
		return false;
	}
	else
	{
		param_block_form = m[0];
    }
	
	// extract params
	if (params)
	{
		var PRM = new Array();
		PRM = params.split("&");
		
		// replace params
		for (i = 0; i < PRM.length; i++)
		{
			var aux = PRM[i].split("=");
			block = param_block_form.replace(/\{param\}/, aux[0]).replace(/\{value\}/, aux[1]);
			block = block.substr(1, block.length - 2);
			param_block += block;
		}
	}
	
	// prep for substitution (escape regexp special chars)
	param_block_form_re = param_block_form.replace(/([^a-zA-Z0-9 _><=])/g, "\\$1");
	
	// replace param block
	url_addr = url_addr.replace(eval("/" + param_block_form_re + "/"), param_block);
	
	return url_addr;
}
