var Accordion = Fx.Elements.extend({

	options: {
		onActive: Class.empty,
		onBackground: Class.empty,
		display: -1,
		show: true,
		height: true,
		width: false,
		opacity: false,
		fixedHeight: false,
		fixedWidth: false,
		wait: false,
		alwaysHide: false,
		event:'mouseover'
	},

	initialize: function(){
		var options, togglers, 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 elements = temp;
			}
		});
		this.togglers = togglers || [];
		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){
			if (this.togglers[i].className.indexOf("active") != -1){
				this.fireEvent('onActive', [this.togglers[i], el]);
			} else {
				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(this.options.event, this.display.bind(this, idx));
		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');
		element.setStyle('visivility', 'visible');
		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){
			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);
		return this.start(obj);
	},

	showThisHideOpen: function(index){return this.display(index);}

});

Fx.Accordion = Accordion;

function initPage()
{

	var accordion_block = document.getElementById('accord');

	var _uls = accordion_block.getElementsByTagName("ul");
	if (_uls)
	{
		for (var i=0; i<_uls.length; i++)
		{
			_uls[i].style.display = "block";
		}
	}
	
	if(accordion_block)
	{
		var accordion = new Accordion('a.openner', 'ul.sub', {
			duration:300,
			event: 'click',
			alwaysHide: true,
			onActive: function(toggler, element){
				if(toggler.parentNode.className.indexOf("active") == -1)
					toggler.parentNode.className += ' active';
			},
		 
			onBackground: function(toggler, element){
				toggler.parentNode.className = toggler.parentNode.className.replace('active','');
			}
		}, accordion_block);
		 
	}
	var accordion_block2 = document.getElementById('accordion_block');
	if(accordion_block2)
	{
		var accordion = new Accordion('h3.openner', 'div.for-slide', {
			duration:250,
			alwaysHide: false,
			onActive: function(toggler, element){
				if(toggler.className.indexOf("active") == -1)
					toggler.className += ' active';
			},
		 
			onBackground: function(toggler, element){
				toggler.className = toggler.className.replace('active','');
			}
		}, accordion_block);
		 
	}
}


/*****

Image Cross Fade Redux
Version 1.0
Last revision: 02.15.2006
steve@slayeroffice.com

Please leave this notice intact. 

Rewrite of old code found here: http://slayeroffice.com/code/imageCrossFade/index.html


*****/


window.addEventListener?window.addEventListener("load",so_init,false):window.attachEvent("onload",so_init);

var d=document, imgs = new Array(), zInterval = null, current=0, pause=false;

function so_init() {
    if(!d.getElementById || !d.createElement)return;

    // DON'T FORGET TO GRAB THIS FILE AND PLACE IT ON YOUR SERVER IN THE SAME DIRECTORY AS THE JAVASCRIPT!
    // http://slayeroffice.com/code/imageCrossFade/xfade2.css
    css = d.createElement("link");
    css.setAttribute("href","xfade2.css");
    css.setAttribute("rel","stylesheet");
    css.setAttribute("type","text/css");
    d.getElementsByTagName("head")[0].appendChild(css);

    imgs = d.getElementById("imageContainer").getElementsByTagName("img");
    for(i=1;i<imgs.length;i++) imgs[i].xOpacity = 0;
    imgs[0].style.display = "block";
    imgs[0].xOpacity = .99;
    
    setTimeout(so_xfade,5000);
}

function so_xfade() {
    cOpacity = imgs[current].xOpacity;
    nIndex = imgs[current+1]?current+1:0;

    nOpacity = imgs[nIndex].xOpacity;
    
    cOpacity-=.05; 
    nOpacity+=.05;
    
    imgs[nIndex].style.display = "block";
    imgs[current].xOpacity = cOpacity;
    imgs[nIndex].xOpacity = nOpacity;
    
    setOpacity(imgs[current]); 
    setOpacity(imgs[nIndex]);
    
    if(cOpacity<=0) {
        imgs[current].style.display = "none";
        current = nIndex;
        setTimeout(so_xfade,5000);
    } else {
        setTimeout(so_xfade,50);
    }
    
    function setOpacity(obj) {
        if(obj.xOpacity>.99) {
            obj.xOpacity = .99;
            return;
        }
        obj.style.opacity = obj.xOpacity;
        obj.style.MozOpacity = obj.xOpacity;
        obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
    }
    
}




if (window.addEventListener)
	window.addEventListener("load", initPage, false);
else if (window.attachEvent)
	window.attachEvent("onload", initPage);

