var partnerOverview = new Class({
   
    activeElement: 0,
    isActive: false,
    options: $H({
        classNames: ['current', ''],
        duration: 1000    
    }),
    
    initialize: function(togglers, elements, options)
    {
        this.togglers = togglers;
        this.elements = elements;
        this.options.extend(options || {});

        this.elements.each(function(el, i){
            this.wrap(el, i);
        }, this);

        this.attach();
    },
    wrap: function(el, i)
    {
        new Element('div', {
            styles: {
                height: i > 0 ? 0 : el.getHeight(),
                overflow: 'hidden',
                opacity: i > 0 ? 0 : 1
            }    
        }).inject(el, 'after').grab(el);
    },
    
    toggle: function(i)
    {
        if(this.active)
        {
            return;
        }
        this.active = true;

        // switch cssClasses
        this.togglers[this.activeElement].removeClass(this.options.classNames[0]).addClass(this.options.classNames[1]);
        this.togglers[i].removeClass(this.options.classNames[1]).addClass(this.options.classNames[0]);

        var p = this.elements[this.activeElement].getParent();
        var n = this.elements[i].getParent();

        new Fx.Morph(p, {
            duration: this.options.get('duration')
        }).start({
            height: 0,
            opacity: 0
        }).chain(function(){
            this.activeElement = i;
            new Fx.Morph(n, {
                duration: this.options.get('duration')
            }).start({
                height: this.elements[i].getHeight(),
                opacity: 1
            }).chain(function(){
                this.active = false;    
            }.bind(this));
        }.bind(this));
    },

    attach: function()
    {
        this.togglers.each(function(el, i){
            el.addEvent(
                'click', function(){
                    if(i != this.activeElement)
                    {
                        this.toggle(i);
                    }
                }.bind(this)
            );
        }, this);
    }
    
});

var togglePartnerBox = function(el)
{
    var divs = el.getElements('.partner_overview_box_cont_img, .partner_overview_box_cont_inf');
    
    divs.each(function(div){
        div.setStyle('display', div.getStyle('display') != 'none' ? 'none' : 'block');
    });
}

window.addEvent('domready', function(){

	$$('.partner').each(function(el){
		var div = el.getElement('div');
		
		if(div)
		{
			div.setStyles({
				opacity: 0,
				top: 0
			});

			div.set('tween', {duration: 250}); 

			el.addEvents({
				'mouseover': function(){
					div.fade(.9);
				},
				'mouseleave': function(){
					div.fade(0);
				}
			});
		}
	});

    // Download Page
    if($$('.partner_overview_menu_a')[0])
    {
        // init content toggler
        new partnerOverview($$('.partner_overview_menu div'), $$('.partner_overview_list'), {
            classNames: ['partner_overview_menu_a', 'partner_overview_menu_p']    
        });
        // attach Mouseover
        $$('.partner_overview_box_cont').each(function(el){
            var div = el.getParent();
            div.addEvents({
                'mouseout': function(){
                    togglePartnerBox(el);
                },
                'mouseover': function(){
                    togglePartnerBox(el);
                }
            }) 
        });
    }
});
