examples/weather/angular.js
function(element, parent, after, done) {
        var afterNode = after && after[after.length - 1];
        var parentNode = parent && parent[0] || afterNode && afterNode.parentNode;
        // IE does not like undefined so we have to pass null.
        var afterNextSibling = (afterNode && afterNode.nextSibling) || null;
        forEach(element, function(node) {
          parentNode.insertBefore(node, afterNextSibling);
        });
        done && $timeout(done, 0, false);
      }
function(element, parent, after, done) {
        var afterNode = after && after[after.length - 1];
        var parentNode = parent && parent[0] || afterNode && afterNode.parentNode;
        // IE does not like undefined so we have to pass null.
        var afterNextSibling = (afterNode && afterNode.nextSibling) || null;
        forEach(element, function(node) {
          parentNode.insertBefore(node, afterNextSibling);
        });
        done && $timeout(done, 0, false);
      }
@ngdoc function
@name ng.$animate#enter
@methodOf ng.$animate
@function

@description
Inserts the element into the DOM either after the `after` element or within the `parent` element. Once complete,
the done() callback will be fired (if provided).

@param {jQuery/jqLite element} element the element which will be inserted into the DOM
@param {jQuery/jqLite element} parent the parent element which will append the element as a child (if the after element is not present)
@param {jQuery/jqLite element} after the sibling element which will append the element after itself
@param {function=} done callback function that will be called after the element has been inserted into the DOM