[OpenLayers-Commits] r3643 - in sandbox/euzuro/untiled3: examples lib/OpenLayers lib/OpenLayers/Geometry lib/OpenLayers/Handler lib/OpenLayers/Layer lib/OpenLayers/Renderer tests tests/Geometry

commits at openlayers.org commits at openlayers.org
Fri Jul 6 20:55:20 EDT 2007


Author: euzuro
Date: 2007-07-06 20:55:18 -0400 (Fri, 06 Jul 2007)
New Revision: 3643

Modified:
   sandbox/euzuro/untiled3/examples/georss-serialize.html
   sandbox/euzuro/untiled3/examples/gml-serialize.html
   sandbox/euzuro/untiled3/examples/openmnnd.html
   sandbox/euzuro/untiled3/examples/wfs-scribble.html
   sandbox/euzuro/untiled3/lib/OpenLayers/Geometry/Collection.js
   sandbox/euzuro/untiled3/lib/OpenLayers/Geometry/Point.js
   sandbox/euzuro/untiled3/lib/OpenLayers/Handler/Drag.js
   sandbox/euzuro/untiled3/lib/OpenLayers/Layer/EventPane.js
   sandbox/euzuro/untiled3/lib/OpenLayers/Layer/WFS.js
   sandbox/euzuro/untiled3/lib/OpenLayers/Map.js
   sandbox/euzuro/untiled3/lib/OpenLayers/Renderer.js
   sandbox/euzuro/untiled3/lib/OpenLayers/Renderer/Elements.js
   sandbox/euzuro/untiled3/lib/OpenLayers/Util.js
   sandbox/euzuro/untiled3/tests/Geometry/test_LineString.html
   sandbox/euzuro/untiled3/tests/Geometry/test_Point.html
   sandbox/euzuro/untiled3/tests/Geometry/test_Polygon.html
   sandbox/euzuro/untiled3/tests/test_Util.html
Log:
bringing up latest from trunk. trunk has been notably difficult to keep up with this week.

Modified: sandbox/euzuro/untiled3/examples/georss-serialize.html
===================================================================
--- sandbox/euzuro/untiled3/examples/georss-serialize.html	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/examples/georss-serialize.html	2007-07-07 00:55:18 UTC (rev 3643)
@@ -17,7 +17,7 @@
             feature.attributes['title'] = name;
             s = new XMLSerializer();
             var data = g.write(feature.layer.features);
-            $("gml").value = s.serializeToString(data);
+            OpenLayers.Util.getElement("gml").value = s.serializeToString(data);
         }
         function init(){
             g = new OpenLayers.Format.GeoRSS();

Modified: sandbox/euzuro/untiled3/examples/gml-serialize.html
===================================================================
--- sandbox/euzuro/untiled3/examples/gml-serialize.html	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/examples/gml-serialize.html	2007-07-07 00:55:18 UTC (rev 3643)
@@ -17,7 +17,7 @@
             feature.attributes['name'] = name;
             s = new XMLSerializer();
             var data = g.write(feature.layer.features);
-            $("gml").value = s.serializeToString(data);
+            OpenLayers.Util.getElement("gml").value = s.serializeToString(data);
         }
         function init(){
             g = new OpenLayers.Format.GML();

Modified: sandbox/euzuro/untiled3/examples/openmnnd.html
===================================================================
--- sandbox/euzuro/untiled3/examples/openmnnd.html	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/examples/openmnnd.html	2007-07-07 00:55:18 UTC (rev 3643)
@@ -34,7 +34,7 @@
             wfs.preFeatureInsert= function(feature) { feature.style.strokeWidth="3"; feature.style.strokeColor="blue";  
             }
             wfs.onFeatureInsert = function() {
-              $('stream_features').innerHTML = feature.layer.features.length;
+              OpenLayers.Util.getElement('stream_features').innerHTML = feature.layer.features.length;
             }  
             map.addLayer(wfs);
             
@@ -52,7 +52,7 @@
               });
             
             pwfs.onFeatureInsert= function(feature) { 
-              $('plat_features').innerHTML = feature.layer.features.length;
+              OpenLayers.Util.getElement('plat_features').innerHTML = feature.layer.features.length;
             }
             map.addLayer(pwfs); 
             
