var domain = "tweetluv.com" // "localhost:4567"

function fetchFromTweetluv(hash, div){
  "use strict";
  var x=new XMLHttpRequest();
  if ("withCredentials" in x){
    x.open("GET", 'http://'+domain+'/link/'+hash.slice(0,2)+'/'+hash.slice(2,4)+'/'+hash.slice(4,6)+'/'+hash+'.html', true);
  } else if (typeof XDomainRequest != "undefined") {
    x = new XDomainRequest();
    x.open("GET", 'http://'+domain+'/link/'+hash.slice(0,2)+'/'+hash.slice(2,4)+'/'+hash.slice(4,6)+'/'+hash+'.html');
  }
  // http://www.w3.org/TR/2012/WD-XMLHttpRequest-20120117/#the-open-method Item # 11 suggests that it defaults to "true"
  // if async is unspecified. So, perhaps, the above 7 lines could be rewritten like this:
  // var x=new XMLHttpRequest();
  // if (typeof XDomainRequest != "undefined") { x = new XDomainRequest() }
  // x.open("GET", 'http://'+domain+'/link/'+hash.slice(0,2)+'/'+hash.slice(2,4)+'/'+hash.slice(4,6)+'/'+hash+'.html');
  x.onreadystatechange = function(){
    if (x.readyState===4){
      var r = x.responseText;
      if(r.length > 0 && r.length < 32){
        localStorage.setItem('t-'+hash, r);
        injectTweetluvUsername(div, r);
      }else{
        div.innerHTML="<object data='http://"+domain+"/remote_signup.html' style='height:20px;margin:0;overflow:hidden;padding:0;width:164px;'></object>";//keep as object so we maintain styles
      }
    }
  };
  x.send(null);
}

function getElementsByClassName(className){if(document.getElementsByClassName){document.getElementsByClassName(className)}else{return document.querySelectorAll('.'+className)}}

function injectTweetluvUsername(div, username){"use strict";div.innerHTML="<a href='https://twitter.com/!#/"+username+"'>@"+username+"</a>";}

function tweetluv(){
	"use strict";
  var divs=document.getElementsByClassName('tweetluv');         // get all divs with the right class
  for(var i=0, div;(div=divs[i]);i++){                 // for each div ...
    var hash = div.getAttribute('data-md5');           // get its md5
    var username = localStorage.getItem('t-'+hash);    // if it's in localstorage, set the username variable
    if(username === null){                             // if it's not in localstorage
      fetchFromTweetluv(hash, div);                    // go get it
    }else{                                             // otherwise
      injectTweetluvUsername(div, username);           // display it
    } 
  }
}

if (window.addEventListener){window.addEventListener('load', tweetluv, false);}
else if (window.attachEvent){window.attachEvent('onload', tweetluv);}
