function get_object(name) {

	if (document.getElementById) {
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	} else if (document.all) {
		this.obj = document.all[name];
		this.style = document.all[name].style;
	} else if (document.layers) {
		this.obj = document.layers[name];
		this.style = document.layers[name];
	}
}

function get_top_position(object) {

	var current_top = 0;

	if (document.getElementById || document.all) {
		while (object.offsetParent) {
			current_top += object.offsetTop;
			object = object.offsetParent;
		}
	} else if (document.layers) current_top += object.y;

	return current_top;
}

function get_left_position(object) {

	var current_left = 0;

	if (document.getElementById || document.all) {
		while (object.offsetParent) {
			current_left += object.offsetLeft;
			object = object.offsetParent;
		}
	} else if (document.layers) current_left += object.x;

	return current_left;
}


function init() {

	DHTML = (document.getElementById || document.all || document.layers)
	if (!DHTML) return;

	for (i = 0; i < n; ++i) {
		obj[i] = new get_object("s_" + (i + 1));
		pos[i] = get_left_position(obj[i].obj);
		obj[i].style.top = get_top_position(obj[i].obj) + 32;
	}
	offset = 15;
	leftmost_pos = pos[0] - offset;
	rightmost_pos = leftmost_pos + width + offset;

	no_change = 0;
	per_sec = 10;

	v = 0.25;

	slope = 1.0;
	dir = 1;

	shift = 0.2;
	c = 0.95;

	if (document.layers) document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = mouse_xy;

	window_dimensions();
	position_layers();

}

function position_layers() {

	if (++no_change < 20 * per_sec) {
		if (dir == 1) {
			slope = slope * c;
			if (slope < 0.001) dir = 0;
		} else {
			slope = slope / c;
			if (slope > 500) dir = 1;
		}
		for (i = 0; i < n; ++i) {
			x = i / (n - 1);
			f = 0.5 * Math.atan(slope / (shift - x));
			pos[i] = leftmost_pos + width * (x + v * f);
		}
		// pos[0] = leftmost_pos;
		// pos[n - 1] = rightmost_pos;
	} else {
		if (shift < 0.5) {
			for (i = 0; i < n; ++i) {
				if (pos[i] > leftmost_pos) pos[i] = pos[i] - 25 * (pos[i] - leftmost_pos + width * 0.1) / width;
			}
		} else {
			for (i = 0; i < n; ++i) {
				if (pos[i] < rightmost_pos) pos[i] = pos[i] + 25 * (rightmost_pos - pos[i] + width * 0.1) / width;
			}
		}
	}

	for (i = 0; i < n; ++i) {
		if (pos[i] < leftmost_pos)
			obj[i].style.left = leftmost_pos;
		else if (pos[i] > rightmost_pos)
			obj[i].style.left = rightmost_pos;
		else
			obj[i].style.left = pos[i];
	}
	setTimeout("position_layers()", 1000 / per_sec);
}

function mouse_xy(e) {

	no_change = 0;

	if (!e) var e = window.event;

	if (e.clientX || e.clientY) {
		mouse_x = e.clientX;
		mouse_y = e.clientY;
	} else if (e.pageX || e.pageY) {
		mouse_x = e.pageX;
		mouse_y = e.pageY;
	}
	shift = mouse_x / window_width;
	c = 0.5 + 0.5 * Math.abs(mouse_y / window_height - 0.2);
}


function window_dimensions() {

	if (window.innerWidth) {
		window_width = window.innerWidth;
		window_height = window.innerHeight;
	} else if (document.documentElement && document.documentElement.clientWidth) {
		window_width = document.documentElement.clientWidth;
		window_height = document.documentElement.clientHeight;
	} else if (document.body) {
		window_width = document.body.clientWidth;
		window_height = document.body.clientHeight;
	}
}
