<?PHP
/* Structure of array:
0: name of element
1: mandatory? (y or n)
2: format (eg. text/utf8
3: allowed values (eg. "m", "cm", ...)
4: dependent fields
5: remarks
*/
declare(strict_types = 1);

require __DIR__ . "/../mdAvailableLicenses/licenses.php";
require __DIR__ . "/../translation-importer/$lang/csvxml-overview.php";

foreach (array_diff(scandir(__DIR__ . "/langfiles/$lang/"), ['.', '..']) as $fileName) {
    if (in_array($fileName, ['start.php', 'start2.php'])) continue;
    include __DIR__ . "/langfiles/{$lang}/{$fileName}";
}

require __DIR__ . "/commonservices/$lang/search_all_fields.php";
require __DIR__ . "/commonservices/units.php";
require __DIR__ . "/commonservices/$lang/eventtype_name.php";

if (empty($fieldNoMultiplicator) or !is_numeric($fieldNoMultiplicator)) {
    $fieldNoMultiplicator = 1;
}

$availableFields = [

    $csvxml_overview['object_base_data'] => [
        "inventory_number" => [
            "required"            => true,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => 'Only unique values allowed',
            "name_human_readable" => $object_basis['inventory_number'],
            "explica"             => $object_basis['inv_explica'],
        ],
        "object_type" => [
            "required"            => true,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => 'Keep it short! Field is needed to create valid LIDO from museum-digital entries',
            "name_human_readable" => $object_basis['object_type'],
            "explica"             => $object_basis['oart_explica'],
        ],
        "object_title" => [
            "required"            => true,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => 'Best is not to repeat the title again and again for many objects, e.g. vase, vase, vase ... better: Green vase, Blue vase, Yellow vase, ...',
            "name_human_readable" => $object_basis['object_name'],
            "explica"             => $object_basis['oname_explica'],
        ],
        "object_description" => [
            "required"            => true,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => 'A good description of the objects is fundamental to make the objects searchable in the internet',
            "name_human_readable" => $object_basis['description'],
            "explica"             => $object_basis['obesch_explica'],
        ],
        "object_material_technique" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => 'This is a cummulative field for material and technique. It is also possible to additionally save the information separate in the fields: <i>material_separate</i> and <i>technique_separate</i>',
            "name_human_readable" => $object_basis['mattech'],
            "explica"             => $object_basis['mattech_explica'],
        ],
        "object_dimensions" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => 'This is a cummulative field for dimensions (values and units). It is also possible to additionally save the information separate. See the block: <i>separate dimensions</i>',
            "name_human_readable" => $object_basis['measurements'],
            "explica"             => $object_basis['ausmass_explica'],
        ],
        "object_publication" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => [],
            "remark"              => 'Shall the object be visible directly after import?',
            "name_human_readable" => $objekt['visibility'],
            "explica"             => '',
        ],
        "institution_name" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => 'If name of institution is given it has to be exactly the same as already known in museum-digital',
            "name_human_readable" => $museum['museum_name'],
            "explica"             => $museum['musnam_explica'],
        ],
    ],
    $searchvar[0][0] => [
        "object_other_title" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['object_other_title_kind_of'],
            "remark"              => 'If the field <i>object_other_title</i> is used. It has to be specified where this alternative title is used. Specification should be done within the field: <i>object_other_title_kind_of</i>',
            "name_human_readable" => $searchvar[0][0],
            "explica"             => '',
        ],
        "object_other_title_kind_of" => [
            "required"            => false,
            "allowedValues"       => array_values($titelart),
            "dependsOn"           => ['object_other_title'],
            "remark"              => 'This field has to be used togehter with <i>object_other_title</i>',
            "name_human_readable" => $searchvar[0][0] . ', in: ',
            "explica"             => '',
        ],
    ],
    $searchvar[46][0] => [
        "detailed_description" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['detailed_description_md', 'detailed_description_extern'],
            "remark"              => 'If <i>detailed_desription</i> is made available for an object, <i>detailed_description_md</i> and <i>detailed_description_extern</i> have to have values too',
            "name_human_readable" => $searchvar[46][0],
            "explica"             => $object_add['ddesc_inhalt'],
        ],
        "detailed_description_md" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ['detailed_description', 'detailed_description_extern'],
            "remark"              => 'Shall detailed description be visible at museum-digital? If <i>detailed_desription</i> is available for an object, <i>detailed_description_md</i> and <i>detailed_description_extern</i> have to have values too',
            "name_human_readable" => $object_add['ddesc_visibility_md'],
            "explica"             => "",
        ],
        "detailed_description_extern" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ['detailed_description_md', 'detailed_description'],
            "remark"              => 'Shall later exports from museum-digital include the detailed_description?</br>If <i>detailed_desription</i> is available for an object, <i>detailed_description_md</i> and <i>detailed_description_extern</i> have to have values too',
            "name_human_readable" => $object_add['ddesc_visibility_extern'],
            "explica"             => "",
        ],
    ],
    $searchvar[2][0] => [
        "inscription" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['inscription_md', 'inscription_extern'],
            "remark"              => 'If <i>inscription</i> is made available for an object, <i>inscription_md></i> and <i>inscription_extern</i> have to have values too',
            "name_human_readable" => $searchvar[2][0],
            "explica"             => $object_add['besch_inhalt'],
        ],
        "inscription_md" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ['inscription_md', 'inscription_extern'],
            "remark"              => 'Shall a given inscription be displayed at museum-digital? If <i>inscription</i> is available for an object, <i>inscription_md></i> and <i>inscription_extern</i> have to have values too',
            "name_human_readable" => $object_add['besch_visibility_md'],
            "explica"             => "",
        ],
        "inscription_extern" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ['inscription_md', 'inscription_extern'],
            "remark"              => 'Shall later exports from museum-digital inlude inscription? If <i>inscription</i> is available for an object, <i>inscription_md></i> and <i>inscription_extern</i> have to have values too',
            "name_human_readable" => $object_add['besch_visibility_extern'],
            "explica"             => "",
        ],
    ],
    "{$searchvar[52][0]} / {$searchvar[53][0]}" => [
        "material_separate" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'Additional to collecting material and technique in a combined field (see above), the material(s) can be given here separately',
            "name_human_readable" => $searchvar[52][0],
            "explica"             => "",
        ],
        "technique_separate" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'Additional to collecting material and technique in a combined field (see above), the technique(s) can be given here separately',
            "name_human_readable" => $searchvar[53][0],
            "explica"             => "",
        ],
    ],
    $object_add['separated_measurements'] => [
        "dimensions_separate_length_value" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['dimensions_separate_length_unit', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_length_value'],
            "explica"             => "",
        ],
        "dimensions_separate_length_unit" => [
            "required"            => false,
            "allowedValues"       => $laengeneinheit,
            "dependsOn"           => ['dimensions_separate_length_value', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_length_unit'],
            "explica"             => "",
        ],
        "dimensions_separate_width_value" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['dimensions_separate_width_unit', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_width_value'],
            "explica"             => "",
        ],
        "dimensions_separate_width_unit" => [
            "required"            => false,
            "allowedValues"       => $laengeneinheit,
            "dependsOn"           => ['dimensions_separate_width_value', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_width_unit'],
            "explica"             => "",
            "required"            => false,
        ],
        "dimensions_separate_height_value" => [
            "allowedValues"       => [],
            "dependsOn"           => ['dimensions_separate_height_unit', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_height_value'],
            "explica"             => "",
        ],
        "dimensions_separate_height_unit" => [
            "required"            => false,
            "allowedValues"       => $laengeneinheit,
            "dependsOn"           => ['dimensions_separate_height_value', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_height_unit'],
            "explica"             => "",
        ],
        "dimensions_separate_weight_value" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['dimensions_separate_weight_unit', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_weight_value'],
            "explica"             => "",
        ],
        "dimensions_separate_weight_unit" => [
            "required"            => false,
            "allowedValues"       => $gewichteinheit,
            "dependsOn"           => ['dimensions_separate_width_value', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_weight_unit'],
            "explica"             => $object_basis['inv_explica'],
        ],
        "dimensions_separate_diameter_value" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['dimensions_separate_diameter_unit', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_diameter_value'],
            "explica"             => "",
        ],
        "dimensions_separate_diameter_unit" => [
            "required"            => false,
            "allowedValues"       => $laengeneinheit,
            "dependsOn"           => ['dimensions_separate_diameter_value', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_diameter_unit'],
            "explica"             => "",
        ],
        "dimensions_separate_wall_thickness_value" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['dimensions_separate_wall_thickness_unit', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_wall_size_value'],
            "explica"             => "",
        ],
        "dimensions_separate_wall_thickness_unit" => [
            "required"            => false,
            "allowedValues"       => $laengeneinheit,
            "dependsOn"           => ['dimensions_separate_wall_thickness_value', 'dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => 'If a separated value is given an entry for the respective unit is necessary. If a separated dimension entry is given, <i>dimensions_separate_show_md</i> and <i>dimensions_separate_show_extern</i> need to be filled in, too.',
            "name_human_readable" => $export['exact_measurements_wall_size_unit'],
            "explica"             => "",
        ],
        "dimensions_separate_show_md" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => [
                "dimensions_separate_length_value", "dimensions_separate_length_unit", "dimensions_separate_width_value",
                "dimensions_separate_width_unit", "dimensions_separate_height_value", "dimensions_separate_height_unit",
                "dimensions_separate_weight_value", "dimensions_separate_weight_unit", "dimensions_separate_diameter_value",
                "dimensions_separate_diameter_unit", "dimensions_separate_wall_thickness_value", "dimensions_separate_wall_thickness_unit"
            ],
            "remark"              => 'If one or more separate dimension-value (and -unit) is given it has to be specified if the separated entries should be made visible at museum-digital',
            "name_human_readable" => $object_basis['inventory_number'],
            "explica"             => "",
        ],
        "dimensions_separate_show_extern" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => [
                "dimensions_separate_length_value", "dimensions_separate_length_unit", "dimensions_separate_width_value",
                "dimensions_separate_width_unit", "dimensions_separate_height_value", "dimensions_separate_height_unit",
                "dimensions_separate_weight_value", "dimensions_separate_weight_unit", "dimensions_separate_diameter_value",
                "dimensions_separate_diameter_unit", "dimensions_separate_wall_thickness_value", "dimensions_separate_wall_thickness_unit"
            ],
            "remark"              => 'If one or more separate dimension-value (and -unit) is given it has to be specified if the separated entries should be included in a later export from museum-digital',
            "name_human_readable" => $object_basis['inventory_number'],
            "explica"             => "",
        ],
        "number_of_pieces" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'Only to be given if more than one copies of an object are available and catalogued with the same inventory number',
            "name_human_readable" => $export['exact_measurements_number_pieces'],
            "explica"             => "",
        ],
        "number_of_pages" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'Only to be given for books (etc.)',
            "name_human_readable" => $export['exact_measurements_number_pages'],
            "explica"             => "",
        ],
        "dimensions_separate_stamp_position" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['dimensions_separate_show_md', 'dimensions_separate_show_extern'],
            "remark"              => '',
            "name_human_readable" => $export['exact_measurements_stamp_position'],
            "explica"             => "",
        ],
    ],
    $searchvar[11][0] => [
        "comparable_objects_other_museums" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['comparable_objects_other_museums_show_md', 'comparable_objects_other_museums_show_extern'],
            "remark"              => 'Name of other museum and if available the inventory number of the respective object. If <i>comparable_objects_other_museums</i> is given <i>comparable_objects_other_museums_show_md</i> and <i>comparable_objects_other_museums_show_extern</i> have to be given too',
            "name_human_readable" => $searchvar[11][0],
            "explica"             => $object_add['vergl_inhalt'],
        ],
        "comparable_objects_other_museums_show_md" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ['comparable_objects_other_museums', 'comparable_objects_other_museums_show_extern'],
            "remark"              => 'Necessary if <i>comparable_objects_other_museums</i> is given. Should the information about comparable objects be displayed at museum-digital?',
            "name_human_readable" => $object_add['vergl_visibility_md'],
            "explica"             => "",
        ],
        "comparable_objects_other_museums_show_extern" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ['comparable_objects_other_museums', 'comparable_objects_other_museums_show_md'],
            "remark"              => 'Necessary if <i>comparable_objects_other_museums</i> is given. Should the information about comparable objects be part of later exports from museum-digital?',
            "name_human_readable" => $object_add['vergl_visibility_extern'],
            "explica"             => "",
        ],
    ],
    $searchvar[1][0] => [
        "closer_location" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ['closer_location_as'],
            "remark"              => 'A place in a special relation to the object. The kind of relation has to specified in <i>closer_location_as</i>',
            "name_human_readable" => $searchvar[1][0],
            "explica"             => $object_add['loka_inhalt'],
        ],
        "closer_location_as" => [
            "required"            => false,
            "allowedValues"       => array_values($ortart),
            "dependsOn"           => ['closer_location'],
            "remark"              => 'A place in a special relation to the object can be given in <i>closer_location</i>. Here the kind of relation between object and place has to specified',
            "name_human_readable" => "{$searchvar[1][0]}, {$object_add['as']}",
            "explica"             => "",
        ],
    ],
    $object_add['classification'] => [
        "entry_number" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'The entry number of the object if available',
            "name_human_readable" => $searchvar[12][0],
            "explica"             => $object_add['einu_inhalt'],
        ],
        "other_inventory_number" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'All other inventory numbers (older ones presumably) in one field',
            "name_human_readable" => $searchvar[13][0],
            "explica"             => $object_add['invp_inhalt'],
        ],
        "subject_group" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'If the object is part of an subject group this information should be given here',
            "name_human_readable" => $searchvar[16][0],
            "explica"             => "",
        ],
        "systematic" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'If the object is put into a museum-systematic the place it has there',
            "name_human_readable" => $searchvar[17][0],
            "explica"             => "",
        ],
        "bundle" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'The bundle the object belongs to',
            "name_human_readable" => $searchvar[14][0],
            "explica"             => "",
        ],
        "part_of" => [
            "required"            => false,
            "allowedValues"       => [],
            "remark"              => 'If the object is part of something it can be given here',
            "name_human_readable" => $searchvar[15][0],
            "explica"             => "",
        ],
    ],
    $basis['administration'] => [
        "inclusion_when" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[19][0],
            "explica"             => $object_basis['inv_explica'],
        ],
        "inclusion_kind_of" => [
            "required"            => false,
            "allowedValues"       => array_values($zugangsart),
            "remark"              => '',
            "name_human_readable" => "{$searchvar[19][0]}, {$object_add['as']}",
            "explica"             => "",
        ],
        "inclusion_who" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => "{$searchvar[47][0]}",
            "explica"             => "",
        ],
        "inclusion_where" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[48][0],
            "explica"             => "",
        ],
        "registration_first_who" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[49][0],
            "explica"             => "",
        ],
        "registration_first_when" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[50][0],
            "explica"             => "",
        ],
    ],
    $object_add['object_history'] => [
        "owner_previous" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[18][0],
            "explica"             => $object_add['vorb_inhalt'],
        ],
        "object_history" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[22][0],
            "explica"             => $object_add['obge_inhalt'],
        ],
        "bought_for" => [
            "required"            => false,
            "allowedValues"       => '',
            "dependsOn"           => ["bought_for_currency"],
            "remark"              => '',
            "name_human_readable" => "{$searchvar[19][0]}, {$object_add['for']}",
            "explica"             => $object_basis['inv_explica'],
        ],
        "bought_for_currency" => [
            "required"            => false,
            "allowedValues"       => $currencies,
            "dependsOn"           => ["bought_for"],
            "remark"              => '',
            "name_human_readable" => "{$searchvar[19][0]}, {$object_add['for']}",
            "explica"             => "",
        ],
    ],
    $object_add['values'] => [
        "worth_determiner" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => "{$searchvar[23][0]}; {$object_add['by']}",
            "explica"             => "",
        ],
        "worth_when" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[23][0],
            "explica"             => "",
        ],
        "worth_value" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => "{$searchvar[23][0]}; {$object_add['at']}",
            "explica"             => "",
        ],
        "worth_unit" => [
            "required"            => false,
            "allowedValues"       => $currencies,
            "remark"              => '',
            "name_human_readable" => "{$searchvar[23][0]}; Currency",
            "explica"             => "",
        ],
        "worth_incurance_determiner" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => "{$searchvar[26][0]}; {$object_add['by']}",
            "explica"             => "",
        ],
        "worth_incurance_when" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => "{$searchvar[26][0]}",
            "explica"             => "",
        ],
        "worth_insurance_value" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => "{$searchvar[26][0]}; {$object_add['at']}",
            "explica"             => "",
        ],
        "worth_insurance_unit" => [
            "required"            => false,
            "allowedValues"       => $currencies,
            "remark"              => '',
            "name_human_readable" => "{$searchvar[26][0]}; Currency",
            "explica"             => "",
        ],
    ],
    $object_add['state'] => [
        "state" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[29][0],
            "explica"             => $object_add['zust_inhalt'],
        ],
        "restauration" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[30][0],
            "explica"             => $object_add['rest_inhalt'],
        ],
    ],
    $basis['abode'] => [
        "abode_actual" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[31][0],
            "explica"             => $object_add['aktu_inhalt'],
        ],
        "abode_regular" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[32][0],
            "explica"             => $object_add['stan_inhalt'],
        ],
        "exhibition" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[33][0],
            "explica"             => $object_add['aust_inhalt'],
        ],
        "on_loan_to" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[34][0],
            "explica"             => $object_add['verl_inhalt'],
        ],
        "on_loan_contact" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[35][0],
            "explica"             => $object_add['ansp_inhalt'],
        ],
        "on_loan_when" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[36][0],
            "explica"             => $object_add['vher_inhalt'],
        ],
        "on_loan_insurance_value" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[37][0],
            "explica"             => $object_add['vlei_inhalt'],
        ],
        "on_loan_annotation" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[38][0],
            "explica"             => $object_add['alei_inhalt'],
        ],
    ],
    $basis['rights'] => [
        "rights_object" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[39][0],
            "explica"             => $object_add['urhe_inhalt'],
        ],
        "rights_of_use" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[40][0],
            "explica"             => $object_add['nure_inhalt'],
        ],
        "rights_annotation" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[41][0],
            "explica"             => $object_add['arec_inhalt'],
        ],
        "rights_metadata_holder" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $object_add['metadata_rights_holder'],
            "explica"             => "",
        ],
        "rights_metadata_license" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $object_add['metadata_rights_status'],
            "explica"             => "",
        ],
    ],
    $basis['remarks'] => [
        "remarks_short" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[42][0],
            "explica"             => $object_add['kurz_inhalt'],
        ],
        "remarks_long" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[43][0],
            "explica"             => $object_add['noti_inhalt'],
        ],
        "images_in_museum" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[44][0],
            "explica"             => $object_add['oaim_inhalt'],
        ],
        "documents_in_museum" => [
            "required"            => false,
            "allowedValues"       => '',
            "remark"              => '',
            "name_human_readable" => $searchvar[45][0],
            "explica"             => $object_add['odim_inhalt'],
        ],
    ],
    $overview['links'] => [],
    $basis['literature'] => [],
    $basis['objectgroup'] => [],
    $overview['tags'] => [],
    $eventname[22] => [],
    $eventname[23] => [],
    $eventname[24] => [],
    $overview['images'] => [],
    $basis['resource'] => [],
    $basis['event'] . ": " . $eventname[1] => [],
    $basis['event'] . ": " . $eventname[2] => [],
    $basis['event'] . ": " . $eventname[3] => [],
    $basis['event'] . ": " . $eventname[4] => [],
    $basis['event'] . ": " . $eventname[5] => [],
    $basis['event'] . ": " . $eventname[36] => [],
    $basis['event'] . ": " . $eventname[6] => [],
    $basis['event'] . ": " . $eventname[7] => [],
    $basis['event'] . ": " . $eventname[8] => [],
    $basis['event'] . ": " . $eventname[9] => [],
    $basis['event'] . ": " . $eventname[10] => [],
    $basis['event'] . ": " . $eventname[11] => [],
    $basis['event'] . ": " . $eventname[12] => [],
    $basis['event'] . ": " . $eventname[13] => [],
    $basis['event'] . ": " . $eventname[14] => [],
    $basis['event'] . ": " . $eventname[15] => [],
    $basis['event'] . ": " . $eventname[16] => [],
    $basis['event'] . ": " . $eventname[19] => [],
    $basis['event'] . ": " . $eventname[20] => [],
    $basis['event'] . ": " . $eventname[21] => [],
    $basis['event'] . ": " . $eventname[25] => [],
    $basis['event'] . ": " . $eventname[26] => [],
    $basis['event'] . ": " . $eventname[27] => [],
    $basis['event'] . ": " . $eventname[28] => [],
    $basis['event'] . ": " . $eventname[29] => [],
    $basis['event'] . ": " . $eventname[30] => [],
    $basis['event'] . ": " . $eventname[31] => [],
    $basis['event'] . ": " . $eventname[32] => [],
    $basis['event'] . ": " . $eventname[33] => [],
    $basis['event'] . ": " . $eventname[34] => [],
    $basis['event'] . ": " . $eventname[35] => [],
    $basis['event'] . ": " . $eventname[37] => [],
    $basis['event'] . ": " . $eventname[38] => [],
];


