// zmienne globalne
var przewWlaczone = false;
var interwalPrzew;
var paskiPrzew = new Array();

// odczyt rzeczywistych wartości własności stylu
function stylElementu(IdElem, WlasnoscStyluIE, WlasnoscStyluCSS) {
    var elem = document.getElementById(IdElem);
    if (elem.currentStyle) {
        return elem.currentStyle[WlasnoscStyluIE];
    } else if (window.getComputedStyle) {
        var styl = window.getComputedStyle(elem, "");
        return styl.getPropertyValue(WlasnoscStyluCSS);
    }
    return "";
}

// konstruktor obiektu
function pasekPrzew(idWlasc, idWlascTresci, idWGore, idWDol) {
    this.idWlasc = idWlasc;
    this.idWlascTresci = idWlascTresci;
    this.indeks = paskiPrzew.length;
    this.przycWGore = document.getElementById(idWGore);
    this.przycWDol = document.getElementById(idWDol);
    this.przycWGore.indeks = this.indeks;
    this.przycWDol.indeks = this.indeks;
    
    this.wysWlasc = parseInt(stylElementu(this.idWlasc, "height", "height"));

    this.elemTresci = document.getElementById(idWlascTresci);
    this.rozmCzcionkiTresci = parseInt(stylElementu(this.idWlascTresci, 
        "fontSize", "font-size"));
//    this.wysPrzewTresci = (this.elemTresci.scrollHeight) ? 
//        this.elemTresci.scrollHeight : this.elemTresci.offsetHeight;
    this.inicjujPrzewijanie = inicjujPrzewijanie;
}

// przypisanie przyciskom przewijania funkcji obsługi zdarzeń
function inicjujPrzewijanie() {
    this.przycWGore.onmousedown = kliknieciePrzew;
    this.przycWGore.onmouseup = zatrzymaniePrzew;
    this.przycWGore.oncontextmenu = blokadaZdarzenia;

    this.przycWDol.onmousedown = kliknieciePrzew;
    this.przycWDol.onmouseup = zatrzymaniePrzew;
    this.przycWDol.oncontextmenu = blokadaZdarzenia;
    
    var isIEMac = (navigator.appName.indexOf("Explorer") != -1 && navigator.userAgent.indexOf("Mac") != -1);
    if (!isIEMac) {
        document.getElementById("wewElem0").style.overflow = "hidden";
    }
}

/*************************
  funkcje obsługi zdarzeń
**************************/
// wyłączenie przewijania
function zatrzymaniePrzew() {
    przewWlaczone = false;
}

//  niedopuszczenie do wyświetlenia menu kontekstowego w systemach Macintosh 
// (przy przytrzymaniu przycisku myszy)
function blokadaZdarzenia(zdarzenie) {
    zdarzenie = (zdarzenie) ? zdarzenie: event;
    zdarzenie.cancelBubble = true;
    return false;
}

// rozpoczęcie przewijania treści w kierunku zależnym od
// klikniętego przycisku (w górę lub w dół)
function kliknieciePrzew(zdarzenie) {
    var rozmCzcionki;
    zdarzenie = (zdarzenie) ? zdarzenie: event;
    var cel = (zdarzenie.target) ? zdarzenie.target : zdarzenie.srcElement;
    var indeks = cel.indeks;
    rozmCzcionki = paskiPrzew[indeks].rozmCzcionkiTresci;
    rozmCzcionki = (cel.className == "liniaWGore") ? rozmCzcionki : -rozmCzcionki;
	if (cel.className == "liniaWGore") {znacz = true;} else {znacz = false;}
    przewWlaczone = true;
    // przewijanie dla pojedynczego klinięcia
    przewinO(indeks, parseInt(rozmCzcionki));
    // uruchomienie przewijania przy przytrzymaniu przycisku myszy
    interwalPrzew = setInterval("przewinO(" + indeks + ", " + 
        parseInt(rozmCzcionki) + ")", 100);
    zdarzenie.cancelBubble = true;
    return false;
}

// przewinięcie treści jednorazowo lub cyklicznie (za pomocą funkcji setInterval())
function przewinO(indeks, px) {
    var pasek = paskiPrzew[indeks];
    var elem = document.getElementById(pasek.idWlascTresci);
    var gora = parseInt(elem.style.top);
	var wysPier = (elem.scrollHeight) ? elem.scrollHeight : elem.offsetHeight;
    var wysPrzew = parseInt(wysPier+10); // dodano 10 by podwyrzszyć dolny prug
    var wys = pasek.wysWlasc;
    if (przewWlaczone && gora + px >= -wysPrzew + wys && gora + px <= 0) { przesun(elem, 0, px); }
	else { 
		if (znacz && przewWlaczone && gora + px < -wysPrzew + wys && gora + px) { przesun(elem, 0, 3); } 
		  else {clearInterval(interwalPrzew); } 
		 }
}
