/*
* Animation
* ----------------------------------------
* @last_modified: 2009-02-22
* @author: Svetovoe Oborudovanie <svet@svetpro.ru>
*/

function Animation() {

	this.oController = null;
	this.fCallbackFunction = null;
	this.fStopCallbackFunction = null;

}

Animation.prototype = {

	setCallbackFunction : function(fCallbackFunction) {

		this.fCallbackFunction = fCallbackFunction;

	},

	setStopCallbackFunction : function(fStopCallbackFunction) {

		this.fStopCallbackFunction = fStopCallbackFunction;

	},

	setController : function(oController) {

		this.oController = oController;

	},

	process : function() {

		if(this.shouldStop()) {
			return this.stop();
		}

		this.doProcess();

		if(this.fCallbackFunction) {
			this.fCallbackFunction(this);
		}

	},

	doProcess : function() {},

	shouldStop : function() {

		return true;

	},

	stop : function() {

		if(this.oController) {
			this.oController.removeAnimation(this);
		}

		if(this.fStopCallbackFunction) {
			this.fStopCallbackFunction();
		}

	}

};
