AccordeonElement=function(content){
	var thisF=this;
	this.accElementOp=document.createElement("div");
	this.accElement=content;
	this.accPreElement=document.createElement("div");
	this.accPostElement=document.createElement("div");
	this.mainElement=document.createElement("div");

	this.accPostElement.className="accPost";
	this.accPreElement.className="accPre";
	this.accElement.className="accElementDis";
	this.accElementOp.className="accElementOp";
	this.mainElement.className="accordeonElement";
	this.mainElement.style.overflow="hidden";
	this.mainElement.style.position="relative";

	this.accElementOp.style.position="absolute";
	this.accElementOp.style.top="0px";
	this.accElementOp.style.left="0px";

	this.accTitle=this.accElement.getElementsByTagName("h1");
	this.accTitle=this.accTitle[0];
	this.accTitle.className="accTitle";

	this.accTitle.getElementsByTagName("a")[0].onclick=function(){thisF.getAccordeon().showElement(thisF);thisF.userFunction();};

	this.accElement.parentNode.insertBefore(this.mainElement,this.accElement);
	this.mainElement.appendChild(this.accElementOp);
	this.mainElement.appendChild(this.accPreElement);
	this.mainElement.appendChild(this.accElement);
	this.mainElement.appendChild(this.accPostElement);

}

AccordeonElement.prototype={
	parentAccordeon:0,
	maxHeight:0,
	minHeight:0,
	preHeight:0,
	postHeight:0,
	opacity:0.0,
	opacityStep:0.0,
	heightStep:0.0,
	
	getAccordeon:function(){return this.parentAccordeon;},
	
	prepare:function(){
		var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
		this.preHeight=this.accPreElement.offsetHeight;
		this.postHeight=this.accPostElement.offsetHeight;
		this.minHeight=this.accTitle.offsetHeight;
		if (IE6){
			this.minHeight=this.accTitle.offsetHeight+this.accPreElement.offsetHeight;
		}
		this.maxHeight=this.accElement.offsetHeight+this.preHeight+this.postHeight;
		this.accElementOp.style.height=this.maxHeight+"px";
		this.accElementOp.style.width=this.mainElement.offsetWidth+"px";
		this.heightStep=(this.maxHeight-this.minHeight)/10.0;
		this.opacityStep=1.0/10.0;
		this.accPreElement.style.height="1px";
		this.accPreElement.style.visibility="hidden";
		this.accPostElement.style.height="1px";
		this.accPostElement.style.visibility="hidden";
	
		this.mainElement.style.height=this.minHeight+"px";
		this.setOpacity(1);
	},
	
	min:function(){
			this.accElement.className="accElementDis";
		this._min();
	},

	max:function(){
		this.accPreElement.style.height=this.preHeight+"px";
		this.accPreElement.style.visibility="visible";
		this.accPostElement.style.height=this.postHeight+"px";
		this.accPostElement.style.visibility="visible";
		this.accElement.className="accElement";

		this._max();
	},
	_max:function(){
		var thisF=this;
		this.mainElement.style.height=(parseInt(this.mainElement.style.height)+this.heightStep)+"px";
		this.setOpacity(this.opacity-this.opacityStep);
		if (parseInt(this.mainElement.style.height)>=this.maxHeight){	
			this.mainElement.style.height=this.maxHeight+"px";
			this.setOpacity(0);
		}else setTimeout(function(){thisF._max();},30);
	},

	_min:function(){
		var thisF=this;
		this.mainElement.style.height=(parseInt(this.mainElement.style.height)-this.heightStep)+"px";
		this.setOpacity(this.opacity+this.opacityStep);
		if (parseInt(this.mainElement.style.height)<=this.minHeight){	
			this.accPreElement.style.height="1px";
			this.accPreElement.style.visibility="hidden";
			this.accPostElement.style.height="1px";
			this.accPostElement.style.visibility="hidden";
	
			this.mainElement.style.height=this.minHeight+"px";
			this.setOpacity(1);
			this.accElement.className="accElementDis";
		}else setTimeout(function(){thisF._min();},30);
	},
	
	setOpacity:function(opacity){
		if (opacity>1)opacity=1.0;
		if (opacity<0)opacity=0.0;
		this.opacity=opacity+0.0;
		try{this.accElementOp.style.opacity=opacity;}catch(e){}
		try{this.accElementOp.style.mozOpacity=opacity;}catch(e){}
		try{this.accElementOp.filters[0].opacity=opacity*100;}catch(e){}
	},
	
	userFunction:function(){}
};

Accordeon=function(parent){
	var thisF=this;
	
	this.parentElement=parent;
	this.mainElements=new Array();
	
}

Accordeon.prototype={
	updating:0,
	
	start:function(userFunction){
		var accElements=this.parentElement.childNodes;
		for (var i=0,j=0;i<accElements.length;i++){
			if (accElements[i].tagName=="div" || accElements[i].tagName=="DIV"){
				this.mainElements[j]=new AccordeonElement(accElements[i]);
				this.mainElements[j++].parentAccordeon=this;
			}
		}
		
		for (var i=0;i<this.mainElements.length;i++){
			if (userFunction) this.mainElements[i].userFunction=userFunction;
			this.mainElements[i].prepare();
		}
	},
	
	showElement:function(element){
		if (! this.updating) this.updating=1;
		for (var i=0;i<this.mainElements.length;i++){
			if (this.mainElements[i] != element) this.mainElements[i].min();
		}
		element.max();
	}
};
