diff --git a/inc/html.php b/inc/html.php
index fb39fcb3c9b8ee957b1c6525b9db8863a4f1ada7..9c69c9845ab8f2b166bf29edbb165cbaebeda7e9 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -1488,7 +1488,7 @@ function html_edit(){
         echo 'textChanged = ' . ($mod ? 'true' : 'false');
         echo '/*!]]>*/</script>' . NL;
     } ?>
-    <div class="editBox">
+    <div class="editBox" role="application">
 
     <div class="toolbar group">
         <div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.dformat();?></div>
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index af6f32bf4648269273c2d927ea1714ba0b08a809..aa0a3d3b2c27fde9dc1083f718dce240808f7a86 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -235,7 +235,7 @@ $lang['qb_extlink']            = 'Externer Link';
 $lang['qb_hr']                 = 'Horizontale Linie';
 $lang['qb_ol']                 = 'Nummerierter Listenpunkt';
 $lang['qb_ul']                 = 'Listenpunkt';
-$lang['qb_media']              = 'Bilder und andere Dateien hinzufügen';
+$lang['qb_media']              = 'Bilder und andere Dateien hinzufügen (öffnet sich in einem neuen Fenster)';
 $lang['qb_sig']                = 'Unterschrift einfügen';
 $lang['qb_smileys']            = 'Smileys';
 $lang['qb_chars']              = 'Sonderzeichen';
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index cdad6c9a6cc5abd2ad5020640e7c751c650183dd..00e71d254590224325d8a1e208584729069d9bc1 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -234,7 +234,7 @@ $lang['qb_extlink']            = 'External Link';
 $lang['qb_hr']                 = 'Horizontal Rule';
 $lang['qb_ol']                 = 'Ordered List Item';
 $lang['qb_ul']                 = 'Unordered List Item';
-$lang['qb_media']              = 'Add Images and other files';
+$lang['qb_media']              = 'Add Images and other files (opens in a new window)';
 $lang['qb_sig']                = 'Insert Signature';
 $lang['qb_smileys']            = 'Smileys';
 $lang['qb_chars']              = 'Special Chars';
diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js
index 5a5e829bd9d6359dbea2aa95b91a8990a8dfa43d..b1dbff683c655247d9e0c88e263bf30321be94c8 100644
--- a/lib/scripts/edit.js
+++ b/lib/scripts/edit.js
@@ -23,7 +23,7 @@ function createToolButton(icon,label,key,id,classname){
         $btn.addClass(classname);
     }
 
-    $btn.attr('title', label);
+    $btn.attr('title', label).attr('aria-controls', 'wiki__text');
     if(key){
         $btn.attr('title', label + ' ['+key.toUpperCase()+']')
             .attr('accessKey', key);
@@ -40,6 +40,7 @@ function createToolButton(icon,label,key,id,classname){
         icon = DOKU_BASE + 'lib/images/toolbar/' + icon;
     }
     $ico.attr('src', icon);
+    $ico.attr('alt', '');
     $ico.attr('width', 16);
     $ico.attr('height', 16);
     $btn.append($ico);
@@ -76,6 +77,7 @@ function createPicker(id,props,edid){
     function $makebutton(title) {
         var $btn = jQuery(document.createElement('button'))
             .addClass('pickerbutton').attr('title', title)
+            .attr('aria-controls', edid)
             .bind('click', bind(pickerInsert, title, edid))
             .appendTo($picker);
         return $btn;
@@ -93,6 +95,7 @@ function createPicker(id,props,edid){
             }
             jQuery(document.createElement('img'))
                 .attr('src', item)
+                .attr('alt', '')
                 .appendTo($makebutton(key));
         }else if (typeof item == 'string'){
             // a list of text -> treat as text picker
@@ -132,9 +135,9 @@ function pickerInsert(text,edid){
 function addBtnActionSignature($btn, props, edid) {
     if(typeof SIG != 'undefined' && SIG != ''){
         $btn.bind('click', bind(insertAtCarret,edid,SIG));
-        return true;
+        return edid;
     }
-    return false;
+    return '';
 }
 
 /**
diff --git a/lib/scripts/editor.js b/lib/scripts/editor.js
index 042e3460852c2a8dc6986389d89659cac0c46669..2c0924eb77c548ecf8f9f8cdb8b5c282e95e4438 100644
--- a/lib/scripts/editor.js
+++ b/lib/scripts/editor.js
@@ -65,6 +65,7 @@ var dw_editor = {
         ], function (_, img) {
             jQuery(document.createElement('IMG'))
                 .attr('src', DOKU_BASE+'lib/images/' + img[0] + '.gif')
+                .attr('alt', '')
                 .click(img[1])
                 .appendTo($ctl);
         });
diff --git a/lib/scripts/toolbar.js b/lib/scripts/toolbar.js
index 6d75215e0e17cf5f1d455428169e3ccf0efaaa9c..5fc4d835eebeb3c649a463772a65009e8cc767db 100644
--- a/lib/scripts/toolbar.js
+++ b/lib/scripts/toolbar.js
@@ -52,8 +52,13 @@ function initToolbar(tbid,edid,tb, allowblock){
         // type is a init function -> execute it
         actionFunc = 'addBtnAction'+val.type.charAt(0).toUpperCase()+val.type.substring(1);
         if( jQuery.isFunction(window[actionFunc]) ){
-            if(window[actionFunc]($btn, val, edid)){
+            var pickerid = window[actionFunc]($btn, val, edid);
+            if(pickerid !== ''){
                 $toolbar.append($btn);
+                $btn.attr('aria-controls', pickerid);
+                if (actionFunc === 'addBtnActionPicker') {
+                    $btn.attr('aria-haspopup', 'true');
+                }
             }
             return;
         }
@@ -190,16 +195,17 @@ function tb_autohead(btn, props, edid){
  */
 function addBtnActionPicker($btn, props, edid) {
     var pickerid = 'picker'+(pickercounter++);
-    createPicker(pickerid, props, edid);
+    var picker = createPicker(pickerid, props, edid);
+    jQuery(picker).attr('aria-hidden', 'true');
 
     $btn.click(
         function() {
             pickerToggle(pickerid,$btn);
-            return false;
+            return '';
         }
     );
 
-    return true;
+    return pickerid;
 }
 
 /**
@@ -215,22 +221,26 @@ function addBtnActionLinkwiz(btn, props, edid) {
     dw_linkwiz.init(jQuery('#'+edid));
     jQuery(btn).click(function(){
         dw_linkwiz.toggle();
-        return false;
+        return '';
     });
-    return true;
+    return 'link__wiz';
 }
 
 
 /**
- * Show/Hide a previosly created picker window
+ * Show/Hide a previously created picker window
  *
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function pickerToggle(pickerid,$btn){
     var $picker = jQuery('#' + pickerid),
         pos = $btn.offset();
-    $picker.toggleClass('a11y')
-           .offset({left: pos.left+3, top: pos.top+$btn[0].offsetHeight+3});
+    if ($picker.hasClass('a11y')) {
+        $picker.removeClass('a11y').attr('aria-hidden', 'false');
+    } else {
+        $picker.addClass('a11y').attr('aria-hidden', 'true');
+    }
+    $picker.offset({left: pos.left+3, top: pos.top+$btn[0].offsetHeight+3});
 }
 
 /**
@@ -252,4 +262,5 @@ function fixtxt(str){
 
 jQuery(function () {
     initToolbar('tool__bar','wiki__text',toolbar);
+    jQuery('#tool__bar').attr('role', 'toolbar');
 });