eBay Items on Google Maps

By Auction Search Kit Last update Nov 16, 2008 — Installed 848 times.

There are 16 previous versions of this script.

Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)

// AuctionSearchKit - "eBay Items on Google Maps" User Script
// Version 3.2
// 2008-11-16
// Copyright (c) 2008, Auction Search Kit. All rights reserved.
// Feedback to auctionsearchkit@gmail.com is welcome.
//
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script.
//
// To install, you need Greasemonkey: http://greasemonkey.mozdev.org/
// Then restart Firefox and revisit this script.
// Under Tools, there will be a new menu item to "Install User Script".
// Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts,
// select "eBay Items on Google Maps", and click Uninstall.
//
// --------------------------------------------------------------------
//
// ==UserScript==
// @name          eBay Items on Google Maps
// @namespace     http://www.auctionsearchkit.co.uk
// @description   Adds buttons to the eBay search, results and item pages to show items locations on a Google Map.
// @include       http://*.ebay.*
// ==/UserScript==

// Script version. NOTE: This should also be updated at the top.
var version = '3.2';

// Get all the elements in the specified class optionally below the specified node and with the
// specified tag name
function getElementsByINCT(elementId, elementName, className, tagName, node) {
  if ((typeof elementId != 'undefined') && (elementId !== null)) {
    var idRegExp = new RegExp('^' + elementId + '$', 'i');
  } else {
    var idRegExp = null;
  }
  if (typeof elementName == 'undefined') {
    elementName = null;
  }
  if ((typeof className != 'undefined') && (className !== null)) {
    var classRegExp = new RegExp('^' + className + '$', 'i');
  } else {
    var classRegExp = null;
  }
  if ((typeof tagName == 'undefined') || (tagName === null)) {
    tagName = '*';
  }
  if ((typeof node == 'undefined') || (node === null))  {
    node = document;
  }
  var elementsArray = [];
  if (elementName === null) {
    var elementsNodeList = node.getElementsByTagName(tagName);
  } else {
    var elementsNodeList = node.getElementsByName(elementName);
  }

  for (var eaIndex = 0; eaIndex < elementsNodeList.length; eaIndex++) {
    if (((idRegExp === null) || 
         (idRegExp.test(elementsNodeList[eaIndex].id) == true)) &&
        ((elementName === null) || 
         (tagName == '*') || 
         (elementsNodeList[eaIndex].tagName.toLowerCase() == tagName.toLowerCase())) &&
        ((classRegExp === null) || 
         (classRegExp.test(elementsNodeList[eaIndex].className) == true))) {
      elementsArray.push(elementsNodeList[eaIndex]);
    }
  }
  return elementsArray;
}

function getItemsUrl(rootElement) {
  if (typeof rootElement == 'undefined') {
    rootElement = document;
  }
  var url = null;
  var anchorElementsArray = rootElement.getElementsByTagName('a');
  if (anchorElementsArray !== null) {
    var regexp = /(&|\?|QQ|%26|Q26|_W0QQ)item(=|Z|%3D|Q3D)([0-9]{9,12})(&|QQ|%26|Q26|$)/i;
    var itemsArray = [];
    for (var index = 0; index < anchorElementsArray.length; index++) {
      var anchorElement = anchorElementsArray[index];
      var href = anchorElement.href;
      var matches = regexp.exec(href);
      if (matches != null) { 
        itemsArray.push(matches[3]);
      }
    }
    if (itemsArray.length > 0) {
      itemsArray.sort();
      url = 'http://www.auctionsearchkit.co.uk/search.php?item=';
      var prevItem = null;
      for (var index = 0; index < itemsArray.length; index++) {
        var item = itemsArray[index];
        if (item !== prevItem) {
          url += item + ',';
          prevItem = item;
        }
      }
      url = url.substring(0, url.length - 1);
    }
  }
  
  return url;
}

