var Helper = {
	o_toggle: null,
	i_toggleTime: 500,
	i_toggleFPS: 25,
	toggle_view: function(id) {
		if(this.o_toggle != null) return;
		
		var f_toggleStep = 1000 / this.i_toggleFPS;
		var element = document.getElementById(id);
		if (!element) return;
		
		var direction = 1;
		var func = y = 0;
		this.o_toggle = element;
		element.style.overflow = 'hidden';
		if (element.style.display == 'none') {
			element.style.height = '0px';
			element.style.display = '';
		}
		else {
			direction = -1;
			window.setTimeout('Helper.o_toggle.style.display=\'none\'', this.i_toggleTime + f_toggleStep);
		}
		
		for (var time = 0; time <= this.i_toggleTime; time += f_toggleStep) {
			//var func = Math.cos(Math.PI / this.i_toggleTime * time) + (Math.cos(Math.PI / this.i_toggleTime * time) - Math.cos(3 * Math.PI / this.i_toggleTime * time)) / 9;
			func = 1 - 2 / (Math.exp(4 / this.i_toggleTime * Math.PI * (this.i_toggleTime / 2 - time)) + 1);
			y = (element.scrollHeight - direction * element.scrollHeight * func) / 2;
			window.setTimeout('Helper.o_toggle.style.height=\''+ Math.min(element.scrollHeight, Math.round(y)) +'px\'', time);
		}
		window.setTimeout('Helper.o_toggle.style.height=\'\'', this.i_toggleTime + f_toggleStep);
		window.setTimeout('Helper.o_toggle.style.overflow=\'\'', this.i_toggleTime + f_toggleStep);
		window.setTimeout('Helper.o_toggle=null', this.i_toggleTime + 2 * f_toggleStep);
	},
	
	round: function(f_value, i_dec) {
		var pow;
		if(!i_dec)
			return Math.round(f_value);
		else {
			i_dec = Math.abs(parseInt(i_dec));
			pow = Math.pow(10, i_dec);
		}
		return Math.round(f_value * pow) / pow;
	}
}

