diff -urp l10n_client/l10n_client.js l10n_client-new/l10n_client.js
--- l10n_client/l10n_client.js	2010-04-20 15:36:10.000000000 -0700
+++ l10n_client-new/l10n_client.js	2010-06-25 00:13:01.000000000 -0700
@@ -155,24 +155,25 @@ Drupal.behaviors.l10nClient = function (
   });
 
   // Send AJAX POST data on form submit.
-  $('#l10n-client-form').submit(function() {
-    $('#l10n-client-form .form-submit').attr("disabled", "true");
+  $('.l10n-client-form').submit(function() {
+    var cf = $(this); // needed for success context																	 
+    cf.find('.form-submit').attr("disabled","disabled");
     $.ajax({
       type: "POST",
-      url: $('#l10n-client-form').attr('action'),
+      url: cf.attr('action'),
       // Send source and target strings.
       data: {
         source: $('#l10n-client-string-editor .source-text').text(),
-        target: $('#l10n-client-form .translation-target').val(),
-        textgroup: $('#l10n-client-form #edit-textgroup').val(),
-        'form_token': $('#l10n-client-form #edit-l10n-client-form-form-token').val()
+        target: cf.find('.translation-target').val(),
+        textgroup: cf.find('.translation-textgroup').val(),
+        form_token: cf.find('input[name=form_token]').val() // is this ok? Can't set class and name remains constant
       },
       success: function (data) {
         // Store string in local js
-        Drupal.l10nClient.setString(Drupal.l10nClient.selected, $('#l10n-client-form .translation-target').val());
+        Drupal.l10nClient.setString(Drupal.l10nClient.selected, cf.find('.translation-target').val());
 
         // Figure out the display of the new translation in the selection list.
-        var newTranslation = $('#l10n-client-form .translation-target').val();
+        var newTranslation = cf.find('.translation-target').val();
         var newTranslationDisplay = newTranslation;
         var newTranslationStripped = newTranslation.replace(/<\/?[^<>]+>/gi, '')
                                                    .replace(/&quot;/g, '"')
@@ -196,8 +197,8 @@ Drupal.behaviors.l10nClient = function (
 
         // Empty input fields.
         $('#l10n-client-string-editor .source-text').html('');
-        $('#l10n-client-form .translation-target').val('');
-
+        cf.find('.translation-target').val('');
+        cf.find('.form-submit').removeAttr('disabled');
       },
       error: function (xmlhttp) {
         alert(Drupal.t('An HTTP error @status occured.', { '@status': xmlhttp.status }));
diff -urp l10n_client/l10n_client.module l10n_client-new/l10n_client.module
--- l10n_client/l10n_client.module	2010-04-29 01:29:56.000000000 -0700
+++ l10n_client-new/l10n_client.module	2010-06-24 22:55:13.421875000 -0700
@@ -379,6 +379,7 @@ function l10n_client_form($form_id, $str
   // Selector and editing form.
   $form = array();
   $form['#action'] = url('l10n_client/save');
+  $form['#attributes'] = array('class' => 'l10n-client-form');
 
   $form['target'] = array(
     '#type' => 'textarea',
@@ -391,7 +392,11 @@ function l10n_client_form($form_id, $str
     '#type' => 'submit',
   );
   // Hidden field for textgroup
-  $form['textgroup'] = array('#type' => 'hidden', '#value' => 'default');
+  $form['textgroup'] = array(
+    '#type' => 'hidden',
+    '#value' => 'default',
+    '#attributes' => array('class' => 'translation-textgroup'),
+  );
   $form['copy'] = array(
     '#type' => 'button',
     '#id' => 'l10n-client-edit-copy',
