diff --git a/joomla.batch.inc b/joomla.batch.inc
index 5eb6b0b..375bc38 100644
--- a/joomla.batch.inc
+++ b/joomla.batch.inc
@@ -26,6 +26,11 @@ function joomla_batch_save($jos, $joomla_update_duplicate, &$context) {
     $context['results']['content_updated'] = 0;
     $context['results']['content_new'] = 0;
     $context['results']['content_failed'] = 0;
+    // JoomFish content
+    $context['results']['jfcontent_total'] = 0;
+    $context['results']['jfcontent_updated'] = 0;
+    $context['results']['jfcontent_new'] = 0;
+    $context['results']['jfcontent_failed'] = 0;
     // comments
     $context['results']['comments_total'] = 0;
     $context['results']['comments_updated'] = 0;
@@ -51,6 +56,10 @@ function joomla_batch_save($jos, $joomla_update_duplicate, &$context) {
     if ($jos['content']) {
       $max += db_query('SELECT COUNT( id ) FROM {content}')->fetchField();
     }
+    if ($jos['jf_content']) {
+      $max += db_query('SELECT COUNT( id ) FROM {jf_content}')->fetchField();
+    }
+
     $context['sandbox']['max'] = $max;
     db_set_active();
     $context['sandbox']['users_offset'] = 0;
@@ -58,6 +67,7 @@ function joomla_batch_save($jos, $joomla_update_duplicate, &$context) {
     $context['sandbox']['categories_offset'] = 0;
     $context['sandbox']['sections_offset'] = 0;
     $context['sandbox']['content_offset'] = 0;
+    $context['sandbox']['jfcontent_offset'] = 0;
   }
   if ($jos['users']) {
     joomla_user_save($context);
@@ -68,6 +78,9 @@ function joomla_batch_save($jos, $joomla_update_duplicate, &$context) {
   if ($jos['content']) {
     joomla_content_save($context);
   }
+  if ($jos['jf_content']) {
+    joomla_joomfish_content_save($context);
+  }
   if ($jos['comments']) {
     joomla_comment_save($context);
   }
@@ -450,6 +463,168 @@ function joomla_content_save(&$context) {
   $offset += 10;
 }
 
+function joomla_joomfish_content_save(&$context) {
+  $joomla_update_duplicate = $context['sandbox']['joomla_update_duplicate'];
+  $images = &$context['sandbox']['images'];
+  $offset = &$context['sandbox']['jfcontent_offset'];
+  db_set_active('joomla');
+  $q = db_select('jf_content', 'jf');
+  //$q->leftJoin('languages', 'l', 'l.id = jf.language_id');
+  //$q->condition('reference_table','content', '=');
+  //$q->condition('reference_field','title', '=');
+  $q->fields('jf');
+  //$q->fields('l');
+  $q->range($offset, 10);
+  //$q->fields('jf', array('content_id')); 
+  
+  //$q->condition('language_id',4, '=');//restricted to FR only for testing
+  $content = $q->execute()->fetchAll();
+  
+  db_set_active();
+  
+  $idsthusfar = array();
+
+  foreach ($content as $num => $data_joomla) {
+	
+	//db_set_active();
+	//$context['results']['jfcontent_total']++;
+    //$context['sandbox']['progress']++;
+	$context['results']['jfcontent_total']++;
+    $context['sandbox']['progress']++;
+	
+	if(($data_joomla->reference_table == 'content') && ($data_joomla->reference_field == 'title')){
+
+    $content_map = db_query('SELECT n.nid, jcontentid, changed FROM {joomla_content} jc JOIN {node} n ON n.nid = jc.nid WHERE jc.jcontentid = :contentid', array(':contentid' => $data_joomla->id))->fetch();
+    if ($content_map && !$joomla_update_duplicate) {
+      // Content item has already been imported and update is off
+      continue;
+    }
+    /**
+     * If the content item already exists, but has not been updated
+     * since the last import, skip it
+     */
+    $joomla_changed = strtotime($data_joomla->modified);
+    //if changed is negative drupal will throw an error so:
+    if ($joomla_changed<0) {
+      $joomla_changed = 0;
+    }
+    if ($content_map && $joomla_changed == $content_map->changed) {
+      //continue;
+    }
+    $node = new stdClass();
+	
+    if ($content_map) {
+      $node->nid = $content_map->nid;
+      $node = node_load($node->nid);
+      $node->revision = 1;
+      $node->log = 'This node was programmatically updated at ' . format_date(REQUEST_TIME, 'short', NULL, variable_get('joomla_default_language', LANGUAGE_NONE));
+    }
+    else {
+		
+      $node->is_new = TRUE;
+      $node->log = 'Initial creation from Joomla module';
+    }
+    /*$author_uid = db_query('SELECT uid FROM {joomla_users} WHERE juid = :juid', array(':juid' => $data_joomla->created_by) )->fetch();
+    if ($author_uid) {
+      $node->uid = intval($author_uid->uid);
+    }*/
+    $node->title = strip_tags(check_plain($data_joomla->value));
+	//$node->title = 'title test '.$context['results']['joomfish_content_total'];
+    $node->status = (bool) $data_joomla->published;
+    $node->created = strtotime($data_joomla->modified);
+    //if created is negative drupal will throw an error so:
+    if ($node->created < 0) {
+      $node->created = 0;
+    }
+    
+    $node->changed = $joomla_changed;
+    // Set content type
+
+     $node->type = 'page';
+	 db_set_active('joomla');
+    $joomla_teaser = db_query("SELECT value FROM jos_jf_content WHERE reference_table='content' AND reference_field='introtext' and reference_id='".$data_joomla->reference_id."' AND language_id=".$data_joomla->language_id."")->fetchField();
+	//$joomla_teaser = 'teaser test';
+	//db_set_active();
+
+	//db_set_active('joomla');
+    $joomla_body = db_query("SELECT value FROM jos_jf_content WHERE reference_table='content' AND reference_field='fulltext' and reference_id='".$data_joomla->reference_id."' AND language_id=".$data_joomla->language_id."")->fetchField();
+	//$joomla_body = 'body test';
+	
+	$langshortcode = db_query("SELECT shortcode FROM jos_languages WHERE id=".$data_joomla->language_id."")->fetchField();
+	
+	db_set_active();
+
+
+    if (strpos($langshortcode,'zh-') !== false) {
+	//$node->language = 'zh-hans';
+		if($langshortcode == 'zh-cn'){//simplified Chinese
+			$node->language = 'zh-hans';
+		}
+		if($langshortcode == 'zh-tw'){//Traditional Chinese
+			$node->language = 'zh-hant';
+		}
+	}
+	else{
+		//$node->language = 'zh-hant';
+		$node->language = substr($langshortcode,0,2);
+	}
+    $body_field_info = field_info_field('body');
+	if (field_is_translatable('node', $body_field_info)) {
+	  $body_language = field_valid_language($node->language);
+	} else {
+	  $body_language = LANGUAGE_NONE;
+	}
+	//$node->language = $body_language;
+	
+	
+	if(($joomla_teaser != '') && ($joomla_body == '')){
+		$node->body[$body_language][0]['summary'] = '';
+    	$node->body[$body_language][0]['value'] = $joomla_teaser;
+		$node->body[$body_language][0]['safe_value'] = $joomla_teaser;
+	}
+	elseif(($joomla_teaser == '') && ($joomla_body != '')){
+	 	$node->body[$body_language][0]['summary'] = '';
+    	$node->body[$body_language][0]['value'] = $joomla_body;
+		$node->body[$body_language][0]['safe_value'] = $joomla_body;
+	}
+	else{
+	 	$node->body[$body_language][0]['summary'] = $joomla_teaser;
+    	$node->body[$body_language][0]['value'] = $joomla_body;
+		$node->body[$body_language][0]['safe_value'] = $joomla_body;
+	}
+	$node->body[$body_language][0]['format'] = 'full_html';
+   
+    $node->promote = 0;
+	
+		node_save($node);
+		if (!$content_map) {
+		  // Created new node, update joomla table
+		  $joomla_content = new stdClass();
+		  $joomla_content->nid = $node->nid;
+		  $joomla_content->jcontentid = $data_joomla->id;
+		  drupal_write_record('joomla_jfcontent', $joomla_content);
+		}
+		if (!$content_map && $node->nid) {
+		  $context['results']['jfcontent_new']++;
+		}
+		elseif ($content_map && $node->nid) {
+		  $context['results']['jfcontent_updated']++;
+		}
+		else {
+		  $context['results']['jfcontent_failed']++;
+		}
+		// Hook to allow other modules to modify the node
+		module_invoke_all('joomla', 'node', $node, $data_joomla);
+		
+		$context['message'] = t('Now processing %node', array('%node' => strip_tags(check_plain($data_joomla->value))));
+	}
+	//db_set_active();
+	
+  }
+  $offset += 10;
+  //db_set_active();
+}
+
 /**
  *
  */
@@ -565,6 +740,12 @@ function joomla_batch_finished($success, $results, $operations) {
       '@updated' => $results['content_updated'],
       '@failed' => $results['content_failed'],
     )));
+    drupal_set_message(t('Processed @total JoomFish content items (@new new, @updated updated, @failed errors)', array(
+      '@total' => $results['jfcontent_total'],
+      '@new' => $results['jfcontent_new'],
+      '@updated' => $results['jfcontent_updated'],
+      '@failed' => $results['jfcontent_failed'],
+    )));
     drupal_set_message(t('Processed @total comments (@new new, @updated updated, @failed errors)', array(
       '@total' => $results['comments_total'],
       '@new' => $results['comments_new'],
diff --git a/joomla.install b/joomla.install
index cf0faa9..7f34870 100644
--- a/joomla.install
+++ b/joomla.install
@@ -121,6 +121,29 @@ function joomla_schema() {
       'jcontentid' => array('jcontentid'),
     ),
   );
+  $schema['joomla_jfcontent'] = array(
+  'description' => 'Stores the original Joomla content ID links to the {node} table',
+    'fields' => array(
+      'nid' => array(
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => "The {node}.nid.",
+      ),
+      'jcontentid' => array(
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => "The content id from the Joomla database.",
+      ),
+    ),
+    'primary key' => array('nid'),
+    'unique keys' => array(
+      'jcontentid' => array('jcontentid'),
+    ),
+  );
   $schema['joomla_comments'] = array(
   'description' => 'Stores the original Joomla JComment ID links to the {comment} table',
     'fields' => array(
diff --git a/joomla.module b/joomla.module
index ebd4810..561bd2c 100644
--- a/joomla.module
+++ b/joomla.module
@@ -5,6 +5,7 @@
  * The joomla module used for migrate Joomla to Drupal.
  */
 define('JOOMLA_IMPORT_CONTENT', TRUE);
+define('JOOMLA_IMPORT_jfcontent', TRUE);
 define('JOOMLA_IMPORT_CATEGORIES', TRUE);
 define('JOOMLA_IMPORT_USERS', TRUE);
 define('JOOMLA_IMPORT_COMMENTS', FALSE);
@@ -56,6 +57,9 @@ function joomla_node_delete($node) {
   db_delete('joomla_content')
     ->condition('nid', $node->nid)
     ->execute();
+  db_delete('joomla_jfcontent')
+    ->condition('nid', $node->nid)
+    ->execute();
 }
 
 /**
@@ -290,6 +294,11 @@ function joomla_import_form_checkboxes(&$form_state = NULL) {
     '#title' => t('Import content'),
     '#default_value' => variable_get('joomla_import_content', JOOMLA_IMPORT_CONTENT),
   );
+  $form['joomla_import']['joomla_import_jfcontent'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Import Joomfish content'),
+    '#default_value' => variable_get('joomla_import_jfcontent', JOOMLA_IMPORT_jfcontent),
+  );
   $form['joomla_import']['joomla_import_categories'] = array(
     '#type' => 'checkbox',
     '#title' => t('Import categories'),
@@ -325,6 +334,7 @@ function joomla_import_form_submit($form, &$form_state) {
   $jos['comments'] = (bool) $form_state['values']['joomla_import_comments'];
   $jos['categories'] = (bool) $form_state['values']['joomla_import_categories'];
   $jos['content'] = (bool) $form_state['values']['joomla_import_content'];
+  $jos['jf_content'] = (bool) $form_state['values']['joomla_import_jfcontent'];
   $op = !empty($jos) ? array('joomla_batch_save', array($jos, $joomla_update_duplicate)) : NULL;
   db_set_active();
   $batch = array(
