diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 58a7d56ed65bf1dcc0acf65cb2c5504aa8e5aefd..3406927fe8d5c8cb8d988c3a037f743e023522b6 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -356,6 +356,7 @@ $lang['js']['media_diff_portions'] = 'Slider';
 
 $lang['js']['media_select']     = 'Select files…';
 $lang['js']['media_upload_btn'] = 'Upload';
+$lang['js']['media_done_btn']   = 'Done';
 $lang['js']['media_drop']       = 'Drop files here to upload';
 $lang['js']['media_cancel']     = 'remove';
 $lang['js']['media_overwrt']    = 'Overwrite existing files';
diff --git a/inc/media.php b/inc/media.php
index 8ef075f1705ffe0f9fcbd6442103f485d5ed7576..d083fd2b266635a58f4db54e8b3ff40b2dc28d10 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -1626,14 +1626,14 @@ function media_uploadform($ns, $auth, $fullscreen = false){
     $params = array('id'      => 'dw__upload',
                     'enctype' => 'multipart/form-data');
     if (!$fullscreen) {
-        $params['action'] = DOKU_BASE.'lib/exe/mediamanager.php';
+        $params['action'] = DOKU_BASE.'lib/exe/mediamanager.php?ns='.$ns;
     } else {
         $params['action'] = media_managerURL(array('tab_files' => 'files',
             'tab_details' => 'view'), '&');
     }
 
     $form = new Doku_Form($params);
-    if (!$fullscreen) $form->addElement('<div class="upload">' . $lang['mediaupload'] . '</div>');
+    if (!$fullscreen) echo '<div class="upload">' . $lang['mediaupload'] . '</div>';
     $form->addElement(formSecurityToken());
     $form->addHidden('ns', hsc($ns));
     $form->addElement(form_makeOpenTag('p'));
@@ -1651,52 +1651,10 @@ function media_uploadform($ns, $auth, $fullscreen = false){
         $form->addElement(form_makeCheckboxField('ow', 1, $lang['txt_overwrt'], 'dw__ow', 'check', $attrs));
         $form->addElement(form_makeCloseTag('p'));
     }
-    if ($fullscreen) {
-        echo '<div id="mediamanager__uploader">';
-    }
 
+    echo '<div id="mediamanager__uploader">';
     html_form('upload', $form);
-
-    if ($fullscreen) {
-        echo '</div>';
-        return '';
-    }
-
-    // prepare flashvars for multiupload
-    $opt = array(
-            'L_gridname'  => $lang['mu_gridname'] ,
-            'L_gridsize'  => $lang['mu_gridsize'] ,
-            'L_gridstat'  => $lang['mu_gridstat'] ,
-            'L_namespace' => $lang['mu_namespace'] ,
-            'L_overwrite' => $lang['txt_overwrt'],
-            'L_browse'    => $lang['mu_browse'],
-            'L_upload'    => $lang['btn_upload'],
-            'L_toobig'    => $lang['mu_toobig'],
-            'L_ready'     => $lang['mu_ready'],
-            'L_done'      => $lang['mu_done'],
-            'L_fail'      => $lang['mu_fail'],
-            'L_authfail'  => $lang['mu_authfail'],
-            'L_progress'  => $lang['mu_progress'],
-            'L_filetypes' => $lang['mu_filetypes'],
-            'L_info'      => $lang['mu_info'],
-            'L_lasterr'   => $lang['mu_lasterr'],
-
-            'O_ns'        => ":$ns",
-            'O_backend'   => 'mediamanager.php?'.session_name().'='.session_id(),
-            'O_maxsize'   => php_to_byte(ini_get('upload_max_filesize')),
-            'O_extensions'=> join('|',array_keys(getMimeTypes())),
-            'O_overwrite' => ($auth >= AUTH_DELETE),
-            'O_sectok'    => getSecurityToken(),
-            'O_authtok'   => auth_createToken(),
-            );
-    $var = buildURLparams($opt);
-    // output the flash uploader
-    ?>
-        <div id="dw__flashupload" style="display:none">
-        <div class="upload"><?php echo $lang['mu_intro']?></div>
-        <?php echo html_flashobject('multipleUpload.swf','500','190',null,$opt); ?>
-        </div>
-        <?php
+    echo '</div>';
 }
 
 /**
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 52131d8646934f9fd8b873f49447270d6a2d97b7..d8754b87594e383a7163749a8d9f09e842e3c33c 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -265,9 +265,11 @@ function ajax_mediaupload(){
         $res = media_upload_xhr($NS, $AUTH);
         $id = $_GET['qqfile'];
     }
+    $id = cleanID($id, false, true);
 
     if ($res) $result = array('success' => true,
-        'link' => media_managerURL(array('ns' => getNS($id), 'image' => $id), '&'));
+        'link' => media_managerURL(array('ns' => getNS($id), 'image' => $id), '&'),
+        'id' => $id);
 
     if (!$result) {
         $error = '';
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index 36fc3ec63d6e68af695eb5e660e52525c73a6750..f4a3219bb1581cd5162a83f12f5ff2266dab5933 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -167,7 +167,7 @@ qq.extend(qq.FileUploaderExtended.prototype, {
 
         if (result.success){
             qq.addClass(item, this._classes.success);
-            $link = '<a href="' + result.link + '">' + nameInput.value + '</a>';
+            $link = '<a href="' + result.link + '" name="h_:' + result.id + '" class="select">' + nameInput.value + '</a>';
             jQuery(fileElement).html($link);
 
         } else {
@@ -175,6 +175,12 @@ qq.extend(qq.FileUploaderExtended.prototype, {
             var fail = this._find(item, 'failedText');
             if (result.error) qq.setText(fail, result.error);
         }
+
+        if (document.getElementById('media__content') && !document.getElementById('mediamanager__done_form')) {
+            var button = '<form method="post" action="' + document.location +'" id="mediamanager__done_form"><div>';
+            button += '<input class="button" type="submit" value="' + LANG.media_done_btn + '"></div></form>'
+            jQuery('#mediamanager__uploader').append(button);
+        }
     }
 
 });
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 36dadf232eb2968b486f9750d3696464c9a62126..997321a65441004617287f290c30e7e10f0759fc 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -43,7 +43,8 @@ var dw_mediamanager = {
                 .delegate('a.select', 'click', dw_mediamanager.select)
                 // Attach deletion confirmation dialog to the delete buttons
                 .delegate('#media__content a.btn_media_delete', 'click',
-                          dw_mediamanager.confirmattach);
+                          dw_mediamanager.confirmattach)
+                .delegate('#mediamanager__done_form', 'submit', dw_mediamanager.list);
 
         $tree.dw_tree({toggle_selector: 'img',
                        load_data: function (show_sublist, $clicky) {
@@ -670,7 +671,6 @@ var dw_mediamanager = {
     prepare_content: function ($content) {
         // hide syntax example
         $content.find('div.example:visible').hide();
-        dw_mediamanager.initFlashUpload();
     },
 
     /**
diff --git a/lib/tpl/default/_fileuploader.css b/lib/tpl/default/_fileuploader.css
index e87ba94db3db119728fa00a7894eacb293866c28..0e53f818793535f87e7df2acb5670eefe28d21b5 100644
--- a/lib/tpl/default/_fileuploader.css
+++ b/lib/tpl/default/_fileuploader.css
@@ -4,20 +4,18 @@
 }
 
 .qq-upload-button {
-    display: block;
-    width: 115px;
-    padding: 7px 0;
-    text-align: center;
-    background: __background_alt__;
+    display: inline-block;
     border: 1px solid __border__;
-    color: __extern__;
-    font-weight: bold;
+    color: __text__;
+    background-color: __background__;
+    vertical-align: middle;
+    text-decoration: none;
+    font-size: 100%;
+    cursor: pointer;
+    margin: 1px;
     margin-bottom: 5px;
-}
-
-.qq-upload-button-hover {
-    background: __border__;
-    color: __background__;
+    padding: 0.125em 0.4em;
+    background:  __background__ url(images/buttonshadow.png) repeat-x bottom;
 }
 
 .qq-upload-button-focus {
@@ -42,11 +40,11 @@
     top: 50%;
     width:100%;
     margin-top:-8px;
-    font-size:16px;
+    font-size: 120%;
 }
 
 .qq-upload-drop-area-active {
-    background: #DADADA;
+    background: __background_alt__;
 }
 
 .qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
@@ -62,7 +60,7 @@
 }
 
 .qq-upload-size,.qq-upload-cancel {
-    font-size:11px;
+    font-size: 85%;
 }
 
 .qq-upload-failed-text {
@@ -97,4 +95,8 @@
 .qq-uploader #mediamanager__upload_button {
     margin-top: -5px;
     margin-bottom: 10px;
+}
+
+.qq-uploader div.li {
+    margin-bottom: 5px;
 }
\ No newline at end of file
diff --git a/lib/tpl/default/media.css b/lib/tpl/default/media.css
index 7b558a80bba922f46d4c13295daa1f41c6a9099b..b325a1ef6e20e212dd781d350f90ac172d168799 100644
--- a/lib/tpl/default/media.css
+++ b/lib/tpl/default/media.css
@@ -151,6 +151,11 @@ it's dirty, so any "real" fixes are welcome */
     border-bottom: solid 1px __border__;
     padding: 0 0.5em 1em 0.5em;
 }
+
+#media__content form#dw__upload {
+    border-bottom: 0;
+}
+
 #media__content form#dw__upload fieldset {
     padding: 0;
     margin: 0;
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index f6ad721e0e195adc87d65c39de0f7d1cb230db0b..ad371ee3d7e13ea39dde09e807b4cd3ff0a4449f 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -289,6 +289,11 @@
     padding-bottom: 0.5em;
 }
 
+#media__content #mediamanager__uploader {
+    border-bottom: 1px solid #8CACBB;
+    padding-bottom: 0.5em;
+}
+
 /* File preview */
 
 .mediamanager__preview,
@@ -318,7 +323,7 @@ form.meta textarea.edit {
 }
 
 #mediamanager__details #page__revisions ul li div.li div {
-    font-size: 12px;
+    font-size: 90%;
     color: __text_neu__;
     padding-left: 18px;
 }