/*
 * Repeat fields
 */

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {

    $availableFields[$overview['links']] = array_merge($availableFields[$overview['links']],
    [
        "link_url{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["link_show{$i}"],
            "remark"              => '',
            "name_human_readable" => $link['url'],
            "explica"             => $link['linklink_explica'],
        ],
        "link_show{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["link_url{$i}"],
            "remark"              => '',
            "name_human_readable" => $link['text'],
            "explica"             => $link['linkname_explica'],
        ],
    ]);

}

for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {

    $availableFields[$basis['literature']] = array_merge($availableFields[$basis['literature']],
    [
        "literature_author{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['author'],
            "explica"             => $literature['autor_explica'],
        ],
        "literature_year{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['year'],
            "explica"             => $literature['jahr_explica'],
        ],
        "literature_title{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => '',
            "name_human_readable" => $literature['title'],
            "explica"             => $literature['titel_explica'],
        ],
        "literature_place{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['place'],
            "explica"             => $literature['ort_explica'],
        ],
        "literature_abbreviation{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['abbr'],
            "explica"             => $literature['abbr_explica'],
        ],
        "literature_gnd{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['gnd'],
            "explica"             => $literature['gnd_explica'],
        ],
        "literature_isbn{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['isbn'],
            "explica"             => $literature['isbn_explica'],
        ],
        "literature_signature{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['id_in_museum'],
            "explica"             => $literature['id_in_museum_explica'],
        ],
        "literature_online{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['online'],
            "explica"             => $literature['online_explica'],
        ],
        "literature_annotation{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['annotation'],
            "explica"             => $literature['annotation_explica'],
        ],
        "literature_inlit{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["literature_title{$i}"],
            "remark"              => '',
            "name_human_readable" => $literature['where_inside'],
            "explica"             => $literature['where_in_explica'],
        ],
    ]);

}

