// Oto przykładowe użycie obiektu:
//  var oWizard = new Wizard( 'divForm', 4 );
//  oWizard.Show( 1 );
// Numery stron i warstw poszczególnych stron są numerowane od zera. np:
//  id="nazwaWarstwyX" , gdzie X jest numerem warstwy 
// Konstruktor
// sDivsName - prefiks; iDivsNum - liczba stron

function Wizard(sDivsName, iDivsNum)
{
	var iDivsNum = iDivsNum; // ilość stron
	var iCurrDiv = -1; // aktualna strona
	var sDivsName = sDivsName; // prefiks nazwy wszystkich warstw wizarda
	var oPrev = document.getElementById( sDivsName + "Prev" ); // zapamiętanie referencji do obiektów...
	var oNext = document.getElementById( sDivsName + "Next" ); // ...przycisków PREV/NEXT
	var aoDivs = new Array(iDivsNum); // tablica z obiektami warstw stron
	var aoDivsLink = new Array(iDivsNum); // tablica z obiektami linków do stron
	var bDivsLink = false; // czy obsługujemy linki do stron
	var sStyleShown = ""; // styl linku już obejrzanego
	var sStyleAct = ""; // styl linku aktualnie oglądanego
	
	// zapamiętanie referencji do obiektów warstw stron
	for (i = 0; i < iDivsNum; i++)
	{
		aoDivs[i] = document.getElementById( sDivsName + i );
	}

	this.HideAll = function()
	{
		for( i = 0; i < iDivsNum; i++ )
		{
			aoDivs[i].style.visibility = "hidden";
			aoDivs[i].style.display = "none";
			aoDivs[i].style.zIndex = -1;
		}
	}

	this.Show = function (iDivNum)
	{
		this.HideAll();
		var iOldDiv = iCurrDiv;
		iCurrDiv = iDivNum;
		aoDivs[iCurrDiv].style.visibility = "visible";
		aoDivs[iCurrDiv].style.display = "block";
		aoDivs[iCurrDiv].style.zIndex = 0;
		// opcjonalna obsługa pokazywania warstw z przyciskami prev/next
		if( oPrev != null )
		{
			if (this.PageExist(this.CurrentPage() - 1))
			{
				oPrev.style.visibility = "visible";
			}
			else
				oPrev.style.visibility = "hidden";
		}
		if( oNext != null )
		{
			if (this.PageExist(this.CurrentPage() + 1))
				oNext.style.visibility = "visible";
			else
				oNext.style.visibility = "hidden";
		}
		// opcjonalna obsluga linkow do poszczegolnych stron
		if( bDivsLink )
		{
			if (iOldDiv != -1)
				aoDivsLink[iOldDiv].className = sStyleShown;
			aoDivsLink[iCurrDiv].className = sStyleAct;
		}
	}
	
	this.NextPage = function ()
	{
		if (this.PageExist(this.CurrentPage() + 1))
			this.Show(this.CurrentPage() + 1);
	}

	this.PrevPage = function ()
	{
		if (this.PageExist(this.CurrentPage() - 1))
			this.Show(this.CurrentPage() - 1);
	}

	this.PageExist = function ( iDivNum )
	{
		if ((iDivNum < 0) || (iDivNum >= iDivsNum))
			return false;
		return true;
	}

	this.CurrentPage = function ()
	{
		return iCurrDiv;
	}

	// Opis: Inicjalizuje i włącza obsługę linków do stron.
	// Parametry:
	//   sStyleShown - styl nadawany linkowi kiedy strona była już oglądana
	//   sStyleAct - styl linka do aktualnie oglądanej strony	
	this.EnableLinks = function ( _sStyleShown, _sStyleAct )
	{
		// utworzenie obiektów poszczególnych linków
		for( i = 0; i < iDivsNum; i++ )
		{
			aoDivsLink[i] = document.getElementById( sDivsName + "Link" + i );
		}
		// ustawienie nazw styli
		sStyleShown = _sStyleShown;
		sStyleAct = _sStyleAct;
		// włączenie obsługi linków do stron
		bDivsLink = true;
	}
}