var Aktual = "30 Czerwca 2004";		//Data ostatniej aktualizacji.
var MenuID = 0;				//ID bierzącego artykułu.
var PageWidth = 590;			//Szerokość tabelki ze stroną i menu.
mail1 = "sasq";				//Składniki..
mail2 = "poprostu.net";			//..adresu email.

var WTN = new Array();			//Tablica indeksów dla "Powinieneś znać".

//==========================================================================================
// Składa adres e-mailowy i wpisuje do kodu strony [ochrona przed spamem]
//------------------------------------------------------------------------------------------
function PasteMail(alias,subject,body,type)
{
 if (type=="link") document.write("<A HREF=\"mailto:");
 if (type=="form") document.write("<FORM ACTION=\"mailto");
 document.write(mail1 + "@" + mail2);
 if (subject!="") document.write("?subject=" + subject);
 if (body!="") document.write("&body=" + body);
 if (type=="link") document.write("\">" + alias + "</A>");
 if (type=="form") document.write("\" METHOD=Post>");
}
//==========================================================================================
// To jest tablica linków. Znajdują się tu wszystkie artykuły strony.
// Format:	ID|AdresPlikuHTML|PrzyjaznaNazwa
// Format ID:	Dział Kurs Artykuł Artykuł
//------------------------------------------------------------------------------------------
var Linki  = new Array();
function AddLink(item)  { Linki[Linki.length] = item; }
AddLink("1000|../index|Witryna");
 AddLink("1100|../Witryna/Newsy|Nowo&#347;ci na stronie");
 AddLink("1200|../Witryna/Linki|Linki do stron");
 AddLink("1300|../Witryna/Pliki|Pliki do &#347;ci&#261;gnięcia");
 AddLink("1400|../Witryna/Omnie|Troch&#281; o mnie");
 AddLink("1500|../Witryna/Ank|Ankietka");
  AddLink("1501|../Witryna/AnkWyn|Aktualne wyniki");
 AddLink("1600|../Witryna/FAQ|FAQ");
 AddLink("1700|../Witryna/Ksiazki|Ksi&#261;&#380;ki");
AddLink("2000|../Podstawy/index|Podstawy");
 AddLink("2100|../Podstawy/CPPindex|Kurs C++ podstawy");
  AddLink("2101|CPPKompil|Kompilator");
  AddLink("2102|CPPBudProg|Budowa programu");
  AddLink("2103|CPPZmTyp|Zmienne i ich typy");
  AddLink("2104|CPPOperat|Operatory");
  AddLink("2105|CPPInstrWar|Instrukcje warunkowe");
  AddLink("2106|CPPPetle|P&#281;tle");
  AddLink("2107|CPPTabWskaz|Tablice i wska&#378;niki");
  AddLink("2108|CPPDynRAM|Dynamiczna pami&#281;&#263;");
  AddLink("2109|CPPReferen|Referencje");
  AddLink("2110|CPPFunkcje|Funkcje");
  AddLink("2112|CPPEnum|Typ wyliczeniowy");
  AddLink("2113|CPPStrukt|Struktury");
  AddLink("2121|CPPstdlib|Plik stdlib.h");
 AddLink("2400|../Podstawy/OBJindex|Kurs C++ obiektowo");
  AddLink("2401|OBJKlasy|Klasy i obiekty");
  AddLink("2402|OBJKonstr|Konstruktory");
 AddLink("2200|../Podstawy/WINindex|Kurs Win32 API");
  AddLink("2201|WINSystem|System i aplikacje");
  AddLink("2202|WINBudApl|Budowa aplikacji");
  AddLink("2203|WINOkno|Okno aplikacji");
  AddLink("2204|WINStyle|Style okien");
  AddLink("2205|WINProcOkna|Komunikaty");
  AddLink("2206|WINZasoby|Zasoby programu");
  AddLink("2207|WINRysujemy|Rysujemy");
  AddLink("2210|WINEdit|Okna tekstowe");
 AddLink("2300|../Podstawy/MFindex|Matma i Fizyka");
  AddLink("2301|MFWektory|Wektory");
  AddLink("2302|MFRuch1|Ruch w grze");
  AddLink("2305|MFMatrix|Macierze");
