NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name dealextreme, buyincoins, focalprice price autoconvert
// @namespace http://userscripts.org/scripts/show/91177
// @version 1.5
// @include http://www.dealextreme.com/*
// @include http://www.buyincoins.com/*
// @include http://www.focalprice.com/*
// @run-at document-start
// ==/UserScript==
document.addEventListener('DOMContentLoaded',function(){
//================== service functions ====================
createCookie = function(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
readCookie = function(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
eraseCookie = function(name) {
createCookie(name,"",-1);
}
//====================== main body ==================
var localValute = 'RUB'; // см. код на http://www.prime-tass.ru/currency/classifier.asp (RUB, UAH итд)
var localValuteName = '\u0440\u0443\u0431'; // сокращённое название валюты без точки
var priceofUSD = Number(readCookie("priceofUSD"));
//============= dollar rate from the above ^_^ ===============
dollarFromAbove = function(priceofUSD) {
// всплывающая менюшка с курсом доллара
if(window.parent.location==window.location && priceofUSD != 0 )
{
var style = document.createElement('link');
style.setAttribute('rel','stylesheet');
style.setAttribute('type','text\/css');
style.setAttribute('href','data:text\/css,'+escape(' \
.ujs_price {\
background: -o-skin("Label Valuable") top left;\
height:21px;width:17px;\
left:10px; top:10px; margin:0px; padding:0px;\
position:fixed;\
z-index:9999;\
opacity:0.2;\
}\
.ujs_price strong {\
display:block; width:210px; height:15px; position:relative;\
left:20px;/ bottom:-5px;\
text-shadow:1px 1px 0 rgba(0, 0, 0, 0.75); background-color:rgba(0, 0, 0, 0.8);\
border-radius:3px; box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);\
text-align: center; color: #fff;\
opacity:0;\
}\
\
.ujs_price:hover { opacity:0.6; }\
.ujs_price:hover strong { opacity:1;}\
'));
var head = document.getElementsByTagName('head')[0]
if( head ) head.appendChild(style);
var div = document.createElement("div");
div.setAttribute("class", "ujs_price");
var strong = document.createElement("strong");
strong.setAttribute("class", "ujs_pricetext");
strong.innerHTML = "1$ = "+priceofUSD.toFixed(2)+" "+localValuteName+". \u043d\u0430 "+readCookie("priceofUSDdate");
div.appendChild(strong);
document.body.appendChild(div);
}}
//===============================================
processPrices = function(priceofUSD)
{
usd2rur = function(priceUSD) {
var price = (priceUSD*priceofUSD).toFixed(2); //или .toString().split(".");
return priceUSD+' ('+price+' '+localValuteName+'.) '; //или return priceUSD+' ('+price[0]+'\u0440.'+price[1]+'\u043a.'+') ';
}
if (!isNaN(priceofUSD) && priceofUSD != 0) {
// выбираем контейнер с ценой
// (хотя желательно делать не абстрактный запрос как здесь, а искать конкретный блок с ценой)
var prices=document.selectNodes('//*[(self::p or self::span or self::b or self::strong) and (contains(text(),"$") or contains(@class,"cred fb")) and not(@class="ujs_pricetext")]');
// заменяем все циферки
for (var i=0; i<prices.length; i++)
prices[i].innerHTML = prices[i].innerHTML.replace(/\d+\.\d+/g, usd2rur);
}
}
if (isNaN(priceofUSD) || priceofUSD === 0)
{
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
onSuccess = function() {
window._alert = function(elem) {
var obj = elem.content.ValCurs.Valute;
var date = elem.content.ValCurs.Date;
for (var i in obj) {
if (obj[i].CharCode == 'USD') { //получаем котировку доллар/руб из списка
priceofUSD = Number(obj[i].Value.replace(',','.')); //исправляем формат на числовой
break;
}
}
if (localValute != 'RUB') {
for (var i in obj) {
if (obj[i].CharCode == localValute) { //получаем котировку валюта/руб из списка
priceofUSD = priceofUSD * obj[i].Nominal / (Number(obj[i].Value.replace(',','.'))); //вычисляем стоимость доллара
break;
}
}
}
createCookie("priceofUSD", priceofUSD, 1); //чтобы каждый раз не тащить базу котировок, пользуемся печеньками
createCookie("priceofUSDdate", date, 1)
}
processPrices(priceofUSD);
dollarFromAbove(priceofUSD);
}
script.onreadystatechange = function() { if (this.readyState === "loaded") onSuccess(); }
script.onload= onSuccess();
// получаем список котировок валют с сайта Центробанка России в виде JSON
script.src= 'http://esrijson.appspot.com/xml2json?url=http%3A%2F%2Fwww.cbr.ru%2Fscripts%2FXML_daily.asp&callback=_alert&headers=false&f=pjson';
head.appendChild(script);
}
else {
processPrices(priceofUSD);
dollarFromAbove(priceofUSD);
}
},false);