var advsearchElement = document.getElementById('AdvSearchId');
var headerSearchFormElements = document.getElementsByName('headerSearch');
if ((headerSearchFormElements != null) &&
    (headerSearchFormElements[0] != null) && 
    (advsearchElement != null)) {
  newElement = document.createElement('span');
  newElement.innerHTML = ' <input title="Show the results of this search on a Google Map"'
                              + ' type="button" value="Map-Search"'
                              + ' onclick="var headerSearchFormElements = document.getElementsByName(\'headerSearch\');'
                                       + ' if ((headerSearchFormElements != null) && (headerSearchFormElements[0] != null)) {'
                                          + ' var url = headerSearchFormElements[0].action;'
                                          + ' if ((url == \'\') || (url[0] == \'?\') || (url[0] == \'/\')) {'
                                          + '   url = window.location.href + url; '
                                          + ' }'
                                          + ' var allCtrls = headerSearchFormElements[0].elements;'
                                          + ' for (ctrlNum = 0; ctrlNum < allCtrls.length; ctrlNum++) {'
                                          + '   var ctrl = allCtrls[ctrlNum];'
                                          + '   var ctrlType = ctrl.type;'
                                          + '   if (typeof ctrlType != \'undefined\') {'
                                          + '     ctrlType = ctrlType.toLowerCase();'
                                          + '     if ((ctrlType != \'submit\') && (ctrlType != \'reset\') &&'
                                          + '         (ctrlType != \'image\') && (ctrlType != \'button\') &&'
                                          + '         (((ctrlType != \'checkbox\') && (ctrlType != \'radio\')) || (ctrl.checked != false))) {'
                                          + '       url += (url.indexOf(\'?\') >= 0) ? \'&\' : \'?\';'
                                          + '       url += ctrl.name + \'=\' + encodeURIComponent(ctrl.value);'
                                          + '     }'
                                          + '   }'
                                          + ' }'
                                          + ' window.open(\'http://www.auctionsearchkit.co.uk/search.php?\''
                                            + ' + url + \'&asksrc=gm' + version + 'p1\'); }">';
  advsearchElement.parentNode.insertBefore(newElement, advsearchElement);
}

var submitElementsArray = getElementsByINCT(null, null, 'standard', 'input');
if (submitElementsArray.length <= 0) {
  var searchButtonElement = document.getElementById('inlinebutton');
  var advSearchFormElements = document.getElementsByName('advsearch_form');
  if ((advSearchFormElements != null) &&
      (advSearchFormElements[0] != null) && 
      (searchButtonElement != null)) {
    var newElement = document.createElement('td');
    newElement.innerHTML = ' <input title="Show the results of this search on a Google Map"'
                                + ' type="button" class="standard" value="Map-Search"'
                                + ' onclick="var advSearchFormElements = document.getElementsByName(\'advsearch_form\');'
                                         + ' if ((advSearchFormElements != null) && (advSearchFormElements[0] != null)) {'
                                            + ' var url = advSearchFormElements[0].action;'
                                            + ' if ((url == \'\') || (url[0] == \'?\') || (url[0] == \'/\')) {'
                                            + '   url = window.location.href + url; '
                                            + ' }'
                                            + ' var allCtrls = advSearchFormElements[0].elements;'
                                            + ' for (ctrlNum = 0; ctrlNum < allCtrls.length; ctrlNum++) {'
                                            + '   var ctrl = allCtrls[ctrlNum];'
                                            + '   var ctrlType = ctrl.type;'
                                            + '   if (typeof ctrlType != \'undefined\') {'
                                            + '     ctrlType = ctrlType.toLowerCase();'
                                            + '     if ((ctrlType != \'submit\') && (ctrlType != \'reset\') &&'
                                            + '         (ctrlType != \'image\') && (ctrlType != \'button\') &&'
                                            + '         (((ctrlType != \'checkbox\') && (ctrlType != \'radio\')) || (ctrl.checked != false))) {'
                                            + '       url += (url.indexOf(\'?\') >= 0) ? \'&\' : \'?\';'
                                            + '       url += ctrl.name + \'=\' + encodeURIComponent(ctrl.value);'
                                            + '     }'
                                            + '   }'
                                            + ' }'
                                            + ' window.open(\'http://www.auctionsearchkit.co.uk/search.php?\''
                                              + ' + url + \'&asksrc=gm' + version + 'p2\'); }">';
    searchButtonElement.parentNode.insertBefore(newElement, searchButtonElement.nextSibling);
    newElement = document.createElement('td');
    newElement.innerHTML = '<img width="10" height="1" border="0" '
                          + 'xmlns="http://www.w3.org/1999/xhtml" src="http://pics.ebaystatic.com/aw/pics/s.gif"/>'
    searchButtonElement.parentNode.insertBefore(newElement, searchButtonElement.nextSibling);
  }
} else {
  for (submitElementIndex = 0; submitElementIndex < submitElementsArray.length; submitElementIndex++) {
    var newElement = document.createElement('span');
    newElement.innerHTML = '<input title="Show the results of this search on a Google Map"'
                         + ' type="button" value="Map-Search" class="standard"'
                         + ' onclick="var advSearchFormElements = document.getElementsByName(\'advsearch_form\');'
                                  + ' if ((advSearchFormElements != null) && (advSearchFormElements[0] != null)) {'
                                     + ' var url = advSearchFormElements[0].action;'
                                     + ' if ((url == \'\') || (url[0] == \'?\') || (url[0] == \'/\')) {'
                                     + '   url = window.location.href + url; '
                                     + ' }'
                                     + ' var allCtrls = advSearchFormElements[0].elements;'
                                     + ' for (ctrlNum = 0; ctrlNum < allCtrls.length; ctrlNum++) {'
                                     + '   var ctrl = allCtrls[ctrlNum];'
                                     + '   var ctrlType = ctrl.type;'
                                     + '   if (typeof ctrlType != \'undefined\') {'
                                     + '     ctrlType = ctrlType.toLowerCase();'
                                     + '     if ((ctrlType != \'submit\') && (ctrlType != \'reset\') &&'
                                     + '         (ctrlType != \'image\') && (ctrlType != \'button\') &&'
                                     + '         (((ctrlType != \'checkbox\') && (ctrlType != \'radio\')) || (ctrl.checked != false))) {'
                                     + '       url += (url.indexOf(\'?\') >= 0) ? \'&\' : \'?\';'
                                     + '       url += ctrl.name + \'=\' + encodeURIComponent(ctrl.value);'
                                     + '     }'
                                     + '   }'
                                     + ' }'
                                     + ' window.open(\'http://www.auctionsearchkit.co.uk/search.php?\''
                                       + ' + url + \'&asksrc=gm' + version + 'p2b\'); }">';
    submitElementsArray[submitElementIndex].parentNode.insertBefore(
        newElement,
        submitElementsArray[submitElementIndex].nextSibling);
  }
}

