memset(class_names, 0, sizeof(char*)*1000);

@co_lcall(par_area,'"meta_class"',"getFullPathByClassName",par_area=>par_area,par_class=>'"meta_class"',par_id=>-1,callback=>'""',class_name=>for_class);
__GET_RETURNED_STRING(path)

/* WARNING: MODIFIES READ ReturnValue ! */
cou_split(path,class_names,"|",1000);

i=0;
while(class_names[i])
{
cur_menu_name = ap_psprintf(p, "%s#%s@%s", menu_name, type, class_names[i]);
__SEND_MESG_DEBUG(cur_menu_name)
@co_getPropByName(par_area, '"menu"', cur_menu_name, '"id"');
if(err==0)
{
id_menu = atoi(get_str);

if(strlen(SQLString)>0) __APPEND_TO_QUERY(" UNION \n");

__APPEND_TO_QUERY(
" SELECT DISTINCT m.* "
" FROM co_%s_menu m "
" WHERE m.id_parent = %d AND "
" CASE WHEN sec_type=1 THEN co_%s_%s_check_acl_class(id_permission, %d) "
" ELSE co_%s_%s_check_acl(%d, id_permission, %d) END = 1"
,par_area, id_menu,
for_area, for_class, cnx->id_role,
for_area, for_class, for_id, cnx->id_role
)
}// if
i++;
} // while
//__ASSERT(strlen(SQLString)>0, "Menu not found")
if (strlen(SQLString)>0) // something was found - we have query
{
__APPEND_TO_QUERY(" ORDER BY menu_position ")
__GET_RESULT_AND_CREATE_JS
}