﻿var StateHistory = new Class(
{
	initialize : function()
	{
		this.active = true;
		this.states = [];
		this.position = -1;
	},

	load : function()
	{

		this.position = 0;
	},

	sleep : function()
	{
		this.active = false;
	},

	wakeUp : function()
	{
		this.active = true;
	},

	back : function()
	{
		if (this.position > 0)
		{
			this.position--;

			this.sendRequest(function()
			{
				if (stateHistory.position == 0)
				{
					stateHistory.deactivateNavBtn($("btnBack"));
				}

				stateHistory.activateNavBtn($("btnForward"));
			});
		}
	},

	forward : function()
	{
		if (this.position < this.states.length - 1)
		{
			//this.states[this.position] = buildLifeState();
			this.position++;

			this.sendRequest(function()
			{
				if (stateHistory.position == stateHistory.states.length - 1)
				{
					stateHistory.deactivateNavBtn($("btnForward"));
				}

				stateHistory.activateNavBtn($("btnBack"));
			});
		}
	},

	sendRequest : function(onFinish)
	{
		this.sleep();
		UIService.RebuildState(this.states[this.position], function(commands)
		{
			ui.processCommands(commands, function()
			{
				stateHistory.wakeUp();
				onFinish();
			});
		});
	},

	activateNavBtn : function(navBtn)
	{
		imgBtn.setStatus("", navBtn, 0, true);
		navBtn.getParent().setProperty("class", "nav");
	},

	deactivateNavBtn : function(navBtn)
	{
		imgBtn.setStatus("", navBtn, 3);
		navBtn.getParent().setProperty("class", "navInactive");
	},

	push : function()
	{
		if (this.position < this.states.length - 1)
		{
			this.states = this.states.slice(0, this.position + 1);
		}

		this.states.push(buildLifeState());
		this.position = this.states.length - 1;

		this.activateNavBtn($("btnBack"));
		this.deactivateNavBtn($("btnForward"));
	}
});

var stateHistory = new StateHistory();