var saveSearchElement = document.getElementById('span_save_search');
if (saveSearchElement == null) {
  saveSearchElement = document.getElementById('fpcSaveSearchLink');
}
if (saveSearchElement == null) {
  saveSearchElement = document.getElementById('span_save_search');
}
if (saveSearchElement != null) {
  var newElement = document.createElement('span');
  newElement.innerHTML = '<span class="savesearch"><a class="links" title="Show the results of this search on a Google Map" '
                       + ' href="http://www.auctionsearchkit.co.uk/search.php?'
                       + window.location.href + '&asksrc=gm' + version + 'p3" target="_blank">Map this search</a> | </span> ';
  saveSearchElement.parentNode.insertBefore(newElement, saveSearchElement);

  var url = getItemsUrl();
  if (url != null) {
    newElement = document.createElement('span');
    newElement.innerHTML = '<span class="savesearch"><a title="Show all the items on the current page on a Google Map" '
                         + ' href="' + url + '&asksrc=gm' + version + 'p4" target="_blank">Map all items on page</a> | </span> ';
    saveSearchElement.parentNode.insertBefore(newElement, saveSearchElement);
  }
}

var watchingElement = document.getElementById('watching');
if (watchingElement != null) {
  var newElement = document.createElement('td');
  newElement.align = 'right';
  newElement.innerHTML = '<b><a title="Show this item\'s location on a Google Map"'
                       + ' href="http://www.auctionsearchkit.co.uk/search.php?'
                       + window.location.href 
                       + '&asksrc=gm' + version + 'p5" target="_blank">Map&nbsp;this&nbsp;item</a></b>';
  watchingElement.parentNode.insertBefore(newElement, watchingElement);
}

var bsElement = document.getElementById('bs');
var findElement = document.getElementById('find');
if ((bsElement != null) &&
    (findElement != null)) {
  newElement = document.createElement('span');
  newElement.innerHTML = ' <input title="Show the results of this search on a Google Map"'
                              + ' type="button" class="standard" value="Map-Search"'
                              + ' onclick="var findElement = document.getElementById(\'find\');'
                                       + ' if (findElement != null) {'
                                          + ' var qMarkPos = window.location.href.search(/(\\?|__W0QQ)/i);'
                                          + ' if (qMarkPos > 0) {'
                                            + ' var url = window.location.href.substring(0, qMarkPos);'
                                          + ' } else { '
                                            + ' var url = \'\';'
                                          + ' }'
                                          + ' var allCtrls = findElement.elements;'
                                          + ' for (ctrlNum = 0; ctrlNum < allCtrls.length; ctrlNum++) {'
                                          + '   var ctrl = allCtrls[ctrlNum];'
                                          + '   var ctrlType = ctrl.type;'
                                          + '   if (typeof ctrlType != \'undefined\') {'
                                          + '     ctrlType = ctrlType.toLowerCase();'
                                          + '     if ((ctrlType != \'submit\') && (ctrlType != \'reset\') &&'
                                          + '         (ctrlType != \'image\') && (ctrlType != \'button\') &&'
                                          + '         (((ctrlType != \'checkbox\') && (ctrlType != \'radio\')) || (ctrl.checked != false))) {'
                                          + '       url += (url.indexOf(\'?\') >= 0) ? \'&\' : \'?\';'
                                          + '       url += ctrl.name + \'=\' + encodeURIComponent(ctrl.value);'
                                          + '     }'
                                          + '   }'
                                          + ' }'
                                          + ' window.open(\'http://www.auctionsearchkit.co.uk/search.php?\''
                                            + ' + url + \'&asksrc=gm' + version + 'p6\'); }">';
  bsElement.parentNode.insertBefore(newElement, bsElement.nextSibling);
}

