2 * Interface Elements for jQuery
\r
5 * http://interface.eyecon.ro
\r
7 * Copyright (c) 2006 Stefan Petre
\r
8 * Dual licensed under the MIT (MIT-LICENSE.txt)
\r
9 * and GPL (GPL-LICENSE.txt) licenses.
\r
14 jQuery.transferHelper = null;
\r
18 * @description Animates an new build element to simulate a transfer action from one element to other
\r
19 * @param Hash hash A hash of parameters
\r
20 * @option Mixed to DOMElement or element ID to transfer to
\r
21 * @option String className CSS class to apply to transfer element
\r
22 * @option String duration animation speed, integer for miliseconds, string ['slow' | 'normal' | 'fast']
\r
23 * @option Function callback (optional) A function to be executed whenever the animation completes.
\r
26 * @cat Plugins/Interface
\r
27 * @author Stefan Petre
\r
29 jQuery.fn.TransferTo = function(o)
\r
31 return this.queue('interfaceFX', function(){
\r
32 new jQuery.fx.itransferTo(this, o);
\r
35 jQuery.fx.itransferTo = function(e, o)
\r
38 if(jQuery.transferHelper == null)
\r
40 jQuery('body', document).append('<div id="transferHelper"></div>');
\r
41 jQuery.transferHelper = jQuery('#transferHelper');
\r
43 jQuery.transferHelper.css('display', 'block').css('position', 'absolute');
\r
51 if (o.to.constructor == String && document.getElementById(o.to)) {
\r
52 o.to = document.getElementById(o.to);
\r
53 } else if ( !o.to.childNodes ) {
\r
60 z.duration = o.duration;
\r
62 z.classname = o.className;
\r
63 z.complete = o.complete;
\r
65 jQuery.transferHelper.addClass(z.classname);
\r
70 if(jQuery.boxModel) {
\r
71 z.diffWidth = (parseInt(jQuery.transferHelper.css('borderLeftWidth')) || 0 )
\r
72 + (parseInt(jQuery.transferHelper.css('borderRightWidth')) || 0)
\r
73 + (parseInt(jQuery.transferHelper.css('paddingLeft')) || 0)
\r
74 + (parseInt(jQuery.transferHelper.css('paddingRight')) || 0);
\r
75 z.diffHeight = (parseInt(jQuery.transferHelper.css('borderTopWidth')) || 0 )
\r
76 + (parseInt(jQuery.transferHelper.css('borderBottomWidth')) || 0)
\r
77 + (parseInt(jQuery.transferHelper.css('paddingTop')) || 0)
\r
78 + (parseInt(jQuery.transferHelper.css('paddingBottom')) || 0);
\r
80 z.start = jQuery.extend(
\r
81 jQuery.iUtil.getPosition(z.el.get(0)),
\r
82 jQuery.iUtil.getSize(z.el.get(0))
\r
84 z.end = jQuery.extend(
\r
85 jQuery.iUtil.getPosition(z.to),
\r
86 jQuery.iUtil.getSize(z.to)
\r
88 z.start.wb -= z.diffWidth;
\r
89 z.start.hb -= z.diffHeight;
\r
90 z.end.wb -= z.diffWidth;
\r
91 z.end.hb -= z.diffHeight;
\r
92 z.callback = o.complete;
\r
94 // Execute the transfer
\r
95 jQuery.transferHelper
\r
96 .css('width', z.start.wb + 'px')
\r
97 .css('height', z.start.hb + 'px')
\r
98 .css('top', z.start.y + 'px')
\r
99 .css('left', z.start.x + 'px')
\r
110 // Set correct classname
\r
112 jQuery.transferHelper.removeClass(z.classname);
\r
113 jQuery.transferHelper.css('display', 'none');
\r
116 if (z.complete && z.complete.constructor == Function) {
\r
117 z.complete.apply(z.el.get(0), [z.to]);
\r
120 jQuery.dequeue(z.el.get(0), 'interfaceFX');
\r