Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Map.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Map.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Map.js	(working copy)
@@ -661,7 +661,8 @@
             this.layers = null;
         }
         if (this.viewPortDiv) {
-            this.div.removeChild(this.viewPortDiv);
+            //this.div.removeChild(this.viewPortDiv);
+        	OpenLayers.Util.discardElement(this.viewPortDiv);
         }
         this.viewPortDiv = null;
 
@@ -1230,7 +1231,8 @@
         //make sure control is non-null and actually part of our map
         if ( (control) && (control == this.getControl(control.id)) ) {
             if (control.div && (control.div.parentNode == this.viewPortDiv)) {
-                this.viewPortDiv.removeChild(control.div);
+                //this.viewPortDiv.removeChild(control.div);
+                OpenLayers.Util.discardElement(control.div);
             }
             OpenLayers.Util.removeItem(this.controls, control);
         }
@@ -1280,7 +1282,10 @@
     removePopup: function(popup) {
         OpenLayers.Util.removeItem(this.popups, popup);
         if (popup.div) {
-            try { this.layerContainerDiv.removeChild(popup.div); }
+            try { 
+            	//this.layerContainerDiv.removeChild(popup.div);
+            	OpenLayers.Util.discardElement(popup.div);
+            }
             catch (e) { } // Popups sometimes apparently get disconnected
                       // from the layerContainerDiv, and cause complaints.
         }
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control.js	(working copy)
@@ -258,7 +258,7 @@
             if (!this.allowSelection) {
                 this.div.className += " olControlNoSelect";
                 this.div.setAttribute("unselectable", "on", 0);
-                this.div.onselectstart = function() { return(false); }; 
+                //this.div.onselectstart = function() { return(false); }; 
             }    
             if (this.title != "") {
                 this.div.title = this.title;
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Tile/Image.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Tile/Image.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Tile/Image.js	(working copy)
@@ -118,7 +118,8 @@
             OpenLayers.Event.stopObservingElement(this.imgDiv.id);
             
             if (this.imgDiv.parentNode == this.frame) {
-                this.frame.removeChild(this.imgDiv);
+                //this.frame.removeChild(this.imgDiv);
+                OpenLayers.Util.discardElement(this.imgDiv);
                 this.imgDiv.map = null;
             }
             this.imgDiv.urls = null;
@@ -127,7 +128,8 @@
         }
         this.imgDiv = null;
         if ((this.frame != null) && (this.frame.parentNode == this.layer.div)) { 
-            this.layer.div.removeChild(this.frame); 
+            //this.layer.div.removeChild(this.frame);
+        	OpenLayers.Util.discardElement(this.frame);
         }
         this.frame = null; 
         
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/BaseTypes/Element.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/BaseTypes/Element.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/BaseTypes/Element.js	(working copy)
@@ -74,7 +74,8 @@
      */
     remove: function(element) {
         element = OpenLayers.Util.getElement(element);
-        element.parentNode.removeChild(element);
+        //element.parentNode.removeChild(element);
+        OpenLayers.Util.discardElement(element);
     },
 
     /**
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Popup/Framed.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Popup/Framed.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Popup/Framed.js	(working copy)
@@ -140,12 +140,14 @@
             var block = this.blocks[i];
 
             if (block.image) {
-                block.div.removeChild(block.image);
+                //block.div.removeChild(block.image);
+            	OpenLayers.Util.discardElement(block.image);
             }
             block.image = null;
 
             if (block.div) {
-                this.groupDiv.removeChild(block.div);
+                //this.groupDiv.removeChild(block.div);
+            	OpenLayers.Util.discardElement(block.div);
             }
             block.div = null;
         }
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Popup.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Popup.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Popup.js	(working copy)
@@ -292,11 +292,13 @@
         
         if (this.closeDiv) {
             OpenLayers.Event.stopObservingElement(this.closeDiv); 
-            this.groupDiv.removeChild(this.closeDiv);
+            //this.groupDiv.removeChild(this.closeDiv);
+            OpenLayers.Util.discardElement(this.closeDiv);
         }
         this.closeDiv = null;
         
-        this.div.removeChild(this.groupDiv);
+        //this.div.removeChild(this.groupDiv);
+        OpenLayers.Util.discardElement(this.groupDiv);
         this.groupDiv = null;
 
         if (this.map != null) {
@@ -850,7 +852,8 @@
 
             if (this.div.parentNode == document.body) {
 	            //remove the div from the page and make it visible again
-	            document.body.removeChild(this.div);
+	            //document.body.removeChild(this.div);
+	            OpenLayers.Util.discardElement(this.div);
 	            this.div.style.display = "";
             }
         }
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/OverviewMap.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/OverviewMap.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/OverviewMap.js	(working copy)
@@ -145,7 +145,8 @@
         }
         this.handlers.click.destroy();
 
-        this.mapDiv.removeChild(this.extentRectangle);
+        //this.mapDiv.removeChild(this.extentRectangle);
+        OpenLayers.Util.discardElement(this.extentRectangle);
         this.extentRectangle = null;
         this.rectEvents.destroy();
         this.rectEvents = null;
@@ -153,21 +154,25 @@
         this.ovmap.destroy();
         this.ovmap = null;
         
-        this.element.removeChild(this.mapDiv);
+        //this.element.removeChild(this.mapDiv);
+        OpenLayers.Util.discardElement(this.mapDiv);
         this.mapDiv = null;
 
-        this.div.removeChild(this.element);
+        //this.div.removeChild(this.element);
+        OpenLayers.Util.discardElement(this.element);
         this.element = null;
 
         if (this.maximizeDiv) {
             OpenLayers.Event.stopObservingElement(this.maximizeDiv);
-            this.div.removeChild(this.maximizeDiv);
+            //this.div.removeChild(this.maximizeDiv);
+            OpenLayers.Util.discardElement(this.maximizeDiv);
             this.maximizeDiv = null;
         }
         
         if (this.minimizeDiv) {
             OpenLayers.Event.stopObservingElement(this.minimizeDiv);
-            this.div.removeChild(this.minimizeDiv);
+            //this.div.removeChild(this.minimizeDiv);
+            OpenLayers.Util.discardElement(this.minimizeDiv);
             this.minimizeDiv = null;
         }
         
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/MouseToolbar.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/MouseToolbar.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/MouseToolbar.js	(working copy)
@@ -254,7 +254,7 @@
                 this.map.div.style.cursor = "move";
                 break;
         }
-        document.onselectstart = function() { return false; };
+        //document.onselectstart = function() { return false; };
         OpenLayers.Event.stop(evt);
     },
 
@@ -274,7 +274,8 @@
             if (this.mode == "measure" && mode != "measure") {
                 for(var i=0, len=this.measureDivs.length; i<len; i++) {
                     if (this.measureDivs[i]) { 
-                        this.map.layerContainerDiv.removeChild(this.measureDivs[i]);
+                        //this.map.layerContainerDiv.removeChild(this.measureDivs[i]);
+                        OpenLayers.Util.discardElement(this.measureDivs[i]);
                     }
                 }
                 this.measureDivs = [];
@@ -360,7 +361,7 @@
                     this.map.setCenter(this.map.center);
                 }        
         }
-        document.onselectstart = null;
+        //document.onselectstart = null;
         this.mouseDragStart = null;
         this.map.div.style.cursor = "default";
     },
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/MouseDefaults.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/MouseDefaults.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/MouseDefaults.js	(working copy)
@@ -166,7 +166,7 @@
             this.zoomBox.style.zIndex = this.map.Z_INDEX_BASE["Popup"] - 1;
             this.map.viewPortDiv.appendChild(this.zoomBox);
         }
-        document.onselectstart=function() { return false; };
+        //document.onselectstart=function() { return false; };
         OpenLayers.Event.stop(evt);
     },
 
@@ -224,7 +224,7 @@
                 this.map.setCenter(this.map.center);
             }
         }
-        document.onselectstart=null;
+        //document.onselectstart=null;
         this.mouseDragStart = null;
         this.map.div.style.cursor = "";
     },
@@ -301,7 +301,8 @@
      * Remove the zoombox from the screen and nullify our reference to it.
      */
     removeZoomBox: function() {
-        this.map.viewPortDiv.removeChild(this.zoomBox);
+        //this.map.viewPortDiv.removeChild(this.zoomBox);
+    	OpenLayers.Util.discardElement(this.zoomBox);
         this.zoomBox = null;
     },
 
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/Permalink.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/Permalink.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/Permalink.js	(working copy)
@@ -70,7 +70,8 @@
      */
     destroy: function()  {
         if (this.element.parentNode == this.div) {
-            this.div.removeChild(this.element);
+            //this.div.removeChild(this.element);
+            OpenLayers.Util.discardElement(this.element);
         }
         this.element = null;
 
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/PanZoom.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/PanZoom.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/PanZoom.js	(working copy)
@@ -163,8 +163,10 @@
     _removeButton: function(btn) {
         OpenLayers.Event.stopObservingElement(btn);
         btn.map = null;
-        this.div.removeChild(btn);
+        btn.getSlideFactor = null;
+        //this.div.removeChild(btn);
         OpenLayers.Util.removeItem(this.buttons, btn);
+        OpenLayers.Util.discardElement(btn);
     },
     
     /**
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/PanZoomBar.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/PanZoomBar.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Control/PanZoomBar.js	(working copy)
@@ -234,9 +234,12 @@
         });
         this.divEvents.destroy();
         
-        this.div.removeChild(this.zoombarDiv);
+        //this.div.removeChild(this.zoombarDiv);
+        OpenLayers.Util.discardElement(this.zoombarDiv);
         this.zoombarDiv = null;
-        this.div.removeChild(this.slider);
+
+        //this.div.removeChild(this.slider);
+        OpenLayers.Util.discardElement(this.slider);
         this.slider = null;
         
         this.map.events.unregister("zoomend", this, this.moveZoomBar);
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Util.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Util.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Util.js	(working copy)
@@ -1586,8 +1586,10 @@
     }
 
     // remove elements
-    container.removeChild(content);
-    containerElement.removeChild(container);
+    //container.removeChild(content);
+    OpenLayers.Util.discardElement(content);
+    //containerElement.removeChild(container);
+    OpenLayers.Util.discardElement(container);
     
     return new OpenLayers.Size(w, h);
 };
@@ -1646,7 +1648,8 @@
         wScroll = inn.offsetWidth;
     
         // Remove the scrolling div from the doc
-        document.body.removeChild(document.body.lastChild);
+        //document.body.removeChild(document.body.lastChild);
+        OpenLayers.Util.discardElement(document.body.lastChild);
     
         // Pixel width of the scroller
         OpenLayers.Util._scrollbarWidth = (wNoScroll - wScroll);
@@ -1655,3 +1658,24 @@
 
     return scrollbarWidth;
 };
+OpenLayers.Util.discardElement = function(element) {
+    var garbageBin = document.getElementById('IELeakGarbageBin');
+    if (!garbageBin) {
+        garbageBin = document.createElement('DIV');
+        garbageBin.id = 'IELeakGarbageBin';
+        garbageBin.style.display = 'none';
+        document.body.appendChild(garbageBin);
+    }
+
+    // move the element to the garbage bin
+	try {
+    garbageBin.appendChild(element);
+	}
+	catch(e) {
+		//do nothing
+	}
+    garbageBin.innerHTML = '';
+
+	if (element.removeNode) element.removeNode(false);
+//	delete element;
+};
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Renderer/Elements.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Renderer/Elements.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Renderer/Elements.js	(working copy)
@@ -532,10 +532,14 @@
             var node = document.getElementById(geometry.id);
             if (node) {
                 if (node._style.backgroundGraphic) {
-                    node.parentNode.removeChild(document.getElementById(
-                        geometry.id + this.BACKGROUND_ID_SUFFIX));
+                    //node.parentNode.removeChild(document.getElementById(
+                      //  geometry.id + this.BACKGROUND_ID_SUFFIX));
+                	OpenLayers.Util.discardElement(document.getElementById(
+                              geometry.id + this.BACKGROUND_ID_SUFFIX));
                 }
-                node.parentNode.removeChild(node);
+                //node.parentNode.removeChild(node);
+                OpenLayers.Util.discardElement(node);
+                
             }
         }
         return rendered;
@@ -840,7 +844,8 @@
     removeText: function(featureId) {
         var label = document.getElementById(featureId + this.LABEL_ID_SUFFIX);
         if (label) {
-            this.textRoot.removeChild(label);
+            //this.textRoot.removeChild(label);
+            OpenLayers.Util.discardElement(label);
         }
     },
 
@@ -887,7 +892,8 @@
                     element.geometry.destroy();
                     element.geometry = null;
                 }
-                element.parentNode.removeChild(element);
+                //element.parentNode.removeChild(element);
+                OpenLayers.Util.discardElement(element);
 
                 if (this.indexer) {
                     this.indexer.remove(element);
@@ -899,7 +905,8 @@
                     if (bElem && bElem.parentNode) {
                         // No need to destroy the geometry since the element and the background
                         // node share the same geometry.
-                        bElem.parentNode.removeChild(bElem);
+                        //bElem.parentNode.removeChild(bElem);
+                    	OpenLayers.Util.discardElement(bElem);
                     }
                 }
             }
@@ -924,7 +931,8 @@
         var node = OpenLayers.Util.getElement(id);
         if (node) {
             if (!this.nodeTypeCompare(node, type)) {
-                node.parentNode.removeChild(node);
+                //node.parentNode.removeChild(node);
+                OpenLayers.Util.discardElement(node);
                 node = this.nodeFactory(id, type);
             }
         } else {
@@ -973,6 +981,7 @@
         }
         root.parentNode.removeChild(root);
         renderer.rendererRoot.appendChild(root);
+        
     },
     
     /**
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Renderer/VML.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Renderer/VML.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Renderer/VML.js	(working copy)
@@ -262,7 +262,8 @@
         var fill = (fills.length == 0) ? null : fills[0];
         if (!options.isFilled) {
             if (fill) {
-                node.removeChild(fill);
+                //node.removeChild(fill);
+                OpenLayers.Util.discardElement(fill);
             }
         } else {
             if (!fill) {
@@ -315,7 +316,8 @@
         var stroke = (strokes.length == 0) ? null : strokes[0];
         if (!options.isStroked) {
             if (stroke) {
-                node.removeChild(stroke);
+                //node.removeChild(stroke);
+            	OpenLayers.Util.discardElement(stroke);
             }
         } else {
             if (!stroke) {
@@ -550,7 +552,7 @@
         // IE hack to make elements unselectable, to prevent 'blue flash'
         // while dragging vectors; #1410
         node.setAttribute('unselectable', 'on', 0);
-        node.onselectstart = function() { return(false); };
+        //node.onselectstart = function() { return(false); };
         
         return node;    
     },
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/Yahoo.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/Yahoo.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/Yahoo.js	(working copy)
@@ -142,7 +142,8 @@
         var yahooEventPane = OpenLayers.Util.getElement("ygddfdiv");
         if (yahooEventPane != null) {
             if (yahooEventPane.parentNode != null) {
-                yahooEventPane.parentNode.removeChild(yahooEventPane);
+                //yahooEventPane.parentNode.removeChild(yahooEventPane);
+                OpenLayers.Util.discardElement(yahooEventPane);
             }
             this.map.events.unregister("moveend", this, 
                                        this.fixYahooEventPane);
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/EventPane.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/EventPane.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/EventPane.js	(working copy)
@@ -130,7 +130,8 @@
      */
     removeMap: function(map) {
         if (this.pane && this.pane.parentNode) {
-            this.pane.parentNode.removeChild(this.pane);
+            //this.pane.parentNode.removeChild(this.pane);
+        	OpenLayers.Util.discardElement(this.pane);
             this.pane = null;
         }
         OpenLayers.Layer.prototype.removeMap.apply(this, arguments);
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/Boxes.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/Boxes.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Layer/Boxes.js	(working copy)
@@ -67,7 +67,8 @@
         OpenLayers.Util.removeItem(this.markers, marker);
         if ((marker.div != null) &&
             (marker.div.parentNode == this.div) ) {
-            this.div.removeChild(marker.div);    
+            //this.div.removeChild(marker.div);
+            OpenLayers.Util.discardElement(marker.div);
         }
     },
 
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Handler/Box.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Handler/Box.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Handler/Box.js	(working copy)
@@ -142,7 +142,8 @@
      * Remove the zoombox from the screen and nullify our reference to it.
      */
     removeBox: function() {
-        this.map.viewPortDiv.removeChild(this.zoomBox);
+        //this.map.viewPortDiv.removeChild(this.zoomBox);
+        OpenLayers.Util.discardElement(this.zoomBox);
         this.zoomBox = null;
         this.boxCharacteristics = null;
         OpenLayers.Element.removeClass(
Index: D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Handler/Drag.js
===================================================================
--- D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Handler/Drag.js	(revision 9370)
+++ D:/projects/xebia/vtsPolitie/workspace/openlayers/lib/OpenLayers/Handler/Drag.js	(working copy)
@@ -186,7 +186,7 @@
             
             if(!this.oldOnselectstart) {
                 this.oldOnselectstart = (document.onselectstart) ? document.onselectstart : function() { return true; };
-                document.onselectstart = function() {return false;};
+                //document.onselectstart = function() {return false;};
             }
             
             propagate = !this.stopDown;
@@ -218,7 +218,7 @@
             this.callback("move", [evt.xy]);
             if(!this.oldOnselectstart) {
                 this.oldOnselectstart = document.onselectstart;
-                document.onselectstart = function() {return false;};
+                //document.onselectstart = function() {return false;};
             }
             this.last = this.evt.xy;
         }
@@ -256,7 +256,7 @@
             if(dragged) {
                 this.callback("done", [evt.xy]);
             }
-            document.onselectstart = this.oldOnselectstart;
+            //document.onselectstart = this.oldOnselectstart;
         }
         return true;
     },
@@ -285,7 +285,7 @@
                 this.callback("done", [evt.xy]);
             }
             if(document.onselectstart) {
-                document.onselectstart = this.oldOnselectstart;
+                //document.onselectstart = this.oldOnselectstart;
             }
         }
         return true;
