← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~allenap/launchpad/lazr-anim-stuff into lp:launchpad

 

Gavin Panella has proposed merging lp:~allenap/launchpad/lazr-anim-stuff into lp:launchpad with lp:~allenap/launchpad/packageset-picker-4 as a prerequisite.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~allenap/launchpad/lazr-anim-stuff/+merge/71005

Some work on lazr.anim:

- Clean up the code and fix lint.

- Use things like Y.Lang.isString and instanceof instead of typeof or
  attribute sniffing (i.e. if thing has a _nodes attribute, thing is a
  NodeList).

- Change test_anim.js to be a module, lazr.anim.test.

- Anim.on was not tested. It is now.

- Rename lazr.anim to lp.anim. This branch has a lot of mechanical
  changes for this.

-- 
https://code.launchpad.net/~allenap/launchpad/lazr-anim-stuff/+merge/71005
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~allenap/launchpad/lazr-anim-stuff into lp:launchpad.
=== modified file 'lib/lp/app/javascript/activator/activator.js'
--- lib/lp/app/javascript/activator/activator.js	2011-06-29 14:56:15 +0000
+++ lib/lp/app/javascript/activator/activator.js	2011-08-10 08:54:16 +0000
@@ -154,7 +154,7 @@
         }
         this._setStatusClass(C_SUCCESS);
         this._renderMessage('Message', message_node);
-        var anim = Y.lazr.anim.green_flash({node: this.animation_node});
+        var anim = Y.lp.anim.green_flash({node: this.animation_node});
         anim.run();
     },
 
@@ -168,7 +168,7 @@
     renderFailure: function(message_node) {
         this._renderMessage('Error', message_node);
         this._setStatusClass(C_FAILURE);
-        var anim = Y.lazr.anim.red_flash({node: this.animation_node});
+        var anim = Y.lp.anim.red_flash({node: this.animation_node});
         anim.run();
     },
 
@@ -182,7 +182,7 @@
     renderCancellation: function(message_node) {
         this._renderMessage('Message', message_node);
         this._setStatusClass(C_CANCEL);
-        var anim = Y.lazr.anim.red_flash({node: this.animation_node});
+        var anim = Y.lp.anim.red_flash({node: this.animation_node});
         anim.run();
     },
 
@@ -282,4 +282,4 @@
 
 }, "0.1", {"skinnable": true,
            "requires": ["oop", "event", "node", "widget",
-                        "lazr.anim", "lazr.base"]});
+                        "lp.anim", "lazr.base"]});

=== modified file 'lib/lp/app/javascript/activator/tests/test_activator.html'
--- lib/lp/app/javascript/activator/tests/test_activator.html	2011-07-08 06:06:15 +0000
+++ lib/lp/app/javascript/activator/tests/test_activator.html	2011-08-10 08:54:16 +0000
@@ -16,6 +16,7 @@
   <script type="text/javascript" src="../activator.js"></script>
   <script type="text/javascript" src="../../anim/anim.js"></script>
   <script type="text/javascript" src="../../lazr/lazr.js"></script>
+  <script type="text/javascript" src="../../extras/extras.js"></script>
 
   <!-- The test suite -->
   <script type="text/javascript" src="test_activator.js"></script>

=== modified file 'lib/lp/app/javascript/ajax_log.js'
--- lib/lp/app/javascript/ajax_log.js	2011-04-19 18:03:50 +0000
+++ lib/lp/app/javascript/ajax_log.js	2011-08-10 08:54:16 +0000
@@ -5,12 +5,12 @@
     */
     var AJAX_OK_TIME = 1;
 