var watchButtonElement = document.getElementById('watchLinkMiddle');
if (watchButtonElement != null) {
  var newElement = document.createElement('span');
  newElement.innerHTML = ' <input class="navigation" title="Show the results of this search on a Google Map"'
                              + ' type="button" class="standard" value="Map This Item"'
                              + ' onclick="window.open(\'http://www.auctionsearchkit.co.uk/search.php?'
                              + window.location.href + '&asksrc=gm' + version + 'p7\');"';
  watchButtonElement.parentNode.insertBefore(newElement, watchButtonElement);
}

if (window.location.href.search(/my\.ebay/i) >= 0) {
  var titleElementsArray = getElementsByINCT(null, null, 'c_Title', 'td');
  for (var index = 0; index < titleElementsArray.length; index++) {
    var titleElement = titleElementsArray[index];
    var anchorElementsArray = titleElement.getElementsByTagName('a');
    if (anchorElementsArray.length == 1) {
      var anchorElement = anchorElementsArray[0];
      var newElement = document.createElement('span');
      newElement.innerHTML = '&nbsp;&nbsp;[<a title="Show this item on a Google Map" '
                           + ' href="http://www.auctionsearchkit.co.uk/search.php?'
                           + anchorElement.href
                           + '&asksrc=gm' + version + 'p10" target="_blank">Map&nbsp;Item</a>] ';
      anchorElement.parentNode.insertBefore(newElement, anchorElement.nextSibling);
    }
  }

  var searchElementsArray = getElementsByINCT(null, null, 'c_SearchName', 'td');
  for (var index = 0; index < searchElementsArray.length; index++) {
    var titleElement = searchElementsArray[index];
    var anchorElementsArray = titleElement.getElementsByTagName('a');
    if (anchorElementsArray.length == 1) {
      var anchorElement = anchorElementsArray[0];
      var newElement = document.createElement('span');
      newElement.innerHTML = '&nbsp;&nbsp;[<a title="Show this item on a Google Map" '
                           + ' href="http://www.auctionsearchkit.co.uk/search.php?'
                           + anchorElement.href
                           + '&asksrc=gm' + version + 'p11" target="_blank">Map&nbsp;Search</a>] ';
      anchorElement.parentNode.insertBefore(newElement, anchorElement.nextSibling);
    }
  }

  var pdmColElementsArray = getElementsByINCT(null, null, 'pdm-col', 'ul');
  for (var index = 0; index < pdmColElementsArray.length; index++) {
    var pdmColElement = pdmColElementsArray[index];
    var pdmItemElementsArray = getElementsByINCT(null, null, 'pdm-item', 'li', pdmColElement);
    var pdmItemElement = pdmItemElementsArray[0];
    var anchorElementsArray = pdmItemElement.getElementsByTagName('a');
    if (anchorElementsArray.length == 1) {
      var anchorElement = anchorElementsArray[0];
      if ((anchorElement.innerHTML != 'Summary') &&
          (anchorElement.innerHTML != 'Inbox') &&
          (anchorElement.innerHTML.substring(0, 18) != '<span id="editmenu') &&
          (anchorElement.innerHTML.substring(0, 17) != '<span id="imgspan') &&
          (anchorElement.innerHTML.substring(0, 3) != 'All') &&
          (anchorElement.innerHTML.substring(0, 4) != 'Last') &&
          (anchorElement.innerHTML.substring(0, 4) != 'Time')) {
        var newElement = document.createElement('li');
        newElement.className = 'pdm-item';
        if (anchorElement.innerHTML == 'Go to search results') {
          newElement.innerHTML = '<a title="Show this search on a Google Map" '
                               + ' href="http://www.auctionsearchkit.co.uk/search.php?'
                               + anchorElement.href
                               + '&asksrc=gm' + version + 'p12b" target="_blank">Map&nbsp;this&nbsp;search</a>';
        } else {
          newElement.innerHTML = '<a title="Show this item on a Google Map" '
                               + ' href="http://www.auctionsearchkit.co.uk/search.php?'
                               + anchorElement.href
                               + '&asksrc=gm' + version + 'p12" target="_blank">Map&nbsp;this&nbsp;item</a>';
        }
        pdmItemElement.parentNode.insertBefore(newElement, pdmItemElement.nextSibling);
      }
    }
  }

  var titleElementsArray = getElementsByINCT('ttl_.*', null, null, 'a');
  for (var index = 0; index < titleElementsArray.length; index++) {
    var titleElement = titleElementsArray[index];
    var newElement = document.createElement('span');
    newElement.innerHTML = '&nbsp;&nbsp;[<a title="Show this item on a Google Map" '
                         + ' href="http://www.auctionsearchkit.co.uk/search.php?'
                         + titleElement.href
                         + '&asksrc=gm' + version + 'p13" target="_blank">Map&nbsp;Item</a>] ';
    titleElement.parentNode.insertBefore(newElement, titleElement.nextSibling);
  }
}

