$(document).ready(function(){

	/**
	 * Zmienne
	 */
	var linkDoStronyGlownej = './';

	/**
	 * Podmiana tekstu na grafikę: projekty, podstrony
	 */
	$('.projekty li h5').html('<img src="images/napis-projekty.png" alt="Projekty" title="Projekty" />');
	$('.podstrony li h5').html('<img src="images/napis-podstrony.png" alt="Podstrony" title="Podstrony" />');

	/**
	 * Zmiana obrazka na przyciskach poprzedni/następny/top
	 */
	$('.poprzedni a, .top a').mouseover(function() {
		$(this).parent().next('li').css('background-position', '-15px 3px');
	}).mouseout(function() {
		$(this).parent().next('li').css('background-position', '0px 3px');
	});

	$('.nastepny a').mouseover(function() {
		$(this).parent().prev('li').css('background-position', '-30px 3px');
	}).mouseout(function() {
		$(this).parent().prev('li').css('background-position', '0px 3px');
	});

	/**
	 * LIGHTBOX
	 **/
	$(function() {
		var $iloscProjektow = iloscProjektow();

		for(var i=1; i<=$iloscProjektow; i++) {
			$('.lightbox-' + i).lightBox();
		}
	});


	/**
	 * NAWIGACJA ZDJĘCIAMI
	 */
	$('.zdjecia-nawigacja li a').click(function() {
		//pobieram link, tylko dla przycisków: następne / poprzednie
		$linkTemp = $(this).attr('href');

		//ustawiam punkt odniesienia (dla danej listy ul)
		var $naw = $('#' + $(this).parent().parent().attr('id'));

		//pobieram wszystkie <li> - będą użyte kilka razy.
		$li = $naw.children('li');

		//usuwam zaznaczenie numeru wizualki
		$li.children('a').removeClass('zaznaczona-wizualka');

		//ustawiam link (z miniatra foty)
		var $a = $naw.prev().children('a');

		//pobieram numer projektu
		$nrProjektu = pobierzNumerProjektu($naw.attr('id'));

		//pobieram numer linku
		var $nrLinku = $li.index($(this).parent());

		//pobieram ilość zdjęć
		var $ilosc = $naw.children('li').length - 2;

		//sprawdzam jaki link klikam
		if($(this).parent().hasClass('poprzednie-zdjecie')) {
			//pobieram numer wizualki
			var $nrWizualki = pobierzNumerWizualki($linkTemp);

			//zaznaczam nr wizualki
			$naw.children('li:eq(' + $nrWizualki + ')').children('a').addClass('zaznaczona-wizualka');

		}
		else if($(this).parent().hasClass('nastepne-zdjecie')) {
			//pobieram numer wizualki
			var $nrWizualki = pobierzNumerWizualki($linkTemp);

			//zaznaczam nr wizualki
			$naw.children('li:eq(' + $nrWizualki + ')').children('a').addClass('zaznaczona-wizualka');
		}
		else {
			//zaznaczam numer wizualki
			$(this).addClass('zaznaczona-wizualka');

			//pobieram numer wizualki
			var $nrWizualki = $(this).text();
		}

		//przypisuję wartość do hrefa
		$a.attr('href', $naw.children('li:eq(' + $nrWizualki + ')').children('a').attr('href'));

		//ustawiam obrazek
		var $img = $a.children('img');

		//ustawiam src dla obrazka
		$img.attr('src', ustawWizualke($img.attr('src'), $nrWizualki));

		//ustawiam tytuł
		var $tytul = zmienTytul($img.attr('title'), $nrWizualki);

		//ustawiam alt oraz title dla obrazka
		$img.attr('alt', $tytul).attr('title', $tytul);

		//ustawiam link nastepnego zdjecia
		$naw.children('li.nastepne-zdjecie').children('a').attr('href', zwiekszNumer($nrProjektu, $nrWizualki, $ilosc));

		//ustawiam link poprzedniego zdjecia
		$naw.children('li.poprzednie-zdjecie').children('a').attr('href', zmniejszNumer($nrProjektu, $nrWizualki, $ilosc));

		//zwracam false, aby uniknąć otwarcia linku
		return false;
	});

	/***
	 * KONIEC NAWIGACJA ZDJĘCIAMI
	 **/


	/******************************************
	 * NAWAIGACJA PO PROJEKTACH
	 *****************************************/

	/**
	 * Nowa metoda na scrolle
	 */
	var odleglosci = new Array();
	odleglosci[0] = 961; //od topu do projektu 1
	odleglosci[1] = 1743; //1169+574 od tla 1 do tla 2 + wysokość opisu
	odleglosci[2] = 2083; //1509+574 od tla 2 do tla 3 + wysokość opisu
	odleglosci[3] = 3826; //3252+574 od tla 3 do tla 1 + wysokość opisu

	/**
	 * Podstrony
	 */
	var $iloscPodstron = iloscPodstron();

	if($iloscPodstron) {
		var podstrony = new Array();
		for(var i=0; i<$iloscPodstron; i++) {
			podstrony[i+1] = $('.podstrona:eq(' + i + ')').prev().attr('id');
		}
	}

	/**
	 * Przyciski poprzedni/następny/top
	 */
	$('.nawigacja li a').click(function() {
		//Pobieram id z nadrzędnego div'a
		var $div = $(this).parent().parent().parent().attr('id');
		var $nrStrony = pobierzNumer('strony', $div);
		var $nrTla = pobierzNumer('tla', $div);
		var $iloscProjektow = iloscProjektow();

		switch($(this).parent().attr('class')) {
			case 'top':
				$('#top').ScrollTo(odleglosci[0]);
				return false;
				break;

			case 'poprzedni':
				$nrTla--;
				if(!$nrTla) {
					$nrTla = 3;
				}

				$nrStrony--;
				break;

			case 'nastepny':
				$nrTla;
				if($nrTla > 3) {
					$nrTla = 1;
				}

				$nrStrony++;
				break;
		}

		if($nrStrony <= $iloscProjektow) {
			$('#projekt' + $nrStrony).ScrollTo(odleglosci[$nrTla]);
		}
		//nawigacja po podstronach
		else {
			$('#' + podstrony[$nrStrony - $iloscProjektow]).ScrollTo(odleglosci[$nrTla]);
		}

		return false;
	});

	/**
	 * Menu główne i menu .projekty
	 */
	$('#projekty li a').click(function() {
		var $projekt = $(this).attr('class');
		var $nrProjektu = $('#projekty li a').index(this) + 1;

		var $j = 0;
		var $odleglosc = 0;
		for(var i=0; i<$nrProjektu; i++) {
			$j = i;
			if($j > 3) {
				$j = 1;
			}
			$odleglosc += odleglosci[$j];
		}

		$('#' + $projekt).ScrollTo(ustawCzas($odleglosc, i));
		return false;
	});

	$('#podstrony li a').click(function() {
		var $podstrona = $(this).attr('class');
		var $nrPodstrony = $('#podstrony li a').index(this) + 1;

		var $j = 0;
		var $odleglosc = 0;
		var $iloscProjektow = iloscProjektow();
		for(var i=0; i<$iloscProjektow + $nrPodstrony; i++) {
			$j = i;
			if($j > 3) {
				$j = 1;
			}
			$odleglosc += odleglosci[$j];
		}

		$('#' + $podstrona).ScrollTo(ustawCzas($odleglosc, i));
		return false;
	});

	$('.projekty li ul li a').click(function() {
		//Pobieram id z nadrzędnego div'a
		var $div = $(this).parent().parent().parent().parent().parent().attr('id');
		var $nrStrony = pobierzNumer('strony', $div);
		var $nrTla = pobierzNumer('tla', $div);
		var $projekt = $(this).attr('class');
		var $wybranyProjekt = parseInt($projekt.substr(7, 1));
		var $odleglosc = 0;
		var $j = 0;
		var $iloscProjektow = iloscProjektow();

		//obliczam odległość
		if($wybranyProjekt > $nrStrony) {
			for(var i=$nrStrony; i<$wybranyProjekt; i++, $j++) {
				if($nrTla == 4) {
					$nrTla = 1;
				}
				$odleglosc += odleglosci[$nrTla];
				$nrTla++;
			}
		}
		else if($wybranyProjekt < $nrStrony) {
			$nrTla--;
			for(var i=$nrStrony; i>$wybranyProjekt; i--, $j++) {
				if($nrTla == 0) {
					$nrTla = 3;
				}
				$odleglosc += odleglosci[$nrTla];
				$nrTla--;
			}
		}
		else {
			return false;
		}

		$('#' + $projekt).ScrollTo(ustawCzas($odleglosc, $j));
		return false;
	});

	$('.podstrony li ul li a').click(function() {
		//Pobieram id z nadrzędnego div'a
		var $div = $(this).parent().parent().parent().parent().parent().attr('id');
		var $nrStrony = pobierzNumer('strony', $div);
		var $nrTla = pobierzNumer('tla', $div);
		var $odleglosc = 0;
		var $j = 0;
		var $wybranaPodstrona = 0;
		var $podstrona = $(this).attr('class');
		var $iloscPodstron = iloscPodstron();

		for(var i=1; i<=$iloscPodstron; i++) {
			if(podstrony[i] == $podstrona) {
				$wybranaPodstrona = i;
				continue;
			}
		}

		var $wybranaPodstrona2 = $wybranaPodstrona + iloscProjektow();

		//obliczam odległość
		if($wybranaPodstrona2 > $nrStrony) {
			for(i=$nrStrony; i<$wybranaPodstrona2; i++, $j++) {
				if($nrTla == 4) {
					$nrTla = 1;
				}
				$odleglosc += odleglosci[$nrTla];
				$nrTla++;
			}
		}
		else if($wybranaPodstrona2 < $nrStrony) {
			$nrTla--;
			for(i=$nrStrony; i>$wybranaPodstrona2; i--, $j++) {
				if($nrTla == 0) {
					$nrTla = 3;
				}
				$odleglosc += odleglosci[$nrTla];
				$nrTla--;
			}
		}
		else {
			return false;
		}

		$('#' + podstrony[$wybranaPodstrona]).ScrollTo(ustawCzas($odleglosc, $j));
		return false;
	});

	/***
	 * KONIEC NAWIGACJA PO PROJEKTACH
	 **/

	/**
	 * FORMULARZ KONTAKTOWY
	 * Ładowany poprzez użycie Ajaxa, aby ukryć go przed 'szpiegami'.
	 **/
	$('#loading p').html('Ładuję formularz kontaktowy,<br />proszę czekać...');
	$('#komunikaty').addClass('ukryj');

	$.ajax({
		url: "kontakt-formularz.php",
		cache: false,
		async: false, //bardzo ważne ustawienie --> http://docs.jquery.com/Ajax/jQuery.ajax#options
		success: function(html){
			$('#loading').addClass('ukryj');
			$("#formularz-kontaktowy").html(html);
		}
	});

	$('#wyslij-wiadomosc span').mouseover(function() { //dodatek, ze względu na niepełną obsługę :hover (CSS) w IE6 :/
		$(this).addClass('wyslij-wiadomosc');
	}).mouseout(function() {
		$(this).removeClass('wyslij-wiadomosc');
	}).click(function() {
		//pokazuję informację dotyczącą wysyłania danych
		ukryj($('#wyslij-wiadomosc'));
		$('#loading p').html('Przesyłam dane,<br />proszę czekać...');
		pokaz($('#loading'));
		//zmienne
		var $imie		= $('#kontakt-imie');
		var $nazwisko	= $('#kontakt-nazwisko');
		var $firma		= $('#kontakt-firma');
		var $e_mail		= $('#kontakt-e-mail');
		var $temat		= $('#kontakt-temat');
		var $tresc		= $('#kontakt-tresc');

		//sprawdzam poprawność wpisanych danych
		$.post("kontakt-sprawdz-dane.php",
			{
				imie:		$imie.val(),
				nazwisko:	$nazwisko.val(),
				firma:		$firma.val(),
				e_mail:		$e_mail.val(),
				temat:		$temat.val(),
				tresc:		$tresc.val()
			},
			function(data) {
				ukryj($('#loading'));
				if(data.bledy) {
					var $komunikat = '';
					if(data.bledy.imie) {
						$komunikat = $komunikat + ' - ' + data.bledy.imie + ",<br />";
						$imie.val('');
						blad($imie);
					}
					else {
						usunBlad($imie);
					}

					if(data.bledy.nazwisko) {
						$komunikat = $komunikat + ' - ' + data.bledy.nazwisko + ",<br />";
						$nazwisko.val('');
						blad($nazwisko);
					}
					else {
						usunBlad($nazwisko);
					}

					if(data.bledy.firma) {
						$komunikat = $komunikat + ' - ' + data.bledy.firma + ",<br />";
						$firma.val('');
						blad($firma);
					}
					else {
						usunBlad($firma);
					}

					if(data.bledy.e_mail) {
						$komunikat = $komunikat + ' - ' + data.bledy.e_mail + ",<br />";
						$e_mail.val('');
						blad($e_mail);
					}
					else {
						usunBlad($e_mail);
					}

					if(data.bledy.temat) {
						$komunikat = $komunikat + ' - ' + data.bledy.temat + ",<br />";
						$temat.val('');
						blad($temat);
					}
					else {
						usunBlad($temat);
					}

					if(data.bledy.tresc) {
						$komunikat = $komunikat + ' - ' + data.bledy.tresc + ",<br />";
						$tresc.val('');
						blad($tresc);
					}
					else {
						usunBlad($tresc);
					}
					$('#komunikat').html('Wystąpiły błędy:');
					$('#lista-komunikatow').html($komunikat.substr(0, $komunikat.length - 7) + '.');
					pokaz($('#komunikaty'));
				}
				else {
					if(data.blad) {
						$('#komunikat').html('Wystąpiły błędy:');
						$('#lista-komunikatow').html(data.blad);
						pokaz($('#komunikaty'));
					}
					else {
						$('#lista-komunikatow').html(data.sukces);
						$imie.val('');
						usunBlad($imie);
						$nazwisko.val('');
						usunBlad($nazwisko);
						$firma.val('');
						usunBlad($firma);
						$e_mail.val('');
						usunBlad($e_mail);
						$temat.val('');
						usunBlad($temat);
						$tresc.val('');
						usunBlad($tresc);
						pokaz($('#komunikaty'));
					}
				}
			}, "json"
		);
		/*
		}
		*/

	});

	$('#confirm').click(function() {
		ukryj($('#komunikaty'));
		pokaz($('#wyslij-wiadomosc'));
	});
});