// Collection names

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {

    $availableFields[$csvxml_overview['object_base_data']]["collection_name{$i}"] = [
        "required"            => false,
        "allowedValues"       => [],
        "dependsOn"           => [],
        "remark"              => 'Use if object belongs to a collection. If collection is already in museum-digital, please use exactly the same name',
        "name_human_readable" => $collection['name'],
        "explica"             => $collection['samnam_explica'],
    ];

}

for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {

    $availableFields[$basis['objectgroup']] = array_merge($availableFields[$basis['objectgroup']],
    [
        "object_group_name{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [],
            "remark"              => '',
            "name_human_readable" => $link['series_name'],
            "explica"             => $link['seriename_explica'],
        ],
        "object_group_description{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["object_group_name{$i}"],
            "remark"              => '',
            "name_human_readable" => $link['series_description'],
            "explica"             => $link['series_description'],
        ],
        "object_group_show{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ["object_group_name{$i}"],
            "remark"              => '',
            "name_human_readable" => $link['hide_objectgroup'],
            "explica"             => "",
        ],
    ]);

}

for ($i = 1; $i <= 10 * $fieldNoMultiplicator; $i++) {

    $availableFields[$overview['tags']]["tag{$i}"] = [
        "required"            => false,
        "allowedValues"       => [],
        "remark"              => '',
        "name_human_readable" => $overview['tags'],
        "explica"             => "",
    ];

}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {

    $availableFields[$eventname[22]] = array_merge($availableFields[$eventname[22]],
    [
        "related_place{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["related_place_sure{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['where'],
            "explica"             => "",
        ],
        "related_place_sure{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ["related_place{$i}"],
            "remark"              => '',
            "name_human_readable" => "{$event['where']} [{$csvxml_overview['certainty']}]",
            "explica"             => "",
        ],
    ]);

}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {

    $availableFields[$eventname[23]] = array_merge($availableFields[$eventname[23]],
    [
        "related_actor{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["related_actor_sure{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['who'],
            "explica"             => "",
        ],
        "related_actor_sure{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ["related_actor{$i}"],
            "remark"              => '',
            "name_human_readable" => "{$event['who']} [{$csvxml_overview['certainty']}]",
            "explica"             => "",
        ],
        "related_actor_gnd{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["related_actor{$i}", "related_actor_sure{$i}"],
            "remark"              => '',
            "name_human_readable" => "{$event['who']} ({$event['gnd']})",
            "explica"             => "",
        ],
    ]);

}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {

    $availableFields[$eventname[24]] = array_merge($availableFields[$eventname[24]],
    [
        "related_time{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["related_time_sure{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['when'],
            "explica"             => "",
        ],
        "related_time_sure{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ["related_time{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['when'] . " [{$csvxml_overview['certainty']}]",
            "explica"             => "",
        ],
    ]);

}