var sacatElement = document.getElementById('_sacat');
var findingSearchBarFormElement = document.getElementById('findingsearchbarfrm');
if ((findingSearchBarFormElement != null) && (sacatElement != null)) {
  var newElement = document.createElement('span');
  newElement.innerHTML = ' <input title="Show the results of this search on a Google Map"'
                              + ' type="button" value="Map-Search"'
                              + ' onclick="var findingSearchBarFormElement = document.getElementById(\'findingsearchbarfrm\');'
                                       + ' if (findingSearchBarFormElement != null) {'
                                          + ' var url = findingSearchBarFormElement.action;'
                                          + ' if ((url == \'\') || (url[0] == \'?\') || (url[0] == \'/\')) {'
                                          + '   url = window.location.href + url; '
                                          + ' }'
                                          + ' var allCtrls = findingSearchBarFormElement.elements;'
                                          + ' for (ctrlNum = 0; ctrlNum < allCtrls.length; ctrlNum++) {'
                                          + '   var ctrl = allCtrls[ctrlNum];'
                                          + '   var ctrlType = ctrl.type;'
                                          + '   if (typeof ctrlType != \'undefined\') {'
                                          + '     ctrlType = ctrlType.toLowerCase();'
                                          + '     if ((ctrlType != \'submit\') && (ctrlType != \'reset\') &&'
                                          + '         (ctrlType != \'image\') && (ctrlType != \'button\') &&'
                                          + '         (((ctrlType != \'checkbox\') && (ctrlType != \'radio\')) || (ctrl.checked != false))) {'
                                          + '       url += (url.indexOf(\'?\') >= 0) ? \'&\' : \'?\';'
                                          + '       url += ctrl.name + \'=\' + encodeURIComponent(ctrl.value);'
                                          + '     }'
                                          + '   }'
                                          + ' }'
                                          + ' window.open(\'http://www.auctionsearchkit.co.uk/search.php?\''
                                            + ' + url + \'&asksrc=gm' + version + 'p14\'); }"';
  sacatElement.parentNode.insertBefore(newElement, sacatElement.nextSibling.nextSibling);
}

var deleteBtnElementArray = getElementsByINCT(null, 'SubmitAction.BulkDelete', null, 'input');
if (deleteBtnElementArray !== null) {
  btnHtml = ' <input title="Display these items on a Google Map"'
                 + ' type="button" value="Map Items"'
                 + ' onclick="var containerElement = this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;'
                          + ' if (containerElement != null) {'
                            + ' var anchorElementsArray = containerElement.getElementsByTagName(\'a\');'
                            + ' if (anchorElementsArray !== null) {'
                              + ' var regexp = new RegExp(\'(&|\\\\?|QQ|%26|Q26|_W0QQ)item(=|Z|%3D|Q3D)([0-9]{9,12})(&|QQ|%26|Q26|$)\', \'i\');'
                              + ' var itemsArray = [];'
                              + ' for (var index = 0; index < anchorElementsArray.length; index++) {'
                                + ' var anchorElement = anchorElementsArray[index];'
                                + ' var href = anchorElement.href;'
                                + ' var matches = regexp.exec(href);'
                                + ' if (matches != null) { '
                                  + ' itemsArray.push(matches[3]);'
                                + ' }'
                              + ' }'
                              + ' if (itemsArray.length > 0) {'
                                + ' itemsArray.sort();'
                                + ' url = \'http://www.auctionsearchkit.co.uk/search.php?item=\';'
                                + ' var prevItem = null;'
                                + ' for (var index = 0; index < itemsArray.length; index++) {'
                                  + ' var item = itemsArray[index];'
                                  + ' if (item !== prevItem) {'
                                    + ' url += item + \',\';'
                                    + ' prevItem = item;'
                                  + ' }'
                                + ' }'
                                + ' url = url.substring(0, url.length - 1);'
                                + ' window.open(url + \'&asksrc=gm' + version + 'p15\');'
                               + '}'
                            + ' }'
                          + ' }">';
  for (var index = 0; index < deleteBtnElementArray.length; index++) {
    var newElement = document.createElement('span');
    newElement.innerHTML = btnHtml;
    var deleteBtnElement = deleteBtnElementArray[index];
    deleteBtnElement.parentNode.insertBefore(newElement, deleteBtnElement.nextSibling);
  }
}

