diff --git a/modules/julio_slideshow/julio_slideshow.module b/modules/julio_slideshow/julio_slideshow.module
index cc4cb24..6680f39 100644
--- a/modules/julio_slideshow/julio_slideshow.module
+++ b/modules/julio_slideshow/julio_slideshow.module
@@ -7,6 +7,71 @@
 include_once('julio_slideshow.features.inc');
 
 /**
+ * Implementation of hook_form_alter().
+ *
+ * Add after build callback to the home page slideshow form
+ */
+
+function julio_slideshow_form_alter(&$form, &$form_state, $form_id) {
+  if (arg(0) == 'node' && arg(1) == '7' && strpos($form_id, 'media_edit_') === 0) {
+    if (!isset($form['#after_build'])) {
+      $form['#after_build'] = array();
+    }
+    $form['#after_build'][] = 'julio_slideshow_form_alter_after_build';
+  }
+}
+
+/**
+ * After build function to add autocomplete, and adjust field title and description
+ */
+
+function julio_slideshow_form_alter_after_build($form, &$form_state) {
+  if ($form['media_nivo_slider_image_link']) {
+      $form['media_nivo_slider_image_link']['und'][0]['value']['#autocomplete_path'] = 'julio_slideshow/autocomplete';
+      $form['media_nivo_slider_image_link']['und'][0]['value']['#title'] = t('Slide link');
+      $form['media_nivo_slider_image_link']['und'][0]['value']['#description'] = t('Set a link that this slide will point to. To link to content on this site, either enter a few letters of the title and select the appropriate link in the popup, or enter the internal link. For an external link, enter the full URL.');
+  }
+  return $form;
+}
+
+/**
+ * Helper function for autocompletion
+ */
+
+function julio_slideshow_autocomplete($string = ''){
+  // If the request has a '/' in the search text, then the menu system will have
+  // split it into multiple arguments, recover the intended $string.
+  $args = func_get_args();
+  $string = implode('/', $args);
+  $string = trim($string);
+  $matches = array();
+  if ($string) {
+    // Find internal content like the input $string, by title
+    $result = db_query_range("SELECT nid, title, status FROM {node} WHERE (title) LIKE :string AND status = 1", 0, 10, array(':string' => '%' . $string . '%'));
+    foreach ($result as $record) {
+      $path = drupal_get_path_alias('node/' . $record->nid);
+      $matches[$path] = check_plain($record->title . ' (/' . $path . ')');
+    }
+    // If no internal content is found, check if we have a valid internal path,
+    // if not, check for a valid absolute path, suggesting a prefix of http:// where absent
+    if (empty($matches)) {
+      $valid_path = drupal_valid_path($string);
+      $string_http = preg_match("#https?://#", $string) === 0 ? 'http://' . $string : $string;
+      // Diego Perini's URL validation regexp https://gist.github.com/729294
+      if (!$valid_path && preg_match('_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS', $string_http)) {
+        $matches[$string_http] = check_plain($string_http);
+      }
+      // Since valid_url() is more tolerant with domain name formation than above regexp it can be
+      // used as an unintrusive inline helper to point out more obvious user input error and bad paths
+      else if (!valid_url($string_http, TRUE) && !$valid_path) {
+        $matches[$string] = t('Title not found or link appears invalid.');
+      }
+    }
+  }
+  print drupal_json_output($matches);
+}
+
+/**
  * Implementation of hook_block_view_alter()
  */
 function julio_slideshow_block_view_alter(&$data, $block) {
