+function crm_category_types_list($name, $selected_id=null, $filter=array(), $submit_on_change=true)
+{
+
+ $sql = "SELECT id, name, type, inactive FROM ".TB_PREF."crm_categories";
+
+ $multi = false;
+ $groups = false;
+ $where = array();
+ if (@$filter['class']) {
+ $where[] = 'type='.db_escape($filter['class']);
+ } else
+ $groups = 'type';
+ if (@$filter['subclass']) $where[] = 'action='.db_escape($filter['subclass']);
+ if (@$filter['entity']) $where[] = 'entity_id='.db_escape($filter['entity']);
+ if (@$filter['multi']) { // contact category selector for person
+ $multi = true;
+ }
+
+ return combo_input($name, $selected_id, $sql, 'id', 'name',
+ array(
+ 'multi' => $multi,
+ 'height' => $multi ? 5:1,
+ 'category' => $groups,
+ 'select_submit'=> $submit_on_change,
+ 'async' => true,
+ 'where' => $where
+ ));
+}
+
+function crm_category_types_list_row($label, $name, $selected_id=null, $filter=array(), $submit_on_change=true)
+{
+ echo "<tr><td class='label'>$label</td><td>";
+ echo crm_category_types_list($name, $selected_id, $filter, $submit_on_change);
+ echo "</td></tr>\n";
+}
+
+function payment_type_list_row($label, $name, $selected_id=null, $submit_on_change=false)
+{
+ global $pterm_types;
+
+ echo "<tr><td class='label'>$label</td><td>";
+ echo array_selector($name, $selected_id, $pterm_types,
+ array(
+ 'select_submit'=> $submit_on_change
+ ) );
+ echo "</td></tr>\n";
+}
+
+function coa_list_row($label, $name, $value=null)
+{
+ global $path_to_root, $installed_extensions;
+
+ $path = $path_to_root.'/sql/';
+ $coas = array();
+ $sqldir = opendir($path);
+ while (false !== ($fname = readdir($sqldir)))
+ {
+ if (is_file($path.$fname) && substr($fname,-4)=='.sql' && @($fname[2] == '_'))
+ {
+ $ext = array_search_value($fname, $installed_extensions, 'sql');
+ if ($ext!=null) {
+ $descr = $ext['name'];
+ } elseif ($fname == 'en_US-new.sql') { // two standard COAs
+ $descr = _("Standard new company American COA (4 digit)");
+ } elseif ($fname == 'en_US-demo.sql') {
+ $descr = _("Standard American COA (4 digit) with demo data");
+ } else
+ $descr = $fname;
+
+ $coas[$fname] = $descr;
+ }
+ }
+ ksort($coas);
+
+ echo "<tr><td class='label'>$label</td>\n<td>";
+ echo array_selector( $name, $value, $coas );
+ echo "</td></tr>\n";
+}