...
    <script type="text/javascript" src="mxqueryjs/mxqueryjs.nocache.js"></script>
    <script type="application/xquery">
      declare variable $m := " ¡,#$%⅋,)(*+'-˙/0ƖᄅƐㄣϛ9ㄥ86:;>=<¿@∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z]\[^‾,ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz}|{~";
      declare variable $M := ( (1 to 31),  string-to-codepoints($m), (127 to 13311) );

      declare function local:upsideDown($str) {
        let $inp := tokenize($str, '&#10;')
        let $r :=
          for $s in reverse( $inp )
            return
              codepoints-to-string(
                reverse( for $c in string-to-codepoints($s) return $M[$c] )
              )
        return string-join($r, '&#10;')
      };

      declare sequential function local:listener2($loc, $evtObj) {
        b:alert(local:upsideDown(b:dom()//textarea[@id="input"]))
      };

      b:addEventListener
        (b:dom()//input[@id="myButton"], "onclick", local:listener2#2);
    </script>
...