// ==UserScript==
// @name Amazon Links
// @description:en Adds eBay markup price, direct link to Amazon product page, eBay search by title, ThePriceGeek search by first 10 words of title, Amabay search by title.
// @include *//*amazon.*/*
// @run-at document-end
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.js
// @version 1.0
// @namespace https://greasyfork.org/users/115271
// @downloadURL none
// ==/UserScript==
/**
* This script adds a few links to each Amazon product page:
* 1. A direct (clean) link to the product page which can be used e.g. to share (copy & paste)
* a product page without session information etc.:
* http://amazon.[TLD]/dp/[ASIN]
* 2. A link to the current product on eBay
* http://www.ebay.com/sch/i.html?_sacat=0&_nkw=[title]&LH_BIN=1&LH_FS=1&_sop=15
* 3. A link to the current product on ThePriceGeek
* http://www.thepricegeek.com/results/[first ten words of title]?country=us
* 4. A link to the current product on Amabay
* http://amabay.linked8.com/?p=search&c=ALL&q=[title]&sourceid=srch_rslt_logo®ion=us
**/
(function() {
/**
* Decimal adjustment of a number.
*
* @param {String} type The type of adjustment.
* @param {Number} value The number.
* @param {Integer} exp The exponent (the 10 logarithm of the adjustment base).
* @returns {Number} The adjusted value.
*/
function decimalAdjust(type, value, exp) {
// If the exp is undefined or zero...
if (typeof exp === 'undefined' || +exp === 0) {
return Math[type](value);
}
value = +value;
exp = +exp;
// If the value is not a number or the exp is not an integer...
if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
return NaN;
}
// Shift
value = value.toString().split('e');
value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
// Shift back
value = value.toString().split('e');
return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
}
// Decimal round
if (!Math.round10) {
Math.round10 = function(value, exp) {
return decimalAdjust('round', value, exp);
};
}
// Decimal floor
if (!Math.floor10) {
Math.floor10 = function(value, exp) {
return decimalAdjust('floor', value, exp);
};
}
// Decimal ceil
if (!Math.ceil10) {
Math.ceil10 = function(value, exp) {
return decimalAdjust('ceil', value, exp);
};
}
})();
(function () {
// config
var SHOW_LINK_ICON = 1; // toggle link fav icons
var LINK_STYLE = "font-weight: bold; font-style: italic;";
// not all pages have fav icons so the following currently makes no sense
var SHOW_LINK_TEXT = 1; // toggle link text
if (! $('input#ASIN:first').length) {
return; // this doesn't seem to be a product page
}
// get the ASIN (product id)
var asin = $('input#ASIN:first').val();
// get the product title
var title = document.getElementById("productTitle").innerHTML.replace(/"/g, '').trim();
// get the price
try {
var price = document.getElementById("priceblock_ourprice").innerHTML.trim().substr(1)
}
catch(err){
var price = document.getElementById("priceblock_saleprice").innerHTML.trim().substr(1)
}
// define the eBay sale price
var markup = Math.round10(price * 1.09 * 1.0319 + 3.70, -2)
try {
document.getElementById("priceblock_ourprice").innerHTML = "$" + price + "";
}
catch(err) {
document.getElementById("priceblock_saleprice").innerHTML = "$" + price + "";
}
// alert("Must sell above $" + markup);
// get top level domain (the simple way)
var tld = document.domain.split('.').pop();
if ([ 'au', 'br', 'mx' ].indexOf(tld) > -1) { // add .com to some domains
tld = 'com.'+tld;
} else if ([ 'uk', 'jp' ].indexOf(tld) > -1) { // add .co to others
tld = 'co.'+tld;
}
// create all new links
// direct link
var link1url = '';
var link1 = '';
if (tld != undefined) { // add only if TLD was identified
var tooltip = (tld == 'de' ? 'Direkter und sauberer Produktlink.' : 'Direct and clean product link.');
link1url = 'http://amazon.' + tld + '/dp/' + asin;
link1 = (SHOW_LINK_ICON ? ' ' : '')
+ ''
+ (SHOW_LINK_TEXT ? (tld == 'de' ? 'Direkter Link' : 'Direct link') : '')
+ ' / ';
}
// eBay.com
var link2url = 'http://www.ebay.com/sch/i.html?_sacat=0&_nkw=' + title + '&LH_BIN=1' + '&LH_FS=1' + '&_sop=15' + '&_udlo=' + price;
var link2 = (SHOW_LINK_ICON ? '
' : '')
+ ''
+ (SHOW_LINK_TEXT ? 'eBay' : '') + ' / ';
// ThePriceGeek.com
var link3url = 'http://www.thepricegeek.com/results/' + title.replace(/(([^\s]+\s\s*){10})(.*)/,"$1") + '?country=us';
//var link3 = (SHOW_LINK_ICON ? '
' : '')
var link3 = ''
+ (SHOW_LINK_TEXT ? 'ThePriceGeek' : '') + ' / ';
// Amabay
var link4url = 'http://amabay.linked8.com/?p=search&c=ALL&q=' + title + '&sourceid=srch_rslt_logo®ion=us';
var link4 = (SHOW_LINK_ICON ? '
' : '')
+ ''
+ (SHOW_LINK_TEXT ? 'Amabay' : '') + '';
// add the links as new table row below the price information
$('table.product > tbody:last > tr:last, table.a-lineitem > tbody:last > tr:last').after('