/**
 * Funkcje pomocnicze
 */

function ustawCzas(czas, iloscStron) {
	if(iloscStron < 4) {
		return Math.floor(czas/2);
	}
	else if(iloscStron > 3 && iloscStron < 10) {
		return Math.floor(czas/3);
	}

	return Math.floor(czas/4);
}

function ustawWizualke(link, numer) {
	var tablica = link.split('-');
	var ile = tablica.length;
	if(ile == 3) {
		return tablica[0] + '-' + numer + '-' + tablica[2];
	}
	else {
		var string = '';
		for(var i=0; i<(ile - 2); i++) {
			if(i) {
				string = string + '-' + tablica[i];
			}
			else {
				string = tablica[i];
			}
		}
		return string + '-' + numer + '-' + tablica[ile-1];
	}
}

function ustawString(nrWizualki, nrProjektu) {
	return 'projekt/' + nrProjektu + '/zdjecie/' + nrWizualki;
}

function zmienNumer(link, numer) {
	return ustawString(link, numer);
}

function zwiekszNumer(nrProjektu, nrWizualki, iloscWizualek) {
	nrWizualki = parseInt(nrWizualki) + 1;
	if(nrWizualki > iloscWizualek) {
		nrWizualki = 1;
	}

	return ustawString(nrWizualki, nrProjektu);
}

