dpa = {

  init: function() {
    dpa.addEvent(window, 'load', this.startup, false);
  },
  
  startup: function() {
    var links = document.getElementsByTagName("a");
    for (var i=0; i<links.length; i++) {
      (function(el) {
        if (el.rel.toLowerCase() == 'dpa') {
          dpa.addEvent(el, 'click', dpa.clickDpaLink, false);
        }
      })(links[i]);
    }
  },

  clickDpaLink: function(e) {
    var el;
    if (window.event && window.event.srcElement) {
      el = window.event.srcElement;
    }
    if (e && e.target) {
      el = e.target;
    }
    if (!el) {
      return;
    }

    while (el.nodeName.toLowerCase() != 'a') {
      if (el.nodeName.toLowerCase() == 'body') { return; }
      el = el.parentNode;
    }

    // ...
    var w = 600, h=400;
    var x = (screen.width-w)*0.5;
    var y = (screen.height-h)*0.5;
    var win = window.open(el.href, 'dpa', 'left='+x+',top='+y+',width='+w+',height='+h+',location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,toolbar=no');
    if (!win) {
      return true;
    }
    // ...

    if (window.event) {
      window.event.cancelBubble = true;
    }
    if (e && e.stopPropagation) {
      e.stopPropagation();
    }

    if (window.event) {
      window.event.returnValue = false;
    }
    if (e && e.preventDefault) {
      e.preventDefault();
    }
    return false;
  },

	addEvent: function(elm, evType, fn, useCapture){
		if (elm.addEventListener)
		{
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	}
};
dpa.init();