
// Begin collapse box

function collapse_box(identifier, img_dir, img_collapsed, img_expanded) {
	
	this.identifier = identifier;
	this.img_dir = img_dir;
	this.img_collapsed = img_collapsed;
	this.img_expanded = img_expanded;
	this.onexpand_callbacks = new Array();
	this.oncollapse_callbacks = new Array();
	this.div_id = this.identifier;
	this.curtain_id = this.div_id + '_curtain';
	this.img_id = this.identifier + '_img';
	this.scaler = new harmonicEnheightener(this.curtain_id);
	
	this.toggle_visibility = function() {
		var curtain = document.getElementById(this.curtain_id);
		if (curtain.offsetHeight == 0) {
			this.set_visibility(true);
		} else {
			this.set_visibility(false);
		}
		/*
		if (the_div.style.display == 'none') {
			this.set_visibility(item_num, true);
		} else {
			this.set_visibility(item_num, false);
		}
		*/
	}
	
	this.set_visibility = function(the_vis) {
		var the_div = document.getElementById(this.div_id);
		var the_img = document.getElementById(this.img_id);
		var new_size;
		
		if (the_vis) {
			// visible
			new_display = 'block';
			size = the_div.offsetHeight;
			img_filename = this.img_expanded;
			for(i in this.onexpand_callbacks) {
				eval(this.onexpand_callbacks[i]);
			}
			this.scaler.on_cleanup(function() {
				var curtain = document.getElementById(this.curtain_id);
				curtain.style.height = 'auto';
			}, this);
		} else {
			// hidden
			new_display = 'none';
			size = 0;
			img_filename = this.img_collapsed;
			for(i in this.oncollapse_callbacks) {
				eval(this.oncollapse_callbacks[i]);
			}
			this.scaler.on_cleanup(false);
		}
		this.scaler.resize(size);
		the_img.src = this.img_dir + '/' + img_filename;
	}
	
	this.add_onexpand = function(callback) {
		this.onexpand_callbacks.push(callback);
	}
	
	this.add_oncollapse = function(callback) {
		this.oncollapse_callbacks.push(callback);
	}
	this.fit_to_content = function() {
		var the_div = document.getElementById(this.div_id);
		var size = the_div.offsetHeight;
		this.scaler.start(size);
	}
}

// END collapse box
