/**
* Effect.Transfer
* 
* Simulating a transfer from element A to element B by copying the source properties
* and morphing them to the target properties (dimensions, position). 
*
* Tested: IE6, IE7, Opera9, Firefox
*
* Usage: new Effect.Transfer('source', 'target', {options});
*
* Options: 
*      duration - this effect is a parallel of 3 effects. you can control the speed here.
*      transferer - classname used to style the transferer
*      transopacity - if you like, you can set the transferer to be semi-opaque.
*      afterFinish - callback, as the name says. Highlight(target) maybe?
*
* @since 08.03.2007
* @author Kjell Bublitz <m3nt0r.de@gmail.com>
* @link http://www.m3nt0r.de Authorblog
* @license same as Script.aculo.us
*/
Effect.Transfer = function(element, target, options) {
	element = $(element);
  	target = $(target);
options = Object.extend({
  			duration: 0.5,
  			transferer: 'transferer',
  			transopacity: 0.7
  	}, options);
	
	var target_dim = target.getDimensions();
	var target_offset = Position.cumulativeOffset(target);

var transferer = document.createElement('div');
	transferer.className = options.transferer;
	transferer.style.position = 'absolute';
	transferer.style.opacity = options.transopacity;
	
	document.getElementsByTagName('body')[0].appendChild(transferer);
	
	transfer = transferer;
	Element.clonePosition(transfer, element); 

	new Effect.Parallel(
		[ 
	    	new Effect.Morph(transfer, {sync: true, style:'width:165px; height:514px'}),
			new Effect.Move(transfer, {x: target_offset[0], y: target_offset[1], transition: Effect.Transitions.linear, mode: 'absolute'}),
			new Effect.Fade(transfer, {sync: false, afterFinishInternal: function() { if(transfer){ transfer.remove(); } }})
		], 
		{ 
			duration: '0.5'
		}
	);
}



