From e2a2e2b28bfc2b70ade8c6fb52363176af12804b Mon Sep 17 00:00:00 2001 From: pete Date: Fri, 9 May 2008 00:31:16 +0000 Subject: jquery framework git-svn-id: https://code.elgg.org/elgg/trunk@638 36083f99-b078-4883-b0ff-0f9b5a30f544 --- vendors/jquery/ui.base.js | 204 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100755 vendors/jquery/ui.base.js (limited to 'vendors/jquery/ui.base.js') diff --git a/vendors/jquery/ui.base.js b/vendors/jquery/ui.base.js new file mode 100755 index 000000000..36a623912 --- /dev/null +++ b/vendors/jquery/ui.base.js @@ -0,0 +1,204 @@ +/* + * jQuery UI @VERSION + * + * Copyright (c) 2008 Paul Bakaus (ui.jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + * + * $Date: 2008-04-01 09:23:47 -0400 (Tue, 01 Apr 2008) $ + * $Rev: 5174 $ + */ +;(function($) { + + //If the UI scope is not available, add it + $.ui = $.ui || {}; + + //Add methods that are vital for all mouse interaction stuff (plugin registering) + $.extend($.ui, { + plugin: { + add: function(module, option, set) { + var proto = $.ui[module].prototype; + for(var i in set) { + proto.plugins[i] = proto.plugins[i] || []; + proto.plugins[i].push([option, set[i]]); + } + }, + call: function(instance, name, arguments) { + var set = instance.plugins[name]; if(!set) return; + for (var i = 0; i < set.length; i++) { + if (instance.options[set[i][0]]) set[i][1].apply(instance.element, arguments); + } + } + }, + cssCache: {}, + css: function(name) { + if ($.ui.cssCache[name]) return $.ui.cssCache[name]; + var tmp = $('
').addClass(name).css({position:'absolute', top:'-5000px', left:'-5000px', display:'block'}).appendTo('body'); + + //if (!$.browser.safari) + //tmp.appendTo('body'); + + //Opera and Safari set width and height to 0px instead of auto + //Safari returns rgba(0,0,0,0) when bgcolor is not set + $.ui.cssCache[name] = !!( + (!/auto|default/.test(tmp.css('cursor')) || (/^[1-9]/).test(tmp.css('height')) || (/^[1-9]/).test(tmp.css('width')) || + !(/none/).test(tmp.css('backgroundImage')) || !(/transparent|rgba\(0, 0, 0, 0\)/).test(tmp.css('backgroundColor'))) + ); + try { $('body').get(0).removeChild(tmp.get(0)); } catch(e){} + return $.ui.cssCache[name]; + }, + disableSelection: function(e) { + e.unselectable = "on"; + e.onselectstart = function() { return false; }; + if (e.style) e.style.MozUserSelect = "none"; + }, + enableSelection: function(e) { + e.unselectable = "off"; + e.onselectstart = function() { return true; }; + if (e.style) e.style.MozUserSelect = ""; + }, + hasScroll: function(e, a) { + var scroll = /top/.test(a||"top") ? 'scrollTop' : 'scrollLeft', has = false; + if (e[scroll] > 0) return true; e[scroll] = 1; + has = e[scroll] > 0 ? true : false; e[scroll] = 0; + return has; + } + }); + + /******* fn scope modifications ********/ + + $.each( ['Left', 'Top'], function(i, name) { + if(!$.fn['scroll'+name]) $.fn['scroll'+name] = function(v) { + return v != undefined ? + this.each(function() { this == window || this == document ? window.scrollTo(name == 'Left' ? v : $(window)['scrollLeft'](), name == 'Top' ? v : $(window)['scrollTop']()) : this['scroll'+name] = v; }) : + this[0] == window || this[0] == document ? self[(name == 'Left' ? 'pageXOffset' : 'pageYOffset')] || $.boxModel && document.documentElement['scroll'+name] || document.body['scroll'+name] : this[0][ 'scroll' + name ]; + }; + }); + + var _remove = $.fn.remove; + $.fn.extend({ + position: function() { + var offset = this.offset(); + var offsetParent = this.offsetParent(); + var parentOffset = offsetParent.offset(); + + return { + top: offset.top - num(this[0], 'marginTop') - parentOffset.top - num(offsetParent, 'borderTopWidth'), + left: offset.left - num(this[0], 'marginLeft') - parentOffset.left - num(offsetParent, 'borderLeftWidth') + }; + }, + offsetParent: function() { + var offsetParent = this[0].offsetParent; + while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, 'position') == 'static') ) + offsetParent = offsetParent.offsetParent; + return $(offsetParent); + }, + mouseInteraction: function(o) { + return this.each(function() { + new $.ui.mouseInteraction(this, o); + }); + }, + removeMouseInteraction: function(o) { + return this.each(function() { + if($.data(this, "ui-mouse")) + $.data(this, "ui-mouse").destroy(); + }); + }, + remove: function() { + jQuery("*", this).add(this).trigger("remove"); + return _remove.apply(this, arguments ); + } + }); + + function num(el, prop) { + return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0; + }; + + + /********** Mouse Interaction Plugin *********/ + + $.ui.mouseInteraction = function(element, options) { + + var self = this; + this.element = element; + + $.data(this.element, "ui-mouse", this); + this.options = $.extend({}, options); + + $(element).bind('mousedown.draggable', function() { return self.click.apply(self, arguments); }); + if($.browser.msie) $(element).attr('unselectable', 'on'); //Prevent text selection in IE + + // prevent draggable-options-delay bug #2553 + $(element).mouseup(function() { + if(self.timer) clearInterval(self.timer); + }); + }; + + $.extend($.ui.mouseInteraction.prototype, { + + destroy: function() { $(this.element).unbind('mousedown.draggable'); }, + trigger: function() { return this.click.apply(this, arguments); }, + click: function(e) { + + if( + e.which != 1 //only left click starts dragging + || $.inArray(e.target.nodeName.toLowerCase(), this.options.dragPrevention || []) != -1 // Prevent execution on defined elements + || (this.options.condition && !this.options.condition.apply(this.options.executor || this, [e, this.element])) //Prevent execution on condition + ) return true; + + var self = this; + var initialize = function() { + self._MP = { left: e.pageX, top: e.pageY }; // Store the click mouse position + $(document).bind('mouseup.draggable', function() { return self.stop.apply(self, arguments); }); + $(document).bind('mousemove.draggable', function() { return self.drag.apply(self, arguments); }); + + if(!self.initalized && Math.abs(self._MP.left-e.pageX) >= self.options.distance || Math.abs(self._MP.top-e.pageY) >= self.options.distance) { + if(self.options.start) self.options.start.call(self.options.executor || self, e, self.element); + if(self.options.drag) self.options.drag.call(self.options.executor || self, e, this.element); //This is actually not correct, but expected + self.initialized = true; + } + }; + + if(this.options.delay) { + if(this.timer) clearInterval(this.timer); + this.timer = setTimeout(initialize, this.options.delay); + } else { + initialize(); + } + + return false; + + }, + stop: function(e) { + + var o = this.options; + if(!this.initialized) return $(document).unbind('mouseup.draggable').unbind('mousemove.draggable'); + + if(this.options.stop) this.options.stop.call(this.options.executor || this, e, this.element); + $(document).unbind('mouseup.draggable').unbind('mousemove.draggable'); + this.initialized = false; + return false; + + }, + drag: function(e) { + + var o = this.options; + if ($.browser.msie && !e.button) return this.stop.apply(this, [e]); // IE mouseup check + + if(!this.initialized && (Math.abs(this._MP.left-e.pageX) >= o.distance || Math.abs(this._MP.top-e.pageY) >= o.distance)) { + if(this.options.start) this.options.start.call(this.options.executor || this, e, this.element); + this.initialized = true; + } else { + if(!this.initialized) return false; + } + + if(o.drag) o.drag.call(this.options.executor || this, e, this.element); + return false; + + } + }); + +})(jQuery); + \ No newline at end of file -- cgit v1.2.3