Javascript: ejecuta múltiples ventanas diferentes.

Estoy enfrentando un pequeño problema aquí. Tengo conocimientos básicos sobre Javascript y quiero hacer lo siguiente:

En este momento, cuando te desplazas hacia abajo, el menú se hará más pequeño. cuando vuelvas a subir, volverá a la normalidad. Llamo a este evento con window.onscroll:

var diff = 0;
function effects(){
var topDistance = (document.documentElement &&     document.documentElement.scrollTop) ||  document.body.scrollTop;
var clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var clientHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

if(topDistance > diff){ 
    diff = topDistance;
    if(clientWidth > 1024){
        if(topDistance > 300){
            document.getElementById("header").style.marginTop= "-100px";
        }
    }
}else if(topDistance < diff){
    diff = topDistance;
    if(clientWidth > 1024){
        if(topDistance > 300){
            document.getElementById("header").style.marginTop= "0";
        }
    }
}
}

window.onscroll = effects();

Ahora quiero que otra función tenga algunos efectos en mis botones de llamada a la acción, llamemos a la función "prueba", pero si quiero hacer esto de la misma manera que antes, las funciones de efectos ya no funcionan:

function test(){
//do something
}
window.onscroll = test();

Cualquier ayuda es bienvenida! Creo que no será un gran desafío hacer esto, pero supongo que lo estoy haciendo mal. (PD: NO JQUERY POR FAVOR)

Respuestas a la pregunta(2)

Su respuesta a la pregunta