__SEND_MESG_DEBUG("entering run")
/* getting id_js_code */
@co_getProp(par_area, par_class ,par_id,'"id_js_code"');
__ASSERT(err==0, "could not find menu_action id: %d", par_id)
id_js_code = atoi(get_str);

__SEND_MESG_DEBUG("id_js_code: %d", id_js_code)

/* getting params */
@co_getRelated(par_area, par_class,par_id, '"menu_action_param"');

snprintf(JSOutBuf+strlen(JSOutBuf),JSBUFSIZE-strlen(JSOutBuf), "var context = new Object();\n");

nTuples = cor_GetTupleCount(cnx, corec);
for (i = 0; i < nTuples; i++)
{
param_name = cor_GetCopyOfValueByName(cnx, corec, i, "param_name");
param_type = cor_GetCopyOfValueByName(cnx, corec, i, "param_type");
param_default = cor_GetCopyOfValueByName(cnx, corec, i, "param_default");
param_optional = atoi(cor_GetValueByName(cnx, corec, i, "param_optional"));

param_value = (char *) cou_getParam(cnx,param_name,CO_STRING, &err);
if(param_optional)
{
if(err==CO_PARAMETER_NOT_FOUND)
{
param_value = param_default;
err=0;
}
}
__ASSERT(err==0, "in menu_action::evaluate id_menu_action:%d parameter not optionall: %s",par_id,param_name)
snprintf(JSOutBuf+strlen(JSOutBuf),JSBUFSIZE-strlen(JSOutBuf), "context.%s ='%s'\n",param_name,param_value);
}

@co_call(par_area, '"js_code"', "evaluate", par_area=>par_area, par_class=>'"js_code"',par_id=>id_js_code, prolog=>JSOutBuf);
__CREATE_JS_FROM_STRING("")