// Global for brower version branching.
var Nav4 = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4));
// One object tracks the current modal dialog opened from this window.
var dialogWin = new Object();
// Generate a modal dialog.
// Parameters:
//    url -- URL of the page/frameset to be loaded into dialog
//    width -- pixel width of the dialog window
//    height -- pixel height of the dialog window
//    returnFunc -- [optional]reference to the function (on this page)
//                  that is to act on the data returned from the dialog
//    args -- [optional] any data you need to pass to the dialog
function openDialog(url, width, height, extraAttr, returnFunc, args) {
  if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
    // Initialize properties of the modal dialog object.
    dialogWin.returnFunc = returnFunc;
    dialogWin.returnedValue = "";
    dialogWin.args = args;
    dialogWin.url = url;
    dialogWin.width = width;
    dialogWin.height = height;
    // Assemble window attributes and try to center the dialog.
    var attr = "";
    if (Nav4) {
      // Center on the main window.
      dialogWin.left = window.screenX + ((window.outerWidth - dialogWin.width) / 2);
      dialogWin.top = window.screenY + ((window.outerHeight - dialogWin.height) / 2);
      attr = "screenX=" + dialogWin.left + ",screenY=" + dialogWin.top +
             "," + extraAttr + ",width=" + dialogWin.width + ",height=" + dialogWin.height;
    } else {
      // The best we can do is center in screen.
      dialogWin.left = (screen.width - dialogWin.width) / 2;
      dialogWin.top = (screen.height - dialogWin.height) / 2;
      attr = "left=" + dialogWin.left + ",top=" + dialogWin.top +
             "," + extraAttr + ",width=" + dialogWin.width + ",height=" + dialogWin.height;
    }

    // Keep name unique so Navigator doesn't overwrite an existing dialog.
    dialogWin.name = "window_" + (new Date()).getTime().toString();
    while (dialogWin.name == window.top.name) {
      //alert("New dialog name (" + dialogWin.name + ") must be unequals it's parent window name (" + window.top.name + ").");
      dialogWin.name = "window_" + (new Date()).getTime().toString();
      //alert("Generate new random dialog name = " + dialogWin.name);
    }
    // Generate the dialog and make sure it has focus.
    dialogWin.win = window.open(dialogWin.url, dialogWin.name, attr);
    dialogWin.win.focus();
  } else {
    dialogWin.win.focus();
  }
  return dialogWin.win;
}
