diff --git a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/cdtdedit.html b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/cdtdedit.html
index a0ea30e..69e862e 100644
--- a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/cdtdedit.html
+++ b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/cdtdedit.html
@@ -15,13 +15,7 @@
 <head>
 <link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
 <title>DTD editor</title>
-<script language="JavaScript">
-    function popup_window( url, id, width, height )
-    {
-      popup = window.open( url, id, 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + ',left=,top=' );
-      popup.focus();
-    }
-</script><script language="JavaScript" src="help/liveHelp.js"></script></head>
+</head>
 <body id="cdtdedit"><a name="cdtdedit"><!-- --></a>
 
 <h1 class="topictitle1">DTD editor</h1>
diff --git a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/cdtdover.html b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/cdtdover.html
index 3f15a9e..0ff1e5b 100644
--- a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/cdtdover.html
+++ b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/cdtdover.html
@@ -15,13 +15,7 @@
 <head>
 <link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
 <title>Document type definition (DTD) - overview</title>
-<script language="JavaScript">
-    function popup_window( url, id, width, height )
-    {
-      popup = window.open( url, id, 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + ',left=,top=' );
-      popup.focus();
-    }
-</script><script language="JavaScript" src="help/liveHelp.js"></script></head>
+</head>
 <body id="cdtdover"><a name="cdtdover"><!-- --></a>
 
 <h1 class="topictitle1">Document type definitions (DTDs) - overview</h1>
diff --git a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/rdtdicons.html b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/rdtdicons.html
index 38edd8c..8a3ec7f 100644
--- a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/rdtdicons.html
+++ b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/rdtdicons.html
@@ -15,13 +15,7 @@
 <head>
 <link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
 <title>Icons used in the DTD editor</title>
-<script language="JavaScript">
-    function popup_window( url, id, width, height )
-    {
-      popup = window.open( url, id, 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + ',left=,top=' );
-      popup.focus();
-    }
-</script><script language="JavaScript" src="help/liveHelp.js"></script></head>
+</head>
 <body id="ricons"><a name="ricons"><!-- --></a>
 
 <h1 class="topictitle1">Icons used in the DTD editor</h1>
diff --git a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/rrefint.html b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/rrefint.html
index 2b7f32a..fe71136 100644
--- a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/rrefint.html
+++ b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/rrefint.html
@@ -15,13 +15,7 @@
 <head>
 <link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
 <title>Referential integrity in the DTD editor</title>
-<script language="JavaScript">
-    function popup_window( url, id, width, height )
-    {
-      popup = window.open( url, id, 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + ',left=,top=' );
-      popup.focus();
-    }
-</script><script language="JavaScript" src="help/liveHelp.js"></script></head>
+</head>
 <body id="rrefint"><a name="rrefint"><!-- --></a>
 
 <h1 class="topictitle1">Referential integrity in the DTD editor</h1>
diff --git a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/tchgelm.html b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/tchgelm.html
index 74f7381..67bcfe4 100644
--- a/docs/org.eclipse.wst.dtdeditor.doc.user/topics/tchgelm.html
+++ b/docs/org.eclipse.wst.dtdeditor.doc.user/topics/tchgelm.html
@@ -15,13 +15,7 @@
 <head>
 <link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
 <title>Editing an element's content model</title>
-<script language="JavaScript">
-    function popup_window( url, id, width, height )
-    {
-      popup = window.open( url, id, 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + ',left=,top=' );
-      popup.focus();
-    }
-</script><script language="JavaScript" src="help/liveHelp.js"></script></head>
+</head>
 <body id="tchgelm"><a name="tchgelm"><!-- --></a>
 
 <h1 class="topictitle1">Editing an element's content model</h1>
