<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[13263] trunk: Move autocomplete to standard jquery directory.</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/13263">13263</a></dd>
<dt>Author</dt> <dd>ryan</dd>
<dt>Date</dt> <dd>2010-02-20 23:35:05 +0000 (Sat, 20 Feb 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move autocomplete to standard jquery directory. Use core jQuery.  Use jQuery instead of $. see <a href="http://trac.wordpress.org/ticket/11817">#11817</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadmincustomnavigationphp">trunk/wp-admin/custom-navigation.php</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkwpincludesjsjqueryautocompletedevjs">trunk/wp-includes/js/jquery/autocomplete.dev.js</a></li>
<li><a href="#trunkwpincludesjsjqueryautocompletejs">trunk/wp-includes/js/jquery/autocomplete.js</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkwpadminjscustomnavigationcustomjqueryautocompletedevjs">trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.dev.js</a></li>
<li><a href="#trunkwpadminjscustomnavigationcustomjqueryautocompletejs">trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadmincustomnavigationphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/custom-navigation.php (13262 => 13263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/custom-navigation.php        2010-02-20 23:18:57 UTC (rev 13262)
+++ trunk/wp-admin/custom-navigation.php        2010-02-20 23:35:05 UTC (rev 13263)
</span><span class="lines">@@ -13,11 +13,11 @@
</span><span class="cx"> require_once('admin.php');
</span><span class="cx"> 
</span><span class="cx"> wp_admin_css( 'custom-navigation' );
</span><del>-wp_enqueue_script( 'custom-navigation-jquery' );
</del><ins>+wp_enqueue_script( 'jquery' );
</ins><span class="cx"> wp_enqueue_script( 'custom-navigation-ui-custom' );
</span><span class="cx"> wp_enqueue_script( 'custom-navigation-dynamic-functions' );
</span><span class="cx"> wp_enqueue_script( 'custom-navigation-default-items' );
</span><del>-wp_enqueue_script( 'custom-navigation-autocomplete' );
</del><ins>+wp_enqueue_script( 'jquery-autocomplete' );
</ins><span class="cx"> wp_enqueue_script( 'custom-navigation-php-functions' );
</span><span class="cx"> wp_enqueue_script( 'jquery-ui-dialog' );
</span><span class="cx"> 
</span><span class="lines">@@ -27,17 +27,6 @@
</span><span class="cx"> wp_custom_navigation();
</span><span class="cx"> 
</span><span class="cx"> function wp_custom_nav_reset() {
</span><del>-        
-        global $wpdb;
-        
-        $table_name = $wpdb-&gt;prefix . &quot;custom_nav_records&quot;;                  
-        //DROP existing menu records
-        $wpdb-&gt;query(&quot;DELETE FROM &quot;.$table_name);
-        
-        $table_name_menus = $wpdb-&gt;prefix . &quot;custom_nav_menus&quot;;                  
-        //DELETE existing menus
-        $wpdb-&gt;query(&quot;DELETE FROM &quot;.$table_name_menus);
-        
</del><span class="cx">         wp_custom_navigation_setup(true);
</span><span class="cx">                 
</span><span class="cx">         return true;
</span><span class="lines">@@ -410,24 +399,24 @@
</span><span class="cx">                                         ?&gt;
</span><span class="cx">                                         
</span><span class="cx">                                         &lt;script&gt;
</span><del>-                                                  $(document).ready(function(){
</del><ins>+                                                  jQuery(document).ready(function(){
</ins><span class="cx"> 
</span><span class="cx">                                                         //GET PHP pages
</span><span class="cx">                                                     var dataposts = &quot;&lt;?php echo $page_name; ?&gt;&quot;.split(&quot;|&quot;);
</span><span class="cx">                                                 
</span><span class="cx">                                                         //Set autocomplete
</span><del>-                                                        $(&quot;#page-search&quot;).autocomplete(dataposts);
</del><ins>+                                                        jQuery(&quot;#page-search&quot;).autocomplete(dataposts);
</ins><span class="cx">                                                 
</span><span class="cx">                                                         //Handle autocomplete result
</span><del>-                                                        $(&quot;#page-search&quot;).result(function(event, data, formatted) {
-                                                            $('#existing-pages').css('display','block');
-                                                            $(&quot;#existing-pages dt:contains('&quot; + data + &quot;')&quot;).css(&quot;display&quot;, &quot;block&quot;);
</del><ins>+                                                        jQuery(&quot;#page-search&quot;).result(function(event, data, formatted) {
+                                                            jQuery('#existing-pages').css('display','block');
+                                                            jQuery(&quot;#existing-pages dt:contains('&quot; + data + &quot;')&quot;).css(&quot;display&quot;, &quot;block&quot;);
</ins><span class="cx">                                                     
</span><del>-                                                            $('#show-pages').hide();
-                                                            $('#hide-pages').show();
</del><ins>+                                                            jQuery('#show-pages').hide();
+                                                            jQuery('#hide-pages').show();
</ins><span class="cx">                                                     
</span><span class="cx">                                                         });
</span><del>-                                                        $('#existing-pages').css('display','none');
</del><ins>+                                                        jQuery('#existing-pages').css('display','none');
</ins><span class="cx">                                                  });
</span><span class="cx">                                           &lt;/script&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -499,24 +488,24 @@
</span><span class="cx">                                         ?&gt;
</span><span class="cx"> 
</span><span class="cx">                                         &lt;script&gt;
</span><del>-                                                  $(document).ready(function(){
</del><ins>+                                                  jQuery(document).ready(function(){
</ins><span class="cx"> 
</span><span class="cx">                                                         //GET PHP categories
</span><span class="cx">                                                     var datacats = &quot;&lt;?php echo $cat_name; ?&gt;&quot;.split(&quot;|&quot;);
</span><span class="cx">                                                         
</span><span class="cx">                                                         //Set autocomplete
</span><del>-                                                        $(&quot;#cat-search&quot;).autocomplete(datacats);
</del><ins>+                                                        jQuery(&quot;#cat-search&quot;).autocomplete(datacats);
</ins><span class="cx">                                                 
</span><span class="cx">                                                         //Handle autocomplete result
</span><del>-                                                        $(&quot;#cat-search&quot;).result(function(event, data, formatted) {
-                                                            $('#existing-categories').css('display','block');
-                                                            $(&quot;#existing-categories dt:contains('&quot; + data + &quot;')&quot;).css(&quot;display&quot;, &quot;block&quot;);
</del><ins>+                                                        jQuery(&quot;#cat-search&quot;).result(function(event, data, formatted) {
+                                                            jQuery('#existing-categories').css('display','block');
+                                                            jQuery(&quot;#existing-categories dt:contains('&quot; + data + &quot;')&quot;).css(&quot;display&quot;, &quot;block&quot;);
</ins><span class="cx">                                                                                                        
</span><del>-                                                            $('#show-cats').hide();
-                                                            $('#hide-cats').show();
</del><ins>+                                                            jQuery('#show-cats').hide();
+                                                            jQuery('#hide-cats').show();
</ins><span class="cx">                                                     
</span><span class="cx">                                                         });
</span><del>-                                                        $('#existing-categories').css('display','none');
</del><ins>+                                                        jQuery('#existing-categories').css('display','none');
</ins><span class="cx">                                         
</span><span class="cx">                                                  });
</span><span class="cx">                                           &lt;/script&gt;
</span></span></pre></div>
<a id="trunkwpadminjscustomnavigationcustomjqueryautocompletedevjs"></a>
<div class="delfile"><h4>Deleted: trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.dev.js (13262 => 13263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.dev.js        2010-02-20 23:18:57 UTC (rev 13262)
+++ trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.dev.js        2010-02-20 23:35:05 UTC (rev 13263)
</span><span class="lines">@@ -1,808 +0,0 @@
</span><del>-/*
- * jQuery Autocomplete plugin 1.1
- *
- * Copyright (c) 2009 Jörn Zaefferer
- *
- * Dual licensed under the MIT and GPL licenses:
- *   http://www.opensource.org/licenses/mit-license.php
- *   http://www.gnu.org/licenses/gpl.html
- *
- * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
- */
-
-;(function($) {
-        
-$.fn.extend({
-        autocomplete: function(urlOrData, options) {
-                var isUrl = typeof urlOrData == &quot;string&quot;;
-                options = $.extend({}, $.Autocompleter.defaults, {
-                        url: isUrl ? urlOrData : null,
-                        data: isUrl ? null : urlOrData,
-                        delay: isUrl ? $.Autocompleter.defaults.delay : 10,
-                        max: options &amp;&amp; !options.scroll ? 10 : 150
-                }, options);
-                
-                // if highlight is set to false, replace it with a do-nothing function
-                options.highlight = options.highlight || function(value) { return value; };
-                
-                // if the formatMatch option is not specified, then use formatItem for backwards compatibility
-                options.formatMatch = options.formatMatch || options.formatItem;
-                
-                return this.each(function() {
-                        new $.Autocompleter(this, options);
-                });
-        },
-        result: function(handler) {
-                return this.bind(&quot;result&quot;, handler);
-        },
-        search: function(handler) {
-                return this.trigger(&quot;search&quot;, [handler]);
-        },
-        flushCache: function() {
-                return this.trigger(&quot;flushCache&quot;);
-        },
-        setOptions: function(options){
-                return this.trigger(&quot;setOptions&quot;, [options]);
-        },
-        unautocomplete: function() {
-                return this.trigger(&quot;unautocomplete&quot;);
-        }
-});
-
-$.Autocompleter = function(input, options) {
-
-        var KEY = {
-                UP: 38,
-                DOWN: 40,
-                DEL: 46,
-                TAB: 9,
-                RETURN: 13,
-                ESC: 27,
-                COMMA: 188,
-                PAGEUP: 33,
-                PAGEDOWN: 34,
-                BACKSPACE: 8
-        };
-
-        // Create $ object for input element
-        var $input = $(input).attr(&quot;autocomplete&quot;, &quot;off&quot;).addClass(options.inputClass);
-
-        var timeout;
-        var previousValue = &quot;&quot;;
-        var cache = $.Autocompleter.Cache(options);
-        var hasFocus = 0;
-        var lastKeyPressCode;
-        var config = {
-                mouseDownOnSelect: false
-        };
-        var select = $.Autocompleter.Select(options, input, selectCurrent, config);
-        
-        var blockSubmit;
-        
-        // prevent form submit in opera when selecting with return key
-        $.browser.opera &amp;&amp; $(input.form).bind(&quot;submit.autocomplete&quot;, function() {
-                if (blockSubmit) {
-                        blockSubmit = false;
-                        return false;
-                }
-        });
-        
-        // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
-        $input.bind(($.browser.opera ? &quot;keypress&quot; : &quot;keydown&quot;) + &quot;.autocomplete&quot;, function(event) {
-                // a keypress means the input has focus
-                // avoids issue where input had focus before the autocomplete was applied
-                hasFocus = 1;
-                // track last key pressed
-                lastKeyPressCode = event.keyCode;
-                switch(event.keyCode) {
-                
-                        case KEY.UP:
-                                event.preventDefault();
-                                if ( select.visible() ) {
-                                        select.prev();
-                                } else {
-                                        onChange(0, true);
-                                }
-                                break;
-                                
-                        case KEY.DOWN:
-                                event.preventDefault();
-                                if ( select.visible() ) {
-                                        select.next();
-                                } else {
-                                        onChange(0, true);
-                                }
-                                break;
-                                
-                        case KEY.PAGEUP:
-                                event.preventDefault();
-                                if ( select.visible() ) {
-                                        select.pageUp();
-                                } else {
-                                        onChange(0, true);
-                                }
-                                break;
-                                
-                        case KEY.PAGEDOWN:
-                                event.preventDefault();
-                                if ( select.visible() ) {
-                                        select.pageDown();
-                                } else {
-                                        onChange(0, true);
-                                }
-                                break;
-                        
-                        // matches also semicolon
-                        case options.multiple &amp;&amp; $.trim(options.multipleSeparator) == &quot;,&quot; &amp;&amp; KEY.COMMA:
-                        case KEY.TAB:
-                        case KEY.RETURN:
-                                if( selectCurrent() ) {
-                                        // stop default to prevent a form submit, Opera needs special handling
-                                        event.preventDefault();
-                                        blockSubmit = true;
-                                        return false;
-                                }
-                                break;
-                                
-                        case KEY.ESC:
-                                select.hide();
-                                break;
-                                
-                        default:
-                                clearTimeout(timeout);
-                                timeout = setTimeout(onChange, options.delay);
-                                break;
-                }
-        }).focus(function(){
-                // track whether the field has focus, we shouldn't process any
-                // results if the field no longer has focus
-                hasFocus++;
-        }).blur(function() {
-                hasFocus = 0;
-                if (!config.mouseDownOnSelect) {
-                        hideResults();
-                }
-        }).click(function() {
-                // show select when clicking in a focused field
-                if ( hasFocus++ &gt; 1 &amp;&amp; !select.visible() ) {
-                        onChange(0, true);
-                }
-        }).bind(&quot;search&quot;, function() {
-                // TODO why not just specifying both arguments?
-                var fn = (arguments.length &gt; 1) ? arguments[1] : null;
-                function findValueCallback(q, data) {
-                        var result;
-                        if( data &amp;&amp; data.length ) {
-                                for (var i=0; i &lt; data.length; i++) {
-                                        if( data[i].result.toLowerCase() == q.toLowerCase() ) {
-                                                result = data[i];
-                                                break;
-                                        }
-                                }
-                        }
-                        if( typeof fn == &quot;function&quot; ) fn(result);
-                        else $input.trigger(&quot;result&quot;, result &amp;&amp; [result.data, result.value]);
-                }
-                $.each(trimWords($input.val()), function(i, value) {
-                        request(value, findValueCallback, findValueCallback);
-                });
-        }).bind(&quot;flushCache&quot;, function() {
-                cache.flush();
-        }).bind(&quot;setOptions&quot;, function() {
-                $.extend(options, arguments[1]);
-                // if we've updated the data, repopulate
-                if ( &quot;data&quot; in arguments[1] )
-                        cache.populate();
-        }).bind(&quot;unautocomplete&quot;, function() {
-                select.unbind();
-                $input.unbind();
-                $(input.form).unbind(&quot;.autocomplete&quot;);
-        });
-        
-        
-        function selectCurrent() {
-                var selected = select.selected();
-                if( !selected )
-                        return false;
-                
-                var v = selected.result;
-                previousValue = v;
-                
-                if ( options.multiple ) {
-                        var words = trimWords($input.val());
-                        if ( words.length &gt; 1 ) {
-                                var seperator = options.multipleSeparator.length;
-                                var cursorAt = $(input).selection().start;
-                                var wordAt, progress = 0;
-                                $.each(words, function(i, word) {
-                                        progress += word.length;
-                                        if (cursorAt &lt;= progress) {
-                                                wordAt = i;
-                                                return false;
-                                        }
-                                        progress += seperator;
-                                });
-                                words[wordAt] = v;
-                                // TODO this should set the cursor to the right position, but it gets overriden somewhere
-                                //$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
-                                v = words.join( options.multipleSeparator );
-                        }
-                        v += options.multipleSeparator;
-                }
-                
-                $input.val(v);
-                hideResultsNow();
-                $input.trigger(&quot;result&quot;, [selected.data, selected.value]);
-                return true;
-        }
-        
-        function onChange(crap, skipPrevCheck) {
-                if( lastKeyPressCode == KEY.DEL ) {
-                        select.hide();
-                        return;
-                }
-                
-                var currentValue = $input.val();
-                
-                if ( !skipPrevCheck &amp;&amp; currentValue == previousValue )
-                        return;
-                
-                previousValue = currentValue;
-                
-                currentValue = lastWord(currentValue);
-                if ( currentValue.length &gt;= options.minChars) {
-                        $input.addClass(options.loadingClass);
-                        if (!options.matchCase)
-                                currentValue = currentValue.toLowerCase();
-                        request(currentValue, receiveData, hideResultsNow);
-                } else {
-                        stopLoading();
-                        select.hide();
-                }
-        };
-        
-        function trimWords(value) {
-                if (!value)
-                        return [&quot;&quot;];
-                if (!options.multiple)
-                        return [$.trim(value)];
-                return $.map(value.split(options.multipleSeparator), function(word) {
-                        return $.trim(value).length ? $.trim(word) : null;
-                });
-        }
-        
-        function lastWord(value) {
-                if ( !options.multiple )
-                        return value;
-                var words = trimWords(value);
-                if (words.length == 1) 
-                        return words[0];
-                var cursorAt = $(input).selection().start;
-                if (cursorAt == value.length) {
-                        words = trimWords(value)
-                } else {
-                        words = trimWords(value.replace(value.substring(cursorAt), &quot;&quot;));
-                }
-                return words[words.length - 1];
-        }
-        
-        // fills in the input box w/the first match (assumed to be the best match)
-        // q: the term entered
-        // sValue: the first matching result
-        function autoFill(q, sValue){
-                // autofill in the complete box w/the first match as long as the user hasn't entered in more data
-                // if the last user key pressed was backspace, don't autofill
-                if( options.autoFill &amp;&amp; (lastWord($input.val()).toLowerCase() == q.toLowerCase()) &amp;&amp; lastKeyPressCode != KEY.BACKSPACE ) {
-                        // fill in the value (keep the case the user has typed)
-                        $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
-                        // select the portion of the value not typed by the user (so the next character will erase)
-                        $(input).selection(previousValue.length, previousValue.length + sValue.length);
-                }
-        };
-
-        function hideResults() {
-                clearTimeout(timeout);
-                timeout = setTimeout(hideResultsNow, 200);
-        };
-
-        function hideResultsNow() {
-                var wasVisible = select.visible();
-                select.hide();
-                clearTimeout(timeout);
-                stopLoading();
-                if (options.mustMatch) {
-                        // call search and run callback
-                        $input.search(
-                                function (result){
-                                        // if no value found, clear the input box
-                                        if( !result ) {
-                                                if (options.multiple) {
-                                                        var words = trimWords($input.val()).slice(0, -1);
-                                                        $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : &quot;&quot;) );
-                                                }
-                                                else {
-                                                        $input.val( &quot;&quot; );
-                                                        $input.trigger(&quot;result&quot;, null);
-                                                }
-                                        }
-                                }
-                        );
-                }
-        };
-
-        function receiveData(q, data) {
-                if ( data &amp;&amp; data.length &amp;&amp; hasFocus ) {
-                        stopLoading();
-                        select.display(data, q);
-                        autoFill(q, data[0].value);
-                        select.show();
-                } else {
-                        hideResultsNow();
-                }
-        };
-
-        function request(term, success, failure) {
-                if (!options.matchCase)
-                        term = term.toLowerCase();
-                var data = cache.load(term);
-                // recieve the cached data
-                if (data &amp;&amp; data.length) {
-                        success(term, data);
-                // if an AJAX url has been supplied, try loading the data now
-                } else if( (typeof options.url == &quot;string&quot;) &amp;&amp; (options.url.length &gt; 0) ){
-                        
-                        var extraParams = {
-                                timestamp: +new Date()
-                        };
-                        $.each(options.extraParams, function(key, param) {
-                                extraParams[key] = typeof param == &quot;function&quot; ? param() : param;
-                        });
-                        
-                        $.ajax({
-                                // try to leverage ajaxQueue plugin to abort previous requests
-                                mode: &quot;abort&quot;,
-                                // limit abortion to this input
-                                port: &quot;autocomplete&quot; + input.name,
-                                dataType: options.dataType,
-                                url: options.url,
-                                data: $.extend({
-                                        q: lastWord(term),
-                                        limit: options.max
-                                }, extraParams),
-                                success: function(data) {
-                                        var parsed = options.parse &amp;&amp; options.parse(data) || parse(data);
-                                        cache.add(term, parsed);
-                                        success(term, parsed);
-                                }
-                        });
-                } else {
-                        // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
-                        select.emptyList();
-                        failure(term);
-                }
-        };
-        
-        function parse(data) {
-                var parsed = [];
-                var rows = data.split(&quot;\n&quot;);
-                for (var i=0; i &lt; rows.length; i++) {
-                        var row = $.trim(rows[i]);
-                        if (row) {
-                                row = row.split(&quot;|&quot;);
-                                parsed[parsed.length] = {
-                                        data: row,
-                                        value: row[0],
-                                        result: options.formatResult &amp;&amp; options.formatResult(row, row[0]) || row[0]
-                                };
-                        }
-                }
-                return parsed;
-        };
-
-        function stopLoading() {
-                $input.removeClass(options.loadingClass);
-        };
-
-};
-
-$.Autocompleter.defaults = {
-        inputClass: &quot;ac_input&quot;,
-        resultsClass: &quot;ac_results&quot;,
-        loadingClass: &quot;ac_loading&quot;,
-        minChars: 1,
-        delay: 400,
-        matchCase: false,
-        matchSubset: true,
-        matchContains: false,
-        cacheLength: 10,
-        max: 100,
-        mustMatch: false,
-        extraParams: {},
-        selectFirst: true,
-        formatItem: function(row) { return row[0]; },
-        formatMatch: null,
-        autoFill: false,
-        width: 0,
-        multiple: false,
-        multipleSeparator: &quot;, &quot;,
-        highlight: function(value, term) {
-                return value.replace(new RegExp(&quot;(?![^&amp;;]+;)(?!&lt;[^&lt;&gt;]*)(&quot; + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, &quot;\\$1&quot;) + &quot;)(?![^&lt;&gt;]*&gt;)(?![^&amp;;]+;)&quot;, &quot;gi&quot;), &quot;&lt;strong&gt;$1&lt;/strong&gt;&quot;);
-        },
-    scroll: true,
-    scrollHeight: 180
-};
-
-$.Autocompleter.Cache = function(options) {
-
-        var data = {};
-        var length = 0;
-        
-        function matchSubset(s, sub) {
-                if (!options.matchCase) 
-                        s = s.toLowerCase();
-                var i = s.indexOf(sub);
-                if (options.matchContains == &quot;word&quot;){
-                        i = s.toLowerCase().search(&quot;\\b&quot; + sub.toLowerCase());
-                }
-                if (i == -1) return false;
-                return i == 0 || options.matchContains;
-        };
-        
-        function add(q, value) {
-                if (length &gt; options.cacheLength){
-                        flush();
-                }
-                if (!data[q]){ 
-                        length++;
-                }
-                data[q] = value;
-        }
-        
-        function populate(){
-                if( !options.data ) return false;
-                // track the matches
-                var stMatchSets = {},
-                        nullData = 0;
-
-                // no url was specified, we need to adjust the cache length to make sure it fits the local data store
-                if( !options.url ) options.cacheLength = 1;
-                
-                // track all options for minChars = 0
-                stMatchSets[&quot;&quot;] = [];
-                
-                // loop through the array and create a lookup structure
-                for ( var i = 0, ol = options.data.length; i &lt; ol; i++ ) {
-                        var rawValue = options.data[i];
-                        // if rawValue is a string, make an array otherwise just reference the array
-                        rawValue = (typeof rawValue == &quot;string&quot;) ? [rawValue] : rawValue;
-                        
-                        var value = options.formatMatch(rawValue, i+1, options.data.length);
-                        if ( value === false )
-                                continue;
-                                
-                        var firstChar = value.charAt(0).toLowerCase();
-                        // if no lookup array for this character exists, look it up now
-                        if( !stMatchSets[firstChar] ) 
-                                stMatchSets[firstChar] = [];
-
-                        // if the match is a string
-                        var row = {
-                                value: value,
-                                data: rawValue,
-                                result: options.formatResult &amp;&amp; options.formatResult(rawValue) || value
-                        };
-                        
-                        // push the current match into the set list
-                        stMatchSets[firstChar].push(row);
-
-                        // keep track of minChars zero items
-                        if ( nullData++ &lt; options.max ) {
-                                stMatchSets[&quot;&quot;].push(row);
-                        }
-                };
-
-                // add the data items to the cache
-                $.each(stMatchSets, function(i, value) {
-                        // increase the cache size
-                        options.cacheLength++;
-                        // add to the cache
-                        add(i, value);
-                });
-        }
-        
-        // populate any existing data
-        setTimeout(populate, 25);
-        
-        function flush(){
-                data = {};
-                length = 0;
-        }
-        
-        return {
-                flush: flush,
-                add: add,
-                populate: populate,
-                load: function(q) {
-                        if (!options.cacheLength || !length)
-                                return null;
-                        /* 
-                         * if dealing w/local data and matchContains than we must make sure
-                         * to loop through all the data collections looking for matches
-                         */
-                        if( !options.url &amp;&amp; options.matchContains ){
-                                // track all matches
-                                var csub = [];
-                                // loop through all the data grids for matches
-                                for( var k in data ){
-                                        // don't search through the stMatchSets[&quot;&quot;] (minChars: 0) cache
-                                        // this prevents duplicates
-                                        if( k.length &gt; 0 ){
-                                                var c = data[k];
-                                                $.each(c, function(i, x) {
-                                                        // if we've got a match, add it to the array
-                                                        if (matchSubset(x.value, q)) {
-                                                                csub.push(x);
-                                                        }
-                                                });
-                                        }
-                                }                                
-                                return csub;
-                        } else 
-                        // if the exact item exists, use it
-                        if (data[q]){
-                                return data[q];
-                        } else
-                        if (options.matchSubset) {
-                                for (var i = q.length - 1; i &gt;= options.minChars; i--) {
-                                        var c = data[q.substr(0, i)];
-                                        if (c) {
-                                                var csub = [];
-                                                $.each(c, function(i, x) {
-                                                        if (matchSubset(x.value, q)) {
-                                                                csub[csub.length] = x;
-                                                        }
-                                                });
-                                                return csub;
-                                        }
-                                }
-                        }
-                        return null;
-                }
-        };
-};
-
-$.Autocompleter.Select = function (options, input, select, config) {
-        var CLASSES = {
-                ACTIVE: &quot;ac_over&quot;
-        };
-        
-        var listItems,
-                active = -1,
-                data,
-                term = &quot;&quot;,
-                needsInit = true,
-                element,
-                list;
-        
-        // Create results
-        function init() {
-                if (!needsInit)
-                        return;
-                element = $(&quot;&lt;div/&gt;&quot;)
-                .hide()
-                .addClass(options.resultsClass)
-                .css(&quot;position&quot;, &quot;absolute&quot;)
-                .appendTo(document.body);
-        
-                list = $(&quot;&lt;ul/&gt;&quot;).appendTo(element).mouseover( function(event) {
-                        if(target(event).nodeName &amp;&amp; target(event).nodeName.toUpperCase() == 'LI') {
-                    active = $(&quot;li&quot;, list).removeClass(CLASSES.ACTIVE).index(target(event));
-                            $(target(event)).addClass(CLASSES.ACTIVE);            
-                }
-                }).click(function(event) {
-                        $(target(event)).addClass(CLASSES.ACTIVE);
-                        select();
-                        // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
-                        input.focus();
-                        return false;
-                }).mousedown(function() {
-                        config.mouseDownOnSelect = true;
-                }).mouseup(function() {
-                        config.mouseDownOnSelect = false;
-                });
-                
-                if( options.width &gt; 0 )
-                        element.css(&quot;width&quot;, options.width);
-                        
-                needsInit = false;
-        } 
-        
-        function target(event) {
-                var element = event.target;
-                while(element &amp;&amp; element.tagName != &quot;LI&quot;)
-                        element = element.parentNode;
-                // more fun with IE, sometimes event.target is empty, just ignore it then
-                if(!element)
-                        return [];
-                return element;
-        }
-
-        function moveSelect(step) {
-                listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
-                movePosition(step);
-        var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
-        if(options.scroll) {
-            var offset = 0;
-            listItems.slice(0, active).each(function() {
-                                offset += this.offsetHeight;
-                        });
-            if((offset + activeItem[0].offsetHeight - list.scrollTop()) &gt; list[0].clientHeight) {
-                list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
-            } else if(offset &lt; list.scrollTop()) {
-                list.scrollTop(offset);
-            }
-        }
-        };
-        
-        function movePosition(step) {
-                active += step;
-                if (active &lt; 0) {
-                        active = listItems.size() - 1;
-                } else if (active &gt;= listItems.size()) {
-                        active = 0;
-                }
-        }
-        
-        function limitNumberOfItems(available) {
-                return options.max &amp;&amp; options.max &lt; available
-                        ? options.max
-                        : available;
-        }
-        
-        function fillList() {
-                list.empty();
-                var max = limitNumberOfItems(data.length);
-                for (var i=0; i &lt; max; i++) {
-                        if (!data[i])
-                                continue;
-                        var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
-                        if ( formatted === false )
-                                continue;
-                        var li = $(&quot;&lt;li/&gt;&quot;).html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? &quot;ac_even&quot; : &quot;ac_odd&quot;).appendTo(list)[0];
-                        $.data(li, &quot;ac_data&quot;, data[i]);
-                }
-                listItems = list.find(&quot;li&quot;);
-                if ( options.selectFirst ) {
-                        listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
-                        active = 0;
-                }
-                // apply bgiframe if available
-                if ( $.fn.bgiframe )
-                        list.bgiframe();
-        }
-        
-        return {
-                display: function(d, q) {
-                        init();
-                        data = d;
-                        term = q;
-                        fillList();
-                },
-                next: function() {
-                        moveSelect(1);
-                },
-                prev: function() {
-                        moveSelect(-1);
-                },
-                pageUp: function() {
-                        if (active != 0 &amp;&amp; active - 8 &lt; 0) {
-                                moveSelect( -active );
-                        } else {
-                                moveSelect(-8);
-                        }
-                },
-                pageDown: function() {
-                        if (active != listItems.size() - 1 &amp;&amp; active + 8 &gt; listItems.size()) {
-                                moveSelect( listItems.size() - 1 - active );
-                        } else {
-                                moveSelect(8);
-                        }
-                },
-                hide: function() {
-                        element &amp;&amp; element.hide();
-                        listItems &amp;&amp; listItems.removeClass(CLASSES.ACTIVE);
-                        active = -1;
-                },
-                visible : function() {
-                        return element &amp;&amp; element.is(&quot;:visible&quot;);
-                },
-                current: function() {
-                        return this.visible() &amp;&amp; (listItems.filter(&quot;.&quot; + CLASSES.ACTIVE)[0] || options.selectFirst &amp;&amp; listItems[0]);
-                },
-                show: function() {
-                        var offset = $(input).offset();
-                        element.css({
-                                width: typeof options.width == &quot;string&quot; || options.width &gt; 0 ? options.width : $(input).width(),
-                                top: offset.top + input.offsetHeight,
-                                left: offset.left
-                        }).show();
-            if(options.scroll) {
-                list.scrollTop(0);
-                list.css({
-                                        maxHeight: options.scrollHeight,
-                                        overflow: 'auto'
-                                });
-                                
-                if($.browser.msie &amp;&amp; typeof document.body.style.maxHeight === &quot;undefined&quot;) {
-                                        var listHeight = 0;
-                                        listItems.each(function() {
-                                                listHeight += this.offsetHeight;
-                                        });
-                                        var scrollbarsVisible = listHeight &gt; options.scrollHeight;
-                    list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
-                                        if (!scrollbarsVisible) {
-                                                // IE doesn't recalculate width when scrollbar disappears
-                                                listItems.width( list.width() - parseInt(listItems.css(&quot;padding-left&quot;)) - parseInt(listItems.css(&quot;padding-right&quot;)) );
-                                        }
-                }
-                
-            }
-                },
-                selected: function() {
-                        var selected = listItems &amp;&amp; listItems.filter(&quot;.&quot; + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
-                        return selected &amp;&amp; selected.length &amp;&amp; $.data(selected[0], &quot;ac_data&quot;);
-                },
-                emptyList: function (){
-                        list &amp;&amp; list.empty();
-                },
-                unbind: function() {
-                        element &amp;&amp; element.remove();
-                }
-        };
-};
-
-$.fn.selection = function(start, end) {
-        if (start !== undefined) {
-                return this.each(function() {
-                        if( this.createTextRange ){
-                                var selRange = this.createTextRange();
-                                if (end === undefined || start == end) {
-                                        selRange.move(&quot;character&quot;, start);
-                                        selRange.select();
-                                } else {
-                                        selRange.collapse(true);
-                                        selRange.moveStart(&quot;character&quot;, start);
-                                        selRange.moveEnd(&quot;character&quot;, end);
-                                        selRange.select();
-                                }
-                        } else if( this.setSelectionRange ){
-                                this.setSelectionRange(start, end);
-                        } else if( this.selectionStart ){
-                                this.selectionStart = start;
-                                this.selectionEnd = end;
-                        }
-                });
-        }
-        var field = this[0];
-        if ( field.createTextRange ) {
-                var range = document.selection.createRange(),
-                        orig = field.value,
-                        teststring = &quot;&lt;-&gt;&quot;,
-                        textLength = range.text.length;
-                range.text = teststring;
-                var caretAt = field.value.indexOf(teststring);
-                field.value = orig;
-                this.selection(caretAt, caretAt + textLength);
-                return {
-                        start: caretAt,
-                        end: caretAt + textLength
-                }
-        } else if( field.selectionStart !== undefined ){
-                return {
-                        start: field.selectionStart,
-                        end: field.selectionEnd
-                }
-        }
-};
-
-})(jQuery);
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpadminjscustomnavigationcustomjqueryautocompletejs"></a>
<div class="delfile"><h4>Deleted: trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.js (13262 => 13263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.js        2010-02-20 23:18:57 UTC (rev 13262)
+++ trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.js        2010-02-20 23:35:05 UTC (rev 13263)
</span><span class="lines">@@ -1 +0,0 @@
</span><del>-(function(a){a.fn.extend({autocomplete:function(b,c){var d=typeof b==&quot;string&quot;;c=a.extend({},a.Autocompleter.defaults,{url:d?b:null,data:d?null:b,delay:d?a.Autocompleter.defaults.delay:10,max:c&amp;&amp;!c.scroll?10:150},c);c.highlight=c.highlight||function(e){return e};c.formatMatch=c.formatMatch||c.formatItem;return this.each(function(){new a.Autocompleter(this,c)})},result:function(b){return this.bind(&quot;result&quot;,b)},search:function(b){return this.trigger(&quot;search&quot;,[b])},flushCache:function(){return this.trigger(&quot;flushCache&quot;)},setOptions:function(b){return this.trigger(&quot;setOptions&quot;,[b])},unautocomplete:function(){return this.trigger(&quot;unautocomplete&quot;)}});a.Autocompleter=function(l,g){var c={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8};var b=a(l).attr(&quot;autocomplete&quot;,&quot;off&quot;).addClass(g.inputClass);var j;var p=&quot;&quot;;var m=a.Autocompleter.Cache(g);var e=0;var u;var x={mouseDownOnSelect:false};var r=a.Autocompleter.Select(g,l,d,x);var w;a.browser.opera&amp;&amp;a(l.form).bind(&quot;submit.autocomplete&quot;,function(){if(w){w=false;return false}});b.bind((a.browser.opera?&quot;keypress&quot;:&quot;keydown&quot;)+&quot;.autocomplete&quot;,function(y){e=1;u=y.keyCode;switch(y.keyCode){case c.UP:y.preventDefault();if(r.visible()){r.prev()}else{t(0,true)}break;case c.DOWN:y.preventDefault();if(r.visible()){r.next()}else{t(0,true)}break;case c.PAGEUP:y.preventDefault();if(r.visible()){r.pageUp()}else{t(0,true)}break;case c.PAGEDOWN:y.preventDefault();if(r.visible()){r.pageDown()}else{t(0,true)}break;case g.multiple&amp;&amp;a.trim(g.multipleSeparator)==&quot;,&quot;&amp;&amp;c.COMMA:case c.TAB:case c.RETURN:if(d()){y.preventDefault();w=true;return false}break;case c.ESC:r.hide();break;default:clearTimeout(j);j=setTimeout(t,g.delay);break}}).focus(function(){e++}).blur(function(){e=0;if(!x.mouseDownOnSelect){s()}}).click(function(){if(e++&gt;1&amp;&amp;!r.visible()){t(0,true)}}).bind(&quot;search&quot;,function(){var y=(arguments.length&gt;1)?arguments[1]:null;function z(D,C){var A;if(C&amp;&amp;C.length){for(var B=0;B&lt;C.length;B++){if(C[B].result.toLowerCase()==D.toLowerCase()){A=C[B];break}}}if(typeof y==&quot;function&quot;){y(A)}else{b.trigger(&quot;result&quot;,A&amp;&amp;[A.data,A.value])}}a.each(h(b.val()),function(A,B){f(B,z,z)})}).bind(&quot;flushCache&quot;,function(){m.flush()}).bind(&quot;setOptions&quot;,function(){a.extend(g,arguments[1]);if(&quot;data&quot; in arguments[1]){m.populate()}}).bind(&quot;unautocomplete&quot;,function(){r.unbind();b.unbind();a(l.form).unbind(&quot;.autocomplete&quot;)});function d(){var B=r.selected();if(!B){return false}var y=B.result;p=y;if(g.multiple){var E=h(b.val());if(E.length&gt;1){var A=g.multipleSeparator.length;var D=a(l).selection().start;var C,z=0;a.each(E,function(F,G){z+=G.length;if(D&lt;=z){C=F;return false}z+=A});E[C]=y;y=E.join(g.multipleSeparator)}y+=g.multipleSeparator}b.val(y);v();b.trigger(&quot;result&quot;,[B.data,B.value]);return true}function t(A,z){if(u==c.DEL){r.hide();return}var y=b.val();if(!z&amp;&amp;y==p){return}p=y;y=i(y);if(y.length&gt;=g.minChars){b.addClass(g.loadingClass);if(!g.matchCase){y=y.toLowerCase()}f(y,k,v)}else{n();r.hide()}}function h(y){if(!y){return[&quot;&quot;]}if(!g.multiple){return[a.trim(y)]}return a.map(y.split(g.multipleSeparator),function(z){return a.trim(y).length?a.trim(z):null})}function i(y){if(!g.multiple){return y}var A=h(y);if(A.length==1){return A[0]}var z=a(l).selection().start;if(z==y.length){A=h(y)}else{A=h(y.replace(y.substring(z),&quot;&quot;))}return A[A.length-1]}function q(y,z){if(g.autoFill&amp;&amp;(i(b.val()).toLowerCase()==y.toLowerCase())&amp;&amp;u!=c.BACKSPACE){b.val(b.val()+z.substring(i(p).length));a(l).selection(p.length,p.length+z.length)}}function s(){clearTimeout(j);j=setTimeout(v,200)}function v(){var y=r.visible();r.hide();clearTimeout(j);n();if(g.mustMatch){b.search(function(z){if(!z){if(g.multiple){var A=h(b.val()).slice(0,-1);b.val(A.join(g.multipleSeparator)+(A.length?g.multipleSeparator:&quot;&quot;))}else{b.val(&quot;&quot;);b.trigger(&quot;result&quot;,null)}}})}}function k(z,y){if(y&amp;&amp;y.length&amp;&amp;e){n();r.display(y,z);q(z,y[0].value);r.show()}else{v()}}function f(z,B,y){if(!g.matchCase){z=z.toLowerCase()}var A=m.load(z);if(A&amp;&amp;A.length){B(z,A)}else{if((typeof g.url==&quot;string&quot;)&amp;&amp;(g.url.length&gt;0)){var C={timestamp:+new Date()};a.each(g.extraParams,function(D,E){C[D]=typeof E==&quot;function&quot;?E():E});a.ajax({mode:&quot;abort&quot;,port:&quot;autocomplete&quot;+l.name,dataType:g.dataType,url:g.url,data:a.extend({q:i(z),limit:g.max},C),success:function(E){var D=g.parse&amp;&amp;g.parse(E)||o(E);m.add(z,D);B(z,D)}})}else{r.emptyList();y(z)}}}function o(B){var y=[];var A=B.split(&quot;\n&quot;);for(var z=0;z&lt;A.length;z++){var C=a.trim(A[z]);if(C){C=C.split(&quot;|&quot;);y[y.length]={data:C,value:C[0],result:g.formatResult&amp;&amp;g.formatResult(C,C[0])||C[0]}}}return y}function n(){b.removeClass(g.loadingClass)}};a.Autocompleter.defaults={inputClass:&quot;ac_input&quot;,resultsClass:&quot;ac_results&quot;,loadingClass:&quot;ac_loading&quot;,minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(b){return b[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:&quot;, &quot;,highlight:function(c,b){return c.replace(new RegExp(&quot;(?![^&amp;;]+;)(?!&lt;[^&lt;&gt;]*)(&quot;+b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,&quot;\\$1&quot;)+&quot;)(?![^&lt;&gt;]*&gt;)(?![^&amp;;]+;)&quot;,&quot;gi&quot;),&quot;&lt;strong&gt;$1&lt;/strong&gt;&quot;)},scroll:true,scrollHeight:180};a.Autocompleter.Cache=function(c){var f={};var d=0;function h(l,k){if(!c.matchCase){l=l.toLowerCase()}var j=l.indexOf(k);if(c.matchContains==&quot;word&quot;){j=l.toLowerCase().search(&quot;\\b&quot;+k.toLowerCase())}if(j==-1){return false}return j==0||c.matchContains}function g(j,i){if(d&gt;c.cacheLength){b()}if(!f[j]){d++}f[j]=i}function e(){if(!c.data){return false}var k={},j=0;if(!c.url){c.cacheLength=1}k[&quot;&quot;]=[];for(var m=0,l=c.data.length;m&lt;l;m++){var p=c.data[m];p=(typeof p==&quot;string&quot;)?[p]:p;var o=c.formatMatch(p,m+1,c.data.length);if(o===false){continue}var n=o.charAt(0).toLowerCase();if(!k[n]){k[n]=[]}var q={value:o,data:p,result:c.formatResult&amp;&amp;c.formatResult(p)||o};k[n].push(q);if(j++&lt;c.max){k[&quot;&quot;].push(q)}}a.each(k,function(r,s){c.cacheLength++;g(r,s)})}setTimeout(e,25);function b(){f={};d=0}return{flush:b,add:g,populate:e,load:function(n){if(!c.cacheLength||!d){return null}if(!c.url&amp;&amp;c.matchContains){var m=[];for(var j in f){if(j.length&gt;0){var o=f[j];a.each(o,function(p,k){if(h(k.value,n)){m.push(k)}})}}return m}else{if(f[n]){return f[n]}else{if(c.matchSubset){for(var l=n.length-1;l&gt;=c.minChars;l--){var o=f[n.substr(0,l)];if(o){var m=[];a.each(o,function(p,k){if(h(k.value,n)){m[m.length]=k}});return m}}}}}return null}}};a.Autocompleter.Select=function(e,j,l,p){var i={ACTIVE:&quot;ac_over&quot;};var k,f=-1,r,m=&quot;&quot;,s=true,c,o;function n(){if(!s){return}c=a(&quot;&lt;div/&gt;&quot;).hide().addClass(e.resultsClass).css(&quot;position&quot;,&quot;absolute&quot;).appendTo(document.body);o=a(&quot;&lt;ul/&gt;&quot;).appendTo(c).mouseover(function(t){if(q(t).nodeName&amp;&amp;q(t).nodeName.toUpperCase()==&quot;LI&quot;){f=a(&quot;li&quot;,o).removeClass(i.ACTIVE).index(q(t));a(q(t)).addClass(i.ACTIVE)}}).click(function(t){a(q(t)).addClass(i.ACTIVE);l();j.focus();return false}).mousedown(function(){p.mouseDownOnSelect=true}).mouseup(function(){p.mouseDownOnSelect=false});if(e.width&gt;0){c.css(&quot;width&quot;,e.width)}s=false}function q(u){var t=u.target;while(t&amp;&amp;t.tagName!=&quot;LI&quot;){t=t.parentNode}if(!t){return[]}return t}function h(t){k.slice(f,f+1).removeClass(i.ACTIVE);g(t);var v=k.slice(f,f+1).addClass(i.ACTIVE);if(e.scroll){var u=0;k.slice(0,f).each(function(){u+=this.offsetHeight});if((u+v[0].offsetHeight-o.scrollTop())&gt;o[0].clientHeight){o.scrollTop(u+v[0].offsetHeight-o.innerHeight())}else{if(u&lt;o.scrollTop()){o.scrollTop(u)}}}}function g(t){f+=t;if(f&lt;0){f=k.size()-1}else{if(f&gt;=k.size()){f=0}}}function b(t){return e.max&amp;&amp;e.max&lt;t?e.max:t}function d(){o.empty();var u=b(r.length);for(var v=0;v&lt;u;v++){if(!r[v]){continue}var w=e.formatItem(r[v].data,v+1,u,r[v].value,m);if(w===false){continue}var t=a(&quot;&lt;li/&gt;&quot;).html(e.highlight(w,m)).addClass(v%2==0?&quot;ac_even&quot;:&quot;ac_odd&quot;).appendTo(o)[0];a.data(t,&quot;ac_data&quot;,r[v])}k=o.find(&quot;li&quot;);if(e.selectFirst){k.slice(0,1).addClass(i.ACTIVE);f=0}if(a.fn.bgiframe){o.bgiframe()}}return{display:function(u,t){n();r=u;m=t;d()},next:function(){h(1)},prev:function(){h(-1)},pageUp:function(){if(f!=0&amp;&amp;f-8&lt;0){h(-f)}else{h(-8)}},pageDown:function(){if(f!=k.size()-1&amp;&amp;f+8&gt;k.size()){h(k.size()-1-f)}else{h(8)}},hide:function(){c&amp;&amp;c.hide();k&amp;&amp;k.removeClass(i.ACTIVE);f=-1},visible:function(){return c&amp;&amp;c.is(&quot;:visible&quot;)},current:function(){return this.visible()&amp;&amp;(k.filter(&quot;.&quot;+i.ACTIVE)[0]||e.selectFirst&amp;&amp;k[0])},show:function(){var v=a(j).offset();c.css({width:typeof e.width==&quot;string&quot;||e.width&gt;0?e.width:a(j).width(),top:v.top+j.offsetHeight,left:v.left}).show();if(e.scroll){o.scrollTop(0);o.css({maxHeight:e.scrollHeight,overflow:&quot;auto&quot;});if(a.browser.msie&amp;&amp;typeof document.body.style.maxHeight===&quot;undefined&quot;){var t=0;k.each(function(){t+=this.offsetHeight});var u=t&gt;e.scrollHeight;o.css(&quot;height&quot;,u?e.scrollHeight:t);if(!u){k.width(o.width()-parseInt(k.css(&quot;padding-left&quot;))-parseInt(k.css(&quot;padding-right&quot;)))}}}},selected:function(){var t=k&amp;&amp;k.filter(&quot;.&quot;+i.ACTIVE).removeClass(i.ACTIVE);return t&amp;&amp;t.length&amp;&amp;a.data(t[0],&quot;ac_data&quot;)},emptyList:function(){o&amp;&amp;o.empty()},unbind:function(){c&amp;&amp;c.remove()}}};a.fn.selection=function(i,b){if(i!==undefined){return this.each(function(){if(this.createTextRange){var j=this.createTextRange();if(b===undefined||i==b){j.move(&quot;character&quot;,i);j.select()}else{j.collapse(true);j.moveStart(&quot;character&quot;,i);j.moveEnd(&quot;character&quot;,b);j.select()}}else{if(this.setSelectionRange){this.setSelectionRange(i,b)}else{if(this.selectionStart){this.selectionStart=i;this.selectionEnd=b}}}})}var g=this[0];if(g.createTextRange){var c=document.selection.createRange(),h=g.value,f=&quot;&lt;-&gt;&quot;,d=c.text.length;c.text=f;var e=g.value.indexOf(f);g.value=h;this.selection(e,e+d);return{start:e,end:e+d}}else{if(g.selectionStart!==undefined){return{start:g.selectionStart,end:g.selectionEnd}}}}})(jQuery);
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludesjsjqueryautocompletedevjsfromrev13257trunkwpadminjscustomnavigationcustomjqueryautocompletedevjs"></a>
<div class="copfile"><h4>Copied: trunk/wp-includes/js/jquery/autocomplete.dev.js (from rev 13257, trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.dev.js) (0 => 13263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/js/jquery/autocomplete.dev.js                                (rev 0)
+++ trunk/wp-includes/js/jquery/autocomplete.dev.js        2010-02-20 23:35:05 UTC (rev 13263)
</span><span class="lines">@@ -0,0 +1,808 @@
</span><ins>+/*
+ * jQuery Autocomplete plugin 1.1
+ *
+ * Copyright (c) 2009 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
+ */
+
+;(function($) {
+        
+$.fn.extend({
+        autocomplete: function(urlOrData, options) {
+                var isUrl = typeof urlOrData == &quot;string&quot;;
+                options = $.extend({}, $.Autocompleter.defaults, {
+                        url: isUrl ? urlOrData : null,
+                        data: isUrl ? null : urlOrData,
+                        delay: isUrl ? $.Autocompleter.defaults.delay : 10,
+                        max: options &amp;&amp; !options.scroll ? 10 : 150
+                }, options);
+                
+                // if highlight is set to false, replace it with a do-nothing function
+                options.highlight = options.highlight || function(value) { return value; };
+                
+                // if the formatMatch option is not specified, then use formatItem for backwards compatibility
+                options.formatMatch = options.formatMatch || options.formatItem;
+                
+                return this.each(function() {
+                        new $.Autocompleter(this, options);
+                });
+        },
+        result: function(handler) {
+                return this.bind(&quot;result&quot;, handler);
+        },
+        search: function(handler) {
+                return this.trigger(&quot;search&quot;, [handler]);
+        },
+        flushCache: function() {
+                return this.trigger(&quot;flushCache&quot;);
+        },
+        setOptions: function(options){
+                return this.trigger(&quot;setOptions&quot;, [options]);
+        },
+        unautocomplete: function() {
+                return this.trigger(&quot;unautocomplete&quot;);
+        }
+});
+
+$.Autocompleter = function(input, options) {
+
+        var KEY = {
+                UP: 38,
+                DOWN: 40,
+                DEL: 46,
+                TAB: 9,
+                RETURN: 13,
+                ESC: 27,
+                COMMA: 188,
+                PAGEUP: 33,
+                PAGEDOWN: 34,
+                BACKSPACE: 8
+        };
+
+        // Create $ object for input element
+        var $input = $(input).attr(&quot;autocomplete&quot;, &quot;off&quot;).addClass(options.inputClass);
+
+        var timeout;
+        var previousValue = &quot;&quot;;
+        var cache = $.Autocompleter.Cache(options);
+        var hasFocus = 0;
+        var lastKeyPressCode;
+        var config = {
+                mouseDownOnSelect: false
+        };
+        var select = $.Autocompleter.Select(options, input, selectCurrent, config);
+        
+        var blockSubmit;
+        
+        // prevent form submit in opera when selecting with return key
+        $.browser.opera &amp;&amp; $(input.form).bind(&quot;submit.autocomplete&quot;, function() {
+                if (blockSubmit) {
+                        blockSubmit = false;
+                        return false;
+                }
+        });
+        
+        // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
+        $input.bind(($.browser.opera ? &quot;keypress&quot; : &quot;keydown&quot;) + &quot;.autocomplete&quot;, function(event) {
+                // a keypress means the input has focus
+                // avoids issue where input had focus before the autocomplete was applied
+                hasFocus = 1;
+                // track last key pressed
+                lastKeyPressCode = event.keyCode;
+                switch(event.keyCode) {
+                
+                        case KEY.UP:
+                                event.preventDefault();
+                                if ( select.visible() ) {
+                                        select.prev();
+                                } else {
+                                        onChange(0, true);
+                                }
+                                break;
+                                
+                        case KEY.DOWN:
+                                event.preventDefault();
+                                if ( select.visible() ) {
+                                        select.next();
+                                } else {
+                                        onChange(0, true);
+                                }
+                                break;
+                                
+                        case KEY.PAGEUP:
+                                event.preventDefault();
+                                if ( select.visible() ) {
+                                        select.pageUp();
+                                } else {
+                                        onChange(0, true);
+                                }
+                                break;
+                                
+                        case KEY.PAGEDOWN:
+                                event.preventDefault();
+                                if ( select.visible() ) {
+                                        select.pageDown();
+                                } else {
+                                        onChange(0, true);
+                                }
+                                break;
+                        
+                        // matches also semicolon
+                        case options.multiple &amp;&amp; $.trim(options.multipleSeparator) == &quot;,&quot; &amp;&amp; KEY.COMMA:
+                        case KEY.TAB:
+                        case KEY.RETURN:
+                                if( selectCurrent() ) {
+                                        // stop default to prevent a form submit, Opera needs special handling
+                                        event.preventDefault();
+                                        blockSubmit = true;
+                                        return false;
+                                }
+                                break;
+                                
+                        case KEY.ESC:
+                                select.hide();
+                                break;
+                                
+                        default:
+                                clearTimeout(timeout);
+                                timeout = setTimeout(onChange, options.delay);
+                                break;
+                }
+        }).focus(function(){
+                // track whether the field has focus, we shouldn't process any
+                // results if the field no longer has focus
+                hasFocus++;
+        }).blur(function() {
+                hasFocus = 0;
+                if (!config.mouseDownOnSelect) {
+                        hideResults();
+                }
+        }).click(function() {
+                // show select when clicking in a focused field
+                if ( hasFocus++ &gt; 1 &amp;&amp; !select.visible() ) {
+                        onChange(0, true);
+                }
+        }).bind(&quot;search&quot;, function() {
+                // TODO why not just specifying both arguments?
+                var fn = (arguments.length &gt; 1) ? arguments[1] : null;
+                function findValueCallback(q, data) {
+                        var result;
+                        if( data &amp;&amp; data.length ) {
+                                for (var i=0; i &lt; data.length; i++) {
+                                        if( data[i].result.toLowerCase() == q.toLowerCase() ) {
+                                                result = data[i];
+                                                break;
+                                        }
+                                }
+                        }
+                        if( typeof fn == &quot;function&quot; ) fn(result);
+                        else $input.trigger(&quot;result&quot;, result &amp;&amp; [result.data, result.value]);
+                }
+                $.each(trimWords($input.val()), function(i, value) {
+                        request(value, findValueCallback, findValueCallback);
+                });
+        }).bind(&quot;flushCache&quot;, function() {
+                cache.flush();
+        }).bind(&quot;setOptions&quot;, function() {
+                $.extend(options, arguments[1]);
+                // if we've updated the data, repopulate
+                if ( &quot;data&quot; in arguments[1] )
+                        cache.populate();
+        }).bind(&quot;unautocomplete&quot;, function() {
+                select.unbind();
+                $input.unbind();
+                $(input.form).unbind(&quot;.autocomplete&quot;);
+        });
+        
+        
+        function selectCurrent() {
+                var selected = select.selected();
+                if( !selected )
+                        return false;
+                
+                var v = selected.result;
+                previousValue = v;
+                
+                if ( options.multiple ) {
+                        var words = trimWords($input.val());
+                        if ( words.length &gt; 1 ) {
+                                var seperator = options.multipleSeparator.length;
+                                var cursorAt = $(input).selection().start;
+                                var wordAt, progress = 0;
+                                $.each(words, function(i, word) {
+                                        progress += word.length;
+                                        if (cursorAt &lt;= progress) {
+                                                wordAt = i;
+                                                return false;
+                                        }
+                                        progress += seperator;
+                                });
+                                words[wordAt] = v;
+                                // TODO this should set the cursor to the right position, but it gets overriden somewhere
+                                //$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
+                                v = words.join( options.multipleSeparator );
+                        }
+                        v += options.multipleSeparator;
+                }
+                
+                $input.val(v);
+                hideResultsNow();
+                $input.trigger(&quot;result&quot;, [selected.data, selected.value]);
+                return true;
+        }
+        
+        function onChange(crap, skipPrevCheck) {
+                if( lastKeyPressCode == KEY.DEL ) {
+                        select.hide();
+                        return;
+                }
+                
+                var currentValue = $input.val();
+                
+                if ( !skipPrevCheck &amp;&amp; currentValue == previousValue )
+                        return;
+                
+                previousValue = currentValue;
+                
+                currentValue = lastWord(currentValue);
+                if ( currentValue.length &gt;= options.minChars) {
+                        $input.addClass(options.loadingClass);
+                        if (!options.matchCase)
+                                currentValue = currentValue.toLowerCase();
+                        request(currentValue, receiveData, hideResultsNow);
+                } else {
+                        stopLoading();
+                        select.hide();
+                }
+        };
+        
+        function trimWords(value) {
+                if (!value)
+                        return [&quot;&quot;];
+                if (!options.multiple)
+                        return [$.trim(value)];
+                return $.map(value.split(options.multipleSeparator), function(word) {
+                        return $.trim(value).length ? $.trim(word) : null;
+                });
+        }
+        
+        function lastWord(value) {
+                if ( !options.multiple )
+                        return value;
+                var words = trimWords(value);
+                if (words.length == 1) 
+                        return words[0];
+                var cursorAt = $(input).selection().start;
+                if (cursorAt == value.length) {
+                        words = trimWords(value)
+                } else {
+                        words = trimWords(value.replace(value.substring(cursorAt), &quot;&quot;));
+                }
+                return words[words.length - 1];
+        }
+        
+        // fills in the input box w/the first match (assumed to be the best match)
+        // q: the term entered
+        // sValue: the first matching result
+        function autoFill(q, sValue){
+                // autofill in the complete box w/the first match as long as the user hasn't entered in more data
+                // if the last user key pressed was backspace, don't autofill
+                if( options.autoFill &amp;&amp; (lastWord($input.val()).toLowerCase() == q.toLowerCase()) &amp;&amp; lastKeyPressCode != KEY.BACKSPACE ) {
+                        // fill in the value (keep the case the user has typed)
+                        $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
+                        // select the portion of the value not typed by the user (so the next character will erase)
+                        $(input).selection(previousValue.length, previousValue.length + sValue.length);
+                }
+        };
+
+        function hideResults() {
+                clearTimeout(timeout);
+                timeout = setTimeout(hideResultsNow, 200);
+        };
+
+        function hideResultsNow() {
+                var wasVisible = select.visible();
+                select.hide();
+                clearTimeout(timeout);
+                stopLoading();
+                if (options.mustMatch) {
+                        // call search and run callback
+                        $input.search(
+                                function (result){
+                                        // if no value found, clear the input box
+                                        if( !result ) {
+                                                if (options.multiple) {
+                                                        var words = trimWords($input.val()).slice(0, -1);
+                                                        $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : &quot;&quot;) );
+                                                }
+                                                else {
+                                                        $input.val( &quot;&quot; );
+                                                        $input.trigger(&quot;result&quot;, null);
+                                                }
+                                        }
+                                }
+                        );
+                }
+        };
+
+        function receiveData(q, data) {
+                if ( data &amp;&amp; data.length &amp;&amp; hasFocus ) {
+                        stopLoading();
+                        select.display(data, q);
+                        autoFill(q, data[0].value);
+                        select.show();
+                } else {
+                        hideResultsNow();
+                }
+        };
+
+        function request(term, success, failure) {
+                if (!options.matchCase)
+                        term = term.toLowerCase();
+                var data = cache.load(term);
+                // recieve the cached data
+                if (data &amp;&amp; data.length) {
+                        success(term, data);
+                // if an AJAX url has been supplied, try loading the data now
+                } else if( (typeof options.url == &quot;string&quot;) &amp;&amp; (options.url.length &gt; 0) ){
+                        
+                        var extraParams = {
+                                timestamp: +new Date()
+                        };
+                        $.each(options.extraParams, function(key, param) {
+                                extraParams[key] = typeof param == &quot;function&quot; ? param() : param;
+                        });
+                        
+                        $.ajax({
+                                // try to leverage ajaxQueue plugin to abort previous requests
+                                mode: &quot;abort&quot;,
+                                // limit abortion to this input
+                                port: &quot;autocomplete&quot; + input.name,
+                                dataType: options.dataType,
+                                url: options.url,
+                                data: $.extend({
+                                        q: lastWord(term),
+                                        limit: options.max
+                                }, extraParams),
+                                success: function(data) {
+                                        var parsed = options.parse &amp;&amp; options.parse(data) || parse(data);
+                                        cache.add(term, parsed);
+                                        success(term, parsed);
+                                }
+                        });
+                } else {
+                        // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
+                        select.emptyList();
+                        failure(term);
+                }
+        };
+        
+        function parse(data) {
+                var parsed = [];
+                var rows = data.split(&quot;\n&quot;);
+                for (var i=0; i &lt; rows.length; i++) {
+                        var row = $.trim(rows[i]);
+                        if (row) {
+                                row = row.split(&quot;|&quot;);
+                                parsed[parsed.length] = {
+                                        data: row,
+                                        value: row[0],
+                                        result: options.formatResult &amp;&amp; options.formatResult(row, row[0]) || row[0]
+                                };
+                        }
+                }
+                return parsed;
+        };
+
+        function stopLoading() {
+                $input.removeClass(options.loadingClass);
+        };
+
+};
+
+$.Autocompleter.defaults = {
+        inputClass: &quot;ac_input&quot;,
+        resultsClass: &quot;ac_results&quot;,
+        loadingClass: &quot;ac_loading&quot;,
+        minChars: 1,
+        delay: 400,
+        matchCase: false,
+        matchSubset: true,
+        matchContains: false,
+        cacheLength: 10,
+        max: 100,
+        mustMatch: false,
+        extraParams: {},
+        selectFirst: true,
+        formatItem: function(row) { return row[0]; },
+        formatMatch: null,
+        autoFill: false,
+        width: 0,
+        multiple: false,
+        multipleSeparator: &quot;, &quot;,
+        highlight: function(value, term) {
+                return value.replace(new RegExp(&quot;(?![^&amp;;]+;)(?!&lt;[^&lt;&gt;]*)(&quot; + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, &quot;\\$1&quot;) + &quot;)(?![^&lt;&gt;]*&gt;)(?![^&amp;;]+;)&quot;, &quot;gi&quot;), &quot;&lt;strong&gt;$1&lt;/strong&gt;&quot;);
+        },
+    scroll: true,
+    scrollHeight: 180
+};
+
+$.Autocompleter.Cache = function(options) {
+
+        var data = {};
+        var length = 0;
+        
+        function matchSubset(s, sub) {
+                if (!options.matchCase) 
+                        s = s.toLowerCase();
+                var i = s.indexOf(sub);
+                if (options.matchContains == &quot;word&quot;){
+                        i = s.toLowerCase().search(&quot;\\b&quot; + sub.toLowerCase());
+                }
+                if (i == -1) return false;
+                return i == 0 || options.matchContains;
+        };
+        
+        function add(q, value) {
+                if (length &gt; options.cacheLength){
+                        flush();
+                }
+                if (!data[q]){ 
+                        length++;
+                }
+                data[q] = value;
+        }
+        
+        function populate(){
+                if( !options.data ) return false;
+                // track the matches
+                var stMatchSets = {},
+                        nullData = 0;
+
+                // no url was specified, we need to adjust the cache length to make sure it fits the local data store
+                if( !options.url ) options.cacheLength = 1;
+                
+                // track all options for minChars = 0
+                stMatchSets[&quot;&quot;] = [];
+                
+                // loop through the array and create a lookup structure
+                for ( var i = 0, ol = options.data.length; i &lt; ol; i++ ) {
+                        var rawValue = options.data[i];
+                        // if rawValue is a string, make an array otherwise just reference the array
+                        rawValue = (typeof rawValue == &quot;string&quot;) ? [rawValue] : rawValue;
+                        
+                        var value = options.formatMatch(rawValue, i+1, options.data.length);
+                        if ( value === false )
+                                continue;
+                                
+                        var firstChar = value.charAt(0).toLowerCase();
+                        // if no lookup array for this character exists, look it up now
+                        if( !stMatchSets[firstChar] ) 
+                                stMatchSets[firstChar] = [];
+
+                        // if the match is a string
+                        var row = {
+                                value: value,
+                                data: rawValue,
+                                result: options.formatResult &amp;&amp; options.formatResult(rawValue) || value
+                        };
+                        
+                        // push the current match into the set list
+                        stMatchSets[firstChar].push(row);
+
+                        // keep track of minChars zero items
+                        if ( nullData++ &lt; options.max ) {
+                                stMatchSets[&quot;&quot;].push(row);
+                        }
+                };
+
+                // add the data items to the cache
+                $.each(stMatchSets, function(i, value) {
+                        // increase the cache size
+                        options.cacheLength++;
+                        // add to the cache
+                        add(i, value);
+                });
+        }
+        
+        // populate any existing data
+        setTimeout(populate, 25);
+        
+        function flush(){
+                data = {};
+                length = 0;
+        }
+        
+        return {
+                flush: flush,
+                add: add,
+                populate: populate,
+                load: function(q) {
+                        if (!options.cacheLength || !length)
+                                return null;
+                        /* 
+                         * if dealing w/local data and matchContains than we must make sure
+                         * to loop through all the data collections looking for matches
+                         */
+                        if( !options.url &amp;&amp; options.matchContains ){
+                                // track all matches
+                                var csub = [];
+                                // loop through all the data grids for matches
+                                for( var k in data ){
+                                        // don't search through the stMatchSets[&quot;&quot;] (minChars: 0) cache
+                                        // this prevents duplicates
+                                        if( k.length &gt; 0 ){
+                                                var c = data[k];
+                                                $.each(c, function(i, x) {
+                                                        // if we've got a match, add it to the array
+                                                        if (matchSubset(x.value, q)) {
+                                                                csub.push(x);
+                                                        }
+                                                });
+                                        }
+                                }                                
+                                return csub;
+                        } else 
+                        // if the exact item exists, use it
+                        if (data[q]){
+                                return data[q];
+                        } else
+                        if (options.matchSubset) {
+                                for (var i = q.length - 1; i &gt;= options.minChars; i--) {
+                                        var c = data[q.substr(0, i)];
+                                        if (c) {
+                                                var csub = [];
+                                                $.each(c, function(i, x) {
+                                                        if (matchSubset(x.value, q)) {
+                                                                csub[csub.length] = x;
+                                                        }
+                                                });
+                                                return csub;
+                                        }
+                                }
+                        }
+                        return null;
+                }
+        };
+};
+
+$.Autocompleter.Select = function (options, input, select, config) {
+        var CLASSES = {
+                ACTIVE: &quot;ac_over&quot;
+        };
+        
+        var listItems,
+                active = -1,
+                data,
+                term = &quot;&quot;,
+                needsInit = true,
+                element,
+                list;
+        
+        // Create results
+        function init() {
+                if (!needsInit)
+                        return;
+                element = $(&quot;&lt;div/&gt;&quot;)
+                .hide()
+                .addClass(options.resultsClass)
+                .css(&quot;position&quot;, &quot;absolute&quot;)
+                .appendTo(document.body);
+        
+                list = $(&quot;&lt;ul/&gt;&quot;).appendTo(element).mouseover( function(event) {
+                        if(target(event).nodeName &amp;&amp; target(event).nodeName.toUpperCase() == 'LI') {
+                    active = $(&quot;li&quot;, list).removeClass(CLASSES.ACTIVE).index(target(event));
+                            $(target(event)).addClass(CLASSES.ACTIVE);            
+                }
+                }).click(function(event) {
+                        $(target(event)).addClass(CLASSES.ACTIVE);
+                        select();
+                        // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
+                        input.focus();
+                        return false;
+                }).mousedown(function() {
+                        config.mouseDownOnSelect = true;
+                }).mouseup(function() {
+                        config.mouseDownOnSelect = false;
+                });
+                
+                if( options.width &gt; 0 )
+                        element.css(&quot;width&quot;, options.width);
+                        
+                needsInit = false;
+        } 
+        
+        function target(event) {
+                var element = event.target;
+                while(element &amp;&amp; element.tagName != &quot;LI&quot;)
+                        element = element.parentNode;
+                // more fun with IE, sometimes event.target is empty, just ignore it then
+                if(!element)
+                        return [];
+                return element;
+        }
+
+        function moveSelect(step) {
+                listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
+                movePosition(step);
+        var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
+        if(options.scroll) {
+            var offset = 0;
+            listItems.slice(0, active).each(function() {
+                                offset += this.offsetHeight;
+                        });
+            if((offset + activeItem[0].offsetHeight - list.scrollTop()) &gt; list[0].clientHeight) {
+                list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
+            } else if(offset &lt; list.scrollTop()) {
+                list.scrollTop(offset);
+            }
+        }
+        };
+        
+        function movePosition(step) {
+                active += step;
+                if (active &lt; 0) {
+                        active = listItems.size() - 1;
+                } else if (active &gt;= listItems.size()) {
+                        active = 0;
+                }
+        }
+        
+        function limitNumberOfItems(available) {
+                return options.max &amp;&amp; options.max &lt; available
+                        ? options.max
+                        : available;
+        }
+        
+        function fillList() {
+                list.empty();
+                var max = limitNumberOfItems(data.length);
+                for (var i=0; i &lt; max; i++) {
+                        if (!data[i])
+                                continue;
+                        var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
+                        if ( formatted === false )
+                                continue;
+                        var li = $(&quot;&lt;li/&gt;&quot;).html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? &quot;ac_even&quot; : &quot;ac_odd&quot;).appendTo(list)[0];
+                        $.data(li, &quot;ac_data&quot;, data[i]);
+                }
+                listItems = list.find(&quot;li&quot;);
+                if ( options.selectFirst ) {
+                        listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
+                        active = 0;
+                }
+                // apply bgiframe if available
+                if ( $.fn.bgiframe )
+                        list.bgiframe();
+        }
+        
+        return {
+                display: function(d, q) {
+                        init();
+                        data = d;
+                        term = q;
+                        fillList();
+                },
+                next: function() {
+                        moveSelect(1);
+                },
+                prev: function() {
+                        moveSelect(-1);
+                },
+                pageUp: function() {
+                        if (active != 0 &amp;&amp; active - 8 &lt; 0) {
+                                moveSelect( -active );
+                        } else {
+                                moveSelect(-8);
+                        }
+                },
+                pageDown: function() {
+                        if (active != listItems.size() - 1 &amp;&amp; active + 8 &gt; listItems.size()) {
+                                moveSelect( listItems.size() - 1 - active );
+                        } else {
+                                moveSelect(8);
+                        }
+                },
+                hide: function() {
+                        element &amp;&amp; element.hide();
+                        listItems &amp;&amp; listItems.removeClass(CLASSES.ACTIVE);
+                        active = -1;
+                },
+                visible : function() {
+                        return element &amp;&amp; element.is(&quot;:visible&quot;);
+                },
+                current: function() {
+                        return this.visible() &amp;&amp; (listItems.filter(&quot;.&quot; + CLASSES.ACTIVE)[0] || options.selectFirst &amp;&amp; listItems[0]);
+                },
+                show: function() {
+                        var offset = $(input).offset();
+                        element.css({
+                                width: typeof options.width == &quot;string&quot; || options.width &gt; 0 ? options.width : $(input).width(),
+                                top: offset.top + input.offsetHeight,
+                                left: offset.left
+                        }).show();
+            if(options.scroll) {
+                list.scrollTop(0);
+                list.css({
+                                        maxHeight: options.scrollHeight,
+                                        overflow: 'auto'
+                                });
+                                
+                if($.browser.msie &amp;&amp; typeof document.body.style.maxHeight === &quot;undefined&quot;) {
+                                        var listHeight = 0;
+                                        listItems.each(function() {
+                                                listHeight += this.offsetHeight;
+                                        });
+                                        var scrollbarsVisible = listHeight &gt; options.scrollHeight;
+                    list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
+                                        if (!scrollbarsVisible) {
+                                                // IE doesn't recalculate width when scrollbar disappears
+                                                listItems.width( list.width() - parseInt(listItems.css(&quot;padding-left&quot;)) - parseInt(listItems.css(&quot;padding-right&quot;)) );
+                                        }
+                }
+                
+            }
+                },
+                selected: function() {
+                        var selected = listItems &amp;&amp; listItems.filter(&quot;.&quot; + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
+                        return selected &amp;&amp; selected.length &amp;&amp; $.data(selected[0], &quot;ac_data&quot;);
+                },
+                emptyList: function (){
+                        list &amp;&amp; list.empty();
+                },
+                unbind: function() {
+                        element &amp;&amp; element.remove();
+                }
+        };
+};
+
+$.fn.selection = function(start, end) {
+        if (start !== undefined) {
+                return this.each(function() {
+                        if( this.createTextRange ){
+                                var selRange = this.createTextRange();
+                                if (end === undefined || start == end) {
+                                        selRange.move(&quot;character&quot;, start);
+                                        selRange.select();
+                                } else {
+                                        selRange.collapse(true);
+                                        selRange.moveStart(&quot;character&quot;, start);
+                                        selRange.moveEnd(&quot;character&quot;, end);
+                                        selRange.select();
+                                }
+                        } else if( this.setSelectionRange ){
+                                this.setSelectionRange(start, end);
+                        } else if( this.selectionStart ){
+                                this.selectionStart = start;
+                                this.selectionEnd = end;
+                        }
+                });
+        }
+        var field = this[0];
+        if ( field.createTextRange ) {
+                var range = document.selection.createRange(),
+                        orig = field.value,
+                        teststring = &quot;&lt;-&gt;&quot;,
+                        textLength = range.text.length;
+                range.text = teststring;
+                var caretAt = field.value.indexOf(teststring);
+                field.value = orig;
+                this.selection(caretAt, caretAt + textLength);
+                return {
+                        start: caretAt,
+                        end: caretAt + textLength
+                }
+        } else if( field.selectionStart !== undefined ){
+                return {
+                        start: field.selectionStart,
+                        end: field.selectionEnd
+                }
+        }
+};
+
+})(jQuery);
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludesjsjqueryautocompletejsfromrev13257trunkwpadminjscustomnavigationcustomjqueryautocompletejs"></a>
<div class="copfile"><h4>Copied: trunk/wp-includes/js/jquery/autocomplete.js (from rev 13257, trunk/wp-admin/js/custom-navigation-custom-jquery-autocomplete.js) (0 => 13263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/js/jquery/autocomplete.js                                (rev 0)
+++ trunk/wp-includes/js/jquery/autocomplete.js        2010-02-20 23:35:05 UTC (rev 13263)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+(function(a){a.fn.extend({autocomplete:function(b,c){var d=typeof b==&quot;string&quot;;c=a.extend({},a.Autocompleter.defaults,{url:d?b:null,data:d?null:b,delay:d?a.Autocompleter.defaults.delay:10,max:c&amp;&amp;!c.scroll?10:150},c);c.highlight=c.highlight||function(e){return e};c.formatMatch=c.formatMatch||c.formatItem;return this.each(function(){new a.Autocompleter(this,c)})},result:function(b){return this.bind(&quot;result&quot;,b)},search:function(b){return this.trigger(&quot;search&quot;,[b])},flushCache:function(){return this.trigger(&quot;flushCache&quot;)},setOptions:function(b){return this.trigger(&quot;setOptions&quot;,[b])},unautocomplete:function(){return this.trigger(&quot;unautocomplete&quot;)}});a.Autocompleter=function(l,g){var c={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8};var b=a(l).attr(&quot;autocomplete&quot;,&quot;off&quot;).addClass(g.inputClass);var j;var p=&quot;&quot;;var m=a.Autocompleter.Cache(g);var e=0;var u;var x={mouseDownOnSelect:false};var r=a.Autocompleter.Select(g,l,d,x);var w;a.browser.opera&amp;&amp;a(l.form).bind(&quot;submit.autocomplete&quot;,function(){if(w){w=false;return false}});b.bind((a.browser.opera?&quot;keypress&quot;:&quot;keydown&quot;)+&quot;.autocomplete&quot;,function(y){e=1;u=y.keyCode;switch(y.keyCode){case c.UP:y.preventDefault();if(r.visible()){r.prev()}else{t(0,true)}break;case c.DOWN:y.preventDefault();if(r.visible()){r.next()}else{t(0,true)}break;case c.PAGEUP:y.preventDefault();if(r.visible()){r.pageUp()}else{t(0,true)}break;case c.PAGEDOWN:y.preventDefault();if(r.visible()){r.pageDown()}else{t(0,true)}break;case g.multiple&amp;&amp;a.trim(g.multipleSeparator)==&quot;,&quot;&amp;&amp;c.COMMA:case c.TAB:case c.RETURN:if(d()){y.preventDefault();w=true;return false}break;case c.ESC:r.hide();break;default:clearTimeout(j);j=setTimeout(t,g.delay);break}}).focus(function(){e++}).blur(function(){e=0;if(!x.mouseDownOnSelect){s()}}).click(function(){if(e++&gt;1&amp;&amp;!r.visible()){t(0,true)}}).bind(&quot;search&quot;,function(){var y=(arguments.length&gt;1)?arguments[1]:null;function z(D,C){var A;if(C&amp;&amp;C.length){for(var B=0;B&lt;C.length;B++){if(C[B].result.toLowerCase()==D.toLowerCase()){A=C[B];break}}}if(typeof y==&quot;function&quot;){y(A)}else{b.trigger(&quot;result&quot;,A&amp;&amp;[A.data,A.value])}}a.each(h(b.val()),function(A,B){f(B,z,z)})}).bind(&quot;flushCache&quot;,function(){m.flush()}).bind(&quot;setOptions&quot;,function(){a.extend(g,arguments[1]);if(&quot;data&quot; in arguments[1]){m.populate()}}).bind(&quot;unautocomplete&quot;,function(){r.unbind();b.unbind();a(l.form).unbind(&quot;.autocomplete&quot;)});function d(){var B=r.selected();if(!B){return false}var y=B.result;p=y;if(g.multiple){var E=h(b.val());if(E.length&gt;1){var A=g.multipleSeparator.length;var D=a(l).selection().start;var C,z=0;a.each(E,function(F,G){z+=G.length;if(D&lt;=z){C=F;return false}z+=A});E[C]=y;y=E.join(g.multipleSeparator)}y+=g.multipleSeparator}b.val(y);v();b.trigger(&quot;result&quot;,[B.data,B.value]);return true}function t(A,z){if(u==c.DEL){r.hide();return}var y=b.val();if(!z&amp;&amp;y==p){return}p=y;y=i(y);if(y.length&gt;=g.minChars){b.addClass(g.loadingClass);if(!g.matchCase){y=y.toLowerCase()}f(y,k,v)}else{n();r.hide()}}function h(y){if(!y){return[&quot;&quot;]}if(!g.multiple){return[a.trim(y)]}return a.map(y.split(g.multipleSeparator),function(z){return a.trim(y).length?a.trim(z):null})}function i(y){if(!g.multiple){return y}var A=h(y);if(A.length==1){return A[0]}var z=a(l).selection().start;if(z==y.length){A=h(y)}else{A=h(y.replace(y.substring(z),&quot;&quot;))}return A[A.length-1]}function q(y,z){if(g.autoFill&amp;&amp;(i(b.val()).toLowerCase()==y.toLowerCase())&amp;&amp;u!=c.BACKSPACE){b.val(b.val()+z.substring(i(p).length));a(l).selection(p.length,p.length+z.length)}}function s(){clearTimeout(j);j=setTimeout(v,200)}function v(){var y=r.visible();r.hide();clearTimeout(j);n();if(g.mustMatch){b.search(function(z){if(!z){if(g.multiple){var A=h(b.val()).slice(0,-1);b.val(A.join(g.multipleSeparator)+(A.length?g.multipleSeparator:&quot;&quot;))}else{b.val(&quot;&quot;);b.trigger(&quot;result&quot;,null)}}})}}function k(z,y){if(y&amp;&amp;y.length&amp;&amp;e){n();r.display(y,z);q(z,y[0].value);r.show()}else{v()}}function f(z,B,y){if(!g.matchCase){z=z.toLowerCase()}var A=m.load(z);if(A&amp;&amp;A.length){B(z,A)}else{if((typeof g.url==&quot;string&quot;)&amp;&amp;(g.url.length&gt;0)){var C={timestamp:+new Date()};a.each(g.extraParams,function(D,E){C[D]=typeof E==&quot;function&quot;?E():E});a.ajax({mode:&quot;abort&quot;,port:&quot;autocomplete&quot;+l.name,dataType:g.dataType,url:g.url,data:a.extend({q:i(z),limit:g.max},C),success:function(E){var D=g.parse&amp;&amp;g.parse(E)||o(E);m.add(z,D);B(z,D)}})}else{r.emptyList();y(z)}}}function o(B){var y=[];var A=B.split(&quot;\n&quot;);for(var z=0;z&lt;A.length;z++){var C=a.trim(A[z]);if(C){C=C.split(&quot;|&quot;);y[y.length]={data:C,value:C[0],result:g.formatResult&amp;&amp;g.formatResult(C,C[0])||C[0]}}}return y}function n(){b.removeClass(g.loadingClass)}};a.Autocompleter.defaults={inputClass:&quot;ac_input&quot;,resultsClass:&quot;ac_results&quot;,loadingClass:&quot;ac_loading&quot;,minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(b){return b[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:&quot;, &quot;,highlight:function(c,b){return c.replace(new RegExp(&quot;(?![^&amp;;]+;)(?!&lt;[^&lt;&gt;]*)(&quot;+b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,&quot;\\$1&quot;)+&quot;)(?![^&lt;&gt;]*&gt;)(?![^&amp;;]+;)&quot;,&quot;gi&quot;),&quot;&lt;strong&gt;$1&lt;/strong&gt;&quot;)},scroll:true,scrollHeight:180};a.Autocompleter.Cache=function(c){var f={};var d=0;function h(l,k){if(!c.matchCase){l=l.toLowerCase()}var j=l.indexOf(k);if(c.matchContains==&quot;word&quot;){j=l.toLowerCase().search(&quot;\\b&quot;+k.toLowerCase())}if(j==-1){return false}return j==0||c.matchContains}function g(j,i){if(d&gt;c.cacheLength){b()}if(!f[j]){d++}f[j]=i}function e(){if(!c.data){return false}var k={},j=0;if(!c.url){c.cacheLength=1}k[&quot;&quot;]=[];for(var m=0,l=c.data.length;m&lt;l;m++){var p=c.data[m];p=(typeof p==&quot;string&quot;)?[p]:p;var o=c.formatMatch(p,m+1,c.data.length);if(o===false){continue}var n=o.charAt(0).toLowerCase();if(!k[n]){k[n]=[]}var q={value:o,data:p,result:c.formatResult&amp;&amp;c.formatResult(p)||o};k[n].push(q);if(j++&lt;c.max){k[&quot;&quot;].push(q)}}a.each(k,function(r,s){c.cacheLength++;g(r,s)})}setTimeout(e,25);function b(){f={};d=0}return{flush:b,add:g,populate:e,load:function(n){if(!c.cacheLength||!d){return null}if(!c.url&amp;&amp;c.matchContains){var m=[];for(var j in f){if(j.length&gt;0){var o=f[j];a.each(o,function(p,k){if(h(k.value,n)){m.push(k)}})}}return m}else{if(f[n]){return f[n]}else{if(c.matchSubset){for(var l=n.length-1;l&gt;=c.minChars;l--){var o=f[n.substr(0,l)];if(o){var m=[];a.each(o,function(p,k){if(h(k.value,n)){m[m.length]=k}});return m}}}}}return null}}};a.Autocompleter.Select=function(e,j,l,p){var i={ACTIVE:&quot;ac_over&quot;};var k,f=-1,r,m=&quot;&quot;,s=true,c,o;function n(){if(!s){return}c=a(&quot;&lt;div/&gt;&quot;).hide().addClass(e.resultsClass).css(&quot;position&quot;,&quot;absolute&quot;).appendTo(document.body);o=a(&quot;&lt;ul/&gt;&quot;).appendTo(c).mouseover(function(t){if(q(t).nodeName&amp;&amp;q(t).nodeName.toUpperCase()==&quot;LI&quot;){f=a(&quot;li&quot;,o).removeClass(i.ACTIVE).index(q(t));a(q(t)).addClass(i.ACTIVE)}}).click(function(t){a(q(t)).addClass(i.ACTIVE);l();j.focus();return false}).mousedown(function(){p.mouseDownOnSelect=true}).mouseup(function(){p.mouseDownOnSelect=false});if(e.width&gt;0){c.css(&quot;width&quot;,e.width)}s=false}function q(u){var t=u.target;while(t&amp;&amp;t.tagName!=&quot;LI&quot;){t=t.parentNode}if(!t){return[]}return t}function h(t){k.slice(f,f+1).removeClass(i.ACTIVE);g(t);var v=k.slice(f,f+1).addClass(i.ACTIVE);if(e.scroll){var u=0;k.slice(0,f).each(function(){u+=this.offsetHeight});if((u+v[0].offsetHeight-o.scrollTop())&gt;o[0].clientHeight){o.scrollTop(u+v[0].offsetHeight-o.innerHeight())}else{if(u&lt;o.scrollTop()){o.scrollTop(u)}}}}function g(t){f+=t;if(f&lt;0){f=k.size()-1}else{if(f&gt;=k.size()){f=0}}}function b(t){return e.max&amp;&amp;e.max&lt;t?e.max:t}function d(){o.empty();var u=b(r.length);for(var v=0;v&lt;u;v++){if(!r[v]){continue}var w=e.formatItem(r[v].data,v+1,u,r[v].value,m);if(w===false){continue}var t=a(&quot;&lt;li/&gt;&quot;).html(e.highlight(w,m)).addClass(v%2==0?&quot;ac_even&quot;:&quot;ac_odd&quot;).appendTo(o)[0];a.data(t,&quot;ac_data&quot;,r[v])}k=o.find(&quot;li&quot;);if(e.selectFirst){k.slice(0,1).addClass(i.ACTIVE);f=0}if(a.fn.bgiframe){o.bgiframe()}}return{display:function(u,t){n();r=u;m=t;d()},next:function(){h(1)},prev:function(){h(-1)},pageUp:function(){if(f!=0&amp;&amp;f-8&lt;0){h(-f)}else{h(-8)}},pageDown:function(){if(f!=k.size()-1&amp;&amp;f+8&gt;k.size()){h(k.size()-1-f)}else{h(8)}},hide:function(){c&amp;&amp;c.hide();k&amp;&amp;k.removeClass(i.ACTIVE);f=-1},visible:function(){return c&amp;&amp;c.is(&quot;:visible&quot;)},current:function(){return this.visible()&amp;&amp;(k.filter(&quot;.&quot;+i.ACTIVE)[0]||e.selectFirst&amp;&amp;k[0])},show:function(){var v=a(j).offset();c.css({width:typeof e.width==&quot;string&quot;||e.width&gt;0?e.width:a(j).width(),top:v.top+j.offsetHeight,left:v.left}).show();if(e.scroll){o.scrollTop(0);o.css({maxHeight:e.scrollHeight,overflow:&quot;auto&quot;});if(a.browser.msie&amp;&amp;typeof document.body.style.maxHeight===&quot;undefined&quot;){var t=0;k.each(function(){t+=this.offsetHeight});var u=t&gt;e.scrollHeight;o.css(&quot;height&quot;,u?e.scrollHeight:t);if(!u){k.width(o.width()-parseInt(k.css(&quot;padding-left&quot;))-parseInt(k.css(&quot;padding-right&quot;)))}}}},selected:function(){var t=k&amp;&amp;k.filter(&quot;.&quot;+i.ACTIVE).removeClass(i.ACTIVE);return t&amp;&amp;t.length&amp;&amp;a.data(t[0],&quot;ac_data&quot;)},emptyList:function(){o&amp;&amp;o.empty()},unbind:function(){c&amp;&amp;c.remove()}}};a.fn.selection=function(i,b){if(i!==undefined){return this.each(function(){if(this.createTextRange){var j=this.createTextRange();if(b===undefined||i==b){j.move(&quot;character&quot;,i);j.select()}else{j.collapse(true);j.moveStart(&quot;character&quot;,i);j.moveEnd(&quot;character&quot;,b);j.select()}}else{if(this.setSelectionRange){this.setSelectionRange(i,b)}else{if(this.selectionStart){this.selectionStart=i;this.selectionEnd=b}}}})}var g=this[0];if(g.createTextRange){var c=document.selection.createRange(),h=g.value,f=&quot;&lt;-&gt;&quot;,d=c.text.length;c.text=f;var e=g.value.indexOf(f);g.value=h;this.selection(e,e+d);return{start:e,end:e+d}}else{if(g.selectionStart!==undefined){return{start:g.selectionStart,end:g.selectionEnd}}}}})(jQuery);
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (13262 => 13263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2010-02-20 23:18:57 UTC (rev 13262)
+++ trunk/wp-includes/script-loader.php        2010-02-20 23:35:05 UTC (rev 13263)
</span><span class="lines">@@ -164,6 +164,9 @@
</span><span class="cx">         $scripts-&gt;add( 'jquery-table-hotkeys', &quot;/wp-includes/js/jquery/jquery.table-hotkeys$suffix.js&quot;, array('jquery', 'jquery-hotkeys'), '20090102' );
</span><span class="cx">         $scripts-&gt;add_data( 'jquery-table-hotkeys', 'group', 1 );
</span><span class="cx"> 
</span><ins>+        $scripts-&gt;add( 'jquery-autocomplete', &quot;/wp-includes/js/jquery/autocomplete$suffix.js&quot;, array('jquery'), '1.1' );
+        $scripts-&gt;add_data( 'jquery-autocomplete', 'group', 1 );
+
</ins><span class="cx">         $scripts-&gt;add( 'thickbox', &quot;/wp-includes/js/thickbox/thickbox.js&quot;, array('jquery'), '3.1-20100108');
</span><span class="cx">         $scripts-&gt;add_data( 'thickbox', 'group', 1 );
</span><span class="cx">         $scripts-&gt;localize( 'thickbox', 'thickboxL10n', array(
</span><span class="lines">@@ -397,14 +400,9 @@
</span><span class="cx">         
</span><span class="cx">         //Custom Navigation
</span><span class="cx"> 
</span><del>-        $scripts-&gt;add( 'custom-navigation-jquery', '/wp-admin/js/custom-navigation-custom-jquery-1.3.2.js', false, '1.3.2' );
-                
-        $scripts-&gt;add( 'custom-navigation-ui-custom', '/wp-admin/js/custom-navigation-custom-jquery-ui-1.7.2.js', array('custom-navigation-jquery'), '1.7.2' );
</del><ins>+        $scripts-&gt;add( 'custom-navigation-ui-custom', '/wp-admin/js/custom-navigation-custom-jquery-ui-1.7.2.js', array('jquery'), '1.7.2' );
</ins><span class="cx">         $scripts-&gt;add_data( 'custom-navigation-ui-custom', 'group', 1 );
</span><span class="cx">         
</span><del>-        $scripts-&gt;add( 'custom-navigation-autocomplete', '/wp-admin/js/custom-navigation-custom-jquery-autocomplete.js', array('custom-navigation-jquery'), '1.0.0' );
-        $scripts-&gt;add_data( 'custom-navigation-autocomplete', 'group', 1 );
-        
</del><span class="cx">         $scripts-&gt;add( 'custom-navigation-default-items', '/wp-admin/js/custom-navigation-default-items.js', false, '1.0.0' );
</span><span class="cx">         $scripts-&gt;add( 'custom-navigation-dynamic-functions', '/wp-admin/js/custom-navigation-dynamic-functions.js', false, '1.0.0' );
</span><span class="cx">         $scripts-&gt;add( 'custom-navigation-php-functions', '/wp-admin/js/custom-navigation-php-functions.js', false, '1.0.0' );
</span></span></pre>
</div>
</div>

</body>
</html>