This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch wicket-js-cleanup
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit ae3e68d38ced8e2acc1f32d484766a4cee7af5cc
Author: Sven Meier <svenme...@apache.org>
AuthorDate: Fri May 3 09:26:28 2019 +0200

    JS removed debug window and use browser console instead
    
    let debugbar indicate ajax errors; moved drag support to modal.js
---
 .../WicketAjaxDebugJQueryResourceReference.java    |  65 -----
 .../wicket/ajax/res/js/wicket-ajax-jquery-debug.js | 270 ---------------------
 .../wicket/ajax/res/js/wicket-ajax-jquery.js       | 219 +++--------------
 .../wicket/resource/CoreLibrariesContributor.java  |  12 +-
 .../wicket/settings/JavaScriptLibrarySettings.java |  27 +--
 .../apache/wicket/TestDetachPageAjaxResult.html    |   3 +-
 .../wicket/TestDetachPageExpectedResult.html       |   3 +-
 .../wicket/ajax/AjaxBehaviorEnabled_expected.html  |   3 +-
 .../ajax/AjaxHeaderContributionPage2_expected.html |   3 +-
 .../ajax/AjaxHeaderContributionPage_expected.html  |   3 +-
 .../ajax/DomReadyOrderPage_ajax_expected.html      |   3 +-
 .../wicket/ajax/DomReadyOrderPage_expected.html    |   3 +-
 .../ajax/form/AjaxFormSubmitTestPage_expected.html |   3 +-
 .../OnChangeAjaxBehaviorTestPage_expected.html     |   3 +-
 .../html/ajaxLink/AjaxLinkPageExpectedResult.html  |   3 +-
 .../AjaxLinkWithBorderPageExpectedResult.html      |   3 +-
 .../html/ajaxLink/AjaxPage2_ExpectedResult.html    |   3 +-
 .../SimpleTestPageExpectedResult-1.html            |   3 +-
 .../componentMap/SimpleTestPageExpectedResult.html |   3 +-
 .../markup/head/filter/DeferredPageExpected.html   |   3 +-
 .../html/basic/SimplePageExpectedResult_13.html    |   3 +-
 .../border/HideableBorderPage_ExpectedResult.html  |   3 +-
 .../panel/InlinePanelPageExpectedResult_7.html     |   3 +-
 .../panel/InlinePanelPageExpectedResult_8.html     |   3 +-
 .../locator/CachingResourceStreamLocatorTest.java  |   6 +-
 wicket-core/src/test/js/ajax.js                    |   2 +-
 .../apache/wicket/devutils/debugbar/DebugBar.html  |   4 +-
 .../apache/wicket/devutils/debugbar/DebugBar.java  |   5 +-
 .../wicket/devutils/debugbar/wicket-debugbar.css   |  11 +-
 .../wicket/devutils/debugbar/wicket-debugbar.js    | 104 ++++----
 .../examples/ajax/builtin/AjaxApplication.java     |   2 -
 .../extensions/ajax/markup/html/modal/res/modal.js | 164 +++++++++++++
 32 files changed, 295 insertions(+), 653 deletions(-)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/WicketAjaxDebugJQueryResourceReference.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/WicketAjaxDebugJQueryResourceReference.java