var removeBtnElementArray = getElementsByINCT(null, 'SubmitAction.BulkRemove', null, 'input');
if (removeBtnElementArray !== null) {
  btnHtml = ' <input title="Display these items on a Google Map"'
                 + ' type="button" value="Map Items"'
                 + ' onclick="var containerElement = this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;'
                          + ' if (containerElement != null) {'
                            + ' var anchorElementsArray = containerElement.getElementsByTagName(\'a\');'
                            + ' if (anchorElementsArray !== null) {'
                              + ' var regexp = new RegExp(\'(&|\\\\?|QQ|%26|Q26|_W0QQ)item(=|Z|%3D|Q3D)([0-9]{9,12})(&|QQ|%26|Q26|$)\', \'i\');'
                              + ' var itemsArray = [];'
                              + ' for (var index = 0; index < anchorElementsArray.length; index++) {'
                                + ' var anchorElement = anchorElementsArray[index];'
                                + ' var href = anchorElement.href;'
                                + ' var matches = regexp.exec(href);'
                                + ' if (matches != null) { '
                                  + ' itemsArray.push(matches[3]);'
                                + ' }'
                              + ' }'
                              + ' if (itemsArray.length > 0) {'
                                + ' itemsArray.sort();'
                                + ' url = \'http://www.auctionsearchkit.co.uk/search.php?item=\';'
                                + ' var prevItem = null;'
                                + ' for (var index = 0; index < itemsArray.length; index++) {'
                                  + ' var item = itemsArray[index];'
                                  + ' if (item !== prevItem) {'
                                    + ' url += item + \',\';'
                                    + ' prevItem = item;'
                                  + ' }'
                                + ' }'
                                + ' url = url.substring(0, url.length - 1);'
                                + ' window.open(url + \'&asksrc=gm' + version + 'p16\');'
                               + '}'
                            + ' }'
                          + ' }">';
  for (var index = 0; index < removeBtnElementArray.length; index++) {
    var newElement = document.createElement('span');
    newElement.innerHTML = btnHtml;
    var removeBtnElement = removeBtnElementArray[index];
    removeBtnElement.parentNode.insertBefore(newElement, removeBtnElement.nextSibling);
  }
}

var viewItemElementsArray = getElementsByINCT('viewItemId', null, null, 'td');
for (var index = 0; index < viewItemElementsArray.length; index++) {
  var viewItemElement = viewItemElementsArray[index];
  var anchorElementsArray = viewItemElement.getElementsByTagName('a');
  if (anchorElementsArray.length == 1) {
    var anchorElement = anchorElementsArray[0];
    var newElement = document.createElement('span');
    newElement.innerHTML = '&nbsp;&nbsp;[<a title="Show this item on a Google Map" '
                         + ' href="http://www.auctionsearchkit.co.uk/search.php?'
                         + anchorElement.href
                         + '&asksrc=gm' + version + 'p17" target="_blank">Map&nbsp;Item</a>] ';
    anchorElement.parentNode.insertBefore(newElement, anchorElement.nextSibling);
  }
}

if (window.location.href.search(/feedback\.ebay/i) >= 0) {
  var url = getItemsUrl();
  if (url != null) {
    var menuLinksElementsArray = getElementsByINCT(null, null, 'menuLayerLinksYukon', 'a');
    if (menuLinksElementsArray.length > 0) {
      var menuLinksElement = menuLinksElementsArray[0];
      var newElement = document.createElement('span');
      newElement.innerHTML = '<a class="menuLayerLinksYukon" title="Show all the items on the current page on a Google Map" '
                           + ' href="' + url + '&asksrc=gm' + version + 'p18" target="_blank">Map all items on page</a></div></span>';
      menuLinksElement.parentNode.insertBefore(newElement, menuLinksElement);
    }

    var doNextListElementsArray = getElementsByINCT(null, null, 'outline_list dft_blt bullets', 'ul');
    for (dnleIndex = 0; dnleIndex < doNextListElementsArray.length; dnleIndex++) {
      var doNextListElement = doNextListElementsArray[dnleIndex];
      if (doNextListElement.childNodes.length > 0) {
        var newElement = document.createElement('li');
        newElement.class = 'bullets normal';
        newElement.innerHTML = '<span class="listext"><div class="ddl2-content">'
                             + '<a title="Show all the items on the current page on a Google Map" '
                             + ' href="' + url + '&asksrc=gm' + version + 'p19" target="_blank">Map all items on page</a></div></span>';
        doNextListElement.insertBefore(newElement, doNextListElement.childNodes[0]);
      }
    }
  }
}

var watchItemElementsArray = getElementsByINCT('l_WatchItem', null, null, 'a');
if (watchItemElementsArray.length > 0) {
  var regexp = /(&|\?|QQ|%26|Q26|_W0QQ)item(=|Z|%3D|Q3D)([0-9]{9,12})(&|QQ|%26|Q26|$)/i;

  for (var index = 0; index < watchItemElementsArray.length; index++) {
    var watchItemElement = watchItemElementsArray[index];
    var href = watchItemElement.href;
    var matches = regexp.exec(href);
    if (matches != null) { 
      var newElement = document.createElement('li');
      newElement.innerHTML = '<a title="Show this item on a Google Map" '
                           + ' href="http://www.auctionsearchkit.co.uk/search.php?item='
                           + matches[3]
                           + '&asksrc=gm' + version + 'p20" target="_blank">Map this item</a>';
      watchItemElement.parentNode.parentNode.insertBefore(newElement, watchItemElement.parentNode);
    }
  }
}