for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {

    $availableFields[$overview['images']] = array_merge($availableFields[$overview['images']],
    [
        "image_name{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "image_owner{$i}", "image_rights{$i}", "image_visible{$i}", "image_main{$i}"
            ],
            "remark"              => '',
            "name_human_readable" => $csvxml_overview['image_filename'],
            "explica"             => "",
        ],
        "image_description{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "image_name{$i}", "image_owner{$i}", "image_rights{$i}", "image_visible{$i}", "image_main{$i}"
            ],
            "remark"              => '',
            "name_human_readable" => $image_incha['image_description'],
            "explica"             => $image_incha['bildbesch_explica'],
        ],
        "image_owner{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "image_name{$i}", "image_rights{$i}", "image_visible{$i}", "image_main{$i}"
            ],
            "remark"              => '',
            "name_human_readable" => $image_incha['image_rightsholder'],
            "explica"             => $image_incha['owner_explica'],
        ],
        "image_creator{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "image_name{$i}", "image_owner{$i}", "image_rights{$i}", "image_visible{$i}", "image_main{$i}"
            ],
            "remark"              => '',
            "name_human_readable" => $image_incha['photographer'],
            "explica"             => $image_incha['creator_explica'],
        ],
        "image_rights{$i}" => [
            "required"            => false,
            "allowedValues"       => array_keys($availableLicenses),
            "dependsOn"           => [
                "image_name{$i}", "image_owner{$i}", "image_visible{$i}", "image_main{$i}"
            ],
            "remark"              => '',
            "name_human_readable" => $image_incha['rights_status'],
            "explica"             => $image_incha['rechte_explica'],
        ],
        "image_visible{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => [
                "image_name{$i}", "image_owner{$i}", "image_rights{$i}", "image_main{$i}"
            ],
            "remark"              => '',
            "name_human_readable" => "{$basis['image']}: {$objekt['visibility']}",
            "explica"             => "",
        ],
        "image_main{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => [
                "image_name{$i}", "image_owner{$i}", "image_rights{$i}", "image_visible{$i}"
            ],
            "remark"              => '',
            "name_human_readable" => $object['main_image'],
            "explica"             => "",
        ],
    ]);

}

