case 'saveDT':
     /*
      detailtype:{
             colNames:common:[],
             defs:[dtyID:{},.... ]
     */
     if (!array_key_exists('detailtype', $data) || !array_key_exists('colNames', $data['detailtype']) || !array_key_exists('defs', $data['detailtype'])) {
         error_exit("Invalid data structure sent with saveDetailType method call to saveStructure.php");
     }
     $commonNames = $data['detailtype']['colNames']['common'];
     $rv['result'] = array();
     //result
     foreach ($data['detailtype']['defs'] as $dtyID => $dt) {
         if ($dtyID == -1) {
             // new detailtypes
             array_push($rv['result'], createDetailTypes($commonNames, $dt));
         } else {
             array_push($rv['result'], updateDetailType($commonNames, $dtyID, $dt));
             //array($dtyID =>
         }
     }
     $rv['detailTypes'] = getAllDetailTypeStructures();
     break;
 case 'checkDTusage':
     //used in editRecStructure to prevent detail type delete
     $rtyID = @$_REQUEST['rtyID'];
     $dtyID = @$_REQUEST['dtyID'];
     $rv = findTitleMaskEntries($rtyID, $dtyID);
     break;
 case 'deleteDetailType':
 case 'deleteDT':
        if ($def_field[$idx_type] == "resource" || $def_field[$idx_type] == "relmarker") {
            //change record ids for pointers
            $def_field[$idx_constraints] = replaceRecIds(@$def_field[$idx_constraints]);
        }
    }
    //fill original ids if missed
    if ($def_field[$idx_ccode] && (!$def_field[$idx_origin_dbid] || !$def_field[$idx_origin_id])) {
        $codes = explode("-", $def_field[$idx_ccode]);
        if ($codes && count($codes) == 2) {
            $def_field[$idx_origin_dbid] = $codes[0];
            $def_field[$idx_origin_id] = $codes[1];
        }
    }
    array_shift($def_field);
    //remove dty_ID
    $res = createDetailTypes($columnNames, array("common" => $def_field));
    if (is_numeric($res)) {
        $fields_correspondence[$ftId] = abs($res);
        $trg_fieldtypes['names'][abs($res)] = $def_field[$idx_name - 1];
        //new name
    } else {
        error_exit("Can't add field type for id#" . $ftId . ". " . $res);
    }
}
// ------------------------------------------------------------------------------------------------
// VI. Add record structures
$idx_type = $def_rts['dtFieldNamesToIndex']['dty_Type'];
$idx_terms_tree = $def_rts['dtFieldNamesToIndex']['rst_FilteredJsonTermIDTree'];
//value is the same as
$idx_terms_disabled = $def_rts['dtFieldNamesToIndex']['dty_TermIDTreeNonSelectableIDs'];
$idx_constraints = $def_rts['dtFieldNamesToIndex']['rst_PtrFilteredIDs'];