@@ -62,15 +62,15 @@
               {ratio:1.25, minZoomLevel:7, extractAttributes: true, style:rstyle});
             
             rwfs.onFeatureInsert= function(feature) {  
-              $('road_features').innerHTML = feature.layer.features.length; 
+              OpenLayers.Util.getElement('road_features').innerHTML = feature.layer.features.length; 
             }
             
             map.addLayer(rwfs); 
             
             map.events.register('moveend', null, function() { 
-                $('stream_features').innerHTML = "0";
-                $('road_features').innerHTML = "0";
-                $('plat_features').innerHTML = "0";
+                OpenLayers.Util.getElement('stream_features').innerHTML = "0";
+                OpenLayers.Util.getElement('road_features').innerHTML = "0";
+                OpenLayers.Util.getElement('plat_features').innerHTML = "0";
             });    
 
             var ls = new OpenLayers.Control.LayerSwitcher();
@@ -113,7 +113,7 @@
             for(var i in feature.attributes)
                html += "<li><b>" + i + "</b>: "+  feature.attributes[i] + "</li>";
             html += "</ul>";
-            $('feature_info').innerHTML = html;
+            OpenLayers.Util.getElement('feature_info').innerHTML = html;
         }
         // -->
     </script>

Modified: sandbox/euzuro/untiled3/examples/wfs-scribble.html
===================================================================
--- sandbox/euzuro/untiled3/examples/wfs-scribble.html	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/examples/wfs-scribble.html	2007-07-07 00:55:18 UTC (rev 3643)
@@ -56,8 +56,8 @@
             var xmls = new XMLSerializer();
             var serialize = new OpenLayers.Format[type]({},map.layers[1]);
             var data = serialize.write(map.layers[1].features);
-            $('serialize').value = xmls.serializeToString(data);
-            $('serialize').style.display='block';
+            OpenLayers.Util.getElement('serialize').value = xmls.serializeToString(data);
+            OpenLayers.Util.getElement('serialize').style.display='block';
         }
     </script>
   </head>

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Geometry/Collection.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Geometry/Collection.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Geometry/Collection.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -261,6 +261,24 @@
     },
 
     /**
+     * APIMethod: resize
+     * Resize a geometry relative to some origin.  Use this method to apply
+     *     a uniform scaling to a geometry.
+     *
+     * Parameters:
+     * scale - {Float} Factor by which to scale the geometry.  A scale of 2
+     *                 doubles the size of the geometry in each dimension
+     *                 (lines, for example, will be twice as long, and polygons
+     *                 will have four times the area).
+     * origin - {OpenLayers.Geometry.Point} Point of origin for resizing
+     */
+    resize: function(scale, origin) {
+        for(var i=0; i<this.components.length; ++i) {
+            this.components[i].resize(scale, origin);
+        }
+    },
+
+    /**
      * APIMethod: equals
      * Tests for equivalent geometries
      *

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Geometry/Point.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Geometry/Point.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Geometry/Point.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -148,6 +148,23 @@
         this.y = origin.y + (radius * Math.sin(theta));
     },
 
+    /**
+     * APIMethod: resize
+     * Resize a point relative to some origin.  For points, this has the effect
+     *     of scaling a vector (from the origin to the point).  This method is
+     *     more useful on geometry collection subclasses.
+     *
+     * Parameters:
+     * scale - {Float} Ratio of the new distance from the origin to the old
+     *                 distance from the origin.  A scale of 2 doubles the
+     *                 distance between the point and origin.
+     * origin - {OpenLayers.Geometry.Point} Point of origin for resizing
+     */
+    resize: function(scale, origin) {
+        this.x = origin.x + (scale * (this.x - origin.x));
+        this.y = origin.y + (scale * (this.y - origin.y));
+    },
+
     /** @final @type String */
     CLASS_NAME: "OpenLayers.Geometry.Point"
 });

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Handler/Drag.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Handler/Drag.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Handler/Drag.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -9,25 +9,27 @@
  * Class: OpenLayers.Handler.Drag
  */
 OpenLayers.Handler.Drag = OpenLayers.Class.create();
