/******************************************
 * The Celebrations Class
 ******************************************/
 if (typeof crumbs == "undefined" || !crumbs) {
    var crumbs = {};
}

crumbs.Celebrations = Class.create({
	initialize: function(element, link) {
		this.pageNumbers = null;
		this.pages = null;
		this.currentPageNum = 0;
		this.tagLinks = null;
		this.element = $(element);
		this.link = $(link);
		this.previouslyCurrentLink = null;
		
		this.initLink();
		this.initPages();
		this.initTagLinks();
	},
	
	initLink: function() {
		Event.observe(this.link, 'click', this.toggle.bindAsEventListener(this))
	},
	
	initPages: function() {
		this.pageNumbers = this.element.select(".celebration-page-link");
		this.pages = this.element.select(".celebration-page");
		if(this.pageNumbers.length==1) return;
		for(var i=0; i<this.pageNumbers.length; i++) {
			Event.observe(this.pageNumbers[i], 'click', this.switchCelebrationPage.bindAsEventListener(this));
		}
	},
	
	resizeParent: function() {
		if(this.pageNumbers.length==1) return;
		maximumPageSize = 0;
		for(var i=0; i<this.pageNumbers.length; i++) {
			maximumPageSize = Math.max(maximumPageSize, this.pages[i].offsetHeight);
		}
		Element.setStyle(this.pages[0].parentNode, {height: maximumPageSize+"px"});
	},
	
	initTagLinks: function() {
		this.tagLinks = this.element.select('.celebration-page a.celebration-tag-link');
		for(var i=0; i<this.tagLinks.length; i++) {
			Event.observe(this.tagLinks[i], 'click', this.addExclusiveTagFilter.bindAsEventListener(this));
		}
	},
	
	toggle: function(event) {
		screenManager.getCatalog().hideCategoryDescription();
		var callouts = screenManager.getCallouts('right');
		if(this.element.getStyle('display')=='block') {
			//fade in the rest of the right column
			for(var i=0; i<callouts.length; i++) {
				if(callouts[i].id != this.element.id)
					Effect.BlindDown(callouts[i]);
			}
			this.element.setStyle({display: 'none'});
			this.previouslyCurrentLink.addClassName('current');
			this.link.removeClassName('current');
		} else {
			//fade out the rest of the right column
			for(var i=0; i<callouts.length; i++) {
				if(callouts[i].id != this.element.id)
					Effect.BlindUp(callouts[i]);
			}
			this.element.setStyle({display: 'block'});
			this.resizeParent();
			var currentArray = $$('#filter-list .current');
			this.previouslyCurrentLink = currentArray[0];
			//currentArray[0].removeClassName('current');
			this.link.addClassName('current');
			screenManager.trackEvent("Celebrations", "Open");
		}
	},
	
	switchCelebrationPage: function(event) {
		var pageButton = Event.element(event);
		var pageToShow = pageButton.getAttribute('for');
		if(pageToShow==this.currentPageNum) return;
		
		pageButton.addClassName("current");
		this.pageNumbers[this.currentPageNum].removeClassName("current");
		
		Element.setStyle(this.pages[this.currentPageNum], { visibility: 'hidden'} );
		Element.setStyle(this.pages[pageToShow], { visibility: 'visible' });
		
		this.currentPageNum = pageToShow;
	},
	
	addExclusiveTagFilter: function(event) {
		var tagLink = Event.element(event);
		var filter = screenManager.getFilter();
		filter.addExclusiveTag(tagLink);
		screenManager.trackEvent("Celebrations", "Tag Filter Add", tagLink.getAttribute("for"));
	}
});