🏠 Home 

DealeXtreme Currency Calculator

Calculate prices in any currency you want


Install this script?
// ==UserScript==
// @name         DealeXtreme Currency Calculator
// @description  Calculate prices in any currency you want
// @version      1.0.18
// @icon         data:image/png;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+0NaXJqx6zzbAsusyvKrnLrSS6xKIGvtK3QnDp251cyqsf38amG+Xn2ZgzAAAAAAAAAADUukuhv5sA/9zIa5TGphGFw6EEiuDOeyLgznwb3st2HNW+T1a6kwC00rdDaeDPfWq9mADowqAG4fTu0DfZxWJ4sIMA/9O5Srz28dcIyaodr8SiB60AAAAAAAAAAAAAAADx6scBzbAudsCdAMjRt0Bt4M54ZsWjEdPBngHmwZ4A4da+WZkAAAAAAAAAAMmqIH3DoQV8AAAAAAAAAAAAAAAAAAAAAAAAAADEogp9uZIAmefZlzfaxGCpuI8A/8SjCuvs4asrAAAAAAAAAADHpxW0wp8EtePTiQcAAAAAAAAAAObZlxbOsjSSvJYAyt7KdGbYwll4v5oA9MmqHrTGphDixKINwNrHZx8AAAAAyqsescalD8HYwl2t18FYrNfAVazMsCu5v5oAxt3KbmLh0ICrvZgA/86yNcDi04YE3st0U76ZAP/Lrib/8Oe+RNS8TInOszWUzbEwqM2xLqnOsjGpyq0kpNS8THfv57wy0rlDq8uvM8Pq3KE4AAAAAAAAAADTu0qax6gVxufZmmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAD//wAA//8AAP//AAADOAAAPZkAAD7DAAD/RwAAPMMAAAEZAAADOQAA//8AAP//AAD//wAA//8AAA==
// @include      http://dx.com/*
// @include      https://dx.com/*
// @include      http://*.dx.com/*
// @include      https://*.dx.com/*
// @require      https://code.jquery.com/jquery-latest.min.js
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_listValues
// @grant        GM_registerMenuCommand
// @grant        GM_xmlhttpRequest
// @namespace https://greasyfork.org/users/13667
// ==/UserScript==
this.$ = this.jQuery = jQuery.noConflict(true);
function fetchCurrencyData() {
GM_setValue('update_time', d.getTime().toString());
GM_xmlhttpRequest({
method: "GET",
url: "http://api.fixer.io/latest?symbols=" + currency_from + "," + currency_to,
onload: function(response) {
console.debug(response);
obj = JSON && JSON.parse(response.responseText) || $.parseJSON(response.responseText);
console.debug(obj);
if(currency_from == "EUR")
obj.rates[currency_from] = 1;
if(currency_to == "EUR")
obj.rates[currency_to] = 1;
if(!obj.rates[currency_from] || !obj.rates[currency_to]) {
alert("Error fetching currency data. \r\n\r\nError: " + obj.err);
return;
}
rate = parseFloat((parseFloat(obj.rates[currency_to]) / parseFloat(obj.rates[currency_from])).toFixed(5));
GM_setValue("rate", rate.toString());
if(update_notify) {
alert("Exchange Rate Updated: " + currency_from + " = " + rate + " " + currency_to);
}
doCalc();
},
onerror: function(responseDetails) {
if(update_notify) {
alert("Error fetching currency data");
}
}
});
}
function updateSetting(s, d) {
if(d) {
GM_setValue(s, (eval(s)^true));
} else {
var newSetting = prompt("Enter new value", eval(s));
if (newSetting === '' || newSetting === null) {
alert("Invalid value. Please try again.");
return;
}
if (typeof(newSetting) == "string")
newSetting = newSetting.toUpperCase();
GM_setValue(s, newSetting);
}
GM_setValue('update_time', 0);
var r = confirm(s + ' set to ' + newSetting + '\n\nReload page?');
if (r == true) {
window.location.reload();
}
}
function addMenu() {
GM_registerMenuCommand("Search Symbol [" + search_string + "]", function(){updateSetting('search_string')});
GM_registerMenuCommand("From Currency [" + currency_from + "]", function(){updateSetting('currency_from')});
GM_registerMenuCommand("To Currency [" + currency_to + "]", function(){updateSetting('currency_to')});
GM_registerMenuCommand("Exchange Rate Update (Hours) [" + update_interval + "]", function(){updateSetting('update_interval')});
GM_registerMenuCommand("Update Notification [" + update_notify + "]", function(){updateSetting('update_notify', true)});
GM_registerMenuCommand("Update Rate Now [" + rate + "]", function(){fetchCurrencyData()});
}
var d = new Date();
var today = d.getTime();
var update_time = parseInt(GM_getValue('update_time', 0));
var update_interval = parseInt(GM_getValue('update_interval', 24));
var update_notify = parseInt(GM_getValue('update_notify', 1));
var search_string = GM_getValue('search_string', '$');
var currency_from = GM_getValue('currency_from', 'USD');
var currency_to = GM_getValue('currency_to', 'SEK');
var rate = parseFloat(GM_getValue('rate', 6.5));
addMenu();
if((today - update_time) > (update_interval * 3600000)) {
fetchCurrencyData();
} else {
doCalc();
}
function doCalc() {
jQuery("#price,.price,.total").not(".calcDone").each(function(){
var calc = '';
if(this.id=='price') {
var x = parseFloat(jQuery(this).text().replace(",","."));
x = x * parseFloat(rate);
x = Math.round(x*Math.pow(10,2))/Math.pow(10,2);
calc = currency_to + x;
} else {
for (var i=1; i < jQuery(this).text().split(search_string).length; i++) {
var x = parseFloat(jQuery(this).text().split(search_string)[i].replace(",","."));
x = x * parseFloat(rate);
x = Math.round(x*Math.pow(10,2))/Math.pow(10,2);
if((jQuery(this).children('del').text().length > 0) && (i == 1)) {
calc = '<del>' + currency_to + x + '</del> ';
} else {
calc = calc + currency_to + x + ' ';
}
}
}
jQuery(this).css("height", "auto").addClass("calcDone").append("<br/>" + calc);
});
jQuery(".subtotal,.ship_fee,.grand_total").not(":has(span)").each(function(){
var calc = '';
for (var i=1; i < jQuery(this).text().split(search_string).length; i++) {
var x = parseFloat(jQuery(this).text().split(search_string)[i].replace(",","."));
x = x * parseFloat(rate);
x = Math.round(x*Math.pow(10,2))/Math.pow(10,2);
calc = calc + currency_to + x + ' ';
}
jQuery(this).css("height", "auto").append("<br/><span>" + calc + "</span>");
});
var timeControl = setTimeout(doCalc, 500);
}