function zmniejszNumer(nrProjektu, nrWizualki, iloscWizualek) {
	nrWizualki = parseInt(nrWizualki) - 1;
	if(nrWizualki == 0) {
		nrWizualki = iloscWizualek;
	}
	return ustawString(nrWizualki, nrProjektu);
}

function zmienTytul(tytul, numer) {
	var tablica = tytul.split(' zdjęcie ');
	var tablica2 = tablica[1].split(' z ');
	return tablica[0] + ' zdjęcie ' + numer + ' z ' + tablica2[1];
}

function pobierzNumer(link) {
	var tablica = link.split('-');
	var ile = tablica.length;
	return parseInt(tablica[ile-2]);
}

function pobierzNumerProjektu(link) {
	var tablica = link.split('-');
	return parseInt(tablica[1]);
}

function pobierzNumerWizualki(link) {
	var tablica = link.split('/');
	return parseInt(tablica[tablica.length - 1]);
}

function blad(obiekt) {
	obiekt.addClass('bledny-wpis');
}

function usunBlad(obiekt) {
	obiekt.removeClass('bledny-wpis');
}

function ukryj(obiekt) {
	obiekt.removeClass('pokaz').addClass('ukryj');
}

function pokaz(obiekt) {
	obiekt.removeClass('ukryj').addClass('pokaz')
}