-    LPS.use('node', 'lazr.anim', function(Y) {
+    LPS.use('node', 'lp.anim', function(Y) {
         Y.on('contentready', function() {
             var node = Y.one('#ajax-time-list');
             var ajax_request_times = {};
             var ajax_menu_animating = false;
-            var flash_menu = Y.lazr.anim.green_flash({node:'#ajax-time'});
+            var flash_menu = Y.lp.anim.green_flash({node:'#ajax-time'});
             flash_menu.on('end', function() {
                 ajax_menu_animating = false;
             });
@@ -62,7 +62,7 @@
                     node.prepend(log_node);
                     /* Highlight the new entry in the log.
                     */
-                    Y.lazr.anim.green_flash({
+                    Y.lp.anim.green_flash({
                         node: '#ajax-time-list li.transaction-'+transactionid
                         }).run();
                     /* Signify a new entry has been added to the log.

=== modified file 'lib/lp/app/javascript/anim/anim.js'
--- lib/lp/app/javascript/anim/anim.js	2011-06-29 14:56:15 +0000
+++ lib/lp/app/javascript/anim/anim.js	2011-08-10 08:54:16 +0000
@@ -1,8 +1,11 @@
-/* Copyright (c) 2009, Canonical Ltd. All rights reserved. */
-
-YUI.add('lazr.anim', function(Y) {
-
-Y.namespace('lazr.anim');
+/* Copyright (c) 2009-2011, Canonical Ltd. All rights reserved. */
+
+YUI.add('lp.anim', function(Y) {
+
+var namespace = Y.namespace('lp.anim'),
+    testspace = Y.namespace('lp.anim.test'),
+    attrcaller = Y.lp.extras.attrcaller;
+
 
 /**
  * @function flash_in
@@ -11,14 +14,15 @@
  * @param cfg Additional Y.Anim configuration.
  * @return Y.Anim instance
  */
-Y.lazr.anim.flash_in = function(cfg) {
-    var acfg = Y.merge(Y.lazr.anim.flash_in.defaults, cfg);
-    var anim = new Y.lazr.anim.Anim(acfg);
+var flash_in;
 
+flash_in = function(cfg) {
+    var acfg = Y.merge(flash_in.defaults, cfg);
+    var anim = new Anim(acfg);
     return anim;
 };
 
-Y.lazr.anim.flash_in.defaults = {
+flash_in.defaults = {
     duration: 1,
     easing: Y.Easing.easeIn,
     from: { backgroundColor: '#FFFF00' },
@@ -26,19 +30,20 @@
 };
 
 
-
 /**
  * @function green_flash
  * @description A green flash and fade, used to indicate new page data.
  * @param cfg Additional Y.Anim configuration.
  * @return Y.Anim instance
  */
-Y.lazr.anim.green_flash = function(cfg) {
-    return Y.lazr.anim.flash_in(
-        Y.merge(Y.lazr.anim.green_flash.defaults, cfg));
+var green_flash;
+
+green_flash = function(cfg) {
+    return flash_in(
+        Y.merge(green_flash.defaults, cfg));
 };
 
-Y.lazr.anim.green_flash.defaults = {
+green_flash.defaults = {
     from: { backgroundColor: '#90EE90' }
 };
 
@@ -49,100 +54,105 @@
  * @param cfg Additional Y.Anim configuration.
  * @return Y.Anim instance
  */
-Y.lazr.anim.red_flash = function(cfg) {
-    return Y.lazr.anim.flash_in(
-        Y.merge(Y.lazr.anim.red_flash.defaults, cfg));
+var red_flash;
+
+red_flash = function(cfg) {
+    return flash_in(
+        Y.merge(red_flash.defaults, cfg));
 };
 
-Y.lazr.anim.red_flash.defaults = {
+red_flash.defaults = {
     from: { backgroundColor: '#FF6666' }
 };
 
+
+/**
+ * Resolve a selector, Node or NodeList into a NodeList.
+ *
+ * @return {Y.NodeList}
+ */
 var resolveNodeListFrom = function(protonode) {
-    if (typeof protonode === 'string') {
-        // selector
+    if (Y.Lang.isString(protonode)) {
         return Y.all(protonode);
-    } else if (protonode._node !== undefined) {
-        // Node
+    } else if (protonode instanceof Y.Node) {
         return new Y.NodeList([protonode]);
-    } else if (protonode._nodes !== undefined) {
-        // NodeList
+    } else if (protonode instanceof Y.NodeList) {
         return protonode;
     }
-
     throw('Not a selector, Node, or NodeList');
 };
 
-/*
- * The Anim widget similar to Y.anim.Anim, but supports operating on a NodeList
+
+/**
+ * The Anim widget similar to Y.anim.Anim, but supports operating on a
+ * NodeList.
  *
  * @class Anim
  */
-Anim = function(cfg) {
-   var nodelist = resolveNodeListFrom(cfg.node);
-   this._anims = [];
-   var self = this;
-   var config = cfg;
-   Y.each(nodelist,
-          function(n) {
-              var ncfg = Y.merge(config, {node: n});
-              var anim = new Y.Anim(ncfg);
-              // We need to validate the config
-              // afterwards because some of the
-              // properties may be dynamic.
-              var to = ncfg.to;
-
-              // Check the background color to make sure
-              // it isn't 'transparent'.
-              if (to && typeof to.backgroundColor === 'function') {
-                  var bg = to.backgroundColor.call(
-                      anim, anim.get('node'));
-                  if (bg == 'transparent') {
-                      Y.error("Can not animate to a 'transparent' background " +
-                             "in '" + anim + "'");
-                  }
-              }
-
-              // Reset the background color. This is
-              // normally only necessary when the
-              // original background color of the node
-              // or its parent are not white, since we
-              // normally fade to white.
-              var original_bg = null;
-              anim.on('start', function () {
-                          original_bg = anim.get('node').getStyle('backgroundColor');
-                      });
-              anim.on('end', function () {
-                          anim.get('node').setStyle('backgroundColor', original_bg);
-                      });
-
-              self._anims.push(anim);
-          }
-         );
+var Anim = function(config) {
+    var nodelist = resolveNodeListFrom(config.node);
+    this._anims = nodelist.map(function(node) {
+        var ncfg = Y.merge(config, {node: node});
+        var anim = new Y.Anim(ncfg);
+        // We need to validate the config
+        // afterwards because some of the
+        // properties may be dynamic.
+        var to = ncfg.to;
+        // Check the background color to make sure
+        // it isn't 'transparent'.
+        if (to && Y.Lang.isFunction(to.backgroundColor)) {
+            var bg = to.backgroundColor.call(anim, anim.get('node'));
+            if (bg === 'transparent') {
+                Y.error("Can not animate to a 'transparent' background " +
+                        "in '" + anim + "'");
+            }
+        }
+        // Reset the background color. This is
+        // normally only necessary when the
+        // original background color of the node
+        // or its parent are not white, since we
+        // normally fade to white.
+        var original_bg = null;
+        anim.on('start', function () {
+            original_bg = anim.get('node').getStyle('backgroundColor');
+        });
+        anim.on('end', function () {
+            anim.get('node').setStyle('backgroundColor', original_bg);
+        });
+        return anim;
+    });
 };
 
 Anim.prototype = {
+
+    /**
+     * Run all animations.
+     */
     run: function() {
-        // delegate all behavior back to our collection of Anims
-        Y.each(this._anims,
-               function(n) {
-                   n.run();
-               }
-              );
+        Y.each(this._anims, attrcaller("run"));
     },
 
+    /**
+     * Delegate all behavior back to the collection of animations.
+     */
     on: function() {
-        // delegate all behavior back to our collection of Anims
         var args = arguments;
-        Y.each(this._anims,
-               function(n) {
-                   n.on.apply(n, args);
-               }
-              );
+        Y.each(this._anims, function(anim) {
+            anim.on.apply(anim, args);
+        });
     }
+
 };
 
-Y.lazr.anim.Anim = Anim;
-Y.lazr.anim.resolveNodeListFrom = resolveNodeListFrom;
-
-}, "0.1", {"requires":["base", "node", "anim"]});
+
+// Exports.
+namespace.Anim = Anim;
+namespace.flash_in = flash_in;
+namespace.green_flash = green_flash;
+namespace.red_flash = red_flash;
+
+// Exports for testing.
+testspace.resolveNodeListFrom = resolveNodeListFrom;
+
+
+}, "0.1", {"requires": ["base", "node", "anim", "lp.extras"]});

=== modified file 'lib/lp/app/javascript/anim/tests/test_anim.html'
--- lib/lp/app/javascript/anim/tests/test_anim.html	2011-07-08 06:06:15 +0000
+++ lib/lp/app/javascript/anim/tests/test_anim.html	2011-08-10 08:54:16 +0000
@@ -9,8 +9,10 @@
           src="../../../../../canonical/launchpad/icing/yui/yui/yui.js">
   </script>
   <link rel="stylesheet" href="../../../../app/javascript/testing/test.css" />
-  <script type="text/javascript" 
+  <script type="text/javascript"
           src="../../../../app/javascript/testing/testrunner.js"></script>
+  <script type="text/javascript"
+          src="../../extras/extras.js"></script>
 
   <!-- The module under test -->
   <script type="text/javascript" src="../anim.js"></script>
@@ -18,8 +20,10 @@
 
   <!-- The test suite -->
   <script type="text/javascript" src="test_anim.js"></script>
-
-</head>
+  </head>
 <body class="yui3-skin-sam">
+  <ul id="suites">
+    <li>lp.anim.test</li>
+  </ul>
 </body>
 </html>

=== modified file 'lib/lp/app/javascript/anim/tests/test_anim.js'
--- lib/lp/app/javascript/anim/tests/test_anim.js	2011-07-08 05:12:39 +0000
+++ lib/lp/app/javascript/anim/tests/test_anim.js	2011-08-10 08:54:16 +0000
@@ -1,58 +1,60 @@
-/* Copyright (c) 2009, Canonical Ltd. All rights reserved. */
-
-YUI().use('lp.testing.runner', 'test', 'console', 'node', 'lazr.anim',
-           'event', 'event-simulate', function(Y) {
-
-var Assert = Y.Assert;  // For easy access to isTrue(), etc.
+/* Copyright (c) 2009-2011, Canonical Ltd. All rights reserved. */
+
+YUI.add('lp.anim.test', function(Y) {
+
+var namespace = Y.namespace('lp.anim.test');
+
+var Assert = Y.Assert,  // For easy access to isTrue(), etc.
+    ArrayAssert = Y.ArrayAssert;
 
 var suite = new Y.Test.Suite("Anim Tests");
 
-suite.add(new Y.Test.Case({
-
-    name: 'anim_basics',
+var TestAnim = {
+    name: 'TestAnim',
 
     setUp: function() {
-        this.workspace = Y.one('#workspace');
-        if (!this.workspace){
-            Y.one(document.body).appendChild(Y.Node.create(
-                '<div id="workspace">'
-                + '<table id="anim-table">'
-                + '<tr id="anim-table-tr">'
-                + '<td id="anim-table-td1" style="background: #eeeeee">foo</td>'
-                + '<td id="anim-table-td2" style="background: #eeeeee">bar</td>'
-                + '</tr></table></div>'));
-            this.workspace = Y.one('#workspace');
-        }
+        this.workspace = Y.Node.create(
+            '<div id="workspace">'
+            + '<table id="anim-table">'
+            + '<tr id="anim-table-tr">'
+            + '<td id="anim-table-td1" style="background: #eeeeee">foo</td>'
+            + '<td id="anim-table-td2" style="background: #eeeeee">bar</td>'
+            + '</tr></table></div>'
+        );
+        Y.one(document.body).append(this.workspace);
     },
 
     tearDown: function() {
-        this.workspace.get('parentNode').removeChild(this.workspace);
+        this.workspace.remove(true);
     },
 
     test_resolveNodeListFrom_selector: function() {
-        var nodelist = Y.lazr.anim.resolveNodeListFrom('#anim-table-td1');
-        var nodelist_nodes = (nodelist._nodes !== undefined);
-        Assert.isTrue(nodelist_nodes, 'Not a nodelist from a selector');
+        var selector = '#anim-table-td1';
+        var nodelist = namespace.resolveNodeListFrom(selector);
+        Assert.isInstanceOf(Y.NodeList, nodelist);
+        ArrayAssert.itemsAreSame(
+            [Y.one(selector)], nodelist._nodes.map(Y.one));
     },
 
     test_resolveNodeListFrom_node: function() {
         var node = Y.one('#anim-table-td1');
-        var nodelist = Y.lazr.anim.resolveNodeListFrom(node);
-        var nodelist_nodes = (nodelist._nodes !== undefined);
-        Assert.isTrue(nodelist_nodes, 'Not a nodelist from a Node');
+        var nodelist = namespace.resolveNodeListFrom(node);
+        Assert.isInstanceOf(Y.NodeList, nodelist);
+        ArrayAssert.itemsAreSame(
+            [node], nodelist._nodes.map(Y.one));
     },
 
     test_resolveNodeListFrom_node_list: function() {
-        var nodelist = Y.all('#anim-table td');
-        var nodelist = Y.lazr.anim.resolveNodeListFrom(nodelist);
-        var nodelist_nodes = (nodelist._nodes !== undefined);
-        Assert.isTrue(nodelist_nodes, 'Not a nodelist from a NodeList');
+        var nodelist_orig = Y.all('#anim-table td');
+        var nodelist = namespace.resolveNodeListFrom(nodelist_orig);
+        Assert.isInstanceOf(Y.NodeList, nodelist);
+        Assert.areSame(nodelist, nodelist_orig);
     },
 
     test_resolveNodeListFrom_anythine_else: function() {
         var succeed = true;
         try {
-            var nodelist = Y.lazr.anim.resolveNodeListFrom(
+            var nodelist = namespace.resolveNodeListFrom(
                 {crazy: true, broken: 'definitely'});
         } catch(e) {
             succeed = false;
@@ -65,7 +67,7 @@
         // without coercion into a NodeList here
         var node = Y.one('#anim-table-td1');
         var bgcolor = node.getStyle('backgroundColor');
-        var anim = Y.lazr.anim.green_flash(
+        var anim = Y.lp.anim.green_flash(
             {node: node,
              to: {backgroundColor: bgcolor},
              duration: 0.2}
@@ -86,7 +88,7 @@
         // without coercion into a NodeList here
         var node = Y.one('#anim-table-td1');
         var bgcolor = node.getStyle('backgroundColor');
-        var anim = Y.lazr.anim.green_flash(
+        var anim = Y.lp.anim.green_flash(
             {node: '#anim-table-td1',
              to: {backgroundColor: bgcolor},
              duration: 0.2}
@@ -108,37 +110,36 @@
         var red = '#ff0000';
         var backgrounds = [];
         Y.each(nodelist, function(n) {
-                   backgrounds.push({bg: n.getStyle('backgroundColor'), node: n});
-               });
-        var anim = Y.lazr.anim.green_flash(
+            backgrounds.push({bg: n.getStyle('backgroundColor'), node: n});
+        });
+        var anim = Y.lp.anim.green_flash(
             {node: nodelist,
              to: {backgroundColor: red},
              duration: 5}
         );
         anim.run();
         this.wait(function() {
-                Assert.areNotEqual(
-                    backgrounds[0].node.getStyle('backgroundColor'),
-                    red,
-                    'background of 0 has mysteriously jumped to the end color.'
-                );
-                Assert.areNotEqual(
-                    backgrounds[1].node.getStyle('backgroundColor'),
-                    red,
-                    'background of 1 has mysteriously jumped to the end color.'
-                );
-                Assert.areNotEqual(
-                    backgrounds[0].node.getStyle('backgroundColor'),
-                    backgrounds[0].bg,
-                    'background of 0 has not changed at all.'
-                );
-                Assert.areNotEqual(
-                    backgrounds[1].node.getStyle('backgroundColor'),
-                    backgrounds[1].bg,
-                    'background of 1 has not changed at all.'
-                );
-            }, 1500
-        );
+            Assert.areNotEqual(
+                backgrounds[0].node.getStyle('backgroundColor'),
+                red,
+                'background of 0 has mysteriously jumped to the end color.'
+            );
+            Assert.areNotEqual(
+                backgrounds[1].node.getStyle('backgroundColor'),
+                red,
+                'background of 1 has mysteriously jumped to the end color.'
+            );
+            Assert.areNotEqual(
+                backgrounds[0].node.getStyle('backgroundColor'),
+                backgrounds[0].bg,
+                'background of 0 has not changed at all.'
+            );
+            Assert.areNotEqual(
+                backgrounds[1].node.getStyle('backgroundColor'),
+                backgrounds[1].bg,
+                'background of 1 has not changed at all.'
+            );
+        }, 1500);
     },
 
     test_green_flash_multi_by_selector: function() {
@@ -147,40 +148,56 @@
         var red = '#ff0000';
         var backgrounds = [];
         Y.each(nodelist, function(n) {
-                   backgrounds.push({bg: n.getStyle('backgroundColor'), node: n});
-               });
-        var anim = Y.lazr.anim.green_flash(
+            backgrounds.push({bg: n.getStyle('backgroundColor'), node: n});
+        });
+        var anim = Y.lp.anim.green_flash(
             {node: '#anim-table td',
              to: {backgroundColor: red},
              duration: 2}
         );
         anim.run();
         this.wait(function() {
-                Assert.areNotEqual(
-                    backgrounds[0].node.getStyle('backgroundColor'),
-                    red,
-                    'background of 0 has mysteriously jumped to the end color.'
-                );
-                Assert.areNotEqual(
-                    backgrounds[1].node.getStyle('backgroundColor'),
-                    red,
-                    'background of 1 has mysteriously jumped to the end color.'
-                );
-                Assert.areNotEqual(
-                    backgrounds[0].node.getStyle('backgroundColor'),
-                    backgrounds[0].bg,
-                    'background of 0 has not changed at all.'
-                );
-                Assert.areNotEqual(
-                    backgrounds[1].node.getStyle('backgroundColor'),
-                    backgrounds[1].bg,
-                    'background of 1 has not changed at all.'
-                );
-            }, 500
-        );
+            Assert.areNotEqual(
+                backgrounds[0].node.getStyle('backgroundColor'),
+                red,
+                'background of 0 has mysteriously jumped to the end color.'
+            );
+            Assert.areNotEqual(
+                backgrounds[1].node.getStyle('backgroundColor'),
+                red,
+                'background of 1 has mysteriously jumped to the end color.'
+            );
+            Assert.areNotEqual(
+                backgrounds[0].node.getStyle('backgroundColor'),
+                backgrounds[0].bg,
+                'background of 0 has not changed at all.'
+            );
+            Assert.areNotEqual(
+                backgrounds[1].node.getStyle('backgroundColor'),
+                backgrounds[1].bg,
+                'background of 1 has not changed at all.'
+            );
+        }, 500);
+    },
+
+    test_on: function() {
+        // Anim.on delegates to its component animations.
+        var targets = [];
+        var anim = new Y.lp.anim.Anim({node: "#anim-table td"});
+        Assert.areSame(2, anim._anims.length);
+        anim.on("start", function(event) { targets.push(event.target); });
+        anim.run();
+        Assert.areSame(2, targets.length);
+        ArrayAssert.containsItems(anim._anims, targets);
     }
-    }));
-
-Y.lp.testing.Runner.run(suite);
-
-});
+
+};
+
+suite.add(new Y.Test.Case(TestAnim));
+
+// Exports.
+namespace.suite = suite;
+
+}, "0.1", {"requires": [
+               'test', 'node', 'lp.anim', 'event',
+               'event-simulate']});

=== modified file 'lib/lp/app/javascript/choiceedit/choiceedit.js'
--- lib/lp/app/javascript/choiceedit/choiceedit.js	2011-06-29 14:56:15 +0000
+++ lib/lp/app/javascript/choiceedit/choiceedit.js	2011-08-10 08:54:16 +0000
@@ -282,7 +282,7 @@
      * @method _showSucceeded
      */
     _showSucceeded: function() {
-        this._uiAnimateFlash(Y.lazr.anim.green_flash);
+        this._uiAnimateFlash(Y.lp.anim.green_flash);
     },
 
     /**
@@ -292,14 +292,14 @@
      * @method _showFailed
      */
     _showFailed: function() {
-        this._uiAnimateFlash(Y.lazr.anim.red_flash);
+        this._uiAnimateFlash(Y.lp.anim.red_flash);
     },
 
     /**
      * Run a flash-in animation on the editable text node.
      *
      * @method _uiAnimateFlash
-     * @param flash_fn {Function} A lazr.anim flash-in function.
+     * @param flash_fn {Function} A lp.anim flash-in function.
      * @protected
      */
     _uiAnimateFlash: function(flash_fn) {
@@ -682,5 +682,5 @@
 },"0.2", {"skinnable": true,
           "requires": ["oop", "event", "event-delegate", "node",
                        "widget", "widget-position", "widget-stdmod",
-                       "overlay", "lazr.overlay", "lazr.anim", "lazr.base"]});
+                       "overlay", "lazr.overlay", "lp.anim", "lazr.base"]});
 

=== modified file 'lib/lp/app/javascript/choiceedit/tests/test_choiceedit.html'
--- lib/lp/app/javascript/choiceedit/tests/test_choiceedit.html	2011-07-08 06:06:15 +0000
+++ lib/lp/app/javascript/choiceedit/tests/test_choiceedit.html	2011-08-10 08:54:16 +0000
@@ -15,6 +15,7 @@
   <script type="text/javascript" src="../../lazr/lazr.js"></script>
   <script type="text/javascript" src="../../anim/anim.js"></script>
   <script type="text/javascript" src="../../overlay/overlay.js"></script>
+  <script type="text/javascript" src="../../extras/extras.js"></script>
 
   <!-- The module under test -->
   <script type="text/javascript" src="../choiceedit.js"></script>

=== modified file 'lib/lp/app/javascript/choiceedit/tests/test_choiceedit.js'
--- lib/lp/app/javascript/choiceedit/tests/test_choiceedit.js	2011-07-08 05:12:39 +0000
+++ lib/lp/app/javascript/choiceedit/tests/test_choiceedit.js	2011-08-10 08:54:16 +0000
@@ -221,9 +221,9 @@
     test_clicking_choicelist_item_does_green_flash: function() {
         simulate(this.choice_edit.get('boundingBox'), '.value', 'click');
         var that = this;
-        var green_flash = Y.lazr.anim.green_flash;
+        var green_flash = Y.lp.anim.green_flash;
         var flashed = false;
-        Y.lazr.anim.green_flash = function() {
+        Y.lp.anim.green_flash = function() {
           return {
               run: function() {
                   flashed = true;
@@ -233,7 +233,7 @@
         simulate(this.choice_edit._choice_list.get('boundingBox'),
             'li a[href$=fixreleased]', 'click');
         Assert.isTrue(flashed, "green_flash animation was not fired");
-        Y.lazr.anim.green_flash = green_flash;
+        Y.lp.anim.green_flash = green_flash;
     },
 
     test_clicking_choicelist_item_sets_page_value: function() {

=== modified file 'lib/lp/app/javascript/comment.js'
--- lib/lp/app/javascript/comment.js	2011-02-24 00:23:04 +0000
+++ lib/lp/app/javascript/comment.js	2011-08-10 08:54:16 +0000
@@ -143,7 +143,7 @@
         var comment = Y.Node.create(message_html);
         fieldset.get('parentNode').insertBefore(comment, fieldset);
         this.reset_contents();
-        Y.lazr.anim.green_flash({node: comment}).run();
+        Y.lp.anim.green_flash({node: comment}).run();
     },
     /**
      * Reset the widget to a blank state.
@@ -365,7 +365,7 @@
         var comment = Y.Node.create(message_html);
         conversation.appendChild(comment);
         this.reset_contents();
-        Y.lazr.anim.green_flash({node: comment}).run();
+        Y.lp.anim.green_flash({node: comment}).run();
     },
     renderUI: function() {
         CodeReviewComment.superclass.renderUI.apply(this);
@@ -413,7 +413,7 @@
                     var username = LP.links.me.substring(2);
                     var new_reviewer = Y.one('#review-' + username);
                     if (Y.Lang.isValue(new_reviewer)) {
-                        var anim = Y.lazr.anim.green_flash({
+                        var anim = Y.lp.anim.green_flash({
                             node: new_reviewer});
                         anim.run();
                     }

=== modified file 'lib/lp/app/javascript/errors.js'
--- lib/lp/app/javascript/errors.js	2011-04-21 13:12:07 +0000
+++ lib/lp/app/javascript/errors.js	2011-08-10 08:54:16 +0000
@@ -57,7 +57,7 @@
 var maybe_red_flash = function(flash_node, callback)
 {
     if (flash_node) {
-        var anim = Y.lazr.anim.red_flash({ node: flash_node });
+        var anim = Y.lp.anim.red_flash({ node: flash_node });
         anim.on('end', callback);
         anim.run();
     } else {
@@ -112,4 +112,4 @@
     info_overlay.show();
 };
 
-}, "0.1", {"requires":["lazr.formoverlay", "lazr.overlay", "lazr.anim"]});
+}, "0.1", {"requires":["lazr.formoverlay", "lazr.overlay", "lp.anim"]});

=== modified file 'lib/lp/app/javascript/formwidgets/formwidgets.js'
--- lib/lp/app/javascript/formwidgets/formwidgets.js	2011-08-10 08:54:15 +0000
+++ lib/lp/app/javascript/formwidgets/formwidgets.js	2011-08-10 08:54:16 +0000
@@ -160,7 +160,7 @@
     showError: function(error) {
         var message = Y.Node.create('<p />').set("text", error);
         this.fieldNode.empty().append(message);
-        Y.lazr.anim.red_flash({node: message}).run();
+        Y.lp.anim.red_flash({node: message}).run();
     }
 
 });
@@ -372,7 +372,7 @@
         // Set back again.
         this.set("choices", choices);
         // Tell everyone!
-        Y.lazr.anim.green_flash({node: this.fieldNode}).run();
+        Y.lp.anim.green_flash({node: this.fieldNode}).run();
     },
 
     /**
@@ -401,7 +401,7 @@
         // Set back again.
         this.set("choices", choices);
         // Tell everyone!
-        Y.lazr.anim.green_flash({node: this.fieldNode}).run();
+        Y.lp.anim.green_flash({node: this.fieldNode}).run();
     }
 
 });
@@ -503,5 +503,5 @@
 
 
 }, "0.1", {"requires": ["node", "dom", "io", "widget", "lp.client",
-                        "lp.extras", "lazr.anim", "array-extras",
+                        "lp.extras", "lp.anim", "array-extras",
                         "transition"]});

=== modified file 'lib/lp/app/javascript/hide_comment.js'
--- lib/lp/app/javascript/hide_comment.js	2011-05-16 19:42:48 +0000
+++ lib/lp/app/javascript/hide_comment.js	2011-08-10 08:54:16 +0000
@@ -2,7 +2,7 @@
  * GNU Affero General Public License version 3 (see the file LICENSE).
  *
  * @namespace Y.lp.comments.hide
- * @requires dom, node, lazr.anim, lp.client
+ * @requires dom, node, lp.anim, lp.client
  */
 YUI.add('lp.comments.hide', function(Y) {
 var namespace = Y.namespace('lp.comments.hide');
@@ -56,7 +56,7 @@
             comment.toggleClass(hidden_class);
             },
         failure: function () {
-            Y.lazr.anim.red_flash({node:comment});
+            Y.lp.anim.red_flash({node:comment});
             }
         });
 }
@@ -69,4 +69,4 @@
   }, '.mark-spam');
 }
 namespace.setup_hide_controls = setup_hide_controls;
-}, "0.1", {"requires": ["dom", "node", "lazr.anim", "lp.client"]});
+}, "0.1", {"requires": ["dom", "node", "lp.anim", "lp.client"]});

=== modified file 'lib/lp/app/javascript/inlineedit/editor.js'
--- lib/lp/app/javascript/inlineedit/editor.js	2011-06-29 14:56:15 +0000
+++ lib/lp/app/javascript/inlineedit/editor.js	2011-08-10 08:54:16 +0000
@@ -1230,7 +1230,7 @@
      * @protected
      */
     _uiAnimateSave: function() {
-        this._uiAnimateFlash(Y.lazr.anim.green_flash);
+        this._uiAnimateFlash(Y.lp.anim.green_flash);
     },
 
     /**
@@ -1240,14 +1240,14 @@
      * @protected.
      */
     _uiAnimateCancel: function() {
-        this._uiAnimateFlash(Y.lazr.anim.red_flash);
+        this._uiAnimateFlash(Y.lp.anim.red_flash);
     },
 
     /**
      * Run a flash-in animation on the editable text node.
      *
      * @method _uiAnimateFlash
-     * @param flash_fn {Function} A lazr.anim flash-in function.
+     * @param flash_fn {Function} A lp.anim flash-in function.
      * @protected
      */
     _uiAnimateFlash: function(flash_fn) {
@@ -1515,4 +1515,4 @@
 
 }, "0.2", {"skinnable": true,
            "requires": ["oop", "anim", "event", "node", "widget",
-                        "lazr.anim", "lazr.base"]});
+                        "lp.anim", "lazr.base"]});

=== modified file 'lib/lp/app/javascript/inlineedit/tests/test_inline_edit.html'
--- lib/lp/app/javascript/inlineedit/tests/test_inline_edit.html	2011-07-08 06:21:11 +0000
+++ lib/lp/app/javascript/inlineedit/tests/test_inline_edit.html	2011-08-10 08:54:16 +0000
@@ -16,6 +16,7 @@
   <script type="text/javascript" src="../editor.js"></script>
   <script type="text/javascript" src="../../anim/anim.js"></script>
   <script type="text/javascript" src="../../lazr/lazr.js"></script>
+  <script type="text/javascript" src="../../extras/extras.js"></script>
 
   <!-- The test suite -->
   <script type="text/javascript" src="test_inline_edit.js"></script>

=== modified file 'lib/lp/app/javascript/lp.ui.js'
--- lib/lp/app/javascript/lp.ui.js	2011-03-31 05:46:11 +0000
+++ lib/lp/app/javascript/lp.ui.js	2011-08-10 08:54:16 +0000
@@ -16,8 +16,8 @@
 
       var element = Y.one(selector);
       element.setContent(content);
-      Y.lazr.anim.green_flash({node:element}).run();
+      Y.lp.anim.green_flash({node:element}).run();
     }
 
-  }, "0.1", {"requires": ["node", "escape", "lazr.anim"]}
+  }, "0.1", {"requires": ["node", "escape", "lp.anim"]}
 );