AddLink("3000|../Grafika/index|Grafika");
 AddLink("3500|../Grafika/PGindex|Podstawy grafiki");
  AddLink("3501|PGKarta2D|Jak dzia&#322;a grafkarta?");
  AddLink("3502|PGPixele|Formaty pikseli");
  AddLink("3503|PGBlitting|Blitting");
  AddLink("3504|PG2xBuff|Podw&#243;jne buforowanie");
 AddLink("3100|../Grafika/D2Dindex|Kurs DirectDraw");
  AddLink("3101|D2DSurface|Ekran i powierzchnie");
  AddLink("3102|D2DBitmapy|Wczytanie bitmapy");
  AddLink("3103|D2DBlitting|Blitting grafiki");
  AddLink("3104|D2D2xBuff|Dwa bufory");
  AddLink("3105|D2DAnimacja|Techniki animacji");
  AddLink("3106|D2DPrzesuw|Przesuw i kafle");
 AddLink("3200|../Grafika/D3Dindex|Kurs Direct3D");
  AddLink("3201|D3DRenderer|Rendering");
  AddLink("3202|D3DVertexy|Wierzcho&#322;ki");
 AddLink("3300|../Grafika/MAPindex|Mapy z kafli");
  AddLink("3302|MAPOrt|Mapa Prostok&#261;tna");
 AddLink("3400|../Grafika/FMTindex|Formaty plik&#243;w");
AddLink("4000|../Muzyka/index|Muzyka");
 AddLink("4100|../Muzyka/DSindex|Kurs DirectSound");
 AddLink("4200|../Muzyka/FMTindex|Formaty plik&#243;w");
AddLink("5000|../Silnik/index|Silnik");
 AddLink("5100|../Silnik/KPindex|Klasy pomocnicze");
  AddLink("5101|KP_NAPIS|Klasa NAPIS");
  AddLink("5102|KP_PLIKINI|Klasa PLIKINI");
  AddLink("5103|KP_KOLOR|Klasa KOLOR");
 AddLink("5200|../Silnik/O2Dindex|Silnik 2D");
  AddLink("5201|O2DZaloz|Za&#322;o&#380;enia");
  AddLink("5202|O2DBazaGr1|Baza graficzna");
  AddLink("5204|O2D_OBIEKTDD|Klasa OBIEKTDD");
  AddLink("5205|O2D_EKRAN|Klasa EKRAN");
  AddLink("5206|O2D_BITMAPA|Klasa BITMAPA");
AddLink("6000|../Gra/index|Piszemy gr&#281;");
 AddLink("6100|../Gra/STindex|Zaczynamy");
  AddLink("6101|STSwiatGry|Projekt &#347;wiata gry");
