docs: function _highlight(node, onComplete) {
  
          // the first argument can be an Event or a DOM Element
          // I was originally checking instanceof Event but that makes it break
          // when using mootools
          //
          // @see https://github.com/ccampbell/rainbow/issues/32
          //
          node = node && typeof node.getElementsByTagName == 'function' ? node : document;
  
          var pre_blocks = node.getElementsByTagName('pre'),
              code_blocks = node.getElementsByTagName('code'),
              i,
              final_blocks = [];
  
          // @see http://stackoverflow.com/questions/2735067/how-to-convert-a-dom-node-list-to-an-array-in-javascript
          // we are going to process all <code> blocks
          for (i = 0; i < code_blocks.length; ++i) {
              final_blocks.push(code_blocks[i]);
          }
  
          // loop through the pre blocks to see which ones we should add
          for (i = 0; i < pre_blocks.length; ++i) {
  
              // if the pre block has no code blocks then process it directly
              if (!pre_blocks[i].getElementsByTagName('code').length) {
                  final_blocks.push(pre_blocks[i]);
              }
          }
  
          _highlightCodeBlock(final_blocks, 0, onComplete);
      }