﻿var Helper = {
	a_toggle: [],
	i_toggleTime: 500,
	i_toggleFPS: 25,
	
	init: function (element) {
		if ('object' === typeof element && isFinite(element.length)) {
			for (var i = 0; i < element.length; i++) {
				this.init(element[i]);
			}
		}
		else if ('string' === typeof element) {
			this.init(document.getElementById(element));
		}
		else if ('object' === typeof element && element.nodeType === 1) {
			this.a_toggle.push(element);
		}
	},
	
	toggle_view: function() {
		if (this.a_toggle.length < 1) return;
		
		var f_toggleStep = 1000 / this.i_toggleFPS;
		var i_func = i_y = i_dimension = i_direction = 0;
		var element;
		for (var i = 0; i < this.a_toggle.length; i++) {
			element = this.a_toggle[i];
			element.style.overflow = 'hidden';
			if (element.style.display == 'none') {
				i_direction = 1;
				element.style.height = '0px';
				element.style.display = 'block';
			}
			else {
				i_direction = -1;
				window.setTimeout('Helper.a_toggle['+String(i)+'].style.display="none"', this.i_toggleTime + f_toggleStep);
			}
			
			for (var i_time = 0; i_time <= this.i_toggleTime; i_time += f_toggleStep) {
				//var i_func = Math.cos(Math.PI / this.i_toggleTime * i_time) + (Math.cos(Math.PI / this.i_toggleTime * i_time) - Math.cos(3 * Math.PI / this.i_toggleTime * i_time)) / 9;
				i_func = 1 - 2 / (Math.exp(4 / this.i_toggleTime * Math.PI * (this.i_toggleTime / 2 - i_time)) + 1);
				i_y = (element.scrollHeight - i_direction * element.scrollHeight * i_func) / 2;
				i_dimension = Math.min(element.scrollHeight, Math.round(i_y));
				window.setTimeout('Helper.a_toggle['+String(i)+'].style.height="'+ String(i_dimension) +'px"', i_time);
			}
//			window.setTimeout('Helper.a_toggle['+String(i)+'].style.height=""', this.i_toggleTime + f_toggleStep);
			window.setTimeout('Helper.a_toggle['+String(i)+'].style.overflow="visible"', this.i_toggleTime + f_toggleStep);
		}
		window.setTimeout('Helper.a_toggle=[]', this.i_toggleTime + 3 * 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;
	}
}
function Slider () {
	this.o_toggle= null;
	this.i_toggleTime= 500;
	this.i_toggleFPS= 25;
	
	function toggle_view (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);
	}
}