/**
 * Zwraca numer projektu / tła
 *
 * @param string czego Co chcemy zwrócić: projekt / tlo
 * @param string id String w postaci p[nr_projektu]-t[nr_tła], przykładowo: p2-t3
 * @return int Numer projektu
 */
function pobierzNumer(czego, id) {
	if(czego == 'strony') {
		return _zwrocNumer(0, id);
	}

	//w przeciwnym wypadku zwraca numer tła
	return _zwrocNumer(1, id);
}

function _zwrocNumer(czego, id) {
	return parseInt(id.split('-')[czego].substr(1,1));
}

function iloscProjektow() {
	return $('.projekt').length;
}

function iloscPodstron() {
	return $('.podstrona').length;
}


//////////////////// scroll by jquery ////////////////////////////////////////////////////////////////////////////
jQuery.getPos = function (e)
{
	var l = 0;
	var t  = 0;
	var w = jQuery.intval(jQuery.css(e,'width'));
	var h = jQuery.intval(jQuery.css(e,'height'));
	var wb = e.offsetWidth;
	var hb = e.offsetHeight;
	while (e.offsetParent){
		l += e.offsetLeft + (e.currentStyle?jQuery.intval(e.currentStyle.borderLeftWidth):0);
		t += e.offsetTop  + (e.currentStyle?jQuery.intval(e.currentStyle.borderTopWidth):0);
		e = e.offsetParent;
	}
	l += e.offsetLeft + (e.currentStyle?jQuery.intval(e.currentStyle.borderLeftWidth):0);
	t  += e.offsetTop  + (e.currentStyle?jQuery.intval(e.currentStyle.borderTopWidth):0);
	return {x:l, y:t, w:w, h:h, wb:wb, hb:hb};
};
jQuery.getClient = function(e)
{
	if (e) {
		w = e.clientWidth;
		h = e.clientHeight;
	} else {
		w = (window.innerWidth) ? window.innerWidth : (document.documentElement && document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.offsetWidth;
		h = (window.innerHeight) ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.offsetHeight;
	}
	return {w:w,h:h};
};
jQuery.getScroll = function (e)
{
	if (e) {
		t = e.scrollTop;
		l = e.scrollLeft;
		w = e.scrollWidth;
		h = e.scrollHeight;
	} else  {
		if (document.documentElement && document.documentElement.scrollTop) {
			t = document.documentElement.scrollTop;
			l = document.documentElement.scrollLeft;
			w = document.documentElement.scrollWidth;
			h = document.documentElement.scrollHeight;
		} else if (document.body) {
			t = document.body.scrollTop;
			l = document.body.scrollLeft;
			w = document.body.scrollWidth;
			h = document.body.scrollHeight;
		}
	}
	return { t: t, l: l, w: w, h: h };
};

jQuery.intval = function (v)
{
	v = parseInt(v);
	return isNaN(v) ? 0 : v;
};

jQuery.fn.ScrollTo = function(s) {
	o = jQuery.speed(s);
	return this.each(function(){
		new jQuery.fx.ScrollTo(this, o);
	});
};

jQuery.fx.ScrollTo = function (e, o)
{
	var z = this;
	z.o = o;
	z.e = e;
	z.p = jQuery.getPos(e);
	z.s = jQuery.getScroll();
	z.clear = function(){clearInterval(z.timer);z.timer=null};
	z.t=(new Date).getTime();
	z.step = function(){
		var t = (new Date).getTime();
		var p = (t - z.t) / z.o.duration;
		if (t >= z.o.duration+z.t) {
			z.clear();
			setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);
		} else {
			st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;
			sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;
			z.scroll(st, sl);
		}
	};
	z.scroll = function (t, l){window.scrollTo(l, t)};
	z.timer=setInterval(function(){z.step();},13);
};