deleted file mode 100644
index b881502..0000000
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/WicketAjaxDebugJQueryResourceReference.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.ajax;
-
-import java.util.List;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.markup.head.HeaderItem;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-
-/**
- * @author hoeve
- */
-public class WicketAjaxDebugJQueryResourceReference extends 
JavaScriptResourceReference
-{
-       private static final long serialVersionUID = 1L;
-
-       private static final WicketAjaxDebugJQueryResourceReference INSTANCE = 
new WicketAjaxDebugJQueryResourceReference();
-
-       /**
-        * @return the singleton INSTANCE
-        */
-       public static WicketAjaxDebugJQueryResourceReference get()
-       {
-               return INSTANCE;
-       }
-
-       private WicketAjaxDebugJQueryResourceReference()
-       {
-               super(AbstractDefaultAjaxBehavior.class, 
"res/js/wicket-ajax-jquery-debug.js");
-       }
-
-       @Override
-       public List<HeaderItem> getDependencies()
-       {
-               final ResourceReference wicketAjaxReference;
-               if (Application.exists())
-               {
-                       wicketAjaxReference = 
Application.get().getJavaScriptLibrarySettings().getWicketAjaxReference();
-               }
-               else
-               {
-                       wicketAjaxReference = 
WicketAjaxJQueryResourceReference.get();
-               }
-               List<HeaderItem> dependencies = super.getDependencies();
-               
dependencies.add(JavaScriptHeaderItem.forReference(wicketAjaxReference));
-               return dependencies;
-       }
-}
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
deleted file mode 100644
index 58425c3..0000000
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*jshint maxlen: 430 */
-/*global console: true */
-
-
-/*
- * Wicket Ajax Debug Window
- */
-
-;(function (undefined) {
-
-       'use strict';
-
-       if (typeof(Wicket) === 'undefined') {
-               window.Wicket = {};
-       }
-
-       if (typeof(Wicket.Ajax) === 'undefined') {
-               Wicket.Ajax = {};
-       }
-
-       if (typeof(Wicket.Ajax.DebugWindow) === 'object') {
-               return;
-       }
-
-       Wicket.Ajax.DebugWindow = {
-
-               /**
-                * A flag indicating whether the ajax debug window is enabled. 
Switched on by AbstractDefaultAjaxBehavior.java
-                */
-               enabled: false,
-
-               scrollLock : false,
-
-               debugWindowId : 'wicketAjaxDebugWindow',
-
-               debugWindowScrollLockLinkId : 'wicketAjaxDebugScrollLock',
-
-               debugWindowDragHandleId : 'wicketAjaxDebugWindowDragHandle',
-
-               debugWindowResizeHandleId : 'wicketAjaxDebugWindowResizeHandle',
-
-               debugWindowLogId : 'wicketAjaxDebugWindowLogId',
-
-               wicketDebugLink: 'wicketDebugLink',
-
-               throttler: new Wicket.Throttler(true),
-
-               showDebugWindow : function() {
-                       var self = Wicket.Ajax.DebugWindow;
-                       self.init();
-
-                       jQuery('#'+self.wicketDebugLink)
-                               .css('backgroundColor', 'white')
-                               .css('color', 'blue');
-
-                       jQuery('#'+self.debugWindowId).slideToggle("fast", 
"swing");
-               },
-
-               hideDebugWindow : function() {
-                       var self = Wicket.Ajax.DebugWindow;
-                       self.init();
-                       jQuery('#'+self.debugWindowId).slideToggle("fast", 
"swing");
-               },
-
-               log : function(msg, label) {
-                       var self = Wicket.Ajax.DebugWindow;
-                       self.init();
-                       var $log = jQuery('#'+self.debugWindowLogId);
-                       var $child = jQuery("<div>");
-
-                       msg = "" + msg;
-                       msg = msg.replace(/&/g, "&amp;");
-                       msg = msg.replace(/</g, "&lt;");
-                       msg = msg.replace(/>/g, "&gt;");
-                       msg = msg.replace(/\n/g, "<br/>");
-                       // WICKET-6340 do not use nbsp, it may not be defined 
in XHTML markup
-                       msg = msg.replace(/ /g, "&#160;");
-                       msg = msg.replace(/\t/g, "&#160;&#160;&#160;&#160;");
-
-                       if (typeof(label) !== "undefined") {
-                               msg = "<b>" + label + "</b>" + msg;
-                       }
-
-                       $child.html(msg);
-                       $child
-                               .css('fontSize','82%')
-                               .css('margin', '0px')
-                               .css('padding', '0px');
-                       $log.append($child);
-
-                       if (self.scrollLock === false) {
-                               $log.scrollTop($log[0].scrollHeight);
-                       }
-               },
-
-               logError : function (msg) {
-                       var self = Wicket.Ajax.DebugWindow;
-                       self.init();
-                       self.log(msg, "<span style='color: red'>ERROR</span>: 
");
-
-                       if (jQuery('#'+self.debugWindowId).css('display') === 
'none') {
-                               jQuery('#'+self.wicketDebugLink)
-                                       .css('backgroundColor', 'crimson')
-                                       .css('color', 'aliceBlue');
-
-                               
self.throttler.throttle("Wicket.Ajax.DebugWindow", 300, function() {
-                                       jQuery('#'+self.wicketDebugLink)
-                                               // poor man's animation to get 
developer's attention
-                                               
.hide(150).show(150).hide(150).show(150);
-                               });
-                       }
-
-                       if (typeof(console) !== "undefined" && 
typeof(console.error) === 'function') {
-                               console.error('Wicket.Ajax: ', msg);
-                       }
-               },
-
-               logInfo : function(msg) {
-                       var self = Wicket.Ajax.DebugWindow;
-                       self.init();
-                       self.log(msg, "<span style='color: blue'>INFO</span>: 
");
-               },
-
-               clearLog : function() {
-                       var self = Wicket.Ajax.DebugWindow;
-                       self.init();
-                       jQuery('#'+self.debugWindowLogId).empty();
-               },
-
-               init : function() {
-
-                       if ( Wicket.Ajax.DebugWindow.enabled) {
-                               var self = Wicket.Ajax.DebugWindow;
-                               var $window = jQuery('#'+self.debugWindowId);
-                               var dwdhid = self.debugWindowDragHandleId;
-                               var dwrhid = self.debugWindowResizeHandleId;
-
-                               if ($window.length === 0) {
-
-                                       var html =
-                                               "<div style='width: 450px; 
display: none; position: absolute; left: 200px; top: 300px; z-index: 1000000;' 
id='"+self.debugWindowId+"'>"+
-                                               "       <div style='border: 1px 
solid black; padding: 1px; background-color: #eee'>"+
-                                               "               <div 
style='overflow: auto; width: 100%'>"+
-                                               "                       <div 
style='float: right; padding: 0.2em; padding-right: 1em; color: black;'>"+
-                                               "               <a 
href='javascript:Wicket.Ajax.DebugWindow.switchScrollLock()' 
id='"+self.debugWindowScrollLockLinkId+
-                                                                               
        "' style='color:blue' onfocus='this.blur();'>scroll lock</a> |"+
-                                               "                               
<a href='javascript:Wicket.Ajax.DebugWindow.clearLog()' 
style='color:blue'>clear</a> | "+
-                                               "                               
<a href='javascript:Wicket.Ajax.DebugWindow.hideDebugWindow()' 
style='color:blue'>close</a>"+
-                                               "                       </div>"+
-                                               "                       <div 
id='"+dwdhid+
-                                                                               
"' style='padding: 0.2em; background-color: gray; color: white; padding-left: 
1em; margin-right: 14em; cursor: move;'>"+
-                                               "                               
Wicket Ajax Debug Window (drag me here)"+
-                                               "                       </div>"+
-                                               "                       <div 
id='"+self.debugWindowLogId+"' style='width: 100%; height: 200px; 
background-color: white; color: black; overflow: auto; white-space: nowrap; 
text-align:left;'>"+
-                                               "                       </div>"+
-                                               "           <div style='height: 
10px; margin:0px; padding:0px;overflow:hidden;'>"+
-                                               "              <div 
style='height: 10px; width: 10px; background-color: gray; margin:0px; padding: 
0px;overflow:hidden; float:right; cursor: nw-resize' id='" + 
self.debugWindowResizeHandleId + "'>"+
-                                               "              </div>"+
-                                               "           </div>"+
-                                               "               </div>"+
-                                               "       </div>" +
-                                               "</div>";
-
-
-                                       // Special style for Internet 6 and 7 
in quirks mode
-                                       if (Wicket.Browser.isIELessThan11() && 
Wicket.Browser.isIEQuirks()) {
-                                               html +=
-                                                       "<a 
id='"+self.wicketDebugLink+"' style='position:absolute; right: 10px; bottom: 
10px; z-index:1000000; padding-top: 0.3em; padding-bottom: 0.3em; line-height: 
normal ; _padding-top: 0em; width: 12em; border: 1px solid black; 
background-color: white; text-align: center; opacity: 0.7; filter: 
alpha(opacity=70); color: blue; " +
-                                                       "                       
           left: expression(-10 - wicketDebugLink.offsetWidth + 
eval(document.documentElement.scrollLeft ? document.documentElement.scrollLeft 
: document.body.scrollLeft) +(document.documentElement.clientWidth ? 
document.documentElement.clientWidth : document.body.clientWidth));"+
-                                                       "                       
           top: expression(-10 - wicketDebugLink.offsetHeight + 
eval(document.documentElement.scrollTop ? document.documentElement.scrollTop : 
document.body.scrollTop) + (document.documentElement.clientHeight ? 
document.documentElement.clientHeight : document.body.clientHeight));'";
-                                       } else {
-                                               html +=
-                                                       "<a 
id='"+self.wicketDebugLink+"' style='position:fixed; right: 10px; bottom: 10px; 
z-index:1000000; padding-top: 0.3em; padding-bottom: 0.3em; line-height: normal 
; _padding-top: 0em; width: 12em; border: 1px solid black; background-color: 
white; text-align: center; opacity: 0.7;  color: blue;'";
-                                       }
-
-                                       html += "  
href='javascript:Wicket.Ajax.DebugWindow.showDebugWindow()'>WICKET AJAX 
DEBUG</a>";
-
-                                       jQuery(html).appendTo(document.body);
-                                       
Wicket.$(self.debugWindowScrollLockLinkId).focusSet = true;
-                                       Wicket.Drag.init(Wicket.$(dwdhid), 
jQuery.noop, jQuery.noop, self.onDrag);
-                                       Wicket.Drag.init(Wicket.$(dwrhid), 
jQuery.noop, jQuery.noop, self.onResize);
-                               }
-                       }
-               },
-
-               switchScrollLock: function() {
-                       var self = Wicket.Ajax.DebugWindow;
-                       self.scrollLock = !self.scrollLock;
-                       var $link = 
jQuery('#'+self.debugWindowScrollLockLinkId),
-                               color;
-                       if (self.scrollLock) {
-                               color = 'red';
-                       } else {
-                               color = 'blue';
-                       }
-                       $link.css('color', color);
-               },
-
-               onResize: function(element, deltaX, deltaY) {
-                       var self = Wicket.Ajax.DebugWindow;
-
-                       var $window = jQuery('#'+self.debugWindowId),
-                               $log = jQuery('#'+self.debugWindowLogId);
-
-                       var width = parseInt($window.css('width'), 10) + deltaX;
-                       var height = parseInt($log.css('height'), 10) + deltaY;
-
-                       var res = [0, 0];
-
-                       if (width < 300) {
-                               res[0] = 300 - width;
-                               width = 300;
-                       }
-
-                       if (height < 100) {
-                               res[1] = 100 - height;
-                               height = 100;
-                       }
-
-                       $window.css('width', width + "px");
-                       $log.css('height',  height + "px");
-
-                       return res;
-               },
-
-               onDrag: function(element, deltaX, deltaY) {
-                       var self = Wicket.Ajax.DebugWindow;
-                       var $window = jQuery('#'+self.debugWindowId);
-
-                       var x = parseInt($window.css('left'), 10) + deltaX;
-                       var y = parseInt($window.css('top'), 10) + deltaY;
-
-                       var res = [0, 0];
-
-                       if (x < 0) {
-                               res[0] = -deltaX;
-                               x = 0;
-                       }
-                       if (y < 0) {
-                               res[1] = -deltaY;
-                               y = 0;
-                       }
-
-                       $window.css('left', x + "px");
-                       $window.css('top', y + "px");
-
-                       return res;
-               }
-       };
-
-       jQuery(window).on('load', Wicket.Ajax.DebugWindow.init);
-
-})();
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index 92c5ef4..7d441ea 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -225,28 +225,36 @@
         * Logging functionality.
         */
        Wicket.Log = {
+                       
+               enabled: false,
+
+               log: function (msg) {
+                       if (Wicket.Log.enabled && typeof(console) !== 
"undefined" && typeof(console.log) === 'function') {
+                               console.log('Wicket: ', msg);
+                       }
+               },
 
-               enabled: function () {
-                       return Wicket.Ajax.DebugWindow && 
Wicket.Ajax.DebugWindow.enabled;
+               debug: function (msg) {
+                       if (Wicket.Log.enabled && typeof(console) !== 
"undefined" && typeof(console.debug) === 'function') {
+                               console.debug('Wicket: ', msg);
+                       }
                },
 
                info: function (msg) {
-                       if (Wicket.Log.enabled()) {
-                               Wicket.Ajax.DebugWindow.logInfo(msg);
+                       if (Wicket.Log.enabled && typeof(console) !== 
"undefined" && typeof(console.info) === 'function') {
+                               console.info('Wicket: ', msg);
                        }
                },
 
-               error: function (msg) {
-                       if (Wicket.Log.enabled()) {
-                               Wicket.Ajax.DebugWindow.logError(msg);
-                       } else if (typeof(console) !== "undefined" && 
typeof(console.error) === 'function') {
-                               console.error('Wicket.Ajax: ', msg);
+               warn: function (msg) {
+                       if (Wicket.Log.enabled && typeof(console) !== 
"undefined" && typeof(console.warn) === 'function') {
+                               console.warn('Wicket: ', msg);
                        }
                },
 
-               log: function (msg) {
-                       if (Wicket.Log.enabled()) {
-                               Wicket.Ajax.DebugWindow.log(msg);
+               error: function (msg) {
+                       if (Wicket.Log.enabled && typeof(console) !== 
"undefined" && typeof(console.error) === 'function') {
+                               console.error('Wicket: ', msg);
                        }
                }
        };
@@ -688,6 +696,9 @@
                                }
                        }
 
+                       Wicket.Log.info("Executing Ajax request");
+                       Wicket.Log.debug(attrs);
+
                        // execute the request
                        var jqXHR = jQuery.ajax({
                                url: url,
@@ -829,11 +840,9 @@
                                }
                                else {
                                        // no redirect, just regular response
-                                       if (Wicket.Log.enabled()) {
-                                               var responseAsText = 
jqXHR.responseText;
-                                               Wicket.Log.info("Received ajax 
response (" + responseAsText.length + " characters)");
-                                               Wicket.Log.info("\n" + 
responseAsText);
-                                       }
+                                       var responseAsText = jqXHR.responseText;
+                                       Wicket.Log.info("Received ajax response 
(" + responseAsText.length + " characters)");
+                                       Wicket.Log.debug(jqXHR.responseXML);
 
                                        // invoke the loaded callback with an 
xml document
                                        return this.loadedCallback(data, 
context);
@@ -926,7 +935,7 @@
                failure: function (context, jqXHR, errorMessage, textStatus) {
                        context.steps.push(jQuery.proxy(function (notify) {
                                if (errorMessage) {
-                                       
Wicket.Log.error("Wicket.Ajax.Call.failure: Error while parsing response: " + 
errorMessage);
+                                       Wicket.Log.error("Ajax.Call.failure: 
Error while parsing response: " + errorMessage);
                                }
                                var attrs = context.attrs;
                                this._executeHandlers(attrs.fh, attrs, jqXHR, 
errorMessage, textStatus);
@@ -953,7 +962,7 @@
                                var element = Wicket.$(compId);
 
                                if (isUndef(element)) {
-                                       
Wicket.Log.error("Wicket.Ajax.Call.processComponent: Component with id [[" +
+                                       
Wicket.Log.error("Ajax.Call.processComponent: Component with id [[" +
                                                compId + "]] was not found 
while trying to perform markup update. " +
                                                "Make sure you called 
component.setOutputMarkupId(true) on the component whose markup you are trying 
to update.");
                                } else {
@@ -1000,7 +1009,7 @@
                                                var f = window.eval(toExecute);
                                                f(notify);
                                        } catch (exception) {
-                                               
log.error("Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: 
" + exception + ", text: " + text);
+                                               
log.error("Ajax.Call.processEvaluation: Exception evaluating javascript: " + 
exception + ", text: " + text);
                                        }
                                        return FunctionsExecuter.ASYNC;
                                };
@@ -1013,7 +1022,7 @@
                                                // do the evaluation in global 
scope
                                                window.eval(script);
                                        } catch (exception) {
-                                               
log.error("Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: 
" + exception + ", text: " + text);
+                                               
log.error("Ajax.Call.processEvaluation: Exception evaluating javascript: " + 
exception + ", text: " + text);
                                        }
                                        // continue to next step
                                        return FunctionsExecuter.DONE;
@@ -1993,7 +2002,7 @@
                                                                                
document.createStyleSheet().cssText = content;
                                                                        }
                                                                        
catch(e) {
-                                                                               
Wicket.Log.error("Wicket.Head.Contributor.processStyle: " + e);
+                                                                               
Wicket.Log.error("Head.Contributor.processStyle: " + e);
                                                                        }
                                                                        
notify();
                                                                };
@@ -2093,7 +2102,7 @@
                                                                        // do 
the evaluation in global scope
                                                                        
window.eval(text);
                                                                } catch (e) {
-                                                                       
Wicket.Log.error("Wicket.Head.Contributor.processScript: " + e + ": eval -> " + 
text);
+                                                                       
Wicket.Log.error("Head.Contributor.processScript: " + e + ": eval -> " + text);
                                                                }
                                                        }
 
@@ -2284,170 +2293,6 @@
                        }
                },
 
-               /**
-                * Flexible dragging support.
-                */
-               Drag: {
-
-                       /**
-                        * Initializes dragging on the specified element.
-                        * 
-                        * @param element {Element}
-                        *            element clicking on which
-                        *            the drag should begin
-                        * @param onDragBegin {Function}
-                        *            called at the begin of dragging - passed 
element and event as parameters,
-                        *            may return false to prevent the start
-                        * @param onDragEnd {Function}
-                        *            handler called at the end of dragging - 
passed element as parameter
-                        * @param onDrag {Function}
-                        *            handler called during dragging - passed 
element and mouse deltas as parameters
-                        */
-                       init: function(element, onDragBegin, onDragEnd, onDrag) 
{
-
-                               if (typeof(onDragBegin) === "undefined") {
-                                       onDragBegin = jQuery.noop;
-                               }
-
-                               if (typeof(onDragEnd) === "undefined") {
-                                       onDragEnd = jQuery.noop;
-                               }
-
-                               if (typeof(onDrag) === "undefined") {
-                                       onDrag = jQuery.noop;
-                               }
-
-                               element.wicketOnDragBegin = onDragBegin;
-                               element.wicketOnDrag = onDrag;
-                               element.wicketOnDragEnd = onDragEnd;
-
-
-                               // set the mousedown handler
-                               Wicket.Event.add(element, "mousedown", 
Wicket.Drag.mouseDownHandler);
-                       },
-
-                       mouseDownHandler: function (e) {
-                               e = Wicket.Event.fix(e);
-
-                               var element = this;
-
-                               if (element.wicketOnDragBegin(element, e) === 
false) {
-                                       return;
-                               }
-
-                               if (e.preventDefault) {
-                                       e.preventDefault();
-                               }
-
-                               element.lastMouseX = e.clientX;
-                               element.lastMouseY = e.clientY;
-
-                               element.old_onmousemove = document.onmousemove;
-                               element.old_onmouseup = document.onmouseup;
-                               element.old_onselectstart = 
document.onselectstart;
-                               element.old_onmouseout = document.onmouseout;
-
-                               document.onselectstart = function () {
-                                       return false;
-                               };
-                               document.onmousemove = Wicket.Drag.mouseMove;
-                               document.onmouseup = Wicket.Drag.mouseUp;
-                               document.onmouseout = Wicket.Drag.mouseOut;
-
-                               Wicket.Drag.current = element;
-                       },
-
-                       /**
-                        * Deinitializes the dragging support on given element.
-                        */
-                       clean: function (element) {
-                               element.onmousedown = null;
-                       },
-
-                       /**
-                        * Called when mouse is moved. This method fires the 
onDrag event
-                        * with element instance, deltaX and deltaY (the 
distance
-                        * between this call and the previous one).
-
-                        * The onDrag handler can optionally return an array of 
two integers
-                        * - the delta correction. This is used, for example, 
if there is
-                        * element being resized and the size limit has been 
reached (but the
-                        * mouse can still move).
-                        *
-                        * @param {Event} e
-                        */
-                       mouseMove: function (e) {
-                               e = Wicket.Event.fix(e);
-                               var o = Wicket.Drag.current;
-
-                               // this happens sometimes in Safari
-                               if (e.clientX < 0 || e.clientY < 0) {
-                                       return;
-                               }
-
-                               if (o !== null) {
-                                       var deltaX = e.clientX - o.lastMouseX;
-                                       var deltaY = e.clientY - o.lastMouseY;
-
-                                       var res = o.wicketOnDrag(o, deltaX, 
deltaY, e);
-
-                                       if (isUndef(res)) {
-                                               res = [0, 0];
-                                       }
-
-                                       o.lastMouseX = e.clientX + res[0];
-                                       o.lastMouseY = e.clientY + res[1];
-                               }
-
-                               return false;
-                       },
-
-                       /**
-                        * Called when the mouse button is released.
-                        * Cleans all temporary variables and callback methods.
-                        */
-                       mouseUp: function () {
-                               var o = Wicket.Drag.current;
-
-                               if (o) {
-                                       o.wicketOnDragEnd(o);
-
-                                       o.lastMouseX = null;
-                                       o.lastMouseY = null;
-
-                                       document.onmousemove = 
o.old_onmousemove;
-                                       document.onmouseup = o.old_onmouseup;
-                                       document.onselectstart = 
o.old_onselectstart;
-
-                                       document.onmouseout = o.old_onmouseout;
-
-                                       o.old_mousemove = null;
-                                       o.old_mouseup = null;
-                                       o.old_onselectstart = null;
-                                       o.old_onmouseout = null;
-
-                                       Wicket.Drag.current = null;
-                               }
-                       },
-
-                       /**
-                        * Called when mouse leaves an element. We need this 
for firefox, as otherwise
-                        * the dragging would continue after mouse leaves the 
document.
-                        * Unfortunately this break dragging in firefox 
immediately after the mouse leaves
-                        * page.
-                        */
-                       mouseOut: function (e) {
-                               if (false && Wicket.Browser.isGecko()) {
-                                       // other browsers handle this more 
gracefully
-                                       e = Wicket.Event.fix(e);
-
-                                       if (e.target.tagName === "HTML") {
-                                               Wicket.Drag.mouseUp(e);
-                                       }
-                               }
-                       }
-               },
-
                // FOCUS FUNCTIONS
 
                Focus: {
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/resource/CoreLibrariesContributor.java
 
b/wicket-core/src/main/java/org/apache/wicket/resource/CoreLibrariesContributor.java
index 49da713..60cfabc 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/resource/CoreLibrariesContributor.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/resource/CoreLibrariesContributor.java
@@ -59,17 +59,13 @@ public class CoreLibrariesContributor
        {
                JavaScriptLibrarySettings jsLibrarySettings = 
application.getJavaScriptLibrarySettings();
 
+               ResourceReference wicketAjaxReference = 
jsLibrarySettings.getWicketAjaxReference();
+               
response.render(JavaScriptHeaderItem.forReference(wicketAjaxReference));
+               
                final DebugSettings debugSettings = 
application.getDebugSettings();
                if (debugSettings.isAjaxDebugModeEnabled())
                {
-                       
response.render(JavaScriptHeaderItem.forReference(jsLibrarySettings.getWicketAjaxDebugReference()));
-                       
response.render(JavaScriptHeaderItem.forScript("Wicket.Ajax.DebugWindow.enabled=true;",
-                               "wicket-ajax-debug-enable"));
-               }
-               else
-               {
-                       ResourceReference wicketAjaxReference = 
jsLibrarySettings.getWicketAjaxReference();
-                       
response.render(JavaScriptHeaderItem.forReference(wicketAjaxReference));
+                       
response.render(JavaScriptHeaderItem.forScript("Wicket.Log.enabled=true;", 
"wicket-ajax-debug-enable"));
                }
        }
 }
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/settings/JavaScriptLibrarySettings.java
 
b/wicket-core/src/main/java/org/apache/wicket/settings/JavaScriptLibrarySettings.java
index 195c573..6ec43dc1 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/settings/JavaScriptLibrarySettings.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/settings/JavaScriptLibrarySettings.java
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.settings;
 
-import org.apache.wicket.ajax.WicketAjaxDebugJQueryResourceReference;
 import org.apache.wicket.ajax.WicketAjaxJQueryResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.resource.JQueryResourceReference;
@@ -40,8 +39,6 @@ public class JavaScriptLibrarySettings
 
        private ResourceReference wicketAjaxReference = 
WicketAjaxJQueryResourceReference.get();
 
-       private ResourceReference wicketAjaxDebugReference = 
WicketAjaxDebugJQueryResourceReference.get();
-
        /**
         * @return the reference to the JQuery JavaScript library used as 
backing library for
         *         wicket-event and wicket-ajax
@@ -81,26 +78,4 @@ public class JavaScriptLibrarySettings
                this.wicketAjaxReference = Args.notNull(wicketAjaxReference, 
"wicketAjaxReference");
                return this;
        }
-
-       /**
-        * The Wicket Ajax Debug Window.
-        *
-        * @return the reference to the implementation of wicket-ajax-debug.js
-        */
-       public ResourceReference getWicketAjaxDebugReference()
-       {
-               return wicketAjaxDebugReference;
-       }
-
-       /**
-        * @param wicketAjaxDebugReference
-        *            a reference to the implementation of wicket-ajax-debug.js
-        * @return {@code this} object for chaining
-        */
-       public JavaScriptLibrarySettings 
setWicketAjaxDebugReference(ResourceReference wicketAjaxDebugReference)
-       {
-               this.wicketAjaxDebugReference = 
Args.notNull(wicketAjaxDebugReference,
-                       "wicketAjaxDebugReference");
-               return this;
-       }
-}
+}
\ No newline at end of file
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html 
b/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
index 2d737ec..973720e 100644
--- a/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
+++ b/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?><ajax-response><component id="comp1" 
><![CDATA[<span wicket:id="comp" 
id="comp1">body</span>]]></component><header-contribution><![CDATA[<head 
xmlns:wicket="http://wicket.apache.org";><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]]]><![CDATA[>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html 
b/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
index 837c10d..c4b5850 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
@@ -1,10 +1,9 @@
 <html xmlns:wicket>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
index cfbfd37..0d62464 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
@@ -2,10 +2,9 @@
 <html xmlns="http://www.w3.org/1999/xhtml";>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
index 6bab591..f0c0400 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
@@ -7,10 +7,9 @@
 
 <link href="../../test2"/>
 <script type="text/javascript" src="../../javascripturlB"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
index 6ad9cd4..84f795a 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
@@ -4,10 +4,9 @@
 <script type="text/javascript" src="../../javascripturl"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
index ecf2d89..9791e9c 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?><ajax-response><component id="test1" 
><![CDATA[<a href="./org.apache.wicket.ajax.DomReadyOrderPage?0-1.-test" 
wicket:id="test" 
id="test1">Test</a>]]></component><header-contribution><![CDATA[<head 
xmlns:wicket="http://wicket.apache.org";><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]]]><![CDATA[>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
index 6ab6893..f127d71 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
@@ -1,10 +1,9 @@
 <html>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
index 1e39106..cd1987a 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
@@ -1,10 +1,9 @@
 <html>
        <head><script type="text/javascript" 
src="./resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="./resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="./resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
index 857d72a..e5ced2e 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
@@ -1,10 +1,9 @@
 <html>
        <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
index b4e45cc..ce36c3b 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
@@ -1,10 +1,9 @@
 <html>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
index 8a634dd..77e9996 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
@@ -1,10 +1,9 @@
 <html>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
index bf9d782..8163e78 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
@@ -1,10 +1,9 @@
 <html>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
index 68aa9f8..279ac72 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?><ajax-response><component id="linja11" 
><![CDATA[<span wicket:id="linja1" 
id="linja11">1</span>]]></component><header-contribution><![CDATA[<head 
xmlns:wicket="http://wicket.apache.org";><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]]]><![CDATA[>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
index e65d62b..6a70125 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
@@ -1,10 +1,9 @@
 <html>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPageExpected.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPageExpected.html
index a0f33bf..be0f042 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPageExpected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPageExpected.html
@@ -1,10 +1,9 @@
 <html 
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"; >
     <head><script type="text/javascript" defer="defer" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" defer="defer" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" defer="defer" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" >
 /*<![CDATA[*/
-document.addEventListener('DOMContentLoaded', function() { 
Wicket.Ajax.DebugWindow.enabled=true;; });
+document.addEventListener('DOMContentLoaded', function() { 
Wicket.Log.enabled=true;; });
 /*]]>*/
 </script>
 <script type="text/javascript" >
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
index 17213e5..28588f0 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
@@ -4,10 +4,9 @@
 <html wicket:id="html" xmlns:wicket="" xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:lang="[current language]" lang="de" id="html1">
   <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
index d526446..080bead 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
@@ -1,10 +1,9 @@
 <html xmlns:wicket>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
index 92b45a7..365ba0f 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
@@ -1,10 +1,9 @@
 <html xmlns:wicket>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
index 8d73eb8..34ad3cc9 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
@@ -1,10 +1,9 @@
 <html xmlns:wicket>
 <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-3.4.1.js"></script>
 <script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
-Wicket.Ajax.DebugWindow.enabled=true;
+Wicket.Log.enabled=true;
 /*]]>*/
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/CachingResourceStreamLocatorTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/CachingResourceStreamLocatorTest.java
index 21b4cf5..825d92a 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/CachingResourceStreamLocatorTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/CachingResourceStreamLocatorTest.java
@@ -82,7 +82,7 @@ class CachingResourceStreamLocatorTest
                Locale locale = null;
                String extension = null;
 
-               String filename = 
"org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js";
+               String filename = 
"org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js";
 
                // a strict lookup for the resource with no specific locale 
results in a match
                IResourceStream strictLocate = 
cachingLocator.locate(AbstractDefaultAjaxBehavior.class,
@@ -113,7 +113,7 @@ class CachingResourceStreamLocatorTest
                Locale locale = new Locale("nl", "NL");
                String extension = null;
 
-               String filename = 
"org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js";
+               String filename = 
"org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js";
 
                // a strict lookup of a localized resource should not find the 
non-localized resource
                IResourceStream strictLocate = 
cachingLocator.locate(AbstractDefaultAjaxBehavior.class,
@@ -143,7 +143,7 @@ class CachingResourceStreamLocatorTest
                Locale locale = new Locale("nl", "NL");
                String extension = null;
 
-               String filename = 
"org/apache/wicket/ajax/res/js/wicket-ajax-jquery-debug.js";
+               String filename = 
"org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js";
 
                // a non-strict lookup with a specific locale should find the 
non-localized resource
                IResourceStream nonStrictLocate = 
cachingLocator.locate(AbstractDefaultAjaxBehavior.class,
diff --git a/wicket-core/src/test/js/ajax.js b/wicket-core/src/test/js/ajax.js
index 3863f2b..95078ea 100644
--- a/wicket-core/src/test/js/ajax.js
+++ b/wicket-core/src/test/js/ajax.js
@@ -151,7 +151,7 @@ jQuery(document).ready(function() {
                        var oldWicketLogError = Wicket.Log.error;
 
                        Wicket.Log.error = function(msg) {
-                               equal(msg, 'Wicket.Ajax.Call.processComponent: 
Component with id [[componentToReplaceDoesNotExist]] was not found while trying 
to perform markup update. Make sure you called 
component.setOutputMarkupId(true) on the component whose markup you are trying 
to update.');
+                               equal(msg, 'Ajax.Call.processComponent: 
Component with id [[componentToReplaceDoesNotExist]] was not found while trying 
to perform markup update. Make sure you called 
component.setOutputMarkupId(true) on the component whose markup you are trying 
to update.');
 
                                // restore the original method
                                Wicket.Log.error = oldWicketLogError;
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.html
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.html
index f6db5d2..0ff4fdf 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.html
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.html
@@ -21,10 +21,10 @@
 <body>
  
        <wicket:panel>
-               <a id="wicketDebugBarCollapse" 
onclick="wicketDebugBarCollapse();"><img wicket:id="logo" src="wicket.png" 
alt="Wicket" /></a>
+               <a id="wicketDebugBarCollapse"><img wicket:id="logo" 
src="wicket.png" alt="Wicket" /></a>
                <span id="wicketDebugBarContents" wicket:id="content">
                        <span wicket:id="contributors"><span 
wicket:id="contrib" class="contributor"></span></span>
-                       <a id="wicketDebugBarRemove" 
onclick="wicketDebugBarRemove();"><img wicket:id="removeImg" src="remove.png" 
alt="Remove" /></a>
+                       <a id="wicketDebugBarRemove"><img wicket:id="removeImg" 
src="remove.png" alt="Remove" /></a>
                </span>
        </wicket:panel>
 
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java
index c1f6a69..8c9e1c6 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java
@@ -36,6 +36,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.resource.CssResourceReference;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.resource.CoreLibrariesContributor;
 import org.apache.wicket.util.lang.Args;
 
 /**
@@ -177,11 +178,13 @@ public class DebugBar extends DevUtilsPanel
        @Override
        public void renderHead(final IHeaderResponse response)
        {
+               CoreLibrariesContributor.contributeAjax(getApplication(), 
response);
+               
                response.render(CssHeaderItem.forReference(new 
CssResourceReference(DebugBar.class,
                        "wicket-debugbar.css")));
                response.render(JavaScriptHeaderItem.forReference(new 
JavaScriptResourceReference(
                        DebugBar.class, "wicket-debugbar.js")));
-               
response.render(OnDomReadyHeaderItem.forScript("wicketDebugBarCheckState()"));
+               
response.render(OnDomReadyHeaderItem.forScript("Wicket.debugBar();"));
        }
 
        /**
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/wicket-debugbar.css
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/wicket-debugbar.css
index b5cb09a..282835b 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/wicket-debugbar.css
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/wicket-debugbar.css
@@ -55,14 +55,17 @@
        so that if there is an error, we can simply change 
        the class and it will use the error colors instead.
 */
-.wicketDebugBarError {
-       background-color: red;
-       opacity: 0.8;
-}
 .wicketDebugBar {
        background-color: #DDDDDD;
        opacity: 0.8;
 }
+.wicketDebugBarError {
+       animation: wicketDebugBarFlicker 1s;
+}
+@keyframes wicketDebugBarFlicker {
+       25%, 75% {background-color: red;}
+       0%, 50%, 100% {background-color: #DDDDDD;}      
+}
 
 #wicketDebugBarCollapse {
        cursor: pointer;
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/wicket-debugbar.js
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/wicket-debugbar.js
index 443c286..c87ec8a 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/wicket-debugbar.js
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/wicket-debugbar.js
@@ -14,57 +14,69 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-function wicketDebugBarCollapse() {
-       wicketDebugBarToggleVisibility('wicketDebugBarContents');
-}
+;(function (jQuery, undefined) {
 
-function wicketDebugBarRemove() {
-       wicketDebugBarToggleVisibility('wicketDebugBar');
-}
+       'use strict';
 
-function wicketDebugBarToggleVisibility(elemID) {
-       var elem = document.getElementById(elemID);
-       var vis  = elem.style.display != 'none';
-       elem.style.display = (vis ? 'none' : '');
-    // alter the state cookie so we can initialize it properly on domReady
-       wicketDebugBarSetExpandedCookie(vis ? 'collapsed' : 'expanded')
-}
+       if (typeof(Wicket) === 'undefined') {
+               window.Wicket = {};
+       }
 
-function wicketDebugBarSetExpandedCookie(value) {
-       document.cookie =  "wicketDebugBarState=" + window.escape(value);
-}
+       if (typeof(Wicket.debugBar) === 'object') {
+               return;
+       }
 
-function wicketDebugBarGetExpandedCookie() {
-       var name = 'wicketDebugBarState';
-       if (document.cookie.length > 0) {
-               var start = document.cookie.indexOf (name + "=");
-               if (start !== -1) {
-                       start = start + name.length + 1;
-                       var end = document.cookie.indexOf(";", start);
-                       if (end === -1) {
-                               end = document.cookie.length;
+       Wicket.debugBar = function() {
+               
+               function setExpandedCookie(value) {
+                       document.cookie =  "wicketDebugBarState=" + 
window.escape(value);
+               }
+               
+               function getExpandedCookie() {
+                       var name = 'wicketDebugBarState';
+                       if (document.cookie.length > 0) {
+                               var start = document.cookie.indexOf (name + 
"=");
+                               if (start !== -1) {
+                                       start = start + name.length + 1;
+                                       var end = document.cookie.indexOf(";", 
start);
+                                       if (end === -1) {
+                                               end = document.cookie.length;
+                                       }
+                                       return 
window.unescape(document.cookie.substring(start,end));
+                               } else {
+                                       return null;
+                               }
+                       } else {
+                               return null;
                        }
-                       return 
window.unescape(document.cookie.substring(start,end));
-               } else {
-                       return null;
                }
-       } else {
-               return null;
-       }
-}
 
-function wicketDebugBarCheckState() {
-       var state = wicketDebugBarGetExpandedCookie();
-    // state cookie has not been set. determine state and set it
-       if (state === null) {
-               var isVisible = 
jQuery('#wicketDebugBarContents').is(':visible');
-               wicketDebugBarSetExpandedCookie(isVisible ? 'expanded' : 
'collapsed');
-    // set state of debug bar according to cookie
-       } else {
-               if (state === 'expanded') {
-                       jQuery('#wicketDebugBarContents').css('display', '');
-               } else {
-                       jQuery('#wicketDebugBarContents').css('display', 
'none');
+               jQuery('#wicketDebugBarCollapse').on("click", function() {
+                       var content = jQuery('#wicketDebugBarContents');
+                       setExpandedCookie(!content.is(':visible'));
+                       content.toggle(400);
+               });
+
+               jQuery('#wicketDebugBarRemove').on("click", function() {
+                       var bar = jQuery('#wicketDebugBar');
+                       setExpandedCookie(!bar.is(':visible'));
+                       bar.hide();
+               });
+
+           // determine state and set it
+               if (getExpandedCookie() === 'false') {
+                       jQuery('#wicketDebugBarContents').hide();
                }
-       }
-}
+               
+               var original = Wicket.Log.error;
+               Wicket.Log.error = function(msg) {
+                       original(msg);
+                       
+                       jQuery('#wicketDebugBar')
+                               .addClass('wicketDebugBarError')
+                               .one('animationend', function() {
+                                       
jQuery(this).removeClass('wicketDebugBarError');
+                               });
+               };
+       };
+})(jQuery);
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
index 82caa41..b43828e 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxApplication.java
@@ -42,8 +42,6 @@ public class AjaxApplication extends WicketExampleApplication
 
                getRequestCycleSettings().addResponseFilter(new 
AjaxServerAndClientTimeFilter());
 
-               getDebugSettings().setAjaxDebugModeEnabled(true);
-               
                getComponentInitializationListeners().add(new 
IComponentInitializationListener()
                {
                        @Override
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
index b4293c5..d5800e0 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
@@ -1548,4 +1548,168 @@
                }
        };
 
+       /**
+        * Flexible dragging support.
+        */
+       Wicket.Drag = {
+
+               /**
+                * Initializes dragging on the specified element.
+                * 
+                * @param element {Element}
+                *            element clicking on which
+                *            the drag should begin
+                * @param onDragBegin {Function}
+                *            called at the begin of dragging - passed element 
and event as parameters,
+                *            may return false to prevent the start
+                * @param onDragEnd {Function}
+                *            handler called at the end of dragging - passed 
element as parameter
+                * @param onDrag {Function}
+                *            handler called during dragging - passed element 
and mouse deltas as parameters
+                */
+               init: function(element, onDragBegin, onDragEnd, onDrag) {
+
+                       if (typeof(onDragBegin) === "undefined") {
+                               onDragBegin = jQuery.noop;
+                       }
+
+                       if (typeof(onDragEnd) === "undefined") {
+                               onDragEnd = jQuery.noop;
+                       }
+
+                       if (typeof(onDrag) === "undefined") {
+                               onDrag = jQuery.noop;
+                       }
+
+                       element.wicketOnDragBegin = onDragBegin;
+                       element.wicketOnDrag = onDrag;
+                       element.wicketOnDragEnd = onDragEnd;
+
+
+                       // set the mousedown handler
+                       Wicket.Event.add(element, "mousedown", 
Wicket.Drag.mouseDownHandler);
+               },
+
+               mouseDownHandler: function (e) {
+                       e = Wicket.Event.fix(e);
+
+                       var element = this;
+
+                       if (element.wicketOnDragBegin(element, e) === false) {
+                               return;
+                       }
+
+                       if (e.preventDefault) {
+                               e.preventDefault();
+                       }
+
+                       element.lastMouseX = e.clientX;
+                       element.lastMouseY = e.clientY;
+
+                       element.old_onmousemove = document.onmousemove;
+                       element.old_onmouseup = document.onmouseup;
+                       element.old_onselectstart = document.onselectstart;
+                       element.old_onmouseout = document.onmouseout;
+
+                       document.onselectstart = function () {
+                               return false;
+                       };
+                       document.onmousemove = Wicket.Drag.mouseMove;
+                       document.onmouseup = Wicket.Drag.mouseUp;
+                       document.onmouseout = Wicket.Drag.mouseOut;
+
+                       Wicket.Drag.current = element;
+               },
+
+               /**
+                * Deinitializes the dragging support on given element.
+                */
+               clean: function (element) {
+                       element.onmousedown = null;
+               },
+
+               /**
+                * Called when mouse is moved. This method fires the onDrag 
event
+                * with element instance, deltaX and deltaY (the distance
+                * between this call and the previous one).
+
+                * The onDrag handler can optionally return an array of two 
integers
+                * - the delta correction. This is used, for example, if there 
is
+                * element being resized and the size limit has been reached 
(but the
+                * mouse can still move).
+                *
+                * @param {Event} e
+                */
+               mouseMove: function (e) {
+                       e = Wicket.Event.fix(e);
+                       var o = Wicket.Drag.current;
+
+                       // this happens sometimes in Safari
+                       if (e.clientX < 0 || e.clientY < 0) {
+                               return;
+                       }
+
+                       if (o !== null) {
+                               var deltaX = e.clientX - o.lastMouseX;
+                               var deltaY = e.clientY - o.lastMouseY;
+
+                               var res = o.wicketOnDrag(o, deltaX, deltaY, e);
+
+                               if (res !== "undefined") {
+                                       res = [0, 0];
+                               }
+
+                               o.lastMouseX = e.clientX + res[0];
+                               o.lastMouseY = e.clientY + res[1];
+                       }
+
+                       return false;
+               },
+
+               /**
+                * Called when the mouse button is released.
+                * Cleans all temporary variables and callback methods.
+                */
+               mouseUp: function () {
+                       var o = Wicket.Drag.current;
+
+                       if (o) {
+                               o.wicketOnDragEnd(o);
+
+                               o.lastMouseX = null;
+                               o.lastMouseY = null;
+
+                               document.onmousemove = o.old_onmousemove;
+                               document.onmouseup = o.old_onmouseup;
+                               document.onselectstart = o.old_onselectstart;
+
+                               document.onmouseout = o.old_onmouseout;
+
+                               o.old_mousemove = null;
+                               o.old_mouseup = null;
+                               o.old_onselectstart = null;
+                               o.old_onmouseout = null;
+
+                               Wicket.Drag.current = null;
+                       }
+               },
+
+               /**
+                * Called when mouse leaves an element. We need this for 
firefox, as otherwise
+                * the dragging would continue after mouse leaves the document.
+                * Unfortunately this break dragging in firefox immediately 
after the mouse leaves
+                * page.
+                */
+               mouseOut: function (e) {
+                       if (false && Wicket.Browser.isGecko()) {
+                               // other browsers handle this more gracefully
+                               e = Wicket.Event.fix(e);
+
+                               if (e.target.tagName === "HTML") {
+                                       Wicket.Drag.mouseUp(e);
+                               }
+                       }
+               }
+       };
+       
 })();

Reply via email to