var searchItemElementsArray = getElementsByINCT('searchBtnAnc', null, 'aBtn-btn', 'span');
if (searchItemElementsArray.length > 0) {
  var newElement = document.createElement('td');
  newElement.innerHTML = '<input title="Show the results of this search on a Google Map"'
                       + ' type="button" value="Map-Search"'
                       + ' style="background-color: #0040b2; color: white; font-weight: bold;"'
                       + ' onmouseover="this.style.cursor=\'pointer\'" onmouseout="this.style.cursor=\'default\'"'
                       + ' onclick="var advSearchFormElements = document.getElementsByName(\'adv_search_from\');'
                                + ' if ((advSearchFormElements != null) && (advSearchFormElements[0] != null)) {'
                                   + ' var url = advSearchFormElements[0].action;'
                                   + ' if ((url == \'\') || (url[0] == \'?\') || (url[0] == \'/\')) {'
                                   + '   url = window.location.href + url; '
                                   + ' }'
                                   + ' var allCtrls = advSearchFormElements[0].elements;'
                                   + ' for (ctrlNum = 0; ctrlNum < allCtrls.length; ctrlNum++) {'
                                   + '   var ctrl = allCtrls[ctrlNum];'
                                   + '   var ctrlType = ctrl.type;'
                                   + '   if (typeof ctrlType != \'undefined\') {'
                                   + '     ctrlType = ctrlType.toLowerCase();'
                                   + '     if ((ctrlType != \'submit\') && (ctrlType != \'reset\') &&'
                                   + '         (ctrlType != \'image\') && (ctrlType != \'button\') &&'
                                   + '         (((ctrlType != \'checkbox\') && (ctrlType != \'radio\')) || (ctrl.checked != false))) {'
                                   + '       url += (url.indexOf(\'?\') >= 0) ? \'&\' : \'?\';'
                                   + '       url += ctrl.name + \'=\' + encodeURIComponent(ctrl.value);'
                                   + '     }'
                                   + '   }'
                                   + ' }'
                                   + ' window.open(\'http://www.auctionsearchkit.co.uk/search.php?\''
                                     + ' + url + \'&asksrc=gm' + version + 'p21\'); }">&nbsp;&nbsp;&nbsp;';
  searchItemElementsArray[0].parentNode.parentNode.parentNode.insertBefore(
      newElement,
      searchItemElementsArray[0].parentNode.parentNode.nextSibling);
}

