<t:if> 
<!-- no wrapping form/fieldset, due to invalid /html closing tag in mannheim. 
    t:if makes it a valid xml file -->
  
{
let $search-keys-regex := {"author": "Person|Autor", 
                           "title": ("Titelwort", "Titel"), 
                           "free": "Freie *Suche", 
                           "keywords": "Schlag|Thema", 
                           "isbn": "ISBN", 
                           "id": "Signatur"}
let $inputs := //input
let $selects := //select
let $elements := $inputs | $selects
let $basic-selects-pos := for $e at $i in $elements where $e/(self::select and contains($e/@id, "SUCH0")) return $i
let $basic-selects := for $i in $basic-selects-pos return $elements[$i]
let $options := $basic-selects//option

let $filter-names := {"libraryLocation": "BEZIWA_1", "libraryBranch": ("AUSGAB_1","SUCBER_1"), "mediaType": "MEDIUM_1", "language": "GHTSPR_1"}
let $filter-selects := {|for $name in jn:keys($filter-names)
                         let $ids := $filter-names($name)
                         let $select := $selects[@id = $ids][1]
                         where $select
                         return {$name: $select} |}
return (
  search-basic-selects := $basic-selects/@name,
  search-basic-inputs := for $i in $basic-selects-pos return $elements[$i + 1][self::input]/@name,
  if (count($search-basic-selects) lt 3 or count($search-basic-selects) ne count($search-basic-inputs)) then
    vl:raise-internal("Zu wenig Suchfelder oder die Suchfelder wurden nicht erkannt.")
  else (),
  search-basic-options := map:merge( for $key in jn:keys($search-keys-regex) 
                                     let $r :=  $search-keys-regex($key)
                                     return  {$key: head(for $r in $r return $options[matches(., $r)]/@value)}
                                   ),

  search-basic-input-year := $inputs[@id = "GEJAHR_1"]/@name,

  search-filter-map := {| map:keys($filter-selects)  ! {.: $filter-selects(.)/@name} |},

  search-params := (
    for $key in ("title", "author", "free", "keywords", "isbn", "id")
     where $search-basic-options($key)
     return $key, 
    $search-basic-input-year[1]!"year",
    map:keys($filter-selects) ! {"name": ., "options": $filter-selects(.)//option}
  ),
  
  search-start-button := ($inputs[@type="submit"][contains(@class, "suche-starten")])[1]
)
 }

</t:if>