if (typeof(allopassButtons) === 'undefined') {

  var headID = document.getElementsByTagName("head")[0];         
  var cssNode = document.createElement('link');
  cssNode.type = 'text/css';
  cssNode.rel = 'stylesheet';
  cssNode.href = 'https://payment.allopass.com/static/css/buy-button.css';
  cssNode.media = 'screen';
  headID.appendChild(cssNode);

  var allopassButtons = function ()
  {
    /*
      Developed by Robert Nyman, http://www.robertnyman.com
      Code/licensing: http://code.google.com/p/getelementsbyclassname/
    */
    var getElementsByClassName = function (className, tag, elm){
        if (document.getElementsByClassName) {
            getElementsByClassName = function (className, tag, elm) {
                elm = elm || document;
                var elements = elm.getElementsByClassName(className),
                    nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
                    returnElements = [],
                    current;
                for(var i=0, il=elements.length; i<il; i+=1){
                    current = elements[i];
                    if(!nodeName || nodeName.test(current.nodeName)) {
                        returnElements.push(current);
                    }
                }
                return returnElements;
            };
        }
        else if (document.evaluate) {
            getElementsByClassName = function (className, tag, elm) {
                tag = tag || "*";
                elm = elm || document;
                var classes = className.split(" "),
                    classesToCheck = "",
                    xhtmlNamespace = "http://www.w3.org/1999/xhtml",
                    namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
                    returnElements = [],
                    elements,
                    node;
                for(var j=0, jl=classes.length; j<jl; j+=1){
                    classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
                }
                try {
                    elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
                }
                catch (e) {
                    elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
                }
                while ((node = elements.iterateNext())) {
                    returnElements.push(node);
                }
                return returnElements;
            };
        }
        else {
            getElementsByClassName = function (className, tag, elm) {
                tag = tag || "*";
                elm = elm || document;
                var classes = className.split(" "),
                    classesToCheck = [],
                    elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
                    current,
                    returnElements = [],
                    match;
                for(var k=0, kl=classes.length; k<kl; k+=1){
                    classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
                }
                for(var l=0, ll=elements.length; l<ll; l+=1){
                    current = elements[l];
                    match = false;
                    for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
                        match = classesToCheck[m].test(current.className);
                        if (!match) {
                            break;
                        }
                    }
                    if (match) {
                        returnElements.push(current);
                    }
                }
                return returnElements;
            };
        }
        return getElementsByClassName(className, tag, elm);
    };

    var ALLOBOX = {};
   
    ALLOBOX.box = function() {
        var mask, modal, width, height;

        return {
            show: function(url, w, h) {
                width  = w;
                height = h;
                /* Creation de l'iframe */
                var iframe              = document.createElement('iframe');
                iframe.src          = url;
                iframe.id           = 'ap-iframe';
                iframe.style.width  = (w - 20) + 'px';
                iframe.style.height = (h - 20) + 'px';
                iframe.frameBorder  = 0;

                /* Creation des elements pour la fenetre arrondie */
                var apt    = document.createElement('div');
                var aptl   = document.createElement('div');
                var aptc   = document.createElement('div');
                var aptr   = document.createElement('div');
                var apl    = document.createElement('div');
                var inside = document.createElement('div');
                var apr    = document.createElement('div');
                var apb    = document.createElement('div');
                var apbl   = document.createElement('div');
                var apbc   = document.createElement('div');
                var apbr   = document.createElement('div');


                apt.id  = 'ap-t';  aptl.id = 'ap-tl'; aptc.id = 'ap-tc'; aptr.id = 'ap-tr';
                apl.id  = 'ap-l';  apr.id  = 'ap-r';
                apb.id  = 'ap-b';  apbl.id = 'ap-bl'; apbc.id = 'ap-bc'; apbr.id = 'ap-br';


                aptc.style.width = apbc.style.width = (w - 20) + 'px';
                inside.style.height = iframe.style.height;

                /* ajout du masque, de la boite et du contenu de la boite */
                mask     = document.createElement('div');
                modal    = document.createElement('div');
                var boxcontent  = document.createElement('div');
                var closeLnk = document.createElement('a');

                mask.id    = 'ap-mask';    modal.id   = 'ap-modal';
                boxcontent.id = 'ap-content'; inside.id  = 'ap-inside';

                closeLnk.id        = 'ap-close';
                closeLnk.innerHTML = 'close';
                closeLnk.href = '#';

                document.body.appendChild(mask);
                document.body.appendChild(modal);

                modal.appendChild(boxcontent);
                modal.appendChild(closeLnk);

                apt.appendChild(aptl);
                apt.appendChild(aptc);
                apt.appendChild(aptr);
                apl.appendChild(apr);
                inside.appendChild(iframe);
                apr.appendChild(inside);
                apb.appendChild(apbl);
                apb.appendChild(apbc);
                apb.appendChild(apbr);

                boxcontent.appendChild(apt);
                boxcontent.appendChild(apl);
                boxcontent.appendChild(apb);

                window.onresize=ALLOBOX.box.resize;

                modal.style.width  = w ? w + 'px' : 'auto';
                modal.style.height = h ? h + 'px' : 'auto';

                this.redimMask();
                this.pos();
                modal.style.display = 'block';

                closeLnk.onclick = ALLOBOX.box.hide;
            },
            hide: function() {
                document.body.removeChild(mask);
                document.body.removeChild(modal);
                return false;
            },
            resize: function(){
                ALLOBOX.box.pos();
                ALLOBOX.box.redimMask();
            },
            redimMask: function() {
                mask.style.display = 'none';
                mask.style.height = ALLOBOX.box.pageTheight()+'px';
                mask.style.width  = ALLOBOX.box.pageTwidth()+'px';
                mask.style.display = 'block';
            },
            pos: function() {
                var t = (ALLOBOX.box.pageHeight() / 2) - (height / 2);
                t = t < 10 ? 10 : t;
                modal.style.top  = (t + ALLOBOX.box.pageTop()) + 'px';
                modal.style.left = (ALLOBOX.box.pageWidth() / 2) - (width / 2) + 'px';
            },
            pageTop: function() {
                return document.body.scrollTop || document.documentElement.scrollTop;
            },
            pageWidth: function() {
                return self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
            },
            pageHeight: function() {
                return self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
            },
            pageTheight: function() {
                var d = document, b = d.body, e = d.documentElement;
                return Math.max(Math.max(b.scrollHeight, e.scrollHeight), Math.max(b.clientHeight, e.clientHeight));
            },
            pageTwidth: function() {
                var d = document, b = d.body, e = d.documentElement;
                return Math.max(Math.max(b.scrollWidth, e.scrollWidth), Math.max(b.clientWidth, e.clientWidth));
            }
        }
    } ();

  
    elts = getElementsByClassName('ap-payment-button');

    for (var i in elts) {
      elts[i].onclick = function() {
        var classes = this.className.split(' ');

        for (var k = 0; k < classes.length; k++) {
          if (classes[k].match('size-[0-9]+-[0-9]+')) {
            var dim    = classes[k].split('-');
            var width  = dim[1];
            var height = dim[2];
          }
        }

        ALLOBOX.box.show(this.href, width, height);
        return false;
      };
    }
  }

  var alreadyrunflag = 0

  if (document.addEventListener) {
    document.addEventListener('DOMContentLoaded', function() { alreadyrunflag=1; allopassButtons() }, false);
  }
  else if (document.all && !window.opera){
    document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>')
    var contentloadtag = document.getElementById('contentloadtag');
    contentloadtag.onreadystatechange = function(){
      if (this.readyState == 'complete'){
        alreadyrunflag = 1;
        allopassButtons();
      }
    }
  }

  window.onload = function(){
    setTimeout('if (!alreadyrunflag) allopassButtons()', 0)
  }
}
