diff --git a/includes/media.browser.inc b/includes/media.browser.inc
index 811df7b..40906d5 100644
--- a/includes/media.browser.inc
+++ b/includes/media.browser.inc
@@ -11,7 +11,6 @@ function media_browser($selected = NULL) {
   $params = drupal_get_query_parameters();
   array_walk_recursive($params, '_media_recursive_check_plain');
   media_set_browser_params($params);
-  
   // If one or more files have been selected, the browser interaction is now
   // complete. Return empty page content to the dialog which now needs to close,
   // but populate Drupal.settings with information about the selected files.
@@ -35,11 +34,11 @@ function media_browser($selected = NULL) {
       $plugins[$key] = $plugin_data + array(
         '#module' => $module,
         '#weight' => 0,
+	'activeField' => $params['activeField'],
       );
       $plugins[$key]['#weight'] += count($plugins)/1000;
     }
   }
-  
   // Only the plugins in this array are loaded.
   if (!empty($params['enabledPlugins'])) {
     $plugins = array_intersect_key($plugins, array_fill_keys($params['enabledPlugins'], 1));
@@ -206,6 +205,8 @@ function media_media_browser_plugin_info() {
  * Implementaion of hook_media_browser_plugin_view().
  */
 function media_media_browser_plugin_view($plugin_name, $params) {
+
+
   $path = drupal_get_path('module', 'media');
 
   module_load_include('inc', 'media', 'includes/media.admin');
@@ -240,6 +241,9 @@ function media_media_browser_plugin_view($plugin_name, $params) {
       );
       break;
     case 'library':
+
+    // Set the selected mediaLibrary
+    drupal_add_js(array('media' => array('browser' => array( 'libraries' => array($plugin_name)))), 'setting');
       return array(
         '#title' => t('Library'),
         '#attached' => array(
@@ -256,14 +260,16 @@ function media_media_browser_plugin_view($plugin_name, $params) {
           'getMediaUrl' => url('media/browser/list'),
           'types' => $types,
           'multiselect' => $multiselect,
+	  'selectedLibrary' => $plugin_name,
         // We should probably change this to load dynamically when requested
         // via the JS file.
         ),
-        '#markup' => '<div id="container"><div id="scrollbox"><ul id="media-browser-library-list" class="media-list-thumbnails"></ul><div id="status"></div></div></div>',
+        '#markup' => '<div id="container-'.$plugin_name.'"><div id="scrollbox-'.$plugin_name.'"><ul id="media-browser-library-list-'.$plugin_name.'" class="media-list-thumbnails"></ul><div id="status-'.$plugin_name.'"></div></div></div>',
       );
     break;
   }
 
+
   return array();
  }
 
diff --git a/js/media.js b/js/media.js
index 91b2c3c..f9fc40c 100644
--- a/js/media.js
+++ b/js/media.js
@@ -32,6 +32,9 @@ Drupal.behaviors.mediaElement = {
 
       // When someone clicks the link to pick media (or clicks on an existing thumbnail)
       $('.launcher', this).bind('click', function () {
+
+	// Add the name of the field that called the browser to the browser options
+	Drupal.media.popups.mediaBrowser.activeField = this.id.replace(/_launcher.*/,'');
         // Launch the browser, providing the following callback function
         // @TODO: This should not be an anomyous function.
         Drupal.media.popups.mediaBrowser(function (mediaFiles) {
diff --git a/js/media.popups.js b/js/media.popups.js
index aea0710..0d3d30c 100644
--- a/js/media.popups.js
+++ b/js/media.popups.js
@@ -108,11 +108,13 @@ Drupal.media.popups.mediaBrowser.getDefaults = function () {
   return {
     global: {
       types: [], // Types to allow, defaults to all.
-      activePlugins: [] // If provided, a list of plugins which should be enabled.
+      activePlugins: [], // If provided, a list of plugins which should be enabled.
+      activeField: Drupal.media.popups.mediaBrowser.activeField // The field that called the browser
     },
     widget: { // Settings for the actual iFrame which is launched.
       src: Drupal.settings.media.browserUrl, // Src of the media browser (if you want to totally override it)
-      onLoad: Drupal.media.popups.mediaBrowser.mediaBrowserOnLoad // Onload function when iFrame loads.
+      onLoad: Drupal.media.popups.mediaBrowser.mediaBrowserOnLoad, // Onload function when iFrame loads.
+      activeField: Drupal.media.popups.mediaBrowser.activeField // The field that called the browser
     },
     dialog: Drupal.media.popups.getDialogOptions()
   };
diff --git a/js/plugins/media.library.css b/js/plugins/media.library.css
index dbd68dc..f2c8151 100644
--- a/js/plugins/media.library.css
+++ b/js/plugins/media.library.css
@@ -1,22 +1,22 @@
 
-ul#media-browser-library-list {
+ul#media-browser-library-list-library {
   list-style: none;
   margin: -10px 0 0 0;
   padding: 0px;
   background-color: white;
 }
 
-#media-tab-library #container{
+#media-tab-library #container-library{
   padding:20px 0;
 }
 
-#media-tab-library #scrollbox{
+#media-tab-library #scrollbox-library{
   height: 300px;
   overflow:auto;
   overflow-x:hidden;
 }
 
-#scrollbox #status {
+#scrollbox-library #status-library {
   clear: both;
   text-align: center;
   margin-top: 10px;
diff --git a/js/plugins/media.library.js b/js/plugins/media.library.js
index c3b1ee5..a1c8790 100644
--- a/js/plugins/media.library.js
+++ b/js/plugins/media.library.js
@@ -1,22 +1,30 @@
-
 (function ($) {
 namespace('Drupal.media.browser');
 
 Drupal.behaviors.mediaLibrary = {
+
   attach: function (context, settings) {
-    var library = new Drupal.media.browser.library(Drupal.settings.media.browser.library);
+$.each(Drupal.settings.media.browser.libraries, function(k,v){
+
+    window[v] = new Drupal.media.browser.library(Drupal.settings.media.browser[v]);
     $('#media-browser-tabset').bind('tabsselect', function (event, ui) {
-      if (ui.tab.hash === '#media-tab-library') {
-        // Grab the parameters from the Drupal.settings object
+      if (ui.tab.hash === '#media-tab-'+v) {
+        Drupal.settings.media.browser.selectedLibrary = v;
+	// Grab the parameters from the Drupal.settings object
         var params = {};
-        for (var parameter in Drupal.settings.media.browser.library) {
-          params[parameter] = Drupal.settings.media.browser.library[parameter];
+	var browser = Drupal.settings.media.browser[v];
+        for (var parameter in browser) {
+          params[parameter] = browser[parameter];
         }
-        library.start($(ui.panel), params);
-        $('#scrollbox').bind('scroll', library, library.scrollUpdater);
-      }
+        window[v].start($(ui.panel), params);
+        $('#scrollbox-'+v).bind('scroll', window[v], window[v].scrollUpdater);
+    }
+    });
     });
+
   }
+
+
 };
 
 Drupal.media.browser.library = function (settings) {
@@ -54,14 +62,14 @@ Drupal.media.browser.library.prototype.start = function (renderElement, params)
  */
 Drupal.media.browser.library.prototype.loadMedia = function () {
   var that = this;
-  $('#status').text('Loading...').show();
+  $('#status-'+Drupal.settings.media.browser.selectedLibrary).text('Loading...').show();
   $.extend(this.params, {start: this.cursor, limit: this.settings.limit});
 
   var gotMedia = function (data, status) {
-    $('#status').text('').hide();
+    $('#status-'+Drupal.settings.media.browser.selectedLibrary).text('').hide();
     if (data.media.length < that.params.limit) {
       // We remove the scroll event listener, nothing more to load after this.
-      $('#scrollbox').unbind('scroll');
+      $('#scrollbox-'+Drupal.settings.media.browser.selectedLibrary).unbind('scroll');
     }
     that.mediaFiles = that.mediaFiles.concat(data.media);
     that.render(that.renderElement);
@@ -85,7 +93,7 @@ Drupal.media.browser.library.prototype.loadMedia = function () {
 
 Drupal.media.browser.library.prototype.scrollUpdater = function (e){
   if (!e.data.loading) {
-    var scrollbox = $('#scrollbox');
+    var scrollbox = $('#scrollbox-'+Drupal.settings.media.browser.selectedLibrary);
     var scrolltop = scrollbox.attr('scrollTop');
     var scrollheight = scrollbox.attr('scrollHeight');
     var windowheight = scrollbox.attr('clientHeight');
@@ -120,7 +128,7 @@ Drupal.media.browser.library.prototype.render = function (renderElement) {
     return;
   }
   else {
-    var mediaList = $('#media-browser-library-list', renderElement);
+    var mediaList = $('#media-browser-library-list-'+Drupal.settings.media.browser.selectedLibrary, renderElement);
     // If the list doesn't exist, bail.
     if (mediaList.length === 0) {
       throw('Cannot continue, list element is missing');
@@ -182,3 +190,6 @@ Drupal.media.browser.library.prototype.multiSelect = function (event) {
 }
 
 }(jQuery));
+
+
+//}; // EO media.libraries
\ No newline at end of file
diff --git a/media.module b/media.module
index b6caf7e..06bac26 100644
--- a/media.module
+++ b/media.module
@@ -922,7 +922,7 @@ function media_element_process(&$element, &$form_state, $form) {
     '#type' => 'item',
     '#markup' => $markup,
     '#prefix' => '<div class="preview launcher">',
-    '#suffix' => '</div><a class="button launcher" href="#">' . t(media_variable_get('field_select_media_text')) . '</a><a class="button remove" href="#">' . t(media_variable_get('field_remove_media_text')) . '</a>',
+    '#suffix' => '</div><a class="button launcher" href="#" id="'.$element['#field_name'].'_launcher_'.$element['#delta'].'">' . t(media_variable_get('field_select_media_text')) . '</a><a class="button remove" href="#">' . t(media_variable_get('field_remove_media_text')) . '</a>',
   );
 
   /**
