<html>
<head>
  <title>Set Id/Name</title>
  <link rel="stylesheet" type="text/css" href="../../../popups/popup.css" />
  <script type="text/javascript" src="../../../popups/popup.js"></script>
  <script type="text/javascript">
window.resizeTo(350, 100);
function Init() {
  __dlg_translate("SetId");
  __dlg_init();
  var param = window.dialogArguments;
  if (param) {
    document.getElementById("name").value = param["name"];
  }
  document.getElementById("name").focus();
}

function onOK() {
  // pass data back to the calling window
  var param = new Object();
  param["name"] = document.getElementById("name").value;
  __dlg_close(param);
  return false;
}

function onDelete() {
  // pass data back to the calling window
  var param = new Object();
  param["name"] = "";
  __dlg_close(param);
  return false;
}

function onCancel() {
  __dlg_close(null);
  return false;
}
</script>
</head>

<body class="dialog" onload="Init()">
<div class="title">Set ID/Name</div>
<form>
<table border="0" style="width: 300px;">
  <tr>
    <td class="label">ID/Name:</td>
    <td><input type="text" id="name" style="width: 200px" /></td>
  </tr>
</table>

<div id="buttons">
  <button type="submit" name="ok" onclick="return onOK();">OK</button>
  <button type="button" name="delete" onclick="return onDelete();">Delete</button>
  <button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
</div>
</form>
</body>
</html>