=== modified file 'lib/lp/app/javascript/picker/picker.js'
--- lib/lp/app/javascript/picker/picker.js	2011-08-04 23:49:37 +0000
+++ lib/lp/app/javascript/picker/picker.js	2011-08-10 08:54:16 +0000
@@ -1130,6 +1130,6 @@
 }, "0.1", {"skinnable": true,
            "requires": ["oop", "escape", "event", "event-focus", "node",
                         "plugin", "substitute", "widget", "widget-stdmod",
-                        "lazr.overlay", "lazr.anim", "lazr.base",
+                        "lazr.overlay", "lp.anim", "lazr.base",
                         "lp.app.widgets.expander"]
 });

=== modified file 'lib/lp/app/javascript/picker/tests/test_personpicker.html'
--- lib/lp/app/javascript/picker/tests/test_personpicker.html	2011-07-08 06:06:15 +0000
+++ lib/lp/app/javascript/picker/tests/test_personpicker.html	2011-08-10 08:54:16 +0000
@@ -17,6 +17,7 @@
     <script type="text/javascript" src="../../anim/anim.js"></script>
     <script type="text/javascript" src="../../lazr/lazr.js"></script>
     <script type="text/javascript" src="../../overlay/overlay.js"></script>
+    <script type="text/javascript" src="../../extras/extras.js"></script>
     <script type="text/javascript" src="../picker.js"></script>
     <script type="text/javascript" src="../picker_patcher.js"></script>
 