-OpenLayers.Handler.Drag.prototype = OpenLayers.Class.inherit( OpenLayers.Handler, {
+OpenLayers.Handler.Drag.prototype = 
+  OpenLayers.Class.inherit( OpenLayers.Handler, {
+  
     /** 
      * Property: started
      * {Boolean} When a mousedown event is received, we want to record it, but
-     * not set 'dragging' until the mouse moves after starting. 
-     **/
+     *           not set 'dragging' until the mouse moves after starting. 
+     */
     started: false,
     
     /** 
-	 * Property: dragging 
-	 * {Boolean} 
-	 */
-	dragging: false,
+     * Property: dragging 
+     * {Boolean} 
+     */
+    dragging: false,
 
     /** 
-	 * Property: start 
-	 * {<OpenLayers.Pixel>} 
-	 */
-	start: null,
+     * Property: start 
+     * {<OpenLayers.Pixel>} 
+     */
+    start: null,
 
     /**
      * Property: oldOnselectstart
@@ -42,9 +44,12 @@
      * Parameters:
      * control - {<OpenLayers.Control>} 
      * callbacks - {Object} An object containing a single function to be
-     *                          called when the drag operation is finished.
-     *                          The callback should expect to recieve a single
-     *                          argument, the point geometry.
+     *                      called when the drag operation is finished.
+     *                      The callback should expect to recieve a single
+     *                      argument, the pixel location of the event.
+     *                      Callbacks for 'move' and 'done' are supported. 
+     *                      You can also speficy callbacks for 'down', 'up', 
+     *                      and 'out' to respond to those events.
      * options - {Object} 
      */
     initialize: function(control, callbacks, options) {
@@ -110,6 +115,7 @@
             // TBD replace with CSS classes
             this.map.div.style.cursor = "";
             this.callback("up", [evt.xy]);
+            this.callback("done", [evt.xy]);
             document.onselectstart = this.oldOnselectstart;
         }
         return true;
@@ -134,6 +140,7 @@
             if(document.onselectstart) {
                 document.onselectstart = this.oldOnselectstart;
             }
+            this.callback("done", [evt.xy])
         }
         return true;
     },
@@ -141,8 +148,8 @@
     /**
      * Method: click
      * The drag handler captures the click event.  If something else registers
-     * for clicks on the same element, its listener will not be called after a
-     * drag.
+     *     for clicks on the same element, its listener will not be called 
+     *     after a drag.
      * 
      * Parameters: 
      * evt - {Event} 
@@ -163,8 +170,8 @@
      * Method: activate
      * Activate the handler.
      * 
-     * Return: {Boolean} Was activation successful.  Returns false if already
-     * active.
+     * Return: {Boolean} Was activation successful.  
+     *                   Returns false if already active.
      */
     activate: function() {
         if(OpenLayers.Handler.prototype.activate.apply(this, arguments)) {
@@ -179,8 +186,8 @@
      * Method: deactivate 
      * Deactivate the handler.
      * 
-     * Return: {Boolean} Was deactivation successful.  Returns false if already
-     * active.
+     * Return: {Boolean} Was deactivation successful.  
+     *                   Returns false if already active.
      */
     deactivate: function() {
         if(OpenLayers.Handler.prototype.deactivate.apply(this, arguments)) {

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Layer/EventPane.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Layer/EventPane.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Layer/EventPane.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -110,7 +110,11 @@
     /**
      * Method: loadWarningMessage
      * If we can't load the map lib, then display an error message to the 
-     * user and tell them where to go for help.
+     *     user and tell them where to go for help.
+     * 
+     *     This function sets up the layout for the warning message. Each 3rd
+     *     party layer must implement its own getWarningHTML() function to 
+     *     provide the actual warning message.
      */
     loadWarningMessage:function() {
 
@@ -141,6 +145,18 @@
         this.div.appendChild(div);
     },
   
+    /** 
+     * Method: getWarningHTML
+     * To be implemented by subclasses.
+     * 
+     * Return:
+     * {String} String with information on why layer is broken, how to get
+     *          it working.
+     */
+    getWarningHTML:function() {
+        //should be implemented by subclasses
+        return "";
+    },
   
     /**
      * Method: display

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Layer/WFS.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Layer/WFS.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Layer/WFS.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -385,10 +385,10 @@
         if (this.tile) {
             if (this.vectorMode) {
                 this.renderer.clear();
-                OpenLayers.Util.clearArray(this.features);
+                this.features.length = 0;
             } else {   
                 this.clearMarkers();
-                OpenLayers.Util.clearArray(this.markers);
+                this.markers.length = 0;
             }    
             this.tile.draw();
         }

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Map.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Map.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Map.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -267,11 +267,10 @@
 
         this.id = OpenLayers.Util.createUniqueID("OpenLayers.Map_");
 
+        this.div = OpenLayers.Util.getElement(div);
 
-        this.div = div = OpenLayers.Util.getElement(div);
-
         // the viewPortDiv is the outermost div we modify
-        var id = div.id + "_OpenLayers_ViewPort";
+        var id = this.div.id + "_OpenLayers_ViewPort";
         this.viewPortDiv = OpenLayers.Util.createDiv(id, null, null, null,
                                                      "relative", null,
                                                      "hidden");
@@ -281,14 +280,14 @@
         this.div.appendChild(this.viewPortDiv);
 
         // the layerContainerDiv is the one that holds all the layers
-        id = div.id + "_OpenLayers_Container";
+        id = this.div.id + "_OpenLayers_Container";
         this.layerContainerDiv = OpenLayers.Util.createDiv(id);
         this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE['Popup']-1;
         
         this.viewPortDiv.appendChild(this.layerContainerDiv);
 
         this.events = new OpenLayers.Events(this, 
-                                            div, 
+                                            this.div, 
                                             this.EVENT_TYPES, 
                                             this.fallThrough);
         this.updateSize();

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Renderer/Elements.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Renderer/Elements.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Renderer/Elements.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -313,7 +313,7 @@
                 this.eraseGeometry(geometry.components[i]);
             }
         } else {    
-            var element = $(geometry.id);
+            var element = OpenLayers.Util.getElement(geometry.id);
             if (element && element.parentNode) {
                 if (element.geometry) {
                     element.geometry.destroy();
@@ -340,7 +340,7 @@
      * {DOMElement} A new node of the given type and id
      */
     nodeFactory: function(id, type, geometry) {
-        var node = $(id);
+        var node = OpenLayers.Util.getElement(id);
         if (node) {
             if (!this.nodeTypeCompare(node, type)) {
                 node.parentNode.removeChild(node);

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Renderer.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Renderer.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Renderer.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -59,7 +59,7 @@
      * containerID - {<String>} 
      */
     initialize: function(containerID) {
-        this.container = $(containerID);
+        this.container = OpenLayers.Util.getElement(containerID);
     },
     
     /**

Modified: sandbox/euzuro/untiled3/lib/OpenLayers/Util.js
===================================================================
--- sandbox/euzuro/untiled3/lib/OpenLayers/Util.js	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/lib/OpenLayers/Util.js	2007-07-07 00:55:18 UTC (rev 3643)
@@ -71,8 +71,16 @@
 
 /**
  * Function: clearArray
-*/
+ * *Deprecated*. This function will disappear in 3.0.
+ * Please use "array.length = 0" instead.
+ * 
+ * Parameters:
+ * array - {Array}
+ */
 OpenLayers.Util.clearArray = function(array) {
+    var msg = "OpenLayers.Util.clearArray() is Deprecated." +
+              " Please use 'array.length = 0' instead.";
+    OpenLayers.Console.warn(msg);
     array.length = 0;
 };
 

Modified: sandbox/euzuro/untiled3/tests/Geometry/test_LineString.html
===================================================================
--- sandbox/euzuro/untiled3/tests/Geometry/test_LineString.html	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/tests/Geometry/test_LineString.html	2007-07-07 00:55:18 UTC (rev 3643)
@@ -106,6 +106,48 @@
         }
     }
 
+    function test_LineString_resize(t) {
+        t.plan(7);
+        
+        var tolerance = 1e-10;
+
+        var components = [new OpenLayers.Geometry.Point(10 * Math.random(),
+                                                        10 * Math.random()), 
+                          new OpenLayers.Geometry.Point(10 * Math.random(),
+                                                        10 * Math.random())];
+        var geometry = new OpenLayers.Geometry.LineString(components);
+
+        var origin = new OpenLayers.Geometry.Point(10 * Math.random(),
+                                                   10 * Math.random());
+        
+        var scale = 10 * Math.random();
+        
+        var oldLength = geometry.getLength();
+        geometry.resize(scale, origin);
+        var newLength = geometry.getLength();
+        t.ok((((newLength / oldLength) - scale) / scale) < tolerance,
+             "resize correctly changes the length of a linestring")
+
+        var originals = [];
+        var comp;
+        for(var i=0; i<geometry.components.length; ++i) {
+            comp = geometry.components[i];
+            originals[i] = comp.resize;
+            comp.resize = function(s, o) {
+                t.ok(true, "resize called for component " + i);
+                t.ok(s == scale, "resize called with correct scale");
+                t.ok(o == origin, "resize called with correct origin");
+            }
+        }
+        geometry.resize(scale, origin);
+        
+        // restore the original resize defs
+        for(var i=0; i<geometry.components.length; ++i) {
+            comp.resize = originals[i];
+        }
+        
+    }
+    
     function test_LineString_equals(t) {
         t.plan(3);
         

Modified: sandbox/euzuro/untiled3/tests/Geometry/test_Point.html
===================================================================
--- sandbox/euzuro/untiled3/tests/Geometry/test_Point.html	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/tests/Geometry/test_Point.html	2007-07-07 00:55:18 UTC (rev 3643)
@@ -103,6 +103,30 @@
              "rotate 1/8 turn correctly")
     }
 
+    function test_Point_resize(t) {
+        t.plan(2);
+        
+        var tolerance = 1e-10;
+        var x = 100 * Math.random();
+        var y = 100 * Math.random();
+        var point = new OpenLayers.Geometry.Point(x, y);
+        
+        var i = 100 * Math.random();
+        var j = 100 * Math.random();
+        var origin = new OpenLayers.Geometry.Point(i, j);
+        
+        var scale = 10 * Math.random();
+        var oldDistance = origin.distanceTo(point);
+        
+        point.resize(scale, origin);
+        var newDistance = origin.distanceTo(point);
+        
+        t.ok((origin.x == i) && (origin.y == j),
+             "resize leaves the origin untouched");
+        t.ok((((newDistance / oldDistance) - scale) / scale) < tolerance,
+             "resize moves points the correct distance from the origin")        
+    }
+
     function test_Point_equals(t) {
         t.plan(3);
         

Modified: sandbox/euzuro/untiled3/tests/Geometry/test_Polygon.html
===================================================================
--- sandbox/euzuro/untiled3/tests/Geometry/test_Polygon.html	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/tests/Geometry/test_Polygon.html	2007-07-07 00:55:18 UTC (rev 3643)
@@ -133,6 +133,46 @@
         }
     }
 
+    function test_Polygon_resize(t) {
+        t.plan(8);
+        
+        var tolerance = 1e-10;
+        var geometry = new OpenLayers.Geometry.Polygon([linearRing, linearRing2]);
+        var origin = new OpenLayers.Geometry.Point(10 * Math.random(),
+                                                   10 * Math.random());
+        var scale = 10 * Math.random();
+        
+        var oldArea = geometry.getArea();
+        var oldPerimeter = geometry.getLength();
+        geometry.resize(scale, origin);
+        var newArea = geometry.getArea();
+        var newPerimeter = geometry.getLength();
+        
+        t.ok((((newArea / oldArea) - (scale * scale)) / (scale * scale)) < tolerance,
+             "resize correctly changes the area of a polygon")
+        t.ok((((newPerimeter / oldPerimeter) - scale) / scale) < tolerance,
+             "resize correctly changes the perimeter of a polygon")
+
+        var originals = [];
+        var comp;
+        for(var i=0; i<geometry.components.length; ++i) {
+            comp = geometry.components[i];
+            originals[i] = comp.resize;
+            comp.resize = function(s, o) {
+                t.ok(true, "resize called for component " + i);
+                t.ok(s == scale, "resize called with correct scale");
+                t.ok(o == origin, "resize called with correct origin");
+            }
+        }
+        geometry.resize(scale, origin);
+        
+        // restore the original resize defs
+        for(var i=0; i<geometry.components.length; ++i) {
+            comp.resize = originals[i];
+        }
+        
+    }
+
     function test_Polygon_equals(t) {
         t.plan(3);
         

Modified: sandbox/euzuro/untiled3/tests/test_Util.html
===================================================================
--- sandbox/euzuro/untiled3/tests/test_Util.html	2007-07-07 00:12:57 UTC (rev 3642)
+++ sandbox/euzuro/untiled3/tests/test_Util.html	2007-07-07 00:55:18 UTC (rev 3643)
@@ -30,16 +30,12 @@
     }
 
     function test_03_Util_Array(t) {
-        t.plan( 2 );
+        t.plan( 1 );
 
         var array = new Array(1,2,3,4,5);
 
         OpenLayers.Util.removeItem(array, 3);
         t.eq( array.toString(), "1,2,4,5", "Util.removeItem works");    
-
-        OpenLayers.Util.clearArray(array);
-        t.eq( array.toString(), "", "Util.clearArray works");    
-        
     }
 
     function test_04_Util_createDiv(t) {



More information about the Commits mailing list