diff -r d824146a9589 -r 0a2505c3b547 web/res/metadataplayer/test/interface 1.2/source/iresizable.js --- a/web/res/metadataplayer/test/interface 1.2/source/iresizable.js Sun Mar 04 14:13:39 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,453 +0,0 @@ -/** - * Interface Elements for jQuery - * Resizable - * - * http://interface.eyecon.ro - * - * Copyright (c) 2006 Stefan Petre - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * - */ - -jQuery.iResize = { - resizeElement: null, - resizeDirection: null, - dragged: null, - pointer: null, - sizes: null, - position: null, - /** - * internal: Start function - */ - startDrag: function(e) { - jQuery.iResize.dragged = (this.dragEl) ? this.dragEl: this; - jQuery.iResize.pointer = jQuery.iUtil.getPointer(e); - - // Save original size - jQuery.iResize.sizes = { - width: parseInt(jQuery(jQuery.iResize.dragged).css('width')) || 0, - height: parseInt(jQuery(jQuery.iResize.dragged).css('height')) || 0 - }; - - // Save original position - jQuery.iResize.position = { - top: parseInt(jQuery(jQuery.iResize.dragged).css('top')) || 0, - left: parseInt(jQuery(jQuery.iResize.dragged).css('left')) || 0 - }; - - // Assign event handlers - jQuery(document) - .bind('mousemove', jQuery.iResize.moveDrag) - .bind('mouseup', jQuery.iResize.stopDrag); - - // Callback? - if (typeof jQuery.iResize.dragged.resizeOptions.onDragStart === 'function') { - jQuery.iResize.dragged.resizeOptions.onDragStart.apply(jQuery.iResize.dragged); - } - return false; - }, - /** - * internal: Stop function - */ - stopDrag: function(e) { - // Unbind event handlers - jQuery(document) - .unbind('mousemove', jQuery.iResize.moveDrag) - .unbind('mouseup', jQuery.iResize.stopDrag); - - // Callback? - if (typeof jQuery.iResize.dragged.resizeOptions.onDragStop === 'function') { - jQuery.iResize.dragged.resizeOptions.onDragStop.apply(jQuery.iResize.dragged); - } - - // Remove dragged element - jQuery.iResize.dragged = null; - }, - /** - * internal: Move function - */ - moveDrag: function(e) { - if (!jQuery.iResize.dragged) { - return; - } - - pointer = jQuery.iUtil.getPointer(e); - - // Calculate new positions - newTop = jQuery.iResize.position.top - jQuery.iResize.pointer.y + pointer.y; - newLeft = jQuery.iResize.position.left - jQuery.iResize.pointer.x + pointer.x; - newTop = Math.max( - Math.min(newTop, jQuery.iResize.dragged.resizeOptions.maxBottom - jQuery.iResize.sizes.height), - jQuery.iResize.dragged.resizeOptions.minTop - ); - newLeft = Math.max( - Math.min(newLeft, jQuery.iResize.dragged.resizeOptions.maxRight- jQuery.iResize.sizes.width), - jQuery.iResize.dragged.resizeOptions.minLeft - ); - - // Callback - if (typeof jQuery.iResize.dragged.resizeOptions.onDrag === 'function') { - var newPos = jQuery.iResize.dragged.resizeOptions.onDrag.apply(jQuery.iResize.dragged, [newLeft, newTop]); - if (typeof newPos == 'array' && newPos.length == 2) { - newLeft = newPos[0]; - newTop = newPos[1]; - } - } - - // Update the element - jQuery.iResize.dragged.style.top = newTop + 'px'; - jQuery.iResize.dragged.style.left = newLeft + 'px'; - - return false; - }, - start: function(e) { - // Bind event handlers - jQuery(document) - .bind('mousemove', jQuery.iResize.move) - .bind('mouseup', jQuery.iResize.stop); - - // Initialize resizable - jQuery.iResize.resizeElement = this.resizeElement; - jQuery.iResize.resizeDirection = this.resizeDirection; - jQuery.iResize.pointer = jQuery.iUtil.getPointer(e); - jQuery.iResize.sizes = { - width: parseInt(jQuery(this.resizeElement).css('width'))||0, - height: parseInt(jQuery(this.resizeElement).css('height'))||0 - }; - jQuery.iResize.position = { - top: parseInt(jQuery(this.resizeElement).css('top'))||0, - left: parseInt(jQuery(this.resizeElement).css('left'))||0 - }; - - // Callback function - if (jQuery.iResize.resizeElement.resizeOptions.onStart) { - jQuery.iResize.resizeElement.resizeOptions.onStart.apply(jQuery.iResize.resizeElement, [this]); - } - - return false; - }, - stop: function() { - // Unbind event handlers - jQuery(document) - .unbind('mousemove', jQuery.iResize.move) - .unbind('mouseup', jQuery.iResize.stop); - - // Callback function - if (jQuery.iResize.resizeElement.resizeOptions.onStop) { - jQuery.iResize.resizeElement.resizeOptions.onStop.apply(jQuery.iResize.resizeElement, [jQuery.iResize.resizeDirection]); - } - - // Unbind - jQuery.iResize.resizeElement = null; - jQuery.iResize.resizeDirection = null; - }, - getWidth: function(dx, side) { - return Math.min( - Math.max(jQuery.iResize.sizes.width + dx * side, jQuery.iResize.resizeElement.resizeOptions.minWidth), - jQuery.iResize.resizeElement.resizeOptions.maxWidth - ); - }, - getHeight: function(dy, side) { - return Math.min( - Math.max(jQuery.iResize.sizes.height + dy * side, jQuery.iResize.resizeElement.resizeOptions.minHeight), - jQuery.iResize.resizeElement.resizeOptions.maxHeight - ); - }, - getHeightMinMax: function(height) { - return Math.min( - Math.max(height, jQuery.iResize.resizeElement.resizeOptions.minHeight), - jQuery.iResize.resizeElement.resizeOptions.maxHeight - ); - }, - move: function(e) { - if (jQuery.iResize.resizeElement == null) { - return; - } - - pointer = jQuery.iUtil.getPointer(e); - dx = pointer.x - jQuery.iResize.pointer.x; - dy = pointer.y - jQuery.iResize.pointer.y; - - newSizes = { - width: jQuery.iResize.sizes.width, - height: jQuery.iResize.sizes.height - }; - newPosition = { - top: jQuery.iResize.position.top, - left: jQuery.iResize.position.left - }; - - switch (jQuery.iResize.resizeDirection){ - case 'e': - newSizes.width = jQuery.iResize.getWidth(dx,1); - break; - case 'se': - newSizes.width = jQuery.iResize.getWidth(dx,1); - newSizes.height = jQuery.iResize.getHeight(dy,1); - break; - case 'w': - newSizes.width = jQuery.iResize.getWidth(dx,-1); - newPosition.left = jQuery.iResize.position.left - newSizes.width + jQuery.iResize.sizes.width; - break; - case 'sw': - newSizes.width = jQuery.iResize.getWidth(dx,-1); - newPosition.left = jQuery.iResize.position.left - newSizes.width + jQuery.iResize.sizes.width; - newSizes.height = jQuery.iResize.getHeight(dy,1); - break; - case 'nw': - newSizes.height = jQuery.iResize.getHeight(dy,-1); - newPosition.top = jQuery.iResize.position.top - newSizes.height + jQuery.iResize.sizes.height; - newSizes.width = jQuery.iResize.getWidth(dx,-1); - newPosition.left = jQuery.iResize.position.left - newSizes.width + jQuery.iResize.sizes.width; - break; - case 'n': - newSizes.height = jQuery.iResize.getHeight(dy,-1); - newPosition.top = jQuery.iResize.position.top - newSizes.height + jQuery.iResize.sizes.height; - break; - case 'ne': - newSizes.height = jQuery.iResize.getHeight(dy,-1); - newPosition.top = jQuery.iResize.position.top - newSizes.height + jQuery.iResize.sizes.height; - newSizes.width = jQuery.iResize.getWidth(dx,1); - break; - case 's': - newSizes.height = jQuery.iResize.getHeight(dy,1); - break; - } - - if (jQuery.iResize.resizeElement.resizeOptions.ratio) { - if (jQuery.iResize.resizeDirection == 'n' || jQuery.iResize.resizeDirection == 's') - nWidth = newSizes.height * jQuery.iResize.resizeElement.resizeOptions.ratio; - else - nWidth = newSizes.width; - nHeight = jQuery.iResize.getHeightMinMax(nWidth * jQuery.iResize.resizeElement.resizeOptions.ratio); - nWidth = nHeight / jQuery.iResize.resizeElement.resizeOptions.ratio; - - switch (jQuery.iResize.resizeDirection){ - case 'n': - case 'nw': - case 'ne': - newPosition.top += newSizes.height - nHeight; - break; - } - - switch (jQuery.iResize.resizeDirection){ - case 'nw': - case 'w': - case 'sw': - newPosition.left += newSizes.width - nWidth; - break; - } - - newSizes.height = nHeight; - newSizes.width = nWidth; - } - - if (newPosition.top < jQuery.iResize.resizeElement.resizeOptions.minTop) { - nHeight = newSizes.height + newPosition.top - jQuery.iResize.resizeElement.resizeOptions.minTop; - newPosition.top = jQuery.iResize.resizeElement.resizeOptions.minTop; - - if (jQuery.iResize.resizeElement.resizeOptions.ratio) { - nWidth = nHeight / jQuery.iResize.resizeElement.resizeOptions.ratio; - switch (jQuery.iResize.resizeDirection){ - case 'nw': - case 'w': - case 'sw': - newPosition.left += newSizes.width - nWidth; - break; - } - newSizes.width = nWidth; - } - newSizes.height = nHeight; - } - - if (newPosition.left < jQuery.iResize.resizeElement.resizeOptions.minLeft ) { - nWidth = newSizes.width + newPosition.left - jQuery.iResize.resizeElement.resizeOptions.minLeft; - newPosition.left = jQuery.iResize.resizeElement.resizeOptions.minLeft; - - if (jQuery.iResize.resizeElement.resizeOptions.ratio) { - nHeight = nWidth * jQuery.iResize.resizeElement.resizeOptions.ratio; - switch (jQuery.iResize.resizeDirection){ - case 'n': - case 'nw': - case 'ne': - newPosition.top += newSizes.height - nHeight; - break; - } - newSizes.height = nHeight; - } - newSizes.width = nWidth; - } - - if (newPosition.top + newSizes.height > jQuery.iResize.resizeElement.resizeOptions.maxBottom) { - newSizes.height = jQuery.iResize.resizeElement.resizeOptions.maxBottom - newPosition.top; - if (jQuery.iResize.resizeElement.resizeOptions.ratio) { - newSizes.width = newSizes.height / jQuery.iResize.resizeElement.resizeOptions.ratio; - } - - } - - if (newPosition.left + newSizes.width > jQuery.iResize.resizeElement.resizeOptions.maxRight) { - newSizes.width = jQuery.iResize.resizeElement.resizeOptions.maxRight - newPosition.left; - if (jQuery.iResize.resizeElement.resizeOptions.ratio) { - newSizes.height = newSizes.width * jQuery.iResize.resizeElement.resizeOptions.ratio; - } - - } - - var newDimensions = false; - if (jQuery.iResize.resizeElement.resizeOptions.onResize) { - newDimensions = jQuery.iResize.resizeElement.resizeOptions.onResize.apply( jQuery.iResize.resizeElement, [ newSizes, newPosition ] ); - if (newDimensions) { - if (newDimensions.sizes) { - jQuery.extend(newSizes, newDimensions.sizes); - } - - if (newDimensions.position) { - jQuery.extend(newPosition, newDimensions.position); - } - } - } - elS = jQuery.iResize.resizeElement.style; - elS.left = newPosition.left + 'px'; - elS.top = newPosition.top + 'px'; - elS.width = newSizes.width + 'px'; - elS.height = newSizes.height + 'px'; - - return false; - }, - /** - * Builds the resizable - */ - build: function(options) { - if (!options || !options.handlers || options.handlers.constructor != Object) { - return; - } - - return this.each( - function() { - var el = this; - el.resizeOptions = options; - el.resizeOptions.minWidth = options.minWidth || 10; - el.resizeOptions.minHeight = options.minHeight || 10; - el.resizeOptions.maxWidth = options.maxWidth || 3000; - el.resizeOptions.maxHeight = options.maxHeight || 3000; - el.resizeOptions.minTop = options.minTop || -1000; - el.resizeOptions.minLeft = options.minLeft || -1000; - el.resizeOptions.maxRight = options.maxRight || 3000; - el.resizeOptions.maxBottom = options.maxBottom || 3000; - elPosition = jQuery(el).css('position'); - if (!(elPosition == 'relative' || elPosition == 'absolute')) { - el.style.position = 'relative'; - } - - directions = /n|ne|e|se|s|sw|w|nw/g; - for (i in el.resizeOptions.handlers) { - if (i.toLowerCase().match(directions) != null) { - if (el.resizeOptions.handlers[i].constructor == String) { - handle = jQuery(el.resizeOptions.handlers[i]); - if (handle.size() > 0) { - el.resizeOptions.handlers[i] = handle.get(0); - } - } - - if (el.resizeOptions.handlers[i].tagName) { - el.resizeOptions.handlers[i].resizeElement = el; - el.resizeOptions.handlers[i].resizeDirection = i; - jQuery(el.resizeOptions.handlers[i]).bind('mousedown', jQuery.iResize.start); - } - } - } - - if (el.resizeOptions.dragHandle) { - if (typeof el.resizeOptions.dragHandle === 'string') { - handleEl = jQuery(el.resizeOptions.dragHandle); - if (handleEl.size() > 0) { - handleEl.each(function() { - this.dragEl = el; - }); - handleEl.bind('mousedown', jQuery.iResize.startDrag); - } - } else if (el.resizeOptions.dragHandle == true) { - jQuery(this).bind('mousedown', jQuery.iResize.startDrag); - } - } - } - ); - }, - /** - * Destroys the resizable - */ - destroy: function() { - return this.each( - function() { - var el = this; - - // Unbind the handlers - for (i in el.resizeOptions.handlers) { - el.resizeOptions.handlers[i].resizeElement = null; - el.resizeOptions.handlers[i].resizeDirection = null; - jQuery(el.resizeOptions.handlers[i]).unbind('mousedown', jQuery.iResize.start); - } - - // Remove the draghandle - if (el.resizeOptions.dragHandle) { - if (typeof el.resizeOptions.dragHandle === 'string') { - handle = jQuery(el.resizeOptions.dragHandle); - if (handle.size() > 0) { - handle.unbind('mousedown', jQuery.iResize.startDrag); - } - } else if (el.resizeOptions.dragHandle == true) { - jQuery(this).unbind('mousedown', jQuery.iResize.startDrag); - } - } - - // Reset the options - el.resizeOptions = null; - } - ); - } -}; - - -jQuery.fn.extend ({ - /** - * Create a resizable element with a number of advanced options including callback, dragging - * - * @name Resizable - * @description Create a resizable element with a number of advanced options including callback, dragging - * @param Hash hash A hash of parameters. All parameters are optional. - * @option Hash handlers hash with keys for each resize direction (e, es, s, sw, w, nw, n) and value string selection - * @option Integer minWidth (optional) the minimum width that element can be resized to - * @option Integer maxWidth (optional) the maximum width that element can be resized to - * @option Integer minHeight (optional) the minimum height that element can be resized to - * @option Integer maxHeight (optional) the maximum height that element can be resized to - * @option Integer minTop (optional) the minmum top position to wich element can be moved to - * @option Integer minLeft (optional) the minmum left position to wich element can be moved to - * @option Integer maxRight (optional) the maximum right position to wich element can be moved to - * @option Integer maxBottom (optional) the maximum bottom position to wich element can be moved to - * @option Float ratio (optional) the ratio between width and height to constrain elements sizes to that ratio - * @option Mixed dragHandle (optional) true to make the element draggable, string selection for drag handle - * @option Function onDragStart (optional) A function to be executed whenever the dragging starts - * @option Function onDragStop (optional) A function to be executed whenever the dragging stops - * @option Function onDrag (optional) A function to be executed whenever the element is dragged - * @option Function onStart (optional) A function to be executed whenever the element starts to be resized - * @option Function onStop (optional) A function to be executed whenever the element stops to be resized - * @option Function onResize (optional) A function to be executed whenever the element is resized - * @type jQuery - * @cat Plugins/Interface - * @author Stefan Petre - */ - Resizable: jQuery.iResize.build, - /** - * Destroy a resizable - * - * @name ResizableDestroy - * @description Destroy a resizable - * @type jQuery - * @cat Plugins/Interface - * @author Stefan Petre - */ - ResizableDestroy: jQuery.iResize.destroy - }); \ No newline at end of file