diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/jquery.event.drag.custom.js | 280 | ||||
-rw-r--r-- | lib/jquery.rule-1.0.1-min.js | 16 |
2 files changed, 148 insertions, 148 deletions
diff --git a/lib/jquery.event.drag.custom.js b/lib/jquery.event.drag.custom.js index 8b08c2d..cdfc9a4 100644 --- a/lib/jquery.event.drag.custom.js +++ b/lib/jquery.event.drag.custom.js @@ -1,141 +1,141 @@ -/*!
-jquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
-Liscensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt
-*/
-;(function($){ // secure $ jQuery alias
-/*******************************************************************************************/
-// Created: 2008-06-04 | Updated: 2009-03-24
-/*******************************************************************************************/
-// Events: drag, dragstart, dragend
-/*******************************************************************************************/
-
-// jquery method
-$.fn.drag = function( fn1, fn2, fn3 ){
- if ( fn2 ) this.bind('dragstart', fn1 ); // 2+ args
- if ( fn3 ) this.bind('dragend', fn3 ); // 3 args
- return !fn1 ? this.trigger('drag') // 0 args
- : this.bind('drag', fn2 ? fn2 : fn1 ); // 1+ args
- };
-
-// local refs
-var $event = $.event, $special = $event.special,
-
-// special event configuration
-drag = $special.drag = {
- not: ':input', // don't begin to drag on event.targets that match this selector
- distance: 0, // distance dragged before dragstart
- which: 1, // mouse button pressed to start drag sequence
- dragging: false, // hold the active target element
- setup: function( data ){
- data = $.extend({
- distance: drag.distance,
- which: drag.which,
- not: drag.not
- }, data || {});
- data.distance = squared( data.distance ); // xІ + yІ = distanceІ
- $event.add( this, "mousedown", handler, data );
- if ( this.attachEvent ) this.attachEvent("ondragstart", dontStart ); // prevent image dragging in IE...
- },
- teardown: function(){
- $event.remove( this, "mousedown", handler );
- if ( this === drag.dragging ) drag.dragging = drag.proxy = false; // deactivate element
- selectable( this, true ); // enable text selection
- if ( this.detachEvent ) this.detachEvent("ondragstart", dontStart ); // prevent image dragging in IE...
- }
- };
-
-// prevent normal event binding...
-$special.dragstart = $special.dragend = { setup:function(){}, teardown:function(){} };
-
-// handle drag-releatd DOM events
-function handler ( event ){
- var elem = this, returned, data = event.data || {};
- // mousemove or mouseup
- if ( data.elem ){
- // update event properties...
- elem = event.dragTarget = data.elem; // drag source element
- event.dragProxy = drag.proxy || elem; // proxy element or source
- event.cursorOffsetX = data.pageX - data.left; // mousedown offset
- event.cursorOffsetY = data.pageY - data.top; // mousedown offset
- event.offsetX = event.pageX - event.cursorOffsetX; // element offset
- event.offsetY = event.pageY - event.cursorOffsetY; // element offset
- }
- // mousedown, check some initial props to avoid the switch statement
- else if ( drag.dragging || ( data.which>0 && event.which!=data.which ) ||
- $( event.target ).is( data.not ) ) return;
- // handle various events
- switch ( event.type ){
- // mousedown, left click, event.target is not restricted, init dragging
- case 'mousedown':
- $.extend( data, $( elem ).offset(), {
- elem: elem, target: event.target,
- pageX: event.pageX, pageY: event.pageY
- }); // store some initial attributes
- returned = hijack(event, "beforedragstart", elem);
- if (returned === false)
- return true;
- $event.add( document, "mousemove mouseup", handler, data );
- selectable( elem, false ); // disable text selection
- drag.dragging = null; // pending state
- return false; // prevents text selection in safari
- // mousemove, check distance, start dragging
- case !drag.dragging && 'mousemove':
- if ( squared( event.pageX-data.pageX )
- + squared( event.pageY-data.pageY ) // xІ + yІ = distanceІ
- < data.distance ) break; // distance tolerance not reached
- event.target = data.target; // force target from "mousedown" event (fix distance issue)
- returned = hijack( event, "dragstart", elem ); // trigger "dragstart", return proxy element
- if ( returned !== false ){ // "dragstart" not rejected
- drag.dragging = elem; // activate element
- drag.proxy = event.dragProxy = $( returned || elem )[0]; // set proxy
- }
- // mousemove, dragging
- case 'mousemove':
- if ( drag.dragging ){
- returned = hijack( event, "drag", elem ); // trigger "drag"
- if ( $special.drop ){ // manage drop events
- $special.drop.allowed = ( returned !== false ); // prevent drop
- $special.drop.handler( event ); // "dropstart", "dropend"
- }
- if ( returned !== false ) break; // "drag" not rejected, stop
- event.type = "mouseup"; // helps "drop" handler behave
- }
- // mouseup, stop dragging
- case 'mouseup':
- if (drag.dragging === false) break;
- $event.remove( document, "mousemove mouseup", handler ); // remove page events
- if ( drag.dragging ){
- if ( $special.drop ) $special.drop.handler( event ); // "drop"
- hijack( event, "dragend", elem ); // trigger "dragend"
- }
- selectable( elem, true ); // enable text selection
- drag.dragging = drag.proxy = data.elem = false; // deactivate element
- break;
- }
- return true;
- };
-
-// set event type to custom value, and handle it
-function hijack ( event, type, elem ){
- event.type = type; // force the event type
- var result = $.event.handle.call( elem, event );
- return result===false ? false : result || event.result;
- };
-
-// return the value squared
-function squared ( value ){ return Math.pow( value, 2 ); };
-
-// suppress default dragstart IE events...
-function dontStart(){ return ( drag.dragging === false ); };
-
-// toggles text selection attributes
-function selectable ( elem, bool ){
- if ( !elem ) return; // maybe element was removed ?
- elem.unselectable = bool ? "off" : "on"; // IE
- elem.onselectstart = function(){ return bool; }; // IE
- //if ( document.selection && document.selection.empty ) document.selection.empty(); // IE
- if ( elem.style ) elem.style.MozUserSelect = bool ? "" : "none"; // FF
- };
-
-/*******************************************************************************************/
+/*! +jquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com) +Liscensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt +*/ +;(function($){ // secure $ jQuery alias +/*******************************************************************************************/ +// Created: 2008-06-04 | Updated: 2009-03-24 +/*******************************************************************************************/ +// Events: drag, dragstart, dragend +/*******************************************************************************************/ + +// jquery method +$.fn.drag = function( fn1, fn2, fn3 ){ + if ( fn2 ) this.bind('dragstart', fn1 ); // 2+ args + if ( fn3 ) this.bind('dragend', fn3 ); // 3 args + return !fn1 ? this.trigger('drag') // 0 args + : this.bind('drag', fn2 ? fn2 : fn1 ); // 1+ args + }; + +// local refs +var $event = $.event, $special = $event.special, + +// special event configuration +drag = $special.drag = { + not: ':input', // don't begin to drag on event.targets that match this selector + distance: 0, // distance dragged before dragstart + which: 1, // mouse button pressed to start drag sequence + dragging: false, // hold the active target element + setup: function( data ){ + data = $.extend({ + distance: drag.distance, + which: drag.which, + not: drag.not + }, data || {}); + data.distance = squared( data.distance ); // xІ + yІ = distanceІ + $event.add( this, "mousedown", handler, data ); + if ( this.attachEvent ) this.attachEvent("ondragstart", dontStart ); // prevent image dragging in IE... + }, + teardown: function(){ + $event.remove( this, "mousedown", handler ); + if ( this === drag.dragging ) drag.dragging = drag.proxy = false; // deactivate element + selectable( this, true ); // enable text selection + if ( this.detachEvent ) this.detachEvent("ondragstart", dontStart ); // prevent image dragging in IE... + } + }; + +// prevent normal event binding... +$special.dragstart = $special.dragend = { setup:function(){}, teardown:function(){} }; + +// handle drag-releatd DOM events +function handler ( event ){ + var elem = this, returned, data = event.data || {}; + // mousemove or mouseup + if ( data.elem ){ + // update event properties... + elem = event.dragTarget = data.elem; // drag source element + event.dragProxy = drag.proxy || elem; // proxy element or source + event.cursorOffsetX = data.pageX - data.left; // mousedown offset + event.cursorOffsetY = data.pageY - data.top; // mousedown offset + event.offsetX = event.pageX - event.cursorOffsetX; // element offset + event.offsetY = event.pageY - event.cursorOffsetY; // element offset + } + // mousedown, check some initial props to avoid the switch statement + else if ( drag.dragging || ( data.which>0 && event.which!=data.which ) || + $( event.target ).is( data.not ) ) return; + // handle various events + switch ( event.type ){ + // mousedown, left click, event.target is not restricted, init dragging + case 'mousedown': + $.extend( data, $( elem ).offset(), { + elem: elem, target: event.target, + pageX: event.pageX, pageY: event.pageY + }); // store some initial attributes + returned = hijack(event, "beforedragstart", elem); + if (returned === false) + return true; + $event.add( document, "mousemove mouseup", handler, data ); + selectable( elem, false ); // disable text selection + drag.dragging = null; // pending state + return false; // prevents text selection in safari + // mousemove, check distance, start dragging + case !drag.dragging && 'mousemove': + if ( squared( event.pageX-data.pageX ) + + squared( event.pageY-data.pageY ) // xІ + yІ = distanceІ + < data.distance ) break; // distance tolerance not reached + event.target = data.target; // force target from "mousedown" event (fix distance issue) + returned = hijack( event, "dragstart", elem ); // trigger "dragstart", return proxy element + if ( returned !== false ){ // "dragstart" not rejected + drag.dragging = elem; // activate element + drag.proxy = event.dragProxy = $( returned || elem )[0]; // set proxy + } + // mousemove, dragging + case 'mousemove': + if ( drag.dragging ){ + returned = hijack( event, "drag", elem ); // trigger "drag" + if ( $special.drop ){ // manage drop events + $special.drop.allowed = ( returned !== false ); // prevent drop + $special.drop.handler( event ); // "dropstart", "dropend" + } + if ( returned !== false ) break; // "drag" not rejected, stop + event.type = "mouseup"; // helps "drop" handler behave + } + // mouseup, stop dragging + case 'mouseup': + if (drag.dragging === false) break; + $event.remove( document, "mousemove mouseup", handler ); // remove page events + if ( drag.dragging ){ + if ( $special.drop ) $special.drop.handler( event ); // "drop" + hijack( event, "dragend", elem ); // trigger "dragend" + } + selectable( elem, true ); // enable text selection + drag.dragging = drag.proxy = data.elem = false; // deactivate element + break; + } + return true; + }; + +// set event type to custom value, and handle it +function hijack ( event, type, elem ){ + event.type = type; // force the event type + var result = $.event.handle.call( elem, event ); + return result===false ? false : result || event.result; + }; + +// return the value squared +function squared ( value ){ return Math.pow( value, 2 ); }; + +// suppress default dragstart IE events... +function dontStart(){ return ( drag.dragging === false ); }; + +// toggles text selection attributes +function selectable ( elem, bool ){ + if ( !elem ) return; // maybe element was removed ? + elem.unselectable = bool ? "off" : "on"; // IE + elem.onselectstart = function(){ return bool; }; // IE + //if ( document.selection && document.selection.empty ) document.selection.empty(); // IE + if ( elem.style ) elem.style.MozUserSelect = bool ? "" : "none"; // FF + }; + +/*******************************************************************************************/ })( jQuery ); // confine scope
\ No newline at end of file diff --git a/lib/jquery.rule-1.0.1-min.js b/lib/jquery.rule-1.0.1-min.js index 8eeca12..bd0b033 100644 --- a/lib/jquery.rule-1.0.1-min.js +++ b/lib/jquery.rule-1.0.1-min.js @@ -1,9 +1,9 @@ -/**
- * jQuery.Rule - Css Rules manipulation, the jQuery way.
- * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
- * Dual licensed under MIT and GPL.
- * Date: 02/27/2008
- * @author Ariel Flesler
- * @version 1.0.1
- */
+/** + * jQuery.Rule - Css Rules manipulation, the jQuery way. + * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * Date: 02/27/2008 + * @author Ariel Flesler + * @version 1.0.1 + */ ;(function($){var d=$('<style rel="alternate stylesheet" type="text/css" />').appendTo('head')[0],g=d.sheet?'sheet':'styleSheet',h=d[g],j=h.rules?'rules':'cssRules',l=h.deleteRule?'deleteRule':'removeRule',q=h.ownerNode?'ownerNode':'owningElement',t=/^([^{]+)\{([^}]*)\}/m,u=/([^:]+):([^;}]+)/;h.disabled=!0;var w=$.rule=function(r,c){if(!(this instanceof w))return new w(r,c);this.sheets=w.sheets(c);if(r&&t.test(r))r=w.clean(r);if(typeof r=='object'&&!r.exec)return this.setArray(r.get?r.get():r.splice?r:[r]);this.setArray(this.sheets.cssRules().get());return r?this.filter(r):this};$.extend(w,{sheets:function(c){var o=c;if(typeof o!='object')o=$.makeArray(document.styleSheets);o=$(o).not(h);if(typeof c=='string')o=o.ownerNode().filter(c).sheet();return o},rule:function(a){if(a.selectorText)return['',a.selectorText,a.style.cssText];return t.exec(a)},appendTo:function(r,a,b){switch(typeof a){case'string':a=this.sheets(a);case'object':if(a[0])a=a[0];if(a[g])a=a[g];if(a[j])break;default:if(typeof r=='object')return r;a=h}var p;if(!b&&(p=this.parent(r)))r=this.remove(r,p);var c=this.rule(r);if(a.addRule)a.addRule(c[1],c[2]||';');else if(a.insertRule)a.insertRule(c[1]+'{'+c[2]+'}',a[j].length);return a[j][a[j].length-1]},remove:function(r,p){p=p||this.parent(r);if(p!=h){var i=p?$.inArray(r,p[j]):-1;if(i!=-1){r=this.appendTo(r,0,1);p[l](i)}}return r},clean:function(r){return $.map(r.split('}'),function(a){if(a)return w.appendTo(a+'}')})},parent:function(r){if(typeof r=='string'||!$.browser.msie)return r.parentStyleSheet;var a;this.sheets().each(function(){if($.inArray(r,this[j])!=-1){a=this;return !1}});return a},outerText:function(a){return!a?'':[a.selectorText+'{','\t'+a.style.cssText,'}'].join('\n').toLowerCase()},text:function(a,b){if(b!==undefined)a.style.cssText=b;return!a?'':a.style.cssText.toLowerCase()}});w.fn=w.prototype={pushStack:function(a,b){var c=w(a,b||this.sheets);c.prevObject=this;return c},end:function(){return this.prevObject||w(0,[])},filter:function(s){var o;if(!s)s=/./;if(s.split){o=$.trim(s).toLowerCase().split(/\s*,\s*/);s=function(){return!!$.grep(this.selectorText.toLowerCase().split(/\s*,\s*/),function(a){return $.inArray(a,o)!=-1}).length}}else if(s.exec){o=s;s=function(){return o.test(this.selectorText)}}return this.pushStack($.grep(this,function(e,i){return s.call(e,i)}))},add:function(a,c){return this.pushStack($.merge(this.get(),w(a,c)))},is:function(s){return!!(s&&this.filter(s).length)},not:function(n,c){n=w(n,c);return this.filter(function(){return $.inArray(this,n)==-1})},append:function(s){var a=this,b;$.each(s.split(/\s*;\s*/),function(i,v){if((b=u.exec(v)))a.css(b[1],b[2])});return this},text:function(a){return!arguments.length?w.text(this[0]):this.each(function(){w.text(this,a)})},outerText:function(){return w.outerText(this[0])}};$.each({ownerNode:q,sheet:g,cssRules:j},function(m,a){var b=a==j;$.fn[m]=function(){return this.map(function(){return b?$.makeArray(this[a]):this[a]})}});$.fn.cssText=function(){return this.filter('link,style').eq(0).sheet().cssRules().map(function(){return w.outerText(this)}).get().join('\n')};$.each('remove,appendTo,parent'.split(','),function(k,f){w.fn[f]=function(){var a=$.makeArray(arguments),b=this;a.unshift(0);return this.each(function(i){a[0]=this;b[i]=w[f].apply(w,a)||b[i]})}});$.each(('each,index,setArray,get,size,eq,slice,map,attr,andSelf,css,show,hide,toggle,'+'queue,dequeue,stop,animate,fadeIn,fadeOut,fadeTo').split(','),function(k,f){w.fn[f]=$.fn[f]});var x=$.curCSS;$.curCSS=function(e,a){return('selectorText'in e)?e.style[a]||$.prop(e,a=='opacity'?1:0,'curCSS',0,a):x.apply(this,arguments)};w.cache={};var y=function(c){return function(a){var b=a.selectorText;if(b)arguments[0]=w.cache[b]=w.cache[b]||{};return c.apply($,arguments)}};$.data=y($.data);$.removeData=y($.removeData);$(window).unload(function(){$(h).cssRules().remove()})})(jQuery);
\ No newline at end of file |