for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {

    $availableFields[$basis['resource']] = array_merge($availableFields[$basis['resource']],
    [
        "resource_media_type{$i}" => [
            "required"            => false,
            "allowedValues"       => ['image', 'text', 'video', 'audio'],
            "dependsOn"           => [
                "resource_fileformat{$i}", "resource_location{$i}", "resource_name{$i}", "resource_owner{$i}", "resource_rights{$i}", "resource_visible{$i}",
            ],
            "remark"              => 'Allowed values: image, text, video, audio',
            "name_human_readable" => $basis['resource'] . ', ' . $tlSources['type'],
            "explica"             => "",
        ],
        "resource_fileformat{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "resource_media_type{$i}", "resource_location{$i}", "resource_name{$i}", "resource_owner{$i}", "resource_rights{$i}", "resource_visible{$i}",
            ],
            "remark"              => 'e.g. pdf, mp3',
            "name_human_readable" => $csvxml_overview['file_format'],
            "explica"             => "",
        ],
        "resource_location{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "resource_media_type{$i}", "resource_fileformat{$i}", "resource_name{$i}", "resource_owner{$i}", "resource_rights{$i}", "resource_visible{$i}",
            ],
            "remark"              => 'In case the resource is stored externally: please include the whole path (incl. http or https) to the file. If the resource is uploaded to museum-digital: please put the filename here (e.g. file.pdf)',
            "name_human_readable" => $resource_incha['image_filename'],
            "explica"             => "",
        ],
        "resource_name{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "resource_media_type{$i}", "resource_fileformat{$i}", "resource_location{$i}", "resource_owner{$i}", "resource_rights{$i}", "resource_visible{$i}",
            ],
            "remark"              => 'Use, if you want to give the resource an own name. If not, you might want to repeat the object_title',
            "name_human_readable" => $resource_incha['resource_name'],
            "explica"             => $resource_incha['bildname_explica'],
        ],
        "resource_description{$i}" => [
            "required"            => false,
            "allowedValues"       => ['Use if you want to describe the resource. Might be left empty.'],
            "dependsOn"           => [
                "resource_media_type{$i}", "resource_fileformat{$i}", "resource_location{$i}", "resource_name{$i}", "resource_owner{$i}", "resource_rights{$i}", "resource_visible{$i}",
            ],
            "remark"              => '',
            "name_human_readable" => $resource_incha['resource_description'],
            "explica"             => $resource_incha['bildbesch_explica'],
        ],
        "resource_owner{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "resource_media_type{$i}", "resource_fileformat{$i}", "resource_location{$i}", "resource_name{$i}", "resource_rights{$i}", "resource_visible{$i}",
            ],
            "remark"              => 'The owner should be named. Usually it is the institution uploading the resource.',
            "name_human_readable" => $resource_incha['resource_rightsholder'],
            "explica"             => $resource_incha['owner_explica'],
        ],
        "resource_creator{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => [
                "resource_media_type{$i}", "resource_fileformat{$i}", "resource_location{$i}", "resource_name{$i}", "resource_owner{$i}", "resource_rights{$i}", "resource_visible{$i}",
            ],
            "remark"              => 'Name of the person that created the resource. Might be left empty.',
            "name_human_readable" => $resource_incha['creator'],
            "explica"             => $resource_incha['creator_explica'],
        ],
        "resource_rights{$i}" => [
            "required"            => false,
            "allowedValues"       => array_keys($availableLicenses),
            "dependsOn"           => [
                "resource_media_type{$i}", "resource_fileformat{$i}", "resource_location{$i}", "resource_name{$i}", "resource_owner{$i}", "resource_visible{$i}",
            ],
            "remark"              => '',
            "name_human_readable" => $resource_incha['rights_status'],
            "explica"             => $resource_incha['rechte_explica'],
        ],
        "resource_visible{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => [
                "resource_media_type{$i}", "resource_fileformat{$i}", "resource_location{$i}", "resource_name{$i}", "resource_owner{$i}", "resource_rights{$i}",
            ],
            "remark"              => 'Should the resource be publicly visible? Allowed values are either y and n',
            "name_human_readable" => "{$basis['resource']}: {$objekt['visibility']}",
            "explica"             => "",
        ],
    ]);

}

