Te explico lo que está sucediendo. 
 
Primero, tu elemento no tiene 
explícito el estilo 
display:block. De forma que esto:   
Código Javascript
:
Ver original- var state = document.getElementById(fixme).style.display; 
No devolverá block la primera vez. La segunda si, porque en tu condición se lo asignás en caso de no tenerlo!   
Código Javascript
:
Ver original- if (state == 'block') { 
-   document.getElementById(fixme).style.display = 'none'; 
- } else { 
-   document.getElementById(fixme).style.display = 'block'; 
- } 
¿Se entiende? 
Podés solucionar eso poniendo el 
display:block explícito en e tu elemento:   
Código HTML:
Ver original- <div style="height: 120px; width: 100%; display:block;" id="fixme">- .... </div>
 
Respecto a lo segundo (Que la página se va para arriba) es más que normal. Es porque estás usando un anchor (<a>) y se está comportando como debe. Para solucionarlo, asegurate de hacer 
return false; si no querés que haga su acción por defecto. Así:   
Código HTML:
Ver original- <a href="#" onclick="hide('fixme'); return false;">- .. </a>
 
Espero esté claro. Un saludo.