// JavaScript Document



var nearly_accordion = function(options){
		
		//options
		this.element_ids = options.element_ids;
		this.closed_height = options.closed_height;
		this.elements_clickable = options.elements_clickable;
		this.collapsable_text_class = options.collapsable_text_class;
		//
		this.heights = Array();
		this.element_open = Array();
		
		//
		this.winScroller = new Fx.Scroll(window);
	
	
		this.do_open = function(id){
			var information_element = this.get_collapsable_text_element(id);
			var read_less_element = this.get_read_less_element(id);
			var read_more_element = this.get_read_more_element(id);
			var myFx = new Fx.Tween(information_element).chain(
								function(){
										this.winScroller.toElement($(id)); // make sure element visible
									}.bind(this));
			
			myFx.start('height', this.heights[id]+10); // extra ten to make sure that opacity doesn't overlap
			
			
			read_more_element.setStyle('display', 'none');
			read_less_element.setStyle('display', 'inline');
			
			// now close the others 
			for (var i=0; i < this.element_ids.length; i++){
				var element_id = this.element_ids[i];
				if (element_id != id)
					this.do_close(element_id);
			}
			//
			this.element_open[id] = true;
			
			return false;
		};
		
		this.do_close = function(id){
			var information_element = this.get_collapsable_text_element(id);
			var read_less_element = this.get_read_less_element(id);
			var read_more_element = this.get_read_more_element(id);
			var myFx = new Fx.Tween(information_element);
			myFx.start('height', this.closed_height);
			read_more_element.setStyle('display', 'inline');
			read_less_element.setStyle('display', 'none');
			//
			this.element_open[id] = false;
			return false;
		};
		
		this.do_fast_close = function(id){
			var information_element = this.get_collapsable_text_element(id);
			var read_less_element = this.get_read_less_element(id);
			var read_more_element = this.get_read_more_element(id);
			var myFx = new Fx.Tween(information_element);
			myFx.set('height', this.closed_height);
			read_more_element.setStyle('display', 'inline');
			read_less_element.setStyle('display', 'none');
			//
			this.element_open[id] = false;
			return false;
		}
		
		this.toggle = function(id){
			if (this.element_open[id]) this.do_close(id);
			else this.do_open(id);
		}
		
		this.get_collapsable_text_element =function(id){
			var information_elements = $(id).getElements('.'+this.collapsable_text_class);
			var el = information_elements[0];
			return el;
		}
		
		this.get_read_more_element =function(id){
			var read_more_elements = $(id).getElements('.read_more');
			var el = read_more_elements[0];
			return el;
		}
		
		this.get_read_less_element =function(id){
			var read_less_elements = $(id).getElements('.read_less');
			var el = read_less_elements[0];
			return el;
		}
		
		
		this.initiate = function(){		
			for (var i=0; i < this.element_ids.length; i++){
				var element_id = this.element_ids[i];

				// save original height
				this.heights[element_id] = parseFloat(
												this.get_collapsable_text_element(element_id).getStyle('height')
													);
				
				// add open and close links
				if (this.elements_clickable){
					// make whole element clickable
					$(element_id).addEvent('click', function(e){
						this.toggle(arguments[0]);
						return false;
					}.pass(element_id, this));
				} else {
					//read more
					this.get_read_more_element(element_id).addEvent('click', function(e){
						this.do_open(arguments[0]);
						
					}.pass(element_id, this));
					//read less
					this.get_read_less_element(element_id).addEvent('click', function(e){
						this.do_close(arguments[0]);
					}.pass(element_id, this));
				}
				// now initiate all as closed
				this.do_fast_close(element_id);
			}
		}
		
		this.initiate();
	}
