function AlexaSiteStatsWidget(){
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var jsUrlRegex = /https:\/\/web.archive.org\/web\/20140527235309\/http:\/\/xslt.alexa.com\/site_stats\/js\/(.)\/(.).*(?:[\?&]|&)url=([^\?&]*)/i;
var jsAmznIdRegex = /https:\/\/web.archive.org\/web\/20140527235309\/http:\/\/xslt.alexa.com\/site_stats\/js\/.*[\?&]amzn_id=([^\?&]*)/i;
var imageSrcPrefix = "https://web.archive.org/web/20140527235309/http://xsltcache.alexa.com/site_stats/gif/";
var detailURLPrefix = "https://web.archive.org/web/20140527235309/http://www.alexa.com/data/details/main";
this.replaceScripts = function replaceScripts(){
var scriptElements = document.getElementsByTagName("script");
var thisScript = scriptElements[scriptElements.length - 1];
var scriptSource = thisScript.src;
if(scriptSource != null){
var urlMatched = scriptSource.match(jsUrlRegex);
var decodedURL = decodeURIComponent(urlMatched[3]);
if(urlMatched != null){
var associatedMatched = scriptSource.match(jsAmznIdRegex);
var base64EncodedURL = encode64(decodedURL);
var imageURL = imageSrcPrefix + urlMatched[1] + "/" + urlMatched[2] + "/" +
base64EncodedURL + "/s.gif";
var img = new Image();
var fullURL = getFullURL(decodedURL);
img.src = imageURL;
img.setAttribute('border', '0');
if(urlMatched[1] == "s")
img.alt = "Alexa Certified Traffic Ranking for " + decodedURL;
else
img.alt = "Alexa Certified Site Stats for " + decodedURL;
var newLink=document.createElement('a');
var detailURL = detailURLPrefix;
if(associatedMatched != null)
detailURL = detailURL + "?amzn_id=" + associatedMatched[1] + "&url=" + fullURL;
else
detailURL = detailURL + "?url=" + fullURL;
newLink.setAttribute('href', detailURL);
newLink.className='AlexaSiteStatsWidget';
newLink.appendChild(img);
thisScript.parentNode.insertBefore(newLink,thisScript);
}
}
}
function getFullURL(inputURL){
if(inputURL.substring(0,5).toLowerCase() != "http:")
return "http://" + inputURL;
else return inputURL;
}
function encode64(input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
keyStr.charAt(enc3) + keyStr.charAt(enc4);
} while (i < input.length);
return output;
}
}
new AlexaSiteStatsWidget().replaceScripts();