var SlideDropDown = Fx.Elements.extend({	options: {		onActive: Class.empty,		onBackground: Class.empty,		display: 1,		show: true,		height: true,		width: false,		opacity: true,		fixedHeight: false,		fixedWidth: false,		wait: false,		alwaysHide: false,		cookie: true	},	initialize: function(){		var options, togglers, atogglers, elements, container;		$each(arguments, function(argument, i){			switch($type(argument)){				case 'object': options = argument; break;				case 'element': container = $(argument); break;				default:					var temp = $$(argument);					if (!togglers) togglers = temp;					else if (!atogglers) atogglers = temp;					else elements = temp;			}		});		this.togglers = togglers || [];		this.atogglers = atogglers || [];		this.elements = elements || [];		this.container = $(container);		this.setOptions(options);		this.previous = -1;		if (this.options.alwaysHide) this.options.wait = true;		if ($chk(this.options.show)){			this.options.display = false;			this.previous = this.options.show;		}		if (this.options.start){			this.options.display = false;			this.options.show = false;		}		this.effects = {};		if (this.options.opacity) this.effects.opacity = 'fullOpacity';		if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';		if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';		for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);		this.elements.each(function(el, i){			el._parent = el.parentNode;			//this.togglers[i].href="javascript:;";						if (this.options.cookie)			{				for(i = 0; i < this.options.cookie.length; i = i + 2)				{					if (el._parent.id && (this.options.cookie[i] == el._parent.id))					{						if (this.options.cookie[i+1] == "1")						{							if (el._parent.className.indexOf("close") == -1)							{								el._parent.className += " close";							}						}						if (this.options.cookie[i+1] == "0")						{							el._parent.className = el._parent.className.replace("close", "");						}					}				}			}			if (el._parent.className.indexOf("close") != -1)			{				for (var fx in this.effects) el.setStyle(fx, 0);			}		}, this);		this.parent(this.elements);		if ($chk(this.options.display)) this.display(this.options.display);	},	addSection: function(toggler, element, pos){		toggler = $(toggler);		element = $(element);		var test = this.togglers.contains(toggler);		var len = this.togglers.length;		this.togglers.include(toggler);		this.elements.include(element);		if (len && (!test || pos)){			pos = $pick(pos, len - 1);			toggler.injectBefore(this.togglers[pos]);			element.injectAfter(toggler);		} else if (this.container && !test){			toggler.inject(this.container);			element.inject(this.container);		}		var idx = this.togglers.indexOf(toggler);		toggler.addEvent('click', this.display.bind(this, idx));				if(this.atogglers[idx])		{			this.atogglers[idx].addEvent('click', this.display.bind(this, idx));			this.atogglers[idx].href = "javascript:;";		}				if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});		element.fullOpacity = 1;		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;		element.setStyle('overflow', 'hidden');		if (!test){			for (var fx in this.effects) {element.setStyle(fx, 0);};		}		return this;	},	display: function(index){		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;		this.previous = index;		var obj = {};		this.elements.each(function(el, i){			if(i == index || this.options.in_header)			{				obj[i] = {};				var hide = (i != index) || (this.options.alwaysHide && (el.offsetHeight > 0));				this.fireEvent(hide ? 'onBackground' : 'onActive', [this.togglers[i], el]);			for (var fx in this.effects) {obj[i][fx] = hide ? 0 : el[this.effects[fx]];}				}			}, this);			this		return this.start(obj);	},	serialize: function(){		return this.elements.map(function(el){			var trigger = 0;			if (el._parent.className.indexOf("close") != -1)			{				trigger = 1;			}			if (el._parent.id)			{				return el._parent.id+","+trigger;			}			else {				return "";			}					}, this);	},	showThisHideOpen: function(index){return this.display(index);}});
