diff --git a/sharethis.module b/sharethis.module
index 3ac3aa3..d815fc9 100644
--- a/sharethis.module
+++ b/sharethis.module
@@ -194,6 +194,58 @@ function sharethis_configuration_form($form, &$form_state) {
     '#options' => drupal_map_assoc(array(-100, -50, -25, -10, 0, 10, 25, 50, 100)),
     '#default_value' => variable_get('sharethis_weight', 10),
   );
+  if (module_exists('token')) {
+    $form['tokens'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Tokens'),
+      '#group' => 'additional_settings',
+      '#description' => t('Use tokens to customize the properties to be shared. Tokens may be used only with the Node Content and Links area locations.'),
+      '#states' => array(
+        'disabled' => array(
+          ':input[name="sharethis_location"]' => array('value' => 'block'),
+        ),
+      ),
+    );
+    $form['tokens']['sharethis_title_global'] = array(
+      '#title' => t('Title'),
+      '#description' => t('You can use tokens to generate the title when sharing. By default the node title will be used.'),
+      '#type' => 'textfield',
+      '#default_value' => variable_get('sharethis_title_global', FALSE),
+      '#element_validate' => array('token_element_validate'),
+      '#token_types' => array('node')
+    );
+    $form['tokens']['sharethis_url_global'] = array(
+      '#title' => t('URL'),
+      '#description' => t('You can use tokens to generate the URL when sharing. By default the node URL will be used.'),
+      '#type' => 'textfield',
+      '#default_value' => variable_get('sharethis_url_global', FALSE),
+      '#element_validate' => array('token_element_validate'),
+      '#token_types' => array('node')
+    );
+    $form['tokens']['sharethis_summary_global'] = array(
+      '#title' => t('Summary'),
+      '#description' => t('You can use tokens to generate the summary when sharing. By default the node summary will be used.'),
+      '#type' => 'textfield',
+      '#default_value' => variable_get('sharethis_summary_global', FALSE),
+      '#element_validate' => array('token_element_validate'),
+      '#token_types' => array('node')
+    );
+    $form['tokens']['sharethis_image_global'] = array(
+      '#title' => t('Image'),
+      '#description' => t('You can use tokens to generate the image when sharing. By default the value of the og:image meta tag will be used.'),
+      '#type' => 'textfield',
+      '#default_value' => variable_get('sharethis_image_global', FALSE),
+      '#element_validate' => array('token_element_validate'),
+      '#token_types' => array('node')
+    );
+    $form['tokens']['token_help'] = array(
+      '#title' => t('Replacement patterns'),
+      '#theme' => 'token_tree',
+      '#token_types' => array('node'),
+      '#collapsible' => TRUE,
+      '#collapsed' => FALSE,
+    );
+  }
   $form['advanced'] = array(
     '#type' => 'fieldset',
     '#title' => t('Advanced'),
@@ -333,8 +385,22 @@ function sharethis_node_view($node, $view_mode, $langcode) {
 
   global $base_url;
   // Get the full path to insert into the Share Buttons.
-  $mPath = $base_url . $path_module;
-  $mTitle = $node->title;
+  $values['path'] = $base_url . $path_module;
+  $values['title'] = $node->title;
+  if (module_exists('token')) {
+    $token_options = array('title', 'summary', 'url', 'image');
+    foreach ($token_options as $option) {
+      // First check if token is available by content type
+      $token = variable_get('sharethis_' . $option . '_' . $node->type, FALSE);
+      if ($token == FALSE) {
+        // Use global
+        $token = variable_get('sharethis_' . $option . '_global', FALSE);
+      }
+      if ($token != FALSE) {
+        $values[$option] = token_replace($token, array('node'=>$node), array('clear'=>TRUE));
+      }
+    }
+  }
 
   // Only display the ShareThis buttons if this node fits all the requirements
   if (strpos($data_options['nodeType'], $node->type) !== FALSE) { // Make sure this is the right type of node.
@@ -349,14 +415,14 @@ function sharethis_node_view($node, $view_mode, $langcode) {
             '#tag' => 'div', // Wrap it in a div.
             '#type' => 'html_tag',
             '#attributes' => array('class' => 'sharethis-buttons'),
-            '#value' => sharethis_get_button_HTML($data_options, $mPath, $mTitle),
+            '#value' => sharethis_get_button_HTML($data_options, $values),
             '#weight' => intval(variable_get('sharethis_weight', 10)),
           );
         break;
         case 'links':
           $links['sharethis'] = array(
             'html' => TRUE,
-            'title' => sharethis_get_button_HTML($data_options, $mPath, $mTitle),
+            'title' => sharethis_get_button_HTML($data_options, $values),
             'attributes' => array('class' => 'sharethis-buttons'),
           );
           $node->content['links']['sharethis'] = array(
@@ -376,6 +442,79 @@ function sharethis_node_view($node, $view_mode, $langcode) {
 }
 
 /**
+ * Implements hook_form_alter().
+ */
+function sharethis_form_node_type_form_alter(&$form, $form_state) {
+  if (module_exists('token')) { // sharethis allowed for this content type?
+    $_sharethisOptions = sharethis_get_options_array();
+    $node_types = explode(',', $_sharethisOptions['nodeType']);
+    $form['sharethis'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('ShareThis'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      '#group' => 'additional_settings',
+      '#tree' => TRUE,
+      '#weight' => 10,
+      '#disabled' => !in_array($form['#node_type']->type, $node_types),
+    );
+
+    $form['sharethis']['sharethis_title_' . $form['#node_type']->type] = array(
+      '#title' => t('ShareThis title'),
+      '#description' => t('You can use tokens to generate the title when sharing. By default the node title will be used.'),
+      '#type' => 'textfield',
+      '#default_value' => variable_get('sharethis_title_' . $form['#node_type']->type, FALSE),
+      '#element_validate' => array('token_element_validate'),
+      '#token_types' => array('node')
+    );
+    $form['sharethis']['sharethis_url_' . $form['#node_type']->type] = array(
+      '#title' => t('URL'),
+      '#description' => t('You can use tokens to generate the URL when sharing. By default the node URL will be used.'),
+      '#type' => 'textfield',
+      '#default_value' => variable_get('sharethis_url_' . $form['#node_type']->type, FALSE),
+      '#element_validate' => array('token_element_validate'),
+      '#token_types' => array('node')
+    );
+    $form['sharethis']['sharethis_summary_' . $form['#node_type']->type] = array(
+      '#title' => t('Summary'),
+      '#description' => t('You can use tokens to generate the summary when sharing. By default the node summary will be used.'),
+      '#type' => 'textfield',
+      '#default_value' => variable_get('sharethis_summary_' . $form['#node_type']->type, FALSE),
+      '#element_validate' => array('token_element_validate'),
+      '#token_types' => array('node')
+    );
+    $form['sharethis']['sharethis_image_' . $form['#node_type']->type] = array(
+      '#title' => t('Image'),
+      '#description' => t('You can use tokens to generate the image when sharing. By default the value of the og:image meta tag will be used.'),
+      '#type' => 'textfield',
+      '#default_value' => variable_get('sharethis_image_' . $form['#node_type']->type, FALSE),
+      '#element_validate' => array('token_element_validate'),
+      '#token_types' => array('node')
+    );
+    $form['sharethis']['token_help'] = array(
+      '#title' => t('Replacement patterns'),
+      '#theme' => 'token_tree',
+      '#token_types' => array('node'),
+      '#collapsible' => TRUE,
+      '#collapsed' => FALSE,
+    );
+
+    $form['#submit'][] = 'sharethis_node_type_form_submit';
+  }
+}
+
+/**
+ * Form submission handler for node type edit forms().
+ */
+function sharethis_node_type_form_submit($form, &$form_state) {
+  $type = trim($form_state['values']['type']);
+  variable_set('sharethis_title_' . $type, $form_state['values']['sharethis']['sharethis_title_' . $type]);
+  variable_set('sharethis_url_' . $type, $form_state['values']['sharethis']['sharethis_url_' . $type]);
+  variable_set('sharethis_summary_' . $type, $form_state['values']['sharethis']['sharethis_summary_' . $type]);
+  variable_set('sharethis_image_' . $type, $form_state['values']['sharethis']['sharethis_image_' . $type]);
+}
+
+/**
  * sharethisGetOptionArray is a helper function for DB access.
  *
  * Returns options that have been stored in the database.
@@ -403,12 +542,11 @@ function sharethis_get_options_array() {
  * sharethisGet_button_HTML is the function that creates the ShareThis code
  * It returns the appropriate html based on your settings.
  */
-function sharethis_get_button_HTML($data_options, $mPath, $mTitle) {
+function sharethis_get_button_HTML($data_options, $values) {
   // Inject the extra services.
   foreach ($data_options['option_extras'] as $service) {
     $data_options['services'] .= ',"' . $service . '"';
   }
-
   // The share buttons are simply spans of the form class='st_SERVICE_BUTTONTYPE' -- "st" stands for ShareThis.
   $type = drupal_substr($data_options['buttons'], 4);
   $type = $type == "_" ? "" : check_plain($type);
@@ -428,10 +566,10 @@ function sharethis_get_button_HTML($data_options, $mPath, $mTitle) {
     $serviceCodeName = drupal_substr($service[1], 0, -1);
 
     // Switch the title on a per-service basis if required.
-    $title = $mTitle;
+    $title = $values['title'];
     switch ($serviceCodeName) {
       case 'twitter':
-        $title = empty($data_options['twitter_suffix']) ? $mTitle : check_plain($mTitle) . ' ' . check_plain($data_options['twitter_suffix']);
+        $title = empty($data_options['twitter_suffix']) ? $title : check_plain($title) . ' ' . check_plain($data_options['twitter_suffix']);
         break;
     }
 
@@ -440,10 +578,16 @@ function sharethis_get_button_HTML($data_options, $mPath, $mTitle) {
 
     // Put together the span attributes.
     $attributes = array(
-      'st_url' => $mPath,
+      'st_url' => $values['path'],
       'st_title' => $title,
       'class' => 'st_' . $display . $type,
     );
+    if (isset($values['summary'])) {
+      $attributes['st_summary'] = $values['summary'];
+    }
+    if (isset($values['image'])) {
+      $attributes['st_image'] = $values['image'];
+    }
     if ($serviceCodeName == 'twitter') {
       if (!empty($data_options['twitter_handle'])) {
         $attributes['st_via'] = $data_options['twitter_handle'];
@@ -454,6 +598,7 @@ function sharethis_get_button_HTML($data_options, $mPath, $mTitle) {
     if (!empty($type)) {
       $attributes['displaytext'] = check_plain($display);
     }
+
     // Render the span tag.
     $st_spans .= theme('html_tag', array(
       'element' => array(
@@ -528,10 +673,9 @@ function sharethis_block_contents() {
   if (variable_get('sharethis_location', 'content') == 'block') {
     // First get all of the options for the sharethis widget from the database:
     $data_options = sharethis_get_options_array();
-    $path = isset($_GET['q']) ? $_GET['q'] : '<front>';
-    $mPath = url($_GET['q'], array('absolute' => TRUE));
-    $mTitle = drupal_get_title();
-    return sharethis_get_button_HTML($data_options, $mPath, $mTitle);
+    $values['path'] = url($_GET['q'], array('absolute' => TRUE));
+    $values['title'] = drupal_get_title();
+    return sharethis_get_button_HTML($data_options, $values);
   }
 }
 
@@ -541,13 +685,12 @@ function sharethis_block_contents() {
 function sharethis_comment_view($comment, $view_mode, $langcode) {
   if (variable_get('sharethis_comments', FALSE)) {
     $data_options = sharethis_get_options_array();
-    $path = isset($_GET['q']) ? $_GET['q'] : '<front>';
-    $mPath = url($_GET['q'], array(
+    $values['path'] = url($_GET['q'], array(
       'absolute' => TRUE,
       'fragment' => 'comment-' . $comment->cid,
     ));
-    $mTitle = drupal_get_title();
-    $html = sharethis_get_button_HTML($data_options, $mPath, $mTitle);
+    $values['title'] = drupal_get_title();
+    $html = sharethis_get_button_HTML($data_options, $values);
     $comment->content['sharethis'] = array(
       '#type' => 'html_tag',
       '#value' => $html,
diff --git a/views/sharethis_handler_field_link.inc b/views/sharethis_handler_field_link.inc
index 1adcc91..929201e 100644
--- a/views/sharethis_handler_field_link.inc
+++ b/views/sharethis_handler_field_link.inc
@@ -19,7 +19,7 @@ class sharethis_handler_field_link extends views_handler_field_entity {
   function render_sharethis_link($entity) {
     global $base_url;
     $path = $base_url . url('node/' . $entity->nid);
-    return sharethis_get_button_HTML(sharethis_get_options_array(), $path, $entity->title);
+    return sharethis_get_button_HTML(sharethis_get_options_array(), array('path' => $path, 'title' => $entity->title));
 
     /**
      * @todo
