
/*
 * Класс для анимирования глаз
 * TimeZero <http://www.timezero.ru/>
 * 2007-12-13
 * Автор: Дмитрий Шкинёв <berkel@timezero.ru>
 */

var eyesAnimation = function(containerId, options){

	this.container = $(containerId);

	var point = new Image();
	point.src = "/i/blank.gif";

	this.container.appendChild(point);

	this.point = point;

	this.halfContainerHeight = this.container.offsetHeight / 2;
	this.halfContainerWidth = this.container.offsetWidth / 2;

	this.positionData = [];

    this.options = options;

	this.defaultRadius = this.options.radius;
	this.radius = this.defaultRadius;

	this.alignY = this.halfContainerHeight - (this.point.height / 2);
	this.alignX = this.halfContainerWidth - (this.point.width / 2);

	var containerPostion = cmnGetAbsolutePos(this.container);

	this.pointY = containerPostion.y + this.halfContainerHeight;
	this.pointX = containerPostion.x + this.halfContainerWidth;

	this.setVars(0, 0, 0);
}

eyesAnimation.prototype = {

	changeVars : function(evt){

		this.setVars(evt.clientX, evt.clientY, this.radius);
	},

	setPosition : function(){

		this.point.style.left = this.positionData[this.container.id].x + "px";
		this.point.style.top = this.positionData[this.container.id].y + "px";
	},

	moveToStartSpot : function(){

		if (this.radius > 0){

			this.radius--;

		} else {

			this.setVars(0, 0, 0);
		}
	},

	setVars : function(evX, evY, radius){

		var legX = evX - this.pointX;
		var legY = evY - this.pointY;

		var tan = (legX == 0) ? legY : legY / legX;

		var x = Math.sqrt(Math.pow(radius, 2) / (1 + Math.pow(tan, 2)));

		if (legX < 0)
			x = -x;

		var y = tan*x;

		this.radius = radius;

		this.positionData[this.container.id] = {
			x : this.point.offsetLeft,
			y : this.point.offsetTop
		};

		if (!(cmnBetween(legX, -radius, radius) && cmnBetween(legY, -radius, radius))){

			this.positionData[this.container.id] = {
				x : this.alignX + x,
				y : this.alignY + y
			};
		}
	}
};
