var DropDownMenu = Class.create();
 
DropDownMenu.prototype = {
 
 initialize: function(menuElement) {
	menuElement.childElements().each(function(node){
		// if there is a submenu
		var submenu = $A(node.getElementsByTagName("ul")).first();
		if(submenu != null){
			// make sub-menu invisible
			Element.extend(submenu).setStyle({display: 'none'});
			// toggle the visibility of the submenu
			node.onmouseover = node.onmouseout = function(){
				Element.toggle(submenu);
			}
		}
	});
}
 
};

var bannerRotator = Class.create({
	initialize:function(containerID, slideLength, fadeLength, showNumbers, instanceName){
		container = containerID;
		slideList = [];
		currentSlide = 0;
		nextSlide = 1;
		slideTime = slideLength;
		slideFade = fadeLength;
		updater = null;
		
		$(container).childElements().each(function(el){
			slideList.push(el);
			if(slideList.length > 1){
				el.hide();
			}
		});
		
		if (showNumbers) {
			$(container).insert(new Element('div', {'class':'slide_nav', id: containerID+'_nav'}));
			
			slideList.each(function(slide){
				$(containerID+'_nav').insert(new Element('a',{href:'javascript:' + instanceName + '.goToSlide('+slideList.indexOf(slide)+')',id:containerID+'_link_'+slideList.indexOf(slide)}).update(slideList.indexOf(slide)+1));
			});
		}
		
		$(containerID+'_link_0').addClassName('current');
		
		updater = new PeriodicalExecuter(this.changeSlide,slideLength);
	},
	
	changeSlide:function(){
		slideList[currentSlide].style.zIndex = 6;
		slideList[nextSlide].style.zIndex = 5;
		new Effect.Fade(slideList[currentSlide],{duration:slideFade});
		new Effect.Appear(slideList[nextSlide],{duration:slideFade});
		
		$(container+'_link_'+currentSlide).removeClassName('current');
		currentSlide = nextSlide;
		$(container+'_link_'+currentSlide).addClassName('current');
		if(nextSlide < slideList.length-1){
			nextSlide++;
		} else {
			nextSlide = 0;
		}
	},
	
	goToSlide:function(slideNumber){
		updater.stop();
		
		if(slideNumber != currentSlide){
			nextSlide = slideNumber;
			this.changeSlide();
		}
		
		updater= new PeriodicalExecuter(this.changeSlide,slideTime);
	}
});