/**
 * Function for getting a simple array definition of an available field.
 *
 * @param string  $nameTL        Translation of the field name. Optional.
 * @param string  $explica       Explanation of the field (from musdb). Optional.
 * @param array   $dependsOn     Dependent fields. Optional.
 * @param array   $allowedValues Allowed values. Optional.
 * @param string  $remark        Explanation of the field (for importer). Optional.
 * @param boolean $required      Determines whether the field is required. Defaults
                                 to false.
 *
 * @return array
 */
function getSimpleAvailableFieldEntry(string $nameTL = "", string $explica = "", array $dependsOn = [], array $allowedValues = [], string $remark = "", bool $required = false):array {
    return [
            "required"            => $required,
            "allowedValues"       => $allowedValues,
            "dependsOn"           => $dependsOn,
            "remark"              => $remark,
            "name_human_readable" => $nameTL,
            "explica"             => $explica,
    ];

}

/**
 * Function for building a generic event type definition.
 *
 * @param string[] $event           Translation variable.
 * @param string[] $csvxml_overview Translation variable.
 * @param string   $typeName        Translated name of event type.
 * @param string   $type            Event type name (e.g. production).
 * @param integer  $number          Number of event of this type.
 *
 * @return array
 */
function generateGenericFullEvent(array $event, array $csvxml_overview, string $typeName, string $type, int $number):array {

    return [
        "{$type}_when{$number}"         => getSimpleAvailableFieldEntry("{$typeName}: {$event['when']}", "", ["{$type}_when_sure{$number}"]),
        "{$type}_when_sure{$number}"    => getSimpleAvailableFieldEntry("{$typeName}: {$event['when']} [{$csvxml_overview['certainty']}]", "", ["{$type}_when{$number}"], ["y", "n"]),
        "{$type}_who{$number}"          => getSimpleAvailableFieldEntry("{$typeName}: {$event['who']}", "", ["{$type}_who_sure{$number}"]),
        "{$type}_who_sure{$number}"     => getSimpleAvailableFieldEntry("{$typeName}: {$event['who']} [{$csvxml_overview['certainty']}]", "", ["{$type}_who{$number}"], ["y", "n"]),
        "{$type}_who_gnd{$number}"      => getSimpleAvailableFieldEntry("{$typeName}: {$event['who']} ({$event['gnd']})", "", ["{$type}_who_sure{$number}", "{$type}_who{$number}"]),
        "{$type}_where{$number}"        => getSimpleAvailableFieldEntry("{$typeName}: {$event['where']}", "", ["{$type}_where_sure{$number}"]),
        "{$type}_where_sure{$number}"   => getSimpleAvailableFieldEntry("{$typeName}: {$event['where']} [{$csvxml_overview['certainty']}]", "", ["{$type}_where{$number}"], ["y", "n"]),
        "{$type}_annotation{$number}"   => getSimpleAvailableFieldEntry("{$typeName}: {$event['classic_annotation_intro']}", ""),
    ];

}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[1]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[1]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[1], "production", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[2]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[2]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[2], "finding", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[3]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[3]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[3], "publication", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[4]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[4]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[4], "template_creation", $i)
        );
}