//==========================================================================================
// FindRecordByID	Zwraca cały rekord tablicy, który ma podane ID lub pusty, gdy brak.
// FindRecordIndexByID	Zwraca indeks rekordu, który ma podane ID lub -1, gdy brak.
// FindLink		Wyłuskuje adres pliku HTML z podanego rekordu.
// FindLinkInfo		Wyłuskuje opis linka z podanego rekordu.
//------------------------------------------------------------------------------------------
function FindRecordByID(id)
{
 for (i=0; i<Linki.length; i++) if (id == Linki[i].slice(0,4)) return Linki[i];
 return "";
}
//------------------------------------------------------------------------------------------
function FindRecordIndexByID(id)
{
 for (f=0; f<Linki.length; f++) if (id == Linki[f].slice(0,4)) return f;
 return -1;
}
//------------------------------------------------------------------------------------------
function FindLink(record)
{
 return record.slice(5, record.indexOf("|",5) ) + ".html";
}
//------------------------------------------------------------------------------------------
function FindLinkInfo(record)
{
 return record.slice( record.indexOf("|",6) + 1, record.length);
}
//==========================================================================================
// Buduje ścieżkę bierzącego dokumentu i wkleja pasek adresu.
//------------------------------------------------------------------------------------------
function DrawAddrBar()
{
 //Znajdź link poziomu 0
 wpis = FindRecordByID( MenuID.slice(0,1) + "000" );
 if (wpis=="") { document.write(" &gt;"); return; }
 document.write(" <A CLASS=Addr HREF=\"" + FindLink(wpis));
 document.write("\">" + FindLinkInfo(wpis) + "</A>");
 if (MenuID.slice(1,4) == "000") { document.write(" &gt;"); return; }

 //Znajdź link poziomu 1
 wpis = FindRecordByID( MenuID.slice(0,2) + "00" );
 if (wpis=="") { document.write(" &gt;"); return; }
 document.write(" / <A CLASS=Addr HREF=\"" + FindLink(wpis));
 document.write("\">" + FindLinkInfo(wpis) + "</A>");
 if (MenuID.slice(2,4) == "00") { document.write(" &gt;"); return; }

 //Znajdź link poziomu 2
 wpis = FindRecordByID( MenuID.slice(0,4) );
 if (wpis=="") { document.write(" &gt;"); return; }
 document.write(" / <A CLASS=Addr HREF=\"" + FindLink(wpis));
 document.write("\">" + FindLinkInfo(wpis) + "</A> &gt;");
}
//==========================================================================================
// Funkcje wyszukujące dla paska nawigacyjnego.
// WhatLevel(ind)	Zwraca poziom podanego rekordu.
// FindPrev		Zwraca indeks poprzedniego elementu tego samego poziomu, lub -1.
// FindNext		Zwraca indeks następnego elementu tego samego poziomu, lub -1.
// FindContents		Zwraca indeks elementu spisu treści dla poziomu, lub -1.
//------------------------------------------------------------------------------------------
function WhatLevel(record)
{
 if (record.slice(1,4)=="000") return 1;	//Poziom działu.
 else if (record.slice(2,4)=="00") return 2;	//Poziom kursu.
 else return 3;					//Poziom lekcji.
}
//------------------------------------------------------------------------------------------
function FindPrev()
{
 ind = FindRecordIndexByID(MenuID);
 switch (WhatLevel(FindRecordByID(MenuID))) {
  case 1:
    while (ind!=0)  { rec1=Linki[--ind];  if (WhatLevel(rec1)==1) return rec1; }
    return "";  break;
  case 2:
   while (ind!=0)   { rec1=Linki[--ind];
     if (WhatLevel(rec1)==2) return rec1; if (WhatLevel(rec1)==1) return ""; };  break;
  case 3:
   rec1=Linki[ind-1];  if (WhatLevel(rec1)!=2) return rec1;
   else return "";  break;
 }
}
//------------------------------------------------------------------------------------------
function FindNext()
{
 ind = FindRecordIndexByID(MenuID);
 switch (WhatLevel(FindRecordByID(MenuID))) {
  case 1:
    while (++ind<Linki.length)  { rec2=Linki[ind];  if (WhatLevel(rec2)==1) return rec2; }
    return "";  break;
  case 2:
   while (++ind<Linki.length)   { rec2=Linki[ind];
     if (WhatLevel(rec2)==2) return rec2; if (WhatLevel(rec2)==1) return ""; };
     return "";  break;
  case 3:
   if (ind<Linki.length-1) {
     rec2=Linki[ind+1];  if (WhatLevel(rec2)==3) return rec2;  else return "";
   } else return "";  break;
 }
}
//------------------------------------------------------------------------------------------
function FindContents()
{
 ind = FindRecordIndexByID(MenuID);
 switch (WhatLevel(FindRecordByID(MenuID))) {
  case 1:  return FindRecordByID(1000);  break;
  case 2:
    while (ind!=0)  { rec3=Linki[--ind];  if (WhatLevel(rec3)==1) return rec3; }
    return "";  break;
  case 3:
   while (ind!=0)   { rec3=Linki[--ind];
     if (WhatLevel(rec3)==2) return rec3; if (WhatLevel(rec3)==1) return ""; };
     return "";  break;
 }
}
//==========================================================================================
// Odszukuje linki NavBara [górnego lub dolnego] i wkleja go.
//------------------------------------------------------------------------------------------
function DrawNavBar(ud)
{
 rec1 = FindPrev();  rec2 = FindNext();  rec3=FindContents();
 if (rec1=="") { WsteczL="";  WsteczD=""; }
 else { WsteczL=FindLink(rec1);  WsteczD=FindLinkInfo(rec1)+" &nbsp; "; }
 if (rec2=="") { DalejL=""; DalejD=""; }
 else { DalejL=FindLink(rec2);   DalejD="&nbsp; "+FindLinkInfo(rec2);   }
 IndexL=FindLink(rec3);
 
 //Ustal na wjazd nazwy gifów [góra/dół].
 if (ud=="up") {
   NavBar="../NavBarU.gif";  NavPrev="../NavPrevU.gif";  NavNext="../NavNextU.gif"; }
 else { NavBar="../NavBarD.gif";  NavPrev="../NavPrevD.gif";  NavNext="../NavNextD.gif"; }

 //Wypisz wszystko.
 document.write("<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>");
 document.write(" <TD HEIGHT=19><IMG SRC=\"" + NavPrev + "\" HEIGHT=19></TD>");
 document.write(" <TD BACKGROUND=\"" + NavBar + "\" NOWRAP>");
 document.write("  <A CLASS=Nav HREF=\"" + WsteczL + "\">" + WsteczD + "</A>");
 document.write(" </TD><TD WIDTH=100% ALIGN=Center BACKGROUND=\"" + NavBar + "\">");
 document.write("  <TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD>");
 document.write("   <IMG SRC=\"../NavIndex.gif\"></TD>");
 document.write("   <TD NOWRAP><A CLASS=Nav HREF=\"" + IndexL);
 document.write("\">Spis tre&#347;ci &nbsp; </A>");
 document.write("  </TD></TR></TABLE>");
 document.write(" </TD><TD BACKGROUND=\"" + NavBar + "\" NOWRAP>");
 document.write("  <A CLASS=Nav HREF=\"" + DalejL +  "\">" + DalejD + "</A></TD>");
 document.write(" <TD HEIGHT=19><IMG SRC=\"" + NavNext + "\" HEIGHT=19>");
 document.write("</TD></TR></TABLE>");
}
//==========================================================================================
// Rozpoczyna nagłówek strony.
//------------------------------------------------------------------------------------------
function Header()
{
document.write("<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>");
document.write("<TD BACKGROUND=\"../Tlo.gif\">");
document.write(" <TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>");
document.write(" <TD><IMG SRC=\"../LogoBig.gif\" WIDTH=263 HEIGHT=64></TD>");
document.write(" <TD ALIGN=Center NOWRAP><FONT CLASS=White10>");
document.write("  Stronę testowałem w przeglądarkach: &nbsp; ");
document.write("  <B>MSIE 5.0</B>, &nbsp;<B>Opera 6.04.</B><BR>");
document.write("  Najlepsza rozdzielczość: &nbsp; <B>800x600</B> i wyższe.<BR><BR>");
document.write("  Było już ");
}
//==========================================================================================
// Zakańcza nagłówek strony.
//------------------------------------------------------------------------------------------
function HeaderEnd()
{
document.write("  odwiedzin tej strony.");
document.write(" </FONT></TD></TR></TABLE>");
document.write("</TD></TR><TR>");
document.write("<TD HEIGHT=19 BACKGROUND=\"../AddrBar.gif\"><FONT CLASS=Addr>");
document.write(" &nbsp; &nbsp; :: /");
}
//==========================================================================================
// Rysuje pasek adresu i zapamiętuje pozycję w menu.
//------------------------------------------------------------------------------------------
function DrawMenu(id)
{
MenuID = String(id);
if (FindRecordByID(MenuID)=="") MenuID = "1000";
DrawAddrBar();
document.write("</FONT></TD></TR></TABLE>");
document.write("<TABLE ALIGN=Center CELLSPACING=0 CELLPADDING=0 BORDER=0>");
document.write("<TR><TD VALIGN=Top>");
document.write(" <BR><TABLE WIDTH=" + PageWidth + " CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD>");
DrawNavBar("up");
document.write("</TD></TR><TR><TD>");
document.write(" <TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0>");
}
//==========================================================================================
// Funkcje obsługujące listę "Powinieneś znać".
// WhatToKnow:		Dodaje kolejny ID do listy.
// DrawWhatToKnow:	Wyświetla gotową listę pozycji, które trzeba znać.
//------------------------------------------------------------------------------------------
function WhatToKnow(LinkID)  { WTN[WTN.length] = LinkID; }
//------------------------------------------------------------------------------------------
function DrawWhatToKnow()
{
document.write("<TR><TD WIDTH=25 BACKGROUND=\"../MargKnow.gif\"></TD><TD BGCOLOR=#E0FFF9>");
document.write(" <FONT CLASS=MnHdr2>Powiniene&#347; zna&#263;:</FONT><BR>");
for (j=0; j<WTN.length; j++) {
  rec1 = FindRecordByID( WTN[j] );  if (rec1=="") continue;
  document.write(" <A CLASS=MnHdr3 HREF=\"" + FindLink(rec1));
  document.write("\">&nbsp; &curren; " + FindLinkInfo(rec1) + "</A><BR>");
}
document.write("</TD><TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD></TR>");
document.write("<TR><TD HEIGHT=1 BACKGROUND=\"../MargDiv.gif\"></TD>");
document.write("<TD BACKGROUND=\"../Div.gif\"></TD>");
document.write("<TD BACKGROUND=\"../MargRight.gif\"></TD></TR>");
}
//==========================================================================================
// Rozpoczyna treść strony.
//------------------------------------------------------------------------------------------
function StartPage()
{
 document.write("<TR><TD WIDTH=25 BACKGROUND=\"../MargLeft.gif\"></TD>");
 document.write("<TD BGCOLOR=#E0FFF9><DIV CLASS=Plain>");
}
//==========================================================================================
// Funkcje rozpoczynające i kończące kod programu.
//------------------------------------------------------------------------------------------
function StartCode(dummy)
{
 document.write(" <BR></DIV></TD><TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD></TR>");
 document.write("<TR><TD HEIGHT=1 BACKGROUND=\"../MargDiv.gif\"></TD>");
 document.write(" <TD BACKGROUND=\"../Div.gif\"></TD>");
 document.write(" <TD BACKGROUND=\"../MargRight.gif\"></TD>");
 document.write("</TR><TR><TD WIDTH=20 BACKGROUND=\"../MargCode.gif\"></TD>");
 document.write(" <TD BGCOLOR=#E0FFF3><PRE CLASS=Code>");
}
//------------------------------------------------------------------------------------------
function EndCode()
{
 document.write("</PRE></TD><TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD>");
 document.write("</TR><TR><TD HEIGHT=1 BACKGROUND=\"../MargDiv.gif\"></TD>");
 document.write(" <TD BACKGROUND=\"../Div.gif\"></TD>");
 document.write(" <TD BACKGROUND=\"../MargRight.gif\"></TD>");
 document.write("</TR><TR><TD WIDTH=20 BACKGROUND=\"../MargLeft.gif\"></TD>");
 document.write("<TD BGCOLOR=#E0FFF9><DIV CLASS=Plain><BR>");
}
//------------------------------------------------------------------------------------------
function BuildMenu()
{
document.write("<TABLE WIDTH=150 CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD>");
document.write(" <TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>");
document.write(" <TD HEIGHT=19><IMG SRC=\"../MenuLG.gif\" WIDTH=25 HEIGHT=19></TD>");
document.write(" <TD WIDTH=100% BACKGROUND=\"../NavBarU.gif\" ALIGN=Center NOWRAP>");
document.write("  <FONT CLASS=Nav>Menu</FONT></TD>");
document.write(" <TD HEIGHT=19><IMG SRC=\"../MenuPG.gif\" WIDTH=25 HEIGHT=19></TD>");
document.write(" </TR></TABLE>");
document.write("</TD></TR><TR><TD>");
document.write("<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0>");
document.write("<TR><TD WIDTH=25 BACKGROUND=\"../MargLeft.gif\"></TD><TD BGCOLOR=#E0FFF9>");
for (n=0; n<Linki.length; n++) {
  rec = Linki[n];  LinkL=FindLink(rec);  LinkD=FindLinkInfo(rec);
  if (rec.slice(0,4)==MenuID.slice(0,4)) HL="HL";  else HL="";
  if (rec.slice(1,4)=="000") {
    document.write("</TD><TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD></TR>");
    document.write("<TR><TD WIDTH=25 HEIGHT=1 BACKGROUND=\"../MargDiv.gif\"></TD>");
    document.write("<TD BACKGROUND=\"../Div.gif\"></TD>");
    document.write("<TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD></TR>");
    document.write("<TR><TD WIDTH=25 BACKGROUND=\"../MargSect.gif\"></TD>");
    document.write("<TD BGCOLOR=#FFEADD ALIGN=Center>");
    document.write("<A CLASS=MnHdr1"+HL+" HREF=\"" + LinkL + "\">" + LinkD + "</A>");
    document.write("</TD><TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD></TR>");
    document.write("<TR><TD WIDTH=25 HEIGHT=1 BACKGROUND=\"../MargDiv.gif\"></TD>");
    document.write("<TD BACKGROUND=\"../Div.gif\"></TD>");
    document.write("<TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD></TR>");
    document.write("<TR><TD WIDTH=25 BACKGROUND=\"../MargLeft.gif\"></TD>");
    document.write("<TD BGCOLOR=#E0FFF9>");
  } else if (rec.slice(2,4)=="00") {
    document.write("<A CLASS=MnHdr2"+HL+" HREF=\"" + LinkL + "\">" + LinkD + "</A><BR>");
  } else if (rec.slice(0,2)==MenuID.slice(0,2)) {
    document.write("<A CLASS=MnHdr3"+HL+" HREF=\"" + LinkL + "\">");
    document.write("&curren; " + LinkD + "</A><BR>");
  }
}
document.write("</TD><TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD></TR>");
document.write("</TABLE></TD></TR><TR><TD>");
document.write(" <TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>");
document.write(" <TD HEIGHT=11><IMG SRC=\"../MenuLD.gif\" WIDTH=25 HEIGHT=11></TD>");
document.write(" <TD WIDTH=100% ALIGN=Center BACKGROUND=\"../MenuD.gif\"></TD>");
document.write(" <TD HEIGHT=11><IMG SRC=\"../MenuPD.gif\" WIDTH=25 HEIGHT=11></TD>");
document.write(" </TR></TABLE>");
document.write("</TD></TR></TABLE><BR>");
}
//------------------------------------------------------------------------------------------
function EndPage()
{
 document.write("</DIV></TD>");
 document.write("<TD WIDTH=4 BACKGROUND=\"../MargRight.gif\"></TD></TR></TABLE>");
 document.write("</TD></TR><TR><TD>");
 DrawNavBar("down");
 document.write("</TD></TR><TR><TD><FONT CLASS=Black10>");
 document.write("&nbsp; &copy; SasQ. Wszelkie prawa zastrze&#380;one.</FONT></TD>");
 document.write("</TR></TABLE><BR>");

 //Koniec tabeli dokumentu i początek menu.
 document.write("</TD><TD WIDTH=25 NOWRAP>&nbsp; &nbsp;</TD><TD VALIGN=Top>");
 document.write("<CENTER><FONT CLASS=Black10>Aktualizowano:<BR><B>" + Aktual + "</B>");
 document.write("</FONT></CENTER>");
 BuildMenu();
 document.write("</TD></TR></TABLE>");
}