window.addEvent('domready', function(){
	/* GALLERIES */
	var gallery = $$('.gallery');
	gallery.each(function(brandbox){
		var ul = brandbox.getElement('ul'),
			next = brandbox.getElement('.next'),
			prev = brandbox.getElement('.prev');

		if (ul){
			var animate = new Fx.Animate.Fade(ul, 'li');
			if (next) next.addEvent('click', function(e) { animate.next(e); });
			if (prev) prev.addEvent('click', function(e) { animate.previous(e); });
		}
	});

	var slides = $$('.slides');
	slides.each(function(gallery){
		var element = gallery.getElement('ul.gallery'),
			active = gallery.getElement('figure.active'),
			current = element.getElement('li.active');

		if (element){
			var animate = new Fx.Animate.Scroll(element, 'li', {
				duration: 250,
				perStep: 1,
				perPage: 5,
				onStart: function(){
					current.removeClass('active');
				},
				onComplete: function(elements){
					var first = elements[0];
					if (first){
						current = first.addClass('active');
						var image = first.getElement('img'),
							title = image.get('alt');
						active.getElement('figcaption').set('html', title);
						active.getElement('img').set({alt: title, src: image.get('src')});
					}
				}
			});
			animate.elements.each(function(element, index){
				element.addEvent('click', function(event){
					animate.start(index);
				});
			});
		}
	});

	/* NEWARTICLE TOPHEADER */
	var topcontent = document.id('topcontent');
	var newsarticle = $(document.body).getElement('.newsarticle h1');
	if(topcontent && newsarticle) {
		newsarticle.clone().inject(topcontent.getElement('.container'));
		newsarticle.addClass('hidden');
	}
	var form_register_h1 = $(document.body).getElement('h1.totop');
	if(topcontent && form_register_h1) {
		form_register_h1.clone().inject(topcontent.getElement('.container'));
		form_register_h1.addClass('hidden');
	}
	

	/* MENU */
	var menu = $(document.body).getElement('nav.main');
	if(menu) {
		var	menuitems 	= $$('nav.main > ul > li a'),
			submenus 	= menu.getElements('.submenu'),
			prevsubmenu	= null,
			lock		= false,
			submenuheight	= 145,
			
			isSubmenuOpen = function(smenu) {
				return smenu.getStyle('height').toInt() == submenuheight;
			},
			fxSubmenu = function(smenu, open, callback, chain) {
				if(lock && !chain) return;
				closeAllSubmenu(smenu);
				new Fx.Tween(smenu, {
					property: 'height',
					onStart: function() { lock = true; },
					onComplete: function(){
						lock = false;
						if(callback) callback();
					}
				}).start(open ? submenuheight : 0);
			},
			closeAllSubmenu	= function(current) {
				submenus.each(function(item) {
					if(item != current && isSubmenuOpen(item)) {
						item.setStyle('height', 0 );
					}
				});
			};
	
		// Init open submenu
		submenus.each(function(item) {
			if(isSubmenuOpen(item)) {
				prevsubmenu = item;
			}
		});

		menuitems.addEvent('click', function(e) {
			var rel = this.get('rel');
			var currentitem = this;

			if(!rel) return;
			if(e) e.stop();
			var submenu = document.id(rel);
			if(!submenu) return;
			
			if(prevsubmenu && prevsubmenu != submenu) {
				if(!isSubmenuOpen(prevsubmenu)) {
					fxSubmenu(submenu, true, function(){
						menuitems.removeClass('active');
						currentitem.addClass('active');
					});
				} else {
					fxSubmenu(prevsubmenu, false, function(){
						lock = true;
						fxSubmenu(submenu, true, function(){
							menuitems.removeClass('active');
							currentitem.addClass('active');
						}, true);
					});					
				}
			} else {
				if(isSubmenuOpen(submenu)) {
					fxSubmenu(submenu, false, function(){
						currentitem.removeClass('active');
						menuitems.each(function(item){ 
							if(item.hasClass('initactive')) {
								item.addClass('active'); 
							}
						});
					});					
				} else {
					fxSubmenu(submenu, true, function(){
						menuitems.removeClass('active');
						currentitem.addClass('active');
					});
				}
			}
			prevsubmenu = submenu;
		});
	}
});