=== modified file 'lib/lp/app/javascript/picker/tests/test_picker.html'
--- lib/lp/app/javascript/picker/tests/test_picker.html	2011-08-04 13:56:55 +0000
+++ lib/lp/app/javascript/picker/tests/test_picker.html	2011-08-10 08:54:16 +0000
@@ -19,6 +19,7 @@
   <script type="text/javascript" src="../../anim/anim.js"></script>
   <script type="text/javascript" src="../../effects/effects.js"></script>
   <script type="text/javascript" src="../../lazr/lazr.js"></script>
+  <script type="text/javascript" src="../../extras/extras.js"></script>
 
   <!-- The test suite -->
   <script type="text/javascript" src="test_picker.js"></script>

=== modified file 'lib/lp/app/javascript/picker/tests/test_picker_patcher.html'
--- lib/lp/app/javascript/picker/tests/test_picker_patcher.html	2011-07-14 06:02:51 +0000
+++ lib/lp/app/javascript/picker/tests/test_picker_patcher.html	2011-08-10 08:54:16 +0000
@@ -18,6 +18,7 @@
   <script type="text/javascript" src="../../anim/anim.js"></script>
   <script type="text/javascript" src="../../lazr/lazr.js"></script>
   <script type="text/javascript" src="../../client.js"></script>
+  <script type="text/javascript" src="../../extras/extras.js"></script>
   <script type="text/javascript" src="../picker_patcher.js"></script>
 
   <!-- The module under test -->

=== modified file 'lib/lp/app/javascript/subscribers/subscribers_list.js'
--- lib/lp/app/javascript/subscribers/subscribers_list.js	2011-08-03 03:46:20 +0000
+++ lib/lp/app/javascript/subscribers/subscribers_list.js	2011-08-10 08:54:16 +0000
@@ -1157,9 +1157,9 @@
     if (success === true || success === false) {
         var anim;
         if (success === true) {
-            anim = Y.lazr.anim.green_flash({ node: subscriber_node });
+            anim = Y.lp.anim.green_flash({ node: subscriber_node });
         } else {
-            anim = Y.lazr.anim.red_flash({ node: subscriber_node });
+            anim = Y.lp.anim.red_flash({ node: subscriber_node });
         }
         anim.on('end', callback);
         anim.run();
@@ -1167,5 +1167,5 @@
 };
 
 
-}, "0.1", {"requires": ["node", "lazr.anim", "lp.app.picker", "lp.app.errors",
+}, "0.1", {"requires": ["node", "lp.anim", "lp.app.picker", "lp.app.errors",
                         "lp.client", "lp.names"]});

=== modified file 'lib/lp/app/javascript/subscribers/tests/test_subscribers_list.html'
--- lib/lp/app/javascript/subscribers/tests/test_subscribers_list.html	2011-07-25 04:32:49 +0000
+++ lib/lp/app/javascript/subscribers/tests/test_subscribers_list.html	2011-08-10 08:54:16 +0000
@@ -35,6 +35,8 @@
       src="../../picker/picker.js"></script>
     <script type="text/javascript"
       src="../../picker/person_picker.js"></script>
+    <script type="text/javascript"
+      src="../../extras/extras.js"></script>
 
     <!-- The module under test -->
     <script type="text/javascript"

=== modified file 'lib/lp/app/javascript/subscribers/tests/test_subscribers_list.js'
--- lib/lp/app/javascript/subscribers/tests/test_subscribers_list.js	2011-08-03 03:54:51 +0000
+++ lib/lp/app/javascript/subscribers/tests/test_subscribers_list.js	2011-08-10 08:54:16 +0000
@@ -1192,13 +1192,13 @@
         this.root = Y.Node.create('<div />');
         Y.one('body').appendChild(this.root);
         // Monkey-patch animation duration to make the tests quicker.
