
var Popdown = Class.create();
Popdown.prototype = {

	// ******************************************************************************
	// Constants
	// ******************************************************************************
	Version: '1.0',

	// ******************************************************************************
	// vars
	// ******************************************************************************


	// ******************************************************************************
	// Constructor
	// ******************************************************************************
	initialize: function(options) {
		if((typeof Prototype=='undefined') || 
		   (typeof Element == 'undefined') || 
		   (typeof Element.Methods=='undefined') ||
		   parseFloat(Prototype.Version.split(".")[0] + "." +
			      Prototype.Version.split(".")[1]) < 1.5)
			throw("Popdown ben�tigt das Prototype JavaScript framework >= 1.5.0");


		Event.observe(document, 'dom:loaded', this.pageLoadHandler.bindAsEventListener(this), false);


   	},

	pageLoadHandler: function(){
		$$('.popdown').each(this.setup.bind(this));
	},

	setup: function(elm){

		elm.addClassName('popdown-close');
		elm.removeClassName('popdown-open')
		
		contentObj = elm.select('.popdown-content')[0];
		contentObj.hide();


		opener = elm.select('.popdown-opener')[0];

		Event.observe(opener, 'click', this.clickHandler.bindAsEventListener(this, elm), false);

	},

	clickHandler : function(ev, elm){
		ev.stop();

		if(elm.hasClassName('popdown-close')){
			this.openHandler(elm);

		} else {
			this.closeHandler(elm);
		}
		
	},


	openHandler : function(elm)
	{
		if(this.inProgress == true) return;
		this.inProgress = true;

		contentObj = elm.select('.popdown-content')[0];
		
		Effect.SlideDown(contentObj, {afterFinish : this.afterOpen.bind(this, elm)});
	},
	closeHandler : function(elm)
	{
		if(this.inProgress == true) return;
		this.inProgress = true;

		contentObj = elm.select('.popdown-content')[0];
		
		Effect.SlideUp(contentObj, {afterFinish : this.afterClose.bind(this, elm)});
	},

	afterClose : function(elm)
	{
		this.inProgress = false;

		elm.addClassName('popdown-close');
		elm.removeClassName('popdown-open');
	},
	afterOpen : function(elm)
	{
		this.inProgress = false;

		elm.addClassName('popdown-open');
		elm.removeClassName('popdown-close');
	}


};



myPopdown = new Popdown();





	
