/**
 * Przypisuje zdarzenia do przewijania
 * 
 * @param step int krok w pixelach
 * @param timeStep int krok w milisekundach
 * @param margin int odległość w pixelach pozostawiana od góryu i dołu kontenera przy scrollowaniu
 * @param wrapper string kontener zawierający content i scroller (np. 'div', '#wrapper' - składnia z jQuery)
 * @param content string element zawierający treść do przewiajania
 * @param up string element 'strzałka w góre'
 * @param down string element 'strzałka w dół'
 * @param controlsWrapper string kontener zawierający kontrolki (strzałki)
 * @param elemHiding boolean określa czy kontrolki mają być ukrywane
 */
function initScroller(step, timeStep, margin, wrapper, content, up, down, controlsWrapper, elemHiding) {
    var intervalId;
	if(!$(content).length)	return;
    var currentTop= parseInt($(content).css('top').replace('px', ''));
    var currentBottom= parseInt($(content).css('bottom').replace('px', ''));
    var contentHeight= parseInt($(content).css('height').replace('px', ''));
    var wrapperHeight= parseInt($(wrapper).css('height').replace('px', ''));
    
    if (elemHiding && currentTop == 0 && contentHeight < wrapperHeight) $(controlsWrapper).hide();
    else if (elemHiding) {
        if (currentTop == 0  ) $(up).hide();
        if (contentHeight < wrapperHeight) $(down).hide();
    }

    $(down).hover(function() {
        $(up).show();
        intervalId= setInterval(function() {
            currentTop= parseInt($(content).css('top').replace('px', ''));
            currentBottom= parseInt($(content).css('bottom').replace('px', ''));
            if (currentBottom == wrapperHeight - margin) {
                clearInterval(intervalId);
                if(elemHiding) $(down).hide();
            } else {
                var newTop= currentTop - step;
                var newTopString= newTop + 'px';
                $(content).css('top', newTopString);
            }
        }, timeStep);
    }, function() {
        clearInterval(intervalId);
    });

    $(up).hover(function() {
        $(down).show();
        intervalId= setInterval(function() {
            currentTop= parseInt($(content).css('top').replace('px', ''));
            if (currentTop == margin) {
                clearInterval(intervalId);
                if(elemHiding) $(up).hide();
            } else {
                var newTop= currentTop + step;
                var newTopString= newTop + 'px';
                $(content).css('top', newTopString);
            }
        }, timeStep);
    }, function() {
        clearInterval(intervalId);
    });
}

function initMultipleScrollersById(ids, step, timeStep, margin, content, up, down, controlsWrapper, elemHiding) {
    for(i in ids) {
        var newContent= ids[i] + " " + content;
        var newUp= ids[i] + " " + up;
        var newDown= ids[i] + " " + down;
        var newControlsWrapper= ids[i] + " " + controlsWrapper;
        initScroller(step, timeStep, margin, ids[i], newContent, newUp, newDown, newControlsWrapper, elemHiding);
    }
}