-        this.anim_duration = Y.lazr.anim.flash_in.defaults.duration;
-        Y.lazr.anim.flash_in.defaults.duration = 0;
+        this.anim_duration = Y.lp.anim.flash_in.defaults.duration;
+        Y.lp.anim.flash_in.defaults.duration = 0;
     },
 
     tearDown: function() {
         this.root.remove();
-        Y.lazr.anim.flash_in.defaults.duration = this.anim_duration;
+        Y.lp.anim.flash_in.defaults.duration = this.anim_duration;
     },
 
     _should: {
@@ -1709,13 +1709,13 @@
         this.root = Y.Node.create('<div />');
         Y.one('body').appendChild(this.root);
         // Monkey-patch animation duration to make the tests quicker.
-        this.anim_duration = Y.lazr.anim.flash_in.defaults.duration;
-        Y.lazr.anim.flash_in.defaults.duration = 0;
+        this.anim_duration = Y.lp.anim.flash_in.defaults.duration;
+        Y.lp.anim.flash_in.defaults.duration = 0;
     },
 
     tearDown: function() {
         this.root.remove();
-        Y.lazr.anim.flash_in.defaults.duration = this.anim_duration;
+        Y.lp.anim.flash_in.defaults.duration = this.anim_duration;
     },
 
     test_unsubscribe_callback_success: function() {
@@ -1842,13 +1842,13 @@
         this.root = Y.Node.create('<div />');
         Y.one('body').appendChild(this.root);
         // Monkey-patch animation duration to make the tests quicker.
-        this.anim_duration = Y.lazr.anim.flash_in.defaults.duration;
-        Y.lazr.anim.flash_in.defaults.duration = 0;
+        this.anim_duration = Y.lp.anim.flash_in.defaults.duration;
+        Y.lp.anim.flash_in.defaults.duration = 0;
     },
 
     tearDown: function() {
         this.root.remove();
-        Y.lazr.anim.flash_in.defaults.duration = this.anim_duration;
+        Y.lp.anim.flash_in.defaults.duration = this.anim_duration;
     },
 
     test_constructor_calls_setup: function() {
@@ -2074,13 +2074,13 @@
         this.root.appendChild(link);
 
         // Monkey-patch animation duration to make the tests quicker.
-        this.anim_duration = Y.lazr.anim.flash_in.defaults.duration;
-        Y.lazr.anim.flash_in.defaults.duration = 0;
+        this.anim_duration = Y.lp.anim.flash_in.defaults.duration;
+        Y.lp.anim.flash_in.defaults.duration = 0;
     },
 
     tearDown: function() {
         this.root.remove();
-        Y.lazr.anim.flash_in.defaults.duration = this.anim_duration;
+        Y.lp.anim.flash_in.defaults.duration = this.anim_duration;
     },
 
     _setUpLoaderWithSubscribeMeLink: function(setup_config) {
@@ -2324,13 +2324,13 @@
         this.root = Y.Node.create('<div />');
         Y.one('body').appendChild(this.root);
         // Monkey-patch animation duration to make the tests quicker.
-        this.anim_duration = Y.lazr.anim.flash_in.defaults.duration;
-        Y.lazr.anim.flash_in.defaults.duration = 0;
+        this.anim_duration = Y.lp.anim.flash_in.defaults.duration;
+        Y.lp.anim.flash_in.defaults.duration = 0;
     },
 
     tearDown: function() {
         this.root.remove();
-        Y.lazr.anim.flash_in.defaults.duration = this.anim_duration;
+        Y.lp.anim.flash_in.defaults.duration = this.anim_duration;
     },
 
     test_subscribePersonURI: function() {

=== modified file 'lib/lp/blueprints/templates/specification-index.pt'
--- lib/lp/blueprints/templates/specification-index.pt	2011-04-14 22:33:16 +0000
+++ lib/lp/blueprints/templates/specification-index.pt	2011-08-10 08:54:16 +0000
@@ -319,7 +319,7 @@
     </div>
 
   <script type="text/javascript">
-    LPS.use('lazr.anim', 'lp.ui', function(Y) {
+    LPS.use('lp.anim', 'lp.ui', function(Y) {
 
         Y.on('lp:context:implementation_status:changed', function(e) {
             var icon = Y.one('#informational-icon');
@@ -337,7 +337,7 @@
             if (e.new_value) {
               started.removeClass('unseen');
               started.one('dd').setContent(e.entry.getHTML('starter'));
-              Y.lazr.anim.green_flash({node:started}).run();
+              Y.lp.anim.green_flash({node:started}).run();
             } else {
               started.addClass('unseen');
             }
@@ -347,7 +347,7 @@
             if (e.new_value) {
               completed.removeClass('unseen');
               completed.one('dd').setContent(e.entry.getHTML('completer'));
-              Y.lazr.anim.green_flash({node:completed}).run();
+              Y.lp.anim.green_flash({node:completed}).run();
             } else {
               completed.addClass('unseen');
             }

=== modified file 'lib/lp/bugs/javascript/bug_notification_level.js'
--- lib/lp/bugs/javascript/bug_notification_level.js	2011-04-28 07:35:01 +0000
+++ lib/lp/bugs/javascript/bug_notification_level.js	2011-08-10 08:54:16 +0000
@@ -5,7 +5,7 @@
  * Also used in "Edit subscription" advanced overlay.
  *
  * @namespace Y.lp.bugs.bug_notification_level
- * @requires  dom, "node, lazr.anim, lazr.effects
+ * @requires  dom, "node, lp.anim, lazr.effects
  */
 YUI.add('lp.bugs.bug_notification_level', function(Y) {
 var namespace = Y.namespace('lp.bugs.bug_notification_level');
@@ -213,4 +213,4 @@
 };
 
 }, "0.1", {"requires": ["dom", "event-custom", "node",
-                        "lazr.anim", "lazr.effects"]});
+                        "lp.anim", "lazr.effects"]});

=== modified file 'lib/lp/bugs/javascript/bug_subscription_portlet.js'
--- lib/lp/bugs/javascript/bug_subscription_portlet.js	2011-06-21 05:37:38 +0000
+++ lib/lp/bugs/javascript/bug_subscription_portlet.js	2011-08-10 08:54:16 +0000
@@ -114,7 +114,7 @@
             };
         };
     };
-    Y.lazr.anim.green_flash({ node: status }).run();
+    Y.lp.anim.green_flash({ node: status }).run();
 }
 namespace.update_subscription_status = update_subscription_status;
 
@@ -162,7 +162,7 @@
                     link.replaceClass('spinner', destination_class);
                     link.set('text', destination_text);
                     update_subscription_status();
-                    Y.lazr.anim.green_flash(
+                    Y.lp.anim.green_flash(
                         { node: link.get('parentNode') }).run();
                 },
                 failure: handler.getFailureHandler()
@@ -234,7 +234,7 @@
                             mute_link.replaceClass(
                                 UNMUTED_CLASS, MUTED_CLASS);
                             mute_link.set('text', 'Unmute bug mail');
-                            Y.lazr.anim.green_flash(
+                            Y.lp.anim.green_flash(
                                 { node: mute_link.get('parentNode') }).run();
                         } else if (method_name === 'unsubscribe') {
                             // Special case: delete cache.

=== modified file 'lib/lp/bugs/javascript/bug_tags_entry.js'
--- lib/lp/bugs/javascript/bug_tags_entry.js	2011-02-24 00:23:04 +0000
+++ lib/lp/bugs/javascript/bug_tags_entry.js	2011-08-10 08:54:16 +0000
@@ -107,7 +107,7 @@
             cancel_button.setStyle(DISPLAY, NONE);
             edit_tags_trigger.setStyle(DISPLAY, INLINE);
             tags_edit_spinner.setStyle(DISPLAY, NONE);
-            Y.lazr.anim.green_flash({ node: tag_list_span }).run();
+            Y.lp.anim.green_flash({ node: tag_list_span }).run();
             if (Y.Lang.trim(tags_html) === '') {
                 Y.one('#bug-tags').removeClass(TAGS_SHOW);
                 Y.one('#bug-tags').addClass(TAGS_HIDE);
@@ -117,7 +117,7 @@
         },
         failure: function(id, request) {
             tags_edit_spinner.setStyle(DISPLAY, NONE);
-            Y.lazr.anim.green_flash({ node: tag_list_span }).run();
+            Y.lp.anim.green_flash({ node: tag_list_span }).run();
         }
     }});
 };
@@ -135,7 +135,7 @@
     edit_tags_trigger.setStyle(DISPLAY, INLINE);
     tags_edit_spinner.setStyle(DISPLAY, NONE);
     autocomplete.hide();
-    Y.lazr.anim.red_flash({ node: tag_list_span }).run();
+    Y.lp.anim.red_flash({ node: tag_list_span }).run();
     if (Y.Lang.trim(tag_list_span.get('innerHTML')) === '') {
         Y.one('#bug-tags').removeClass(TAGS_SHOW);
         Y.one('#bug-tags').addClass(TAGS_HIDE);
@@ -241,6 +241,6 @@
     });
 };
 }, "0.1", {"requires": ["base", "io-base", "node", "substitute", "node-menunav",
-                        "lazr.base", "lazr.anim", "lazr.autocomplete",
+                        "lazr.base", "lp.anim", "lazr.autocomplete",
                         "lp.client"]});
 

=== modified file 'lib/lp/bugs/javascript/bugtask_index.js'
--- lib/lp/bugs/javascript/bugtask_index.js	2011-08-04 14:16:05 +0000
+++ lib/lp/bugs/javascript/bugtask_index.js	2011-08-10 08:54:16 +0000
@@ -243,7 +243,7 @@
                     dupe_span.one('a').set('href', update_dupe_url);
                     hide_comment_on_duplicate_warning();
                 }
-                Y.lazr.anim.green_flash({node: dupe_span}).run();
+                Y.lp.anim.green_flash({node: dupe_span}).run();
                 // ensure the new link is hooked up correctly:
                 dupe_span.one('a').on(
                     'click', function(e){
@@ -352,7 +352,7 @@
         privacy_link.setStyle('display', 'inline');
     };
     error_handler.showError = function (error_msg) {
-        Y.lazr.anim.red_flash({node: privacy_div}).run();
+        Y.lp.anim.red_flash({node: privacy_div}).run();
         privacy_form_overlay.showError(error_msg);
         privacy_form_overlay.show();
     };
@@ -422,7 +422,7 @@
                         privacy_div.removeChild(security_message);
                     }
                 }
-                Y.lazr.anim.green_flash({node: privacy_div}).run();
+                Y.lp.anim.green_flash({node: privacy_div}).run();
             },
             failure: error_handler.getFailureHandler()
         }
@@ -563,9 +563,9 @@
 
         var bug_branch_container = Y.one('#bug-branches-container');
         bug_branch_container.appendChild(bug_branch_list);
-        anim = Y.lazr.anim.green_flash({node: bug_branch_list});
+        anim = Y.lp.anim.green_flash({node: bug_branch_list});
     } else {
-        anim = Y.lazr.anim.green_flash({node: bug_branch_node});
+        anim = Y.lp.anim.green_flash({node: bug_branch_node});
     }
 
     var existing_bug_branch_node = bug_branch_list.one(
@@ -576,7 +576,7 @@
         bug_branch_list.appendChild(bug_branch_node);
     } else {
         // If the bug branch exists already, flash it.
-        anim = Y.lazr.anim.green_flash({node: existing_bug_branch_node});
+        anim = Y.lp.anim.green_flash({node: existing_bug_branch_node});
     }
     anim.run();
     // Fire of the generic branch linked event.
