toggle_sets = {};

MultiToggle = Class.create();
MultiToggle.prototype = {
	
	initialize: function(targets, cur_target, options) {
		
		this.options = options || {};
		
		this.targets = {};
		this.dims = {};
		
		this.cur_target = null;
		this.last_target = null;
		if (targets.length) {
			for(var i=0; i<targets.length; ++i) {
				var id = targets[i];
				this.dims[id] = Element.getDimensions(id);
				if (console) console.log('ADDING '+id+': with dims of '+this.dims[id].width+'x'+this.dims[id].height);
			}
			
			this.cur_target = cur_target;
		}
		
		
	},
	
	toggle: function(target) {		
		
		if ($(target)) {
			
			if (this.options.scale_anim) {
			
				var multiplier = this.options.scale_multiplier || 100;
				
				var ops = {duration:0.5, 
						    scaleContent:false, 
						    scaleMode: { originalHeight: this.dims[this.cur_target].height, originalWidth: this.dims[this.cur_target].width }};
				if (this.options.orientation == 'vertical') {
					ops.scaleY = true;
					ops.scaleX = false;
				} else {
					ops.scaleY = false;
					ops.scaleX = true;
				}
				
				if (console) console.log('Scaling '+this.cur_target+': '+ops.scaleMode.originalHeight+', '+ops.scaleMode.originalWidth);
				
				var effect = new Effect.Scale(this.cur_target, 0.0, 
											  ops);
				
				$(this.cur_target).style.display = '';
				
				var ops2 = {duration:0.5, 
						    scaleContent:false, scaleX:ops.scaleX, scaleY:ops.scaleY,
							scaleMode:{}};
							
				var new_target = target;
				var s_factor;
				if (target != this.cur_target) {
					
					if (this.options.orientation == 'vertical') {
						s_factor = this.dims[target].height * 100;
						ops2.scaleMode.originalHeight = 1;
						ops2.scaleMode.originalWidth = this.dims[target].width;
					} else {
						s_factor = this.dims[target].width * 100;
						ops2.scaleMode.originalHeight = this.dims[target].height;
						ops2.scaleMode.originalWidth = 1;
					}
					
					if (console) console.log('Scaling '+target+': '+ops2.scaleMode.originalHeight+', '+ops2.scaleMode.originalWidth);
					var effect2 = new Effect.Scale(target, s_factor, 
											        ops2);
				} else {
					
					if (this.options.orientation == 'vertical') {
						s_factor = this.dims[this.last_target].height * 100;
						ops2.scaleMode.originalHeight = 1;
						ops2.scaleMode.originalWidth = this.dims[this.last_target].width;
					} else {
						s_factor = this.dims[this.last_target].width * 100;
						ops2.scaleMode.originalHeight = this.dims[this.last_target].height;
						ops2.scaleMode.originalWidth = 1;
					}
					
					if (console) console.log('Scaling '+this.last_target+': '+ops2.scaleMode.originalHeight+', '+ops2.scaleMode.originalWidth);
					var effect2 = new Effect.Scale(this.last_target, s_factor, 
											        ops2);
					new_target = this.last_target;
					
				}
				
				$(new_target).style.display = '';
				
				
			} else {

				var effect = new Effect.BlindUp(this.cur_target,
												 {duration: 0.5});
			
				var new_target = target;
				if (target != this.cur_target) {
					var effect2 = new Effect.BlindDown(target,
														{duration: 0.5});
				} else {
					var effect2 = new Effect.BlindDown(this.last_target,
														{duration: 0.5});
					new_target = this.last_target;
					
				}
			}
			
			this.last_target = this.cur_target;
			this.cur_target = new_target;
		}
		
		
		
	}
	
};