popups = {

  init: function() {
    popups.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() == 'popups') {
          popups.addEvent(el, 'click', popups.clickpopupsLink, false);
        }
        if (el.rel.toLowerCase() == 'targetowner') {
          popups.addEvent(el, 'click', popups.clickpopupsLink, false);
        }
      })(links[i]);
    }
  },

  clickpopupsLink: 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;
    }

    // ...
    if (el.rel.toLowerCase() == 'targetowner') {
      if (window.ownerWindow) {
        window.ownerWindow.location.href = el.href;
      }
      else {
        return false;
      }
    }
    else {
      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, 'window' + Math.ceil(Math.random()*100), 'left='+x+',top='+y+',width='+w+',height='+h+',location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,toolbar=no');
      if (!win) {
        return true;
      }
      win.ownerWindow = window;
    }
    // ...

    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;
		}
	}
};
popups.init();