/**
 * @author quickest
 */
Accordion = Class.create();
Accordion.prototype = {
	initialize: function(elem, clickableEntity, checkAllow) {
		this.container = $(elem);
		this.checkAllow = checkAllow || false;
		this.disallowAccessToNextSections = false;
		this.sections = $$('#' + elem + ' .step');
		this.currentSection = false;
		var headers = $$('#' + elem + ' .step ' + clickableEntity);
		headers.each(function(header) {
			Event.observe(header,'click',this.sectionClicked.bindAsEventListener(this));
		}.bind(this));
	},
	
	sectionClicked: function(event) {
		this.openSection($(Event.element(event)).up('.step'));
		Event.stop(event);
	},
	
	openSection: function(section) {
		var section = $(section);

		// Check allow
		if (this.checkAllow && !Element.hasClassName(section, 'allow')){
			return;
		}

		if(section.id != this.currentSection) {
			this.closeExistingSection();
			this.currentSection = section.id;
			$(this.currentSection).addClassName('active');
			var contents = document.getElementsByClassName('a-item',section);
			contents[0].show();
			//Effect.SlideDown(contents[0], {duration:.2});
			
			if (this.disallowAccessToNextSections) {
				var pastCurrentSection = false;
				for (var i=0; i<this.sections.length; i++) {
					if (pastCurrentSection) {
						Element.removeClassName(this.sections[i], 'allow');
					}
					if (this.sections[i].id==section.id) {
						pastCurrentSection = true;
					}
				}
			}
		}
	},
	
	closeSection: function(section) {
		$(section).removeClassName('active');
	},
	
	closeAndClearSectionByStepName: function(step) {
		this.closeSection("opc-" + step);
		$("opc-" + step).getElementsByClassName("a-item")[0].hide();
		
		var content = $("school-" + step + "-html-load");
		content.innerHTML = "";
	},
	
	openNextSection: function(setAllow){
		for (section in this.sections) {
			var nextIndex = parseInt(section)+1;
			if (this.sections[section].id == this.currentSection && this.sections[nextIndex]){
				if (setAllow) {
					Element.addClassName(this.sections[nextIndex], 'allow')
				}
				this.openSection(this.sections[nextIndex]);
				return;
			}
		}
	},
	
	openPrevSection: function(setAllow){
		for (section in this.sections) {
			var prevIndex = parseInt(section)-1;
			if (this.sections[section].id == this.currentSection && this.sections[prevIndex]){
				if (setAllow) {
					Element.addClassName(this.sections[prevIndex], 'allow')
				}
				this.openSection(this.sections[prevIndex]);
				return;
			}
		}
	},
	
	closeExistingSection: function() {
		if(this.currentSection) {
			this.closeSection(this.currentSection);
		}
	}
}
