// Slajdy
// aktywacja i animacja przesuwania wymagaja biblioteki jQuery
var Slider = function()
{
	this.aktualnySlajd = 1;
	this.liczbaElementowSlajd = 2;
	this.liczbaElementowRzad = 2;
	this.odstep = 10;
	
	var self = this;
	jQuery(window).load(function()
	{
		self.Start();
	});
	
	this.Start = function()
    {
		if(this.kontener)
		{
			this.kontener = document.getElementById(this.kontener);
			this.kontener.className = 'slajdyKontener';
			
			this.slajdy = this.kontener.getElementsByTagName('ul')[0];
			
			this.sterowanie = document.getElementById(this.sterowanie);
			this.sterowanie.className = 'sterowanie';
			
			//zatrzymywanie
			var self = this;
			if(this.kontener.addEventListener) {
				this.kontener.addEventListener('mouseover', function(){ clearTimeout(self.timerSlider); }, false);
			} else if (this.kontener.attachEvent) {
				this.kontener.attachEvent('onmouseover', function(){ clearTimeout(self.timerSlider); }, false);
			}
			if(this.kontener.addEventListener) {
				this.kontener.addEventListener('mouseout', function(){ self.timerSlider = setTimeout(function(){self.przewijanieSlider();},2000); }, false);
			} else if (this.kontener.attachEvent) {
				this.kontener.attachEvent('onmouseout', function(){ self.timerSlider = setTimeout(function(){self.przewijanieSlider();},2000); }, false);
			}
		}
		
		if(this.slajdy)
		{
			this.slajdy.className = 'slajdy';
			//szerokosc jednego elementu
			this.szerokoscElementu = Math.floor((this.kontener.offsetWidth-(this.liczbaElementowRzad-1)*this.odstep)/this.liczbaElementowRzad);
			var element = this.slajdy.getElementsByTagName('li');
			for (i = 0; i < element.length; i++)
			{
    			element[i].style.width = this.szerokoscElementu+'px';
				element[i].style.marginRight = this.odstep+'px';
			}
			this.liczbaElementow = element.length;
			this.liczbaSlajdow = Math.ceil(i/this.liczbaElementowSlajd);
			this.liczbaSlajdow -= Math.floor(this.liczbaElementowRzad/this.liczbaElementowSlajd) - 1; //nie przewijaj gdy ostatni slajd jest przy prawej krawedzi
			
			this.slajdy.style.width = (this.liczbaElementow*(this.szerokoscElementu+this.odstep))+'px'; // szerokosc wszystkich elementow / kontener przesuwany
			this.kontener.style.width = (this.liczbaElementowRzad*this.szerokoscElementu+(this.liczbaElementowRzad-1)*this.odstep)+'px'; // szerokosc kontenera
			this.kontener.style.height = this.slajdy.offsetHeight+'px'; // wysokosc kontenera
			
			this.przewijanieSlider();
		}
	}
	
	this.przewijanieSlider = function()
	{
		if (this.aktualnySlajd > this.liczbaSlajdow || this.aktualnySlajd == undefined)
			this.aktualnySlajd = 1;
		
		if (this.aktualnySlajd < 1)
			this.aktualnySlajd = this.liczbaSlajdow;
		
		this.ustawSlider();
		this.aktualnySlajd++;
	}
	
	this.ustawSlider = function()
	{
		clearTimeout(this.timerSlider);
		
		//sterowanie
		this.utworzSterowanie();
				
		// animacja przesuwania (jQuery)
		jQuery(this.slajdy).animate({left: -((this.aktualnySlajd-1)*(this.szerokoscElementu+this.odstep)*this.liczbaElementowSlajd)}, {queue: false, duration: 700, easing: 'swing' });
		
		//petla animacji
		var self = this;
		this.timerSlider = setTimeout(function(){self.przewijanieSlider();},5000);
	}
	
	this.utworzSterowanie = function()
	{
		var self = this;
		this.sterowanie.innerHTML = '';
		
		//poprzedni
		var liTag = document.createElement("li");
		liTag.innerHTML = '«';
		liTag.className = "poprzedni";
		liTag.myId = this.aktualnySlajd-1;
		if (liTag.addEventListener) {
			liTag.addEventListener('click', function(){ self.aktualnySlajd = this.myId; self.przewijanieSlider(); }, false); 
		} else if (liTag.attachEvent) {
			liTag.attachEvent('onclick', function(x){self.ieKlik.call(x,self)});
		}
		this.sterowanie.appendChild(liTag);
		
		for (i = 1; i <= this.liczbaSlajdow; i++)
		{
			var liTag = document.createElement("li");
			liTag.innerHTML = i;
			liTag.myId = i;
			
			if(i == this.aktualnySlajd)
			{
				liTag.className = "aktualny";
			} else {
				if (liTag.addEventListener) {
					liTag.addEventListener('click', function(){ self.aktualnySlajd = this.myId; self.przewijanieSlider(); }, false); 
				} else if (liTag.attachEvent) {
					liTag.attachEvent('onclick', function(y){self.ieKlik.call(y,self)});
				}
			}
			
			this.sterowanie.appendChild(liTag);
		}
		
		//nastepny
		var liTag = document.createElement("li");
		liTag.innerHTML = '»';
		liTag.className = "nastepny";
		liTag.myId = this.aktualnySlajd+1;
		if (liTag.addEventListener) {
			liTag.addEventListener('click', function(){ self.aktualnySlajd = this.myId; self.przewijanieSlider(); }, false); 
		} else if (liTag.attachEvent) {
			liTag.attachEvent('onclick', function(z){self.ieKlik.call(z,self)});
		}
		this.sterowanie.appendChild(liTag);
	}
	
	this.ieKlik = function(self)
	{
		self.aktualnySlajd = this.srcElement.myId;
		self.przewijanieSlider();
	}
}

