r2513 - spinner: added mousewheel plugin to trunk/external.

r2513 - spinner: added mousewheel plugin to trunk/external.


Author: pazu2k@gmail.com
Date: Sun May 10 21:29:30 2009
New Revision: 2513
Added:
trunk/external/mousewheel/
trunk/external/mousewheel/ChangeLog.markdown (contents, props changed)
trunk/external/mousewheel/README.markdown (contents, props changed)
trunk/external/mousewheel/jquery.mousewheel.js (contents, props
changed)
trunk/external/mousewheel/jquery.mousewheel.min.js
trunk/external/mousewheel/test/
trunk/external/mousewheel/test/index.html (contents, props changed)
Log:
spinner: added mousewheel plugin to trunk/external.
Added: trunk/external/mousewheel/ChangeLog.markdown
==============================================================================
--- (empty file)
+++ trunk/external/mousewheel/ChangeLog.markdown    Sun May 10 21:29:30 2009
@@ -0,0 +1,49 @@
+# Mouse Wheel ChangeLog
+
+
+# 3.0.2
+
+* Fixed delta being opposite value in latest Opera
+* No longer fix pageX, pageY for older mozilla browsers
+* Removed browser detection
+* Cleaned up the code
+
+
+# 3.0.1
+
+* Bad release... creating a new release due to plugins.jquery.com issue :(
+
+
+# 3.0
+
+* Uses new special events API in jQuery 1.2.2+
+* You can now treat "mousewheel" as a normal event and use .bind, .unbind
and .trigger
+* Using jQuery.data API for expandos
+
+
+# 2.2
+
+* Fixed pageX, pageY, clientX and clientY event properties for Mozilla
based browsers
+
+
+# 2.1.1
+
+* Updated to work with jQuery 1.1.3
+* Used one instead of bind to do unload event for clean up.
+
+
+# 2.1
+
+* Fixed an issue with the unload handler
+
+
+# 2.0
+
+* Major reduction in code size and complexity (internals have change a
whole lot)
+
+
+# 1.0
+
+* Fixed Opera issue
+* Fixed an issue with children elements that also have a mousewheel handler
+* Added ability to handle multiple handlers
\ No newline at end of file
Added: trunk/external/mousewheel/README.markdown
==============================================================================
--- (empty file)
+++ trunk/external/mousewheel/README.markdown    Sun May 10 21:29:30 2009
@@ -0,0 +1,11 @@
+# jQuery Mouse Wheel Plugin
+
+A jQuery plugin that adds cross-browser mouse wheel support.
+
+The latest stable release can be downloaded from the [project
page](http://plugins.jquery.com/project/mousewheel)
+
+## License
+
+The mousewheel plugin is dual licensed *(just like jQuery)* under the
[MIT](http://www.opensource.org/licenses/mit-license.php) and
[GPL](http://www.opensource.org/licenses/gpl-license.php) licenses.
+
+Copyright (c) 2009 [Brandon Aaron](http://brandonaaron.net)
\ No newline at end of file
Added: trunk/external/mousewheel/jquery.mousewheel.js
==============================================================================
--- (empty file)
+++ trunk/external/mousewheel/jquery.mousewheel.js    Sun May 10 21:29:30 2009
@@ -0,0 +1,60 @@
+/*! Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
+ * Dual licensed under the MIT
(http://www.opensource.org/licenses/mit-license.php)
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ *
+ * Version: 3.0.2
+ *
+ * Requires: 1.2.2+
+ */
+
+(function($) {
+
+var types = ['DOMMouseScroll', 'mousewheel'];
+
+$.event.special.mousewheel = {
+    setup: function() {
+        if ( this.addEventListener )
+            for ( var i=types.length; i; )
+                this.addEventListener( types[--i], handler, false );
+        else
+            this.onmousewheel = handler;
+    },
+    
+    teardown: function() {
+        if ( this.removeEventListener )
+            for ( var i=types.length; i; )
+                this.removeEventListener( types[--i], handler, false );
+        else
+            this.onmousewheel = null;
+    }
+};
+
+$.fn.extend({
+    mousewheel: function(fn) {
+        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
+    },
+    
+    unmousewheel: function(fn) {
+        return this.unbind("mousewheel", fn);
+    }
+});
+
+
+function handler(event) {
+    var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
+    
+    event = $.event.fix(event || window.event);
+    event.type = "mousewheel";
+    
+    if ( event.wheelDelta ) delta = event.wheelDelta/120;
+    if ( event.detail ) delta = -event.detail/3;
+    
+    // Add events and delta to the front of the arguments
+    args.unshift(event, delta);
+
+    return $.event.handle.apply(this, args);
+}
+
+})(jQuery);
\ No newline at end of file
Added: trunk/external/mousewheel/jquery.mousewheel.min.js
==============================================================================
--- (empty file)
+++ trunk/external/mousewheel/jquery.mousewheel.min.js    Sun May 10 21:29:30
2009
@@ -0,0 +1,11 @@
+/* Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
+ * Dual licensed under the MIT
(http://www.opensource.org/licenses/mit-license.php)
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ *
+ * Version: 3.0.2
+ *
+ * Requires: 1.2.2+
+ */
+(function(c){var
a=["DOMMouseScroll","mousewheel"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var
d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var
d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return
d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return
this.unbind("mousewheel",d)}});function b(f){var
d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||
window.event);f.type="mousewheel";if(f.wheelDelta){g=f.wheelDelta/120}if(f.detail){g=-f.detail/3}d.unshift(f,g);return
c.event.handle.apply(this,d)}})(jQuery);
\ No newline at end of file
Added: trunk/external/mousewheel/test/index.html
==============================================================================
--- (empty file)
+++ trunk/external/mousewheel/test/index.html    Sun May 10 21:29:30 2009
@@ -0,0 +1,204 @@
+<!doctype html>
+<html>
+    <head>
+        <title>Testing mousewheel plugin</title>
+        <script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
+        <script type="text/javascript" src="../jquery.mousewheel.js"></script>
+        
+        <style>
+            #test1 {
+                background-color: #000;
+                width: 100px;
+                height: 100px;
+                color: #fff;
+                float: left;
+            }
+            
+            #test2 {
+                background-color: #333;
+                width: 100px;
+                height: 100px;
+                color: #fff;
+                float: left;
+            }
+            
+            #test3 {
+                background-color: #666;
+                width: 100px;
+                height: 100px;
+                color: #fff;
+                float: left;
+            }
+            
+            #test4 {
+                background-color: #000;
+                width: 100px;
+                height: 100px;
+                color: #fff;
+                float: left;
+            }
+            
+            #test5 {
+                background-color: #333;
+                padding: 5px;
+                width: 400px;
+                height: 400px;
+                color: #fff;
+                float: left;
+            }
+            
+            #test6 {
+                background-color: #666;
+                padding: 5px;
+                width: 250px;
+                height: 250px;
+                color: #fff;
+                float: left;
+            }
+
+            #test7 {
+                background-color: #000;
+                padding: 5px;
+                width: 100px;
+                height: 100px;
+                color: #fff;
+                float: left;
+            }
+            
+            #forceScroll {
+                clear: both;
+                height: 1000px;
+            }
+            
+            #logger {
+                position: absolute;
+                top: 395px;
+                left: 12px;
+                width: 380px;
+                height: 290px;
+                overflow: auto;
+            }
+        </style>
+        <script type="text/javascript">
+            $(function() {
+                $('#userAgent').html(navigator.userAgent);
+                
+                
+                $('#test1')
+                    .mousewheel(function(event, delta) {
+                        if (delta > 0)
+                            log('#test1: up ('+delta+')');
+                        else if (delta < 0)
+                            log('#test1: down ('+delta+')');
+                        
+                        log('pageX: ' + event.pageX + ' pageY: ' + event.pageY );
+                    });
+                
+                $('#test2')
+                    .mousewheel(function(event, delta) {
+                        if (delta > 0)
+                            log('#test2: up ('+delta+')');
+                        else if (delta < 0)
+                            log('#test2: down ('+delta+')');
+                        return false; // prevent default
+                    });
+                
+                $('#test3')
+                    .hover(function() { log('#test3: mouseover'); }, function() {
log('#test3: mouseout'); })
+                    .mousewheel(function(event, delta) {
+                        log('#test3: I should not have been logged');
+                    })
+                    .unmousewheel();
+                
+                var testRemoval = function(event, delta) {
+                    log('#test4: I should not have been logged');
+                };
+                
+                $('#test4')
+                    .mousewheel(function(event, delta) {
+                        if (delta > 0)
+                            log('#test4: up ('+delta+')');
+                        else if (delta < 0)
+                            log('#test4: down ('+delta+')');
+                        return false;
+                    })
+                    .mousewheel(testRemoval)
+                    .mousewheel(function(event, delta) {
+                        if (delta > 0)
+                            log('#test4: up ('+delta+') from 2nd handler');
+                        else if (delta < 0)
+                            log('#test4: down ('+delta+') from 2nd handler');
+                        return false;
+                    })
+                    .unmousewheel(testRemoval);
+                
+                $('#test5')
+                    .mousewheel(function(event, delta) {
+                        if (delta > 0)
+                            log('#test5: up ('+delta+')');
+                        else if (delta < 0)
+                            log('#test5: down ('+delta+')');
+                        
+                        event.stopPropagation();
+                        event.preventDefault();
+                    });
+                
+                $('#test6')
+                    .mousewheel(function(event, delta) {
+                        if (delta > 0)
+                            log('#test6: up ('+delta+')');
+                        else if (delta < 0)
+                            log('#test6: down ('+delta+')');
+                        
+                        event.stopPropagation();
+                        event.preventDefault();
+                    });
+
+                $('#test7')
+                    .mousewheel(function(event, delta) {
+                        if (delta > 0)
+                            log('#test7: up ('+delta+')');
+                        else if (delta < 0)
+                            log('#test7 down ('+delta+')');
+                        
+                        event.preventDefault();
+                    });
+                
+                function log(msg) {
+                    $('#logger').append(msg+'
').scrollTop(999999);
+                };
+            });
+        </script>
+    </head>
+    <body>
+        <h1 id="banner">jQuery mousewheel.js - Test</h1>
+        <h2 id="userAgent"></h2>
+        
+        <ul>
+            <li><strong>Test1</strong> is just using the plain on mousewheel() with
a function passed in and does not prevent default. (Also logs the value of
pageX and pageY event properties.)</li>
+            <li><strong>Test2</strong> should prevent the default action.</li>
+            <li><strong>Test3</strong> should only log a mouseover and mouseout
event. Testing unmousewheel().</li>
+            <li><strong>Test4</strong> has two handlers.</li>
+            <li><strong>Test5</strong> is like Test2 but has children. The children
should not scroll until mousing over them.</li>
+            <li><strong>Test6</strong> is like Test5 but should not scroll children
or parents.</li>
+            <li><strong>Test7</strong> is like Test6 but has no children. It will
propagate the event and scroll test 6 as well.</li>
+        </ul>
+        
+        
+        <div id="test1">

Test1

</div>
+        <div id="test2">

Test2

</div>
+        <div id="test3">

Test3

</div>
+        <div id="test4">

Test4

</div>
+        <div id="test5">
+            

Test5


+            <div id="test6">
+                

Test6


+                <div id="test7">

Test7

</div>
+            </div>
+        </div>
+        
+        <div id="logger"></div>
+        
+        <div id="forceScroll"></div>
+    </body>
+</html>