// effect_swapper.js
// Copyright (c) 2007 Roman Weinberger - http://roman.studio78.at

// this code is freely distributable under the terms of an MIT-style license.

// effect styles
Effect.swapEffectTypes = {
	Blind: { show: 'BlindDown', hide: 'BlindUp' }, 
	Slide: { show: 'SlideDown', hide: 'SlideUp' }, 
	Appear: { show: 'Appear', hide: 'Fade' } 
}

// swap some elements ... 
Effect.SwapElements = function(element) {
	element = $(element);
	var options = Object.extend({
	    swapType:'Blind',
		swapParallel: true,
		swapContainer:'', // container for css search - add for some $$ speedup ...
		duration:'0.7'
	  }, arguments[1] || {});
	if( !options.swapParallel ) { options.queue = 'end'; }
	if( element.visible() ) {					
		eval('new Effect.'+Effect.swapEffectTypes[options.swapType]['hide']+'(element, options);');
	} else { 
		var swapClass = 'div.' + element.className;
		$$(options.swapContainer + ' ' + swapClass).each(function(e) {
			if( e.visible() ) { 
				eval('new Effect.'+Effect.swapEffectTypes[options.swapType]['hide']+'(e, options);'); 
			}
		});
		eval('new Effect.'+Effect.swapEffectTypes[options.swapType]['show']+'(element, options);');
	}
	return false;
}