var Seasons = {
	items: new Array(),
	currentItem: 0,
	changeSpeed: 10000,
	alphaFlag: true,
	intervalId: -1,

	addEvent: function(obj, event, func) {
		if (obj.addEventListener) obj.addEventListener(event, func, false);
		else obj.attachEvent("on" + event, func);
	},

	removeEvent: function(obj, event, func) {
		if (obj.removeEventListener) obj.removeEventListener(event, func, false);
		else obj.detachEvent("on" + event, func);
	},

	getById: function(id) {
		if(document.getElementById(id))
			return document.getElementById(id);
		return undefined;
	},

	alpha: function(id, value) {
		if (document.all && !window.opera) Seasons.getById(id).style.filter = 'alpha(opacity=' + value * 100 + ')';
		else Seasons.getById(id).style.opacity = value;
	},

	show: function() {
		var tempId = Seasons.items[Seasons.currentItem].id;
		if (Seasons.currentItem != -1)
			Seasons.getById('seasons').innerHTML = "<div id='seasons_" + tempId + "' style='display: block; position: absolute;'><img src='images/kontakt/siedziba_onyx_" + tempId + ".jpg' /></div>";
		Seasons.setInterval();
	},

	setInterval: function() {
		if(Seasons.intervalId == -1)
			Seasons.intervalId = window.setInterval('Seasons.change()', Seasons.changeSpeed);
	},

	change: function() {
		var nextItem = 0, tempId;
		nextItem = parseInt(Seasons.currentItem) + 1;
		if (nextItem >= Seasons.items.length) nextItem = 0;

		if (Seasons.currentItem != nextItem && Seasons.alphaFlag) {
			tempId = Seasons.items[nextItem].id;
			Seasons.getById('seasons').innerHTML += "<div id='seasons_" + tempId + "' style='display: none; position: absolute;'><img src='images/kontakt/siedziba_onyx_" + tempId + ".jpg' /></div>";
			Seasons.alpha('seasons_' + tempId, 0);
			Seasons.items[nextItem].alpha = 0;
			Seasons.getById('seasons_' + Seasons.items[nextItem].id).style.display = 'block';
			Seasons.alpha('seasons_' + Seasons.items[Seasons.currentItem].id, 1);
			Seasons.items[Seasons.currentItem].alpha = 1;
			Seasons.setAlpha(Seasons.currentItem, nextItem);
			Seasons.currentItem = nextItem;
			Seasons.alphaFlag = false;
			Seasons.setActiveDot(Seasons.currentItem);
		}
	},

	setAlpha: function(idOld, idNew) {
		if (Seasons.items[idNew].alpha < 1) {
			Seasons.items[idNew].alpha += 0.05;
			Seasons.items[idOld].alpha -= 0.05;
			Seasons.alpha('seasons_' + Seasons.items[idNew].id, Seasons.items[idNew].alpha);
			Seasons.alpha('seasons_' + Seasons.items[idOld].id, Seasons.items[idOld].alpha);
			window.setTimeout('Seasons.setAlpha('+ idOld + ',' + idNew + ')', 50);
		}
		else {
			Seasons.getById('seasons').removeChild(Seasons.getById('seasons_' + Seasons.items[idOld].id));
			Seasons.alphaFlag = true;
		}
	},

	setCurrentItem: function(e) {
		var target = e.target;
		var tempId;

		if (!target) target = e.srcElement;
		nextItem = target.id.split('_')[1];
		Seasons.setActiveDot(nextItem);

		window.clearInterval(Seasons.intervalId);
		Seasons.intervalId = -1;

		if (Seasons.currentItem != nextItem && Seasons.alphaFlag) {
			tempId = Seasons.items[nextItem].id;
			Seasons.getById('seasons').innerHTML += "<div id='seasons_" + tempId + "' style='display: none; position: absolute;'><img src='images/kontakt/siedziba_onyx_" + tempId + ".jpg' /></div>";
			Seasons.alpha('seasons_' + tempId, 0);
			Seasons.items[nextItem].alpha = 0;
			Seasons.getById('seasons_' + Seasons.items[nextItem].id).style.display = 'block';
			Seasons.alpha('seasons_' + Seasons.items[Seasons.currentItem].id, 1);
			Seasons.items[Seasons.currentItem].alpha = 1;
			Seasons.setAlpha(Seasons.currentItem, nextItem);
			Seasons.currentItem = nextItem;
			Seasons.alphaFlag = false;
		}
	},

	setActiveDot: function(id) {
		for(season in Seasons.items){
			Seasons.getById('d_' + season).className = '';
		}
		Seasons.getById('d_' + id).className = 'active';
	},

	addDots: function() {
		var dots = Seasons.getById('dots');
		var dotLink;
		for(season in Seasons.items){
			dotLink = document.createElement('a');
			dotLink.setAttribute('id', 'd_' + season);
			dotLink.setAttribute('title', Seasons.items[season].title);
			Seasons.addEvent(dotLink, "click", Seasons.setCurrentItem);
			Seasons.addEvent(dotLink, "mouseout", Seasons.setInterval);
			dots.appendChild(dotLink);
		}
		Seasons.setActiveDot(Seasons.currentItem);
	},

	init: function() {
		var date = new Date();
		var year = date.getFullYear();
		var month = date.getMonth()+1;
		var day = date.getDate();
		var astronomicalSeason = {
			0: {'month': 3, 'day': 20},
			1: {'month': 6, 'day': 21},
			2: {'month': 9, 'day': 23},
			3: {'month': 12, 'day': 22}
		}
		var current = 3;
		Seasons.items[0] = {id: 'wiosna', 'title': 'wiosna'};
		Seasons.items[1] = {id: 'lato', 'title': 'lato'};
		Seasons.items[2] = {id: 'jesien', 'title': 'jesień'};
		Seasons.items[3] = {id: 'zima', 'title': 'zima'};

		for(season in astronomicalSeason){
			if (Date.UTC(year, month, day) < Date.UTC(year, astronomicalSeason[season].month, astronomicalSeason[season].day)) {
				current = parseInt(season) - 1;
				break;
			}
		}

		Seasons.currentItem = current < 0 ? 3 : current;
		Seasons.addDots();
		Seasons.show();
	}
}

Seasons.addEvent(window, 'load', Seasons.init);