@@ -1082,7 +1082,7 @@
 
 }, "0.1", {"requires": ["base", "oop", "node", "event", "io-base",
                         "json-parse", "substitute", "widget-position-ext",
-                        "lazr.formoverlay", "lazr.anim", "lazr.base",
+                        "lazr.formoverlay", "lp.anim", "lazr.base",
                         "lazr.overlay", "lazr.choiceedit", "lp.app.picker",
                         "lp.client", "escape",
                         "lp.client.plugins", "lp.app.errors",

=== modified file 'lib/lp/bugs/javascript/bugtracker_overlay.js'
--- lib/lp/bugs/javascript/bugtracker_overlay.js	2011-02-24 00:23:04 +0000
+++ lib/lp/bugs/javascript/bugtracker_overlay.js	2011-08-10 08:54:16 +0000
@@ -4,7 +4,7 @@
  * A bugtracker form overlay that can create a bugtracker within any page.
  *
  * @namespace Y.lp.bugs.bugtracker_overlay
- * @requires  dom, node, io-base, lazr.anim, lazr.formoverlay
+ * @requires  dom, node, io-base, lp.anim, lazr.formoverlay
  */
 YUI.add('lp.bugs.bugtracker_overlay', function(Y) {
     Y.log('loading lp.bugs.bugtracker_overlay');
@@ -126,6 +126,6 @@
         config.activate_node.on('click', show_bugtracker_form);
     };
 
-}, "0.1", {"requires": ["dom", "node", "io-base", "lazr.anim",
+}, "0.1", {"requires": ["dom", "node", "io-base", "lp.anim",
                         "lazr.formoverlay", "lp.app.calendar", "lp.client"
     ]});

=== modified file 'lib/lp/bugs/javascript/tests/test_bug_notification_level.html'
--- lib/lp/bugs/javascript/tests/test_bug_notification_level.html	2011-07-08 06:06:15 +0000
+++ lib/lp/bugs/javascript/tests/test_bug_notification_level.html	2011-08-10 08:54:16 +0000
@@ -16,6 +16,8 @@
       src="../../../app/javascript/anim/anim.js"></script>
     <script type="text/javascript"
       src="../../../app/javascript/effects/effects.js"></script>
+    <script type="text/javascript"
+      src="../../../app/javascript/extras/extras.js"></script>
 
     <!-- The module under test -->
     <script type="text/javascript"

=== modified file 'lib/lp/bugs/javascript/tests/test_bug_subscription_portlet.html'
--- lib/lp/bugs/javascript/tests/test_bug_subscription_portlet.html	2011-07-08 06:06:15 +0000
+++ lib/lp/bugs/javascript/tests/test_bug_subscription_portlet.html	2011-08-10 08:54:16 +0000
@@ -22,6 +22,8 @@
       src="../../../app/javascript/formoverlay/formoverlay.js"></script>
     <script type="text/javascript"
       src="../../../app/javascript/overlay/overlay.js"></script>
+    <script type="text/javascript"
+      src="../../../app/javascript/extras/extras.js"></script>
 
     <!-- The module under test -->
     <script type="text/javascript"

=== modified file 'lib/lp/bugs/javascript/tests/test_subscribers.html'
--- lib/lp/bugs/javascript/tests/test_subscribers.html	2011-07-25 04:32:49 +0000
+++ lib/lp/bugs/javascript/tests/test_subscribers.html	2011-08-10 08:54:16 +0000
@@ -36,6 +36,8 @@
       src="../../../app/javascript/picker/person_picker.js"></script>
     <script type="text/javascript"
       src="../../../app/javascript/subscribers/subscribers_list.js"></script>
+    <script type="text/javascript"
+      src="../../../app/javascript/extras/extras.js"></script>
 
     <!-- The module under test -->
     <script type="text/javascript"

=== modified file 'lib/lp/bugs/javascript/tests/test_subscription.html'
--- lib/lp/bugs/javascript/tests/test_subscription.html	2011-07-08 06:06:15 +0000
+++ lib/lp/bugs/javascript/tests/test_subscription.html	2011-08-10 08:54:16 +0000
@@ -23,6 +23,8 @@
       src="../../../app/javascript/formoverlay/formoverlay.js"></script>
     <script type="text/javascript"
       src="../../../app/javascript/overlay/overlay.js"></script>
+    <script type="text/javascript"
+      src="../../../app/javascript/extras/extras.js"></script>
 
     <!-- The module under test -->
     <script type="text/javascript"

=== modified file 'lib/lp/bugs/javascript/tests/test_subscription.js'
--- lib/lp/bugs/javascript/tests/test_subscription.js	2011-06-22 18:53:35 +0000
+++ lib/lp/bugs/javascript/tests/test_subscription.js	2011-08-10 08:54:16 +0000
@@ -2408,7 +2408,7 @@
         // The page has rendered the error overlay.
         var error_box = Y.one('.yui3-lazr-formoverlay-errors');
         // The way the LP error display works now is that it flashes the
-        // problem area red for 1 second (the lazr.anim default), and
+        // problem area red for 1 second (the lp.anim default), and
         // *then* shows the overlay.
         this.wait(
             function () {

=== modified file 'lib/lp/code/javascript/branch.bugspeclinks.js'
--- lib/lp/code/javascript/branch.bugspeclinks.js	2011-08-04 08:10:54 +0000
+++ lib/lp/code/javascript/branch.bugspeclinks.js	2011-08-10 08:54:16 +0000
@@ -4,7 +4,7 @@
  * Code for handling links to branches from bugs and specs.
  *
  * @module BranchLinks
- * @requires base, lazr.anim, lazr.formoverlay
+ * @requires base, lp.anim, lazr.formoverlay
  */
 
 YUI.add('lp.code.branch.bugspeclinks', function(Y) {
@@ -117,7 +117,7 @@
     var existing = Y.one('#buglink-' + bugnumber);
     if (Y.Lang.isValue(existing)) {
         // Bug is already linked, don't do unneccessary requests.
-        Y.lazr.anim.green_flash({node: existing}).run();
+        Y.lp.anim.green_flash({node: existing}).run();
         return;
     }
 
@@ -165,7 +165,7 @@
                 Y.one('#buglink-list')
                     .set('innerHTML', response.responseText);
                 var new_buglink = Y.one('#buglink-' + bug.get('id'));
-                var anim = Y.lazr.anim.green_flash({node: new_buglink});
+                var anim = Y.lp.anim.green_flash({node: new_buglink});
                 anim.on('end', connect_remove_links);
                 anim.run();
             },
@@ -196,7 +196,7 @@
                 success: function(updated_entry) {
                     var element = Y.one('#buglink-' + bugnumber);
                     var parent_element = element.get('parentNode');
-                    anim = Y.lazr.anim.red_flash({node: element});
+                    anim = Y.lp.anim.red_flash({node: element});
                     anim.on('end', function() {
                         parent_element.removeChild(element);
 
@@ -292,5 +292,5 @@
 
 }
 
-}, "0.1", {"requires": ["base", "lazr.anim", "lazr.formoverlay",
+}, "0.1", {"requires": ["base", "lp.anim", "lazr.formoverlay",
                         "lp.client", "lp.client.plugins"]});

=== modified file 'lib/lp/code/javascript/branch.subscription.js'
--- lib/lp/code/javascript/branch.subscription.js	2011-05-18 18:34:19 +0000
+++ lib/lp/code/javascript/branch.subscription.js	2011-08-10 08:54:16 +0000
@@ -178,7 +178,7 @@
                     success: function(id, response) {
                         Y.one('#branch-subscribers-outer').set(
                             'innerHTML', response.responseText);
-                        var anim = Y.lazr.anim.green_flash({
+                        var anim = Y.lp.anim.green_flash({
                             node: Y.one('#subscriber-' + user_name)
                         });
                         anim.run();
@@ -186,7 +186,7 @@
                     failure: function(id, response) {
                         Y.one('#branch-subscribers-outer').set(
                             'innerHTML', 'A problem has occurred.');
-                        var anim = Y.lazr.anim.red_flash({
+                        var anim = Y.lp.anim.red_flash({
                             node: Y.one('#branch-subscribers-outer')
                         });
                         anim.run();

=== modified file 'lib/lp/code/javascript/branchmergeproposal.reviewcomment.js'
--- lib/lp/code/javascript/branchmergeproposal.reviewcomment.js	2011-02-24 00:23:04 +0000
+++ lib/lp/code/javascript/branchmergeproposal.reviewcomment.js	2011-08-10 08:54:16 +0000
@@ -4,7 +4,7 @@
  * Library for code review javascript.
  *
  * @module lp.code.branchmergeproposal.reviewcomment
- * @requires base, lazr.anim, lazr.formoverlay
+ * @requires base, lp.anim, lazr.formoverlay
  */
 
 YUI.add('lp.code.branchmergeproposal.reviewcomment', function(Y) {
@@ -122,11 +122,11 @@
         link.removeClass('unseen');
         if (saved) {
             // Flash green.
-            Y.lazr.anim.green_flash({node:link}).run();
+            Y.lp.anim.green_flash({node:link}).run();
         }
         else {
             // Flash red.
-            Y.lazr.anim.red_flash({node:link}).run();
+            Y.lp.anim.red_flash({node:link}).run();
         }
     }
 }
@@ -233,7 +233,7 @@
 
                 namespace.connect_links();
                 var new_reviewer = Y.one('#review-' + username);
-                var anim = Y.lazr.anim.green_flash({node: new_reviewer});
+                var anim = Y.lp.anim.green_flash({node: new_reviewer});
                 anim.run();
             },
             failure: function() {}
@@ -280,5 +280,5 @@
 
 namespace.NumberToggle = NumberToggle;
 
-}, "0.1", {"requires": ["base", "widget", "lazr.anim",
+}, "0.1", {"requires": ["base", "widget", "lp.anim",
                         "lazr.formoverlay", "lp.app.picker", "lp.client"]});

=== modified file 'lib/lp/code/javascript/requestbuild_overlay.js'
--- lib/lp/code/javascript/requestbuild_overlay.js	2011-03-23 05:35:01 +0000
+++ lib/lp/code/javascript/requestbuild_overlay.js	2011-08-10 08:54:16 +0000
@@ -4,7 +4,7 @@
  * A form overlay that can request builds for a recipe..
  *
  * @namespace Y.lp.code.recipebuild_overlay
- * @requires  dom, node, io-base, lazr.anim, lazr.formoverlay
+ * @requires  dom, node, io-base, lp.anim, lazr.formoverlay
  */
 YUI.add('lp.code.requestbuild_overlay', function(Y) {
 
@@ -239,7 +239,7 @@
             return;
         nr_new_builds += 1;
         var row = Y.one('#'+row_id);
-        var anim = Y.lazr.anim.green_flash({node: row});
+        var anim = Y.lp.anim.green_flash({node: row});
         anim.run();
     });
     return nr_new_builds;
@@ -489,6 +489,6 @@
             LP.cache.context.self_link, 'getPendingBuildInfo', y_config);
 }
 }, "0.1", {"requires": [
-    "dom", "node", "escape", "io-base", "lazr.anim", "lazr.formoverlay",
+    "dom", "node", "escape", "io-base", "lp.anim", "lazr.formoverlay",
     "lp.client"
     ]});

=== modified file 'lib/lp/registry/javascript/distroseries/tests/test_differences.html'
--- lib/lp/registry/javascript/distroseries/tests/test_differences.html	2011-07-27 19:34:02 +0000
+++ lib/lp/registry/javascript/distroseries/tests/test_differences.html	2011-08-10 08:54:16 +0000
@@ -29,6 +29,8 @@
           src="../../../../app/javascript/picker/person_picker.js"></script>
   <script type="text/javascript"
           src="../../../../app/javascript/picker/picker_patcher.js"></script>
+  <script type="text/javascript"
+          src="../../../../app/javascript/extras/extras.js"></script>
 
   <!-- The module under test -->
   <script type="text/javascript"

=== modified file 'lib/lp/registry/javascript/distroseries/widgets.js'
--- lib/lp/registry/javascript/distroseries/widgets.js	2011-08-10 08:54:15 +0000
+++ lib/lp/registry/javascript/distroseries/widgets.js	2011-08-10 08:54:16 +0000
@@ -202,7 +202,7 @@
         var node = this.fieldNode.one("tr#parent-" + parent_id);
         var other = node.next('tr.parent');
         if (other !== null) { node.swap(other);}
-        Y.lazr.anim.green_flash({node: node}).run();
+        Y.lp.anim.green_flash({node: node}).run();
     },
 
     /**
@@ -214,7 +214,7 @@
         var node = this.fieldNode.one("tr#parent-" + parent_id);
         var other = node.previous('tr.parent');
         if (other !== null) { node.swap(other);}
-        Y.lazr.anim.green_flash({node: node}).run();
+        Y.lp.anim.green_flash({node: node}).run();
     },
 
     /**
@@ -242,7 +242,7 @@
     disable_overlay: function(parent_node) {
         var overlay = parent_node.one('input.overlay');
         if (overlay.get('disabled') !== 'disabled') {
-            Y.lazr.anim.red_flash({node: parent_node}).run();
+            Y.lp.anim.red_flash({node: parent_node}).run();
             parent_node.one('input.overlay').set('disabled','disabled');
         }
     },
@@ -259,7 +259,7 @@
         }
         var item = this.fieldNode.one('tr#parent-' + parent.value);
         if (item !== null) {
-            Y.lazr.anim.red_flash({node: item}).run();
+            Y.lp.anim.red_flash({node: item}).run();
             return false;
         }
         item =  Y.Node.create("<tr />")
@@ -310,7 +310,7 @@
             return false;
         }, this);
 
-        Y.lazr.anim.green_flash({node: item}).run();
+        Y.lp.anim.green_flash({node: item}).run();
         return true;
     }
 });
@@ -569,7 +569,7 @@
         this._cleanDisplay();
         /* Green-flash when the set of choices is changed. */
         this.after("choicesChange", function(e) {
-            Y.lazr.anim.green_flash({node: this.fieldNode}).run();
+            Y.lp.anim.green_flash({node: this.fieldNode}).run();
         });
         /* _packagesets maps each distroseries' id to a collection of
            ids of its packagesets. It's populated each time a new
@@ -586,5 +586,5 @@
 
 }, "0.1", {"requires": [
                "node", "dom", "io", "widget", "lp.client",
-               "lp.app.formwidgets", "lazr.anim", "array-extras",
+               "lp.app.formwidgets", "lp.anim", "array-extras",
                "substitute", "transition"]});

=== modified file 'lib/lp/registry/javascript/distroseriesdifferences_details.js'
--- lib/lp/registry/javascript/distroseriesdifferences_details.js	2011-06-21 14:34:49 +0000
+++ lib/lp/registry/javascript/distroseriesdifferences_details.js	2011-08-10 08:54:16 +0000
@@ -106,10 +106,10 @@
                 success: function(comment_latest_fragment_html) {
                     placeholder.set(
                         "innerHTML", comment_latest_fragment_html);
-                    Y.lazr.anim.green_flash({node: placeholder}).run();
+                    Y.lp.anim.green_flash({node: placeholder}).run();
                 },
                 failure: function(id, response) {
-                    Y.lazr.anim.red_flash({node: placeholder}).run();
+                    Y.lp.anim.red_flash({node: placeholder}).run();
                 }
             },
             accept: Y.lp.client.XHTML
@@ -139,7 +139,7 @@
 
         // Treat empty comments as mistakes.
         if (Y.Lang.trim(comment_text).length === 0) {
-            Y.lazr.anim.red_flash({node: comment_area}).run();
+            Y.lp.anim.red_flash({node: comment_area}).run();
             return;
         }
 
@@ -153,7 +153,7 @@
                         comment_form.insert(comment_node, 'before');
                         var reveal = Y.lazr.effects.slide_out(comment_node);
                         reveal.on("end", function() {
-                            Y.lazr.anim.green_flash(
+                            Y.lp.anim.green_flash(
                                 {node: comment_node}).run();
                         });
                         reveal.run();
@@ -168,7 +168,7 @@
         };
         var failure_handler = function(id, response) {
             // Re-enable field with red flash.
-            Y.lazr.anim.red_flash({node: comment_form}).run();
+            Y.lp.anim.red_flash({node: comment_form}).run();
         };
 
         var config = {
@@ -334,7 +334,7 @@
                 'Failed to fetch difference details.', retry_handler);
             container.insert(failure_message, 'replace');
 
-            var anim = Y.lazr.anim.red_flash({
+            var anim = Y.lp.anim.red_flash({
                  node: args.container
                  });
             anim.run();
@@ -495,7 +495,7 @@
             var name = state_and_name.title;
             if (state === 'FAILED') {
                 set_package_diff_status(container, 'FAILED', name);
-                Y.lazr.anim.red_flash({node: container}).run();
+                Y.lp.anim.red_flash({node: container}).run();
              }
             else if (state === 'COMPLETED') {
                 set_package_diff_status(container, 'COMPLETED');
@@ -504,7 +504,7 @@
                     parent ? 'parent_package_diff_url' : 'package_diff_url'
                     ].join('/');
                 namespace.add_link_to_package_diff(container, url_uri);
-                Y.lazr.anim.green_flash({node: container}).run();
+                Y.lp.anim.green_flash({node: container}).run();
              }
         },
 
@@ -601,7 +601,7 @@
             set_package_diff_status(sub_container, 'PENDING', 'Pending');
             // Setup polling
             namespace.setup_pending_package_diff(sub_container, dsd_link);
-            var anim = Y.lazr.anim.green_flash({
+            var anim = Y.lp.anim.green_flash({
                 node: sub_container
             });
             anim.run();
@@ -639,5 +639,5 @@
 
 }, "0.1", {"requires": ["event-simulate", "io-base",
                         "lp.soyuz.base", "lp.client",
-                        "lazr.anim", "lazr.effects",
+                        "lp.anim", "lazr.effects",
                         "lp.soyuz.dynamic_dom_updater"]});

=== modified file 'lib/lp/registry/javascript/milestoneoverlay.js'
--- lib/lp/registry/javascript/milestoneoverlay.js	2011-02-24 00:23:04 +0000
+++ lib/lp/registry/javascript/milestoneoverlay.js	2011-08-10 08:54:16 +0000
@@ -4,7 +4,7 @@
  * A milestone form overlay that can create a milestone within any page.
  *
  * @module Y.lp.registry.milestoneoverlay
- * @requires  dom, node, io-base, lazr.anim, lazr.formoverlay
+ * @requires  dom, node, io-base, lp.anim, lazr.formoverlay
  */
 YUI.add('lp.registry.milestoneoverlay', function(Y) {
     Y.log('loading lp.registry.milestoneoverlay');
@@ -120,7 +120,7 @@
 }, "0.1", {"requires": ["dom",
                         "node",
                         "io-base",
-                        "lazr.anim",
+                        "lp.anim",
                         "lazr.formoverlay",
                         "lp.app.calendar",
                         "lp.client"

=== modified file 'lib/lp/registry/javascript/milestonetable.js'
--- lib/lp/registry/javascript/milestonetable.js	2010-04-29 15:21:05 +0000
+++ lib/lp/registry/javascript/milestonetable.js	2011-08-10 08:54:16 +0000
@@ -4,7 +4,7 @@
  * Dynamically add milestones to an HTML table.
  *
  * @module Y.lp.registry.milestonetable
- * @requires node, io-base, substitute, lazr.anim
+ * @requires node, io-base, substitute, lp.anim
  */
 YUI.add('lp.registry.milestonetable', function(Y) {
     Y.log('loading lp.registry.milestonetable');
@@ -44,7 +44,7 @@
         var row = Y.Node.create(Y.Lang.trim(response.responseText));
         module._ensure_table_is_seen(data.tbody);
         module._prepend_node(data.tbody, row);
-        Y.lazr.anim.green_flash({node: row}).run();
+        Y.lp.anim.green_flash({node: row}).run();
         module._clear_add_handlers(data);
         };
 
@@ -55,7 +55,7 @@
             'Could not retrieve milestone {name}</td></tr>', data));
         module._ensure_table_is_seen(data.tbody);
         module._prepend_node(data.tbody, row);
-        Y.lazr.anim.red_flash({node: row}).run();
+        Y.lp.anim.red_flash({node: row}).run();
         module._clear_add_handlers(data);
         };
 
@@ -117,5 +117,5 @@
         };
 
 }, "0.1", {"requires": [
-    "node", "io-base", "substitute", "lazr.anim"
+    "node", "io-base", "substitute", "lp.anim"
     ]});

=== modified file 'lib/lp/registry/javascript/structural-subscription.js'
--- lib/lp/registry/javascript/structural-subscription.js	2011-06-16 13:50:58 +0000
+++ lib/lp/registry/javascript/structural-subscription.js	2011-08-10 08:54:16 +0000
@@ -920,7 +920,7 @@
     input.on('change', function(e) {
         var error_text = validator(input.get('value'));
         if (error_text !== null) {
-            Y.lazr.anim.red_flash({node: input}).run();
+            Y.lp.anim.red_flash({node: input}).run();
             error_container.setContent(error_text);
             overlay.field_errors[field_name] = true;
             // Accordion sets fixed height for the accordion item,
@@ -1760,7 +1760,7 @@
             wire_up_edit_links_for_filter(
                 config, subscription_info, 0,
                 filter_info, filter_id, anim_node);
-            Y.lazr.anim.green_flash({node: anim_node}).run();
+            Y.lp.anim.green_flash({node: anim_node}).run();
         } else {
             // Since there is no filter description to update we need another
             // way to tell the user that the subscription was sucessfully
@@ -1867,6 +1867,6 @@
 }; // setup
 
 }, '0.1', {requires: [
-    'dom', 'node', 'lazr.anim', 'lazr.formoverlay', 'lazr.overlay',
+    'dom', 'node', 'lp.anim', 'lazr.formoverlay', 'lazr.overlay',
     'lazr.effects', 'lp.app.errors', 'lp.client', 'gallery-accordion'
 ]});

=== modified file 'lib/lp/registry/javascript/team.js'
--- lib/lp/registry/javascript/team.js	2011-02-24 00:23:04 +0000
+++ lib/lp/registry/javascript/team.js	2011-08-10 08:54:16 +0000
@@ -104,7 +104,7 @@
                         '<li>' + person_html + '</li>');
                     members_section.removeClass('unseen');
                     members_ul.insertBefore(person_repr, first_node);
-                    anim = Y.lazr.anim.green_flash({node: person_repr});
+                    anim = Y.lp.anim.green_flash({node: person_repr});
                     anim.run();
                     disable_spinner();
                 };
@@ -134,7 +134,7 @@
 };
 
 }, '0.1', {requires: ['node',
-                      'lazr.anim',
+                      'lp.anim',
                       'lp.app.errors',
                       'lp.app.picker',
                       'lp.client',

=== modified file 'lib/lp/registry/javascript/tests/test_distroseriesdifferences_details.js'
--- lib/lp/registry/javascript/tests/test_distroseriesdifferences_details.js	2011-07-08 05:12:39 +0000
+++ lib/lp/registry/javascript/tests/test_distroseriesdifferences_details.js	2011-08-10 08:54:16 +0000
@@ -3,7 +3,7 @@
 
 YUI().use(
         'lp.testing.runner', 'test', 'console', 'node-event-simulate',
-        'lp.soyuz.base', "lazr.anim", "lazr.effects",
+        'lp.soyuz.base', "lp.anim", "lazr.effects",
         'lp.soyuz.dynamic_dom_updater', 'event-simulate', "io-base",
         'lp.registry.distroseriesdifferences_details', function(Y) {
 

=== modified file 'lib/lp/registry/javascript/tests/test_milestone_table.html'
--- lib/lp/registry/javascript/tests/test_milestone_table.html	2011-07-08 06:06:15 +0000
+++ lib/lp/registry/javascript/tests/test_milestone_table.html	2011-08-10 08:54:16 +0000
@@ -13,6 +13,8 @@
 
   <script type="text/javascript"
     src="../../../app/javascript/anim/anim.js"></script>
+  <script type="text/javascript"
+    src="../../../app/javascript/extras/extras.js"></script>
 
   <!-- The module under test -->
   <script type="text/javascript" src="../milestonetable.js"></script>

=== modified file 'lib/lp/registry/javascript/tests/test_structural_subscription.html'
--- lib/lp/registry/javascript/tests/test_structural_subscription.html	2011-07-08 06:06:15 +0000
+++ lib/lp/registry/javascript/tests/test_structural_subscription.html	2011-08-10 08:54:16 +0000
@@ -25,6 +25,8 @@
   <script type="text/javascript"
     src="../../../app/javascript/errors.js"></script>
   <script type="text/javascript"
+    src="../../../app/javascript/extras/extras.js"></script>
+  <script type="text/javascript"
     src="../../../contrib/javascript/yui3-gallery/gallery-accordion/gallery-accordion.js">
   </script>
   <script type="text/javascript"

=== modified file 'lib/lp/registry/templates/productrelease-add-from-series.pt'
--- lib/lp/registry/templates/productrelease-add-from-series.pt	2010-10-10 21:54:16 +0000
+++ lib/lp/registry/templates/productrelease-add-from-series.pt	2011-08-10 08:54:16 +0000
@@ -41,7 +41,7 @@
             var last_index = children.size() - 1;
             children.item(last_index).set('selected', true);
             var div = select_menu.ancestor();
-            Y.lazr.anim.green_flash({node: div}).run();
+            Y.lp.anim.green_flash({node: div}).run();
         };
 
         Y.on('domready', function () {

=== modified file 'lib/lp/soyuz/javascript/update_archive_build_statuses.js'
--- lib/lp/soyuz/javascript/update_archive_build_statuses.js	2011-02-24 00:23:04 +0000
+++ lib/lp/soyuz/javascript/update_archive_build_statuses.js	2011-08-10 08:54:16 +0000
@@ -48,7 +48,7 @@
                         // If the value changed, just put a quick anim
                         // on the parent row.
                         if (previous_value != data_value.toString()){
-                            var anim = Y.lazr.anim.green_flash({
+                            var anim = Y.lp.anim.green_flash({
                                 node: node.get("parentNode")
                             });
                             anim.run();
@@ -205,7 +205,7 @@
 
                 // Finally, add an animation if we've changed...
                 if (td_ui_changed) {
-                    var anim = Y.lazr.anim.green_flash({node: td_elem});
+                    var anim = Y.lp.anim.green_flash({node: td_elem});
                     anim.run();
                 }
 
@@ -282,6 +282,6 @@
     });
 }, "0.1", {"requires":["anim",
                        "node",
-                       "lazr.anim",
+                       "lp.anim",
                        "lp.client",
                        "lp.soyuz.dynamic_dom_updater"]});

=== modified file 'lib/lp/soyuz/templates/archive-macros.pt'
--- lib/lp/soyuz/templates/archive-macros.pt	2011-07-18 09:23:10 +0000
+++ lib/lp/soyuz/templates/archive-macros.pt	2011-08-10 08:54:16 +0000
@@ -10,7 +10,7 @@
   </tal:comment>
 
 <script type="text/javascript">
-LPS.use('node', 'io-base', 'lazr.anim', 'lp.soyuz.base',
+LPS.use('node', 'io-base', 'lp.anim', 'lp.soyuz.base',
         'lp.app.widgets.expander', function(Y) {
 
 
@@ -24,7 +24,7 @@
 
     args.expander.receive(failure_message);
 
-    var anim = Y.lazr.anim.red_flash({
+    var anim = Y.lp.anim.red_flash({
         node: args.expander.content_node
         });
     anim.run();

=== modified file 'lib/lp/soyuz/templates/archive-packages.pt'
--- lib/lp/soyuz/templates/archive-packages.pt	2011-04-08 11:49:20 +0000
+++ lib/lp/soyuz/templates/archive-packages.pt	2011-08-10 08:54:16 +0000
@@ -10,7 +10,7 @@
     <metal:block fill-slot="head_epilogue">
       <script type="text/javascript" id="repository-size-update"
               tal:condition="view/archive_url">
-LPS.use('io-base', 'lazr.anim', 'node', 'lp.soyuz.base',
+LPS.use('io-base', 'lp.anim', 'node', 'lp.soyuz.base',
           'lp.soyuz.update_archive_build_statuses', function(Y) {
 
 
@@ -38,7 +38,7 @@
     args.container.set('innerHTML', '');
     args.container.appendChild(failure_message);
 
-    var anim = Y.lazr.anim.red_flash({
+    var anim = Y.lp.anim.red_flash({
         node: failure_message
         });
     anim.run();

=== modified file 'lib/lp/translations/javascript/importqueueentry.js'
--- lib/lp/translations/javascript/importqueueentry.js	2010-08-06 06:51:37 +0000
+++ lib/lp/translations/javascript/importqueueentry.js	2011-08-10 08:54:16 +0000
@@ -2,7 +2,7 @@
  * GNU Affero General Public License version 3 (see the file LICENSE).
  *
  * @module lp.translations.importqueueentry
- * @requires node, lazr.anim
+ * @requires node, lp.anim
  */
 
 YUI.add('lp.translations.importqueueentry', function(Y) {
@@ -157,7 +157,7 @@
     if (interactively) {
         // Animate revealed fields.
         var animateElement = function (element) {
-            Y.lazr.anim.green_flash({node: element}).run();
+            Y.lp.anim.green_flash({node: element}).run();
         };
         alterFields(file_type, animateElement);
     }
@@ -254,4 +254,4 @@
     file_type_field.on('change', handleFileTypeChange);
 };
 
-}, "0.1", {"requires": ['node', 'lazr.anim']});
+}, "0.1", {"requires": ['node', 'lp.anim']});

=== modified file 'lib/lp/translations/javascript/sourcepackage_sharing_details.js'
--- lib/lp/translations/javascript/sourcepackage_sharing_details.js	2011-07-27 18:41:24 +0000
+++ lib/lp/translations/javascript/sourcepackage_sharing_details.js	2011-08-10 08:54:16 +0000
@@ -530,7 +530,7 @@
     },
     flash_check_green: function(check) {
         var element = Y.one(this.visible_check_selector(check));
-        var anim = Y.lazr.anim.green_flash({node: element});
+        var anim = Y.lp.anim.green_flash({node: element});
         anim.run();
     }
 });
@@ -627,4 +627,4 @@
 };
 }, "0.1", {"requires": [
     'lp', 'lp.app.errors', 'lp.app.picker', 'oop', 'lp.client',
-    'lazr.anim']});
+    'lp.anim']});

=== modified file 'lib/lp/translations/javascript/tests/test_sourcepackage_sharing_details.html'
--- lib/lp/translations/javascript/tests/test_sourcepackage_sharing_details.html	2011-07-15 20:47:42 +0000
+++ lib/lp/translations/javascript/tests/test_sourcepackage_sharing_details.html	2011-08-10 08:54:16 +0000
@@ -13,6 +13,8 @@
     <script type="text/javascript" src="../../../app/javascript/client.js"></script>
     <script type="text/javascript" src="../../../app/javascript/lp.js"></script>
     <script type="text/javascript" src="../../../app/javascript/anim/anim.js"></script>
+    <script type="text/javascript"
+            src="../../../app/javascript/extras/extras.js"></script>
 
     <!-- The module under test -->
     <script type="text/javascript" src="../sourcepackage_sharing_details.js"></script>