var BL = ('undefined' == typeof(BL)) ? {} : BL;

(function () {
	var LAYOUTS_LOOKUP = {
		'Past'    : ['Present', 'Past', 'Future'],
		'Present' : ['Past', 'Present', 'Future'],
		'Future'  : ['Past', 'Future', 'Present']
	};

	BL.YearsNavigationMenu = (function () {
		var $ = function (id) { return document.getElementById(id); };

		var STATES_LOOKUP = {};
		var YEARS_LOOKUP = {};

		var _state = null;

		return {

			init : function (state) {
				$('presentYearHolder').innerHTML = (new Date()).getFullYear();
				this.initLookups(state);
				this.setState(state);
				this.initTriggers();
			},

			getTriggers : function () {
				return $('yearsHolder').getElementsByTagName('a');
			},

			getState : function () {
				return _state;
			},

			setState : function (state) {
				_state = state;
				this.update();
			},

			initLookups : function (state) {
				var triggers = this.getTriggers();
				for (var i = 0, length = triggers.length; i < length; i++) {
					var year = triggers[i].innerHTML;
					var layout = LAYOUTS_LOOKUP[state];
					STATES_LOOKUP[year] = layout[i];
					YEARS_LOOKUP[layout[i]] = year;
				}
			},

			initTriggers : function () {
				var triggers = this.getTriggers();
				for (var i = 0, length = triggers.length; i < length; i++) {
					triggers[i].onclick = (function (self) {
						return function () {
							self.setState(STATES_LOOKUP[this.innerHTML]);
							return false;
						};
					})(this);
				}

				$('leftSuitcase').onclick = (function (self) {
					return function () {
						self.setState(LAYOUTS_LOOKUP[self.getState()][0]);
					};
				})(this);

				$('rightSuitcase').onclick = (function (self) {
					return function () {
						var layout = LAYOUTS_LOOKUP[self.getState()];
						self.setState(layout[layout.length - 1]);
					};
				})(this);
			},

			update : function () {
				var layout = LAYOUTS_LOOKUP[this.getState()];

				var triggers = this.getTriggers();
				for (var i = 0, length = triggers.length; i < length; i++) {
					triggers[i].innerHTML = YEARS_LOOKUP[layout[i]];
				}

				document.body.className = document.body.className.replace(
					new RegExp('\\b(?:' + layout.join('|') + ')(Rus)?\\b', 'i'),
					this.getState() + '$1'
				);
			}

		};
	})();
})();