for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {

    $availableFields[$basis['event'] . ': ' . $eventname[5]] = array_merge($availableFields[$basis['event'] . ': ' . $eventname[5]],
    [
        "was_depicted_who{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["was_depicted_who_sure{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['who'],
            "explica"             => "",
        ],
        "was_depicted_who_sure{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ["was_depicted_who{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['who'] . " [{$csvxml_overview['certainty']}]",
            "explica"             => "",
        ],
    ]);

}

for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {

    $availableFields[$basis['event'] . ': ' . $eventname[36]] = array_merge($availableFields[$basis['event'] . ': ' . $eventname[36]],
    [
        "was_depicted_place{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["was_depicted_place_sure{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['where'],
            "explica"             => "",
        ],
        "was_depicted_place_sure{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ["was_depicted_place{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['where'] . " [{$csvxml_overview['certainty']}]",
            "explica"             => "",
        ],
    ]);

}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[6]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[6]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[6], "was_used", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[7]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[7]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[7], "written", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[8]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[8]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[8], "collected", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[9]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[9]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[9], "painted", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[10]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[10]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[10], "taken", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[11]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[11]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[11], "received", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[12]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[12]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[12], "printing_plate_produced", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[13]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[13]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[13], "sent", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[14]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[14]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[14], "issued", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[15]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[15]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[15], "signed", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[16]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[16]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[16], "type_described", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[19]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[19]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[19], "drawn", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[20]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[20]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[20], "copied", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[25]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[25]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[25], "commissioned", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[26]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[26]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[26], "printed", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[27]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[27]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[27], "spoken", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[28]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[28]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[28], "sung", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[29]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[29]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[29], "decor_designed", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[30]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[30]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[30], "form_designed", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[31]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[31]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[31], "modelled", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[32]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[32]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[32], "signed_artwork", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[33]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[33]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[33], "was_mentioned", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[34]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[34]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[34], "buried", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[35]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[35]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[35], "intellectual_creation", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[37]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[37]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[37], "painted_on", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
    $availableFields[$basis['event'] . ': ' . $eventname[38]] = array_merge(
        $availableFields[$basis['event'] . ': ' . $eventname[38]],
        generateGenericFullEvent($event, $csvxml_overview, $eventname[38], "illustrated", $i)
        );
}

for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {

    $availableFields[$basis['event'] . ': ' . $eventname[21]] = array_merge($availableFields[$basis['event'] . ': ' . $eventname[21]],
    [
        "has_lived_when{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["has_lived_when_sure{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['when'],
            "explica"             => "",
        ],
        "has_lived_when_sure{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ["has_lived_when{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['when'] . " [{$csvxml_overview['certainty']}]",
            "explica"             => "",
        ],
        "has_lived_where{$i}" => [
            "required"            => false,
            "allowedValues"       => [],
            "dependsOn"           => ["has_lived_where_sure{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['where'],
            "explica"             => "",
        ],
        "has_lived_where_sure{$i}" => [
            "required"            => false,
            "allowedValues"       => ["y", "n"],
            "dependsOn"           => ["has_lived_where{$i}"],
            "remark"              => '',
            "name_human_readable" => $event['where'] . " [{$csvxml_overview['certainty']}]",
            "explica"             => "",
        ],
        "has_lived_annotation{$i}" => [
            "required"            => false,
            "allowedValues"       => '',
            "dependsOn"           => [],
            "remark"              => '',
            "name_human_readable" => $event['classic_annotation_intro'],
            "explica"             => "",
        ],
    ]);

}