// Check if there is already an Email Alerts element (e.g. if the "eBay Supercharged Email Alerts"
// script is already installed as well. If there is, do not do anythnig here.
var emailAlertsElement = document.getElementById('email_alerts');
if ((emailAlertsElement == null) && (saveSearchElement != null)) {
  var currency = '';
  var curElement = document.getElementById('sacur');
  if (curElement != null) {
    var labelElement = curElement.nextSibling;
    if (labelElement != null) {
      if (labelElement.innerHTML.substring(0, 16) == 'Items listed in ') {
        currency = labelElement.innerHTML.substring(16);
      }
    }
  }
  var newElement = document.createElement('span');
  newElement.innerHTML = 
                      '<table style="position: fixed;'
                                  + '_position: absolute;'
                                  + 'left: 72px;'
                                  + 'top: 100px;'
                                  + '_top: expression(eval(document.body.scrollTop + 96));'
                                  + 'z-index: 99999999999999;'
                                  + 'border-width: 5px;'
                                  + 'border-spacing: 5px;'
                                  + 'border-style: outset;'
                                  + 'border-color: gray;'
                                  + 'border-collapse: separate;'
                                  + 'background-color: white;'
                                  + 'visibility: hidden;"'
                          + ' id="email_alerts">'
                      + '<tr>'
                        + '<td>'
                          + '<b>Email Alerts (using'
                             + ' <font color="red">A</font>uction<font color="green">S</font>earch<font color="blue">K</font>it)'
                          + '</b><br>'
                          + 'Please enter email address to receive alerts when new items match this search.<br>'
                          + '(You may also enter a maximum total price for the matching items if required.)'
                        + '</td>'
                        + '<td align="right" valign="top">'
                          + '<img src="http://pics.ebaystatic.com/aw/pics/buttons/btnClose_16x16.gif"'
                              + ' onclick="var emailAlertsTable = document.getElementById(\'email_alerts\');'
                                        + 'if (emailAlertsTable != null) {'
                                          + 'emailAlertsTable.style.visibility = \'hidden\';'
                                        + '}"'
                              + ' onmouseover="this.style.cursor=\'pointer\'"'
                              + ' onmouseout="this.style.cursor=\'default\'" />'
                        + '</td>'
                      + '</tr>'
                      + '<tr>'
                        + '<td>'
                          + '<table style="border-width: 0px;'
                                        + 'border-spacing: 5px;'
                                        + 'border-collapse: separate;">'
                            + '<tr>'
                              + '<td>'
                               + 'Search&nbsp;Title:'
                              + '</td>'
                              + '<td colspan="2">'
                                + '<input type="text" id="search_title" title="Enter a title for this search" size=50 value="'
                                  + document.title + '"/>'
                              + '</td>'
                            + '</tr>'
                            + '<tr>'
                              + '<td>'
                                + 'Email&nbsp;Address:'
                              + '</td>'
                              + '<td colspan="2">'
                                + '<input type="text" id="email" title="Email address for receiving alerts" size=50 />'
                              + '</td>'
                            + '</tr>'
                            + '<tr>'
                              + '<td>'
                                + 'Max&nbsp;Total&nbsp;'
                                + (currency != '' ? '(' + currency + ')' : 'Price')
                              + ':</td>'
                              + '<td>'
                                + '<input type="text" id="max_total" title="Maximum total price (optional)" size=10 />'
                              + '</td>'
                              + '<td align="right">'
                                + '<input type="checkbox" id="bin_only"/><font color="red">Buy&nbsp;It&nbsp;Now</font> items only'
                              + '</td>'
                            + '</tr>'
                          + '</table>'
                        + '</td>'
                      + '</tr>'
                      + '<tr>'
                        + '<td>'
                          + '<input type="button" value="OK"'
                          + ' onclick="var emailElement = document.getElementById(\'email\');'
                                    + 'var searchTitleElement = document.getElementById(\'search_title\');'
                                    + 'var maxTotalElement = document.getElementById(\'max_total\');'
                                    + 'var binOnlyElement = document.getElementById(\'bin_only\');'
                                    + 'if ((emailElement != null) && (maxTotalElement != null) && (binOnlyElement != null)) {'
                                       + 'var email = escape(emailElement.value.replace(/^\\s+|\\s+$/g, \'\'));'
                                       + 'var searchTitle = escape(searchTitleElement.value.replace(/^\s+|\s+$/g, \'\'));'
                                       + 'var maxTotal = maxTotalElement.value.replace(/^\\s+|\\s+$/g, \'\');'
                                       + 'if (maxTotal != \'\') {'
                                         + 'maxTotal = parseFloat(maxTotal);'
                                       + '}'
                                       + 'var binOnly = binOnlyElement.checked;'
                                       + 'if (/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(email) == false) {'
                                         + 'alert(\'Not a valid email address?\\nPlease check, correct and retry.\');'
                                       + '} else if ((maxTotal != \'\') && (isNaN(maxTotal) == true)) {'
                                         + 'alert(\'Max Total must be a number or blank.\\nPlease check, correct and retry.\');'
                                       + '} else {'
                                         + 'window.open(\'http://www.auctionsearchkit.com/startalerts.php?email=\''
                                                  + ' + email + \'&search=\' + encodeURIComponent(window.location.href)'
                                                  + ' + (searchTitle != \'\' ? encodeURIComponent(\'&asktitle=\' + searchTitle) : \'\')'
                                                  + ' + (maxTotal != \'\' ? (binOnly == true ? encodeURIComponent(\'&asksabinprchi=\' + maxTotal) : encodeURIComponent(\'&asksatotprchi=\' + maxTotal)) : \'\')'
                                                  + ' + (binOnly == true ? encodeURIComponent(\'&askbinonly=true\') : \'\')'
                                                  + ' + encodeURIComponent(\'&asksrc=gm' + version + 'p22\')'
                                                  + ', \'_blank\', \'channelmode=yes,directories=no,location=no,menubar=no,resizeable=no,status=no,titlebar=no,toolbar=no,width=400,height=100\');'
                                       + '}'
                                    + '}"'
                          + '/>'
                          + '<input type="button" value="Cancel"'
                          + ' onclick="var emailAlertsTable = document.getElementById(\'email_alerts\');'
                                    + 'if (emailAlertsTable != null) {'
                                      + 'emailAlertsTable.style.visibility = \'hidden\';'
                                    + '}"/>'
                        + '</td>'
                      + '</tr>'
                    + '</table>';
  saveSearchElement.parentNode.insertBefore(newElement, saveSearchElement);
  var newElement2 = document.createElement('span');
  newElement2.innerHTML = '<a class="anchor" rel="nofollow" href="javascript:;"'
                           + 'title="Receive email alerts when new eBay items match this search."'
                            + ' onmouseover="this.style.cursor=\'pointer\'" onmouseout="this.style.cursor=\'default\'"'
                            + ' onclick="var emailAlertsTable = document.getElementById(\'email_alerts\');'
                                      + 'if (emailAlertsTable != null) {'
                                        + 'emailAlertsTable.style.visibility = \'visible\';'
                                      + '}'
                                      + 'return false;">Email Alerts (ASK)</a> | ';
  saveSearchElement.parentNode.insertBefore(newElement2, saveSearchElement);
}