function create_window(ev,w,h,url) {
  var padding = 20;
  var l = ev.clientX + padding;
  var t = ev.clientY + padding;
  var r = l + w;
  var b = t + h;

  oCanvas = document.getElementsByTagName((document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY")[0];

  var w_width = (window.innerWidth ? window.innerWidth + window.pageXOffset : oCanvas.clientWidth + oCanvas.scrollLeft) - padding * 2;
  var w_height = (window.innerHeight ? window.innerHeight + window.pageYOffset : oCanvas.clientHeight + oCanvas.scrollTop) - padding * 2;

  var margin_right = w_width - r;
  if (margin_right < 0) {
    l += margin_right - padding;
  }
  var margin_bottom = w_height - b;
  if (margin_bottom < 0) {
    t += margin_bottom;
  }

  return window.open(url,'show_info','left='+l+',top='+t+',width='+w+',height='+h+',toolbar=no,statusbar=no,scrollbars=yes');
}

function show_window(ev,width,height,url) {
  create_window(ev,width+20,height+20,url);
  return false;
}