Följande fungerar. Jag la width: 100%; för lager2, och ändrade skriptet så det ändrar egenskapen display istället för visibility.
<html>
<head>
<script type="text/javascript">
function showhide(layer) {
if(layer.style.display=='none'){
layer.style.display='';
} else {
layer.style.display='none';
}
}
</script>
</head>
<body>
<div id="lager1" style="float:left; left:0px; width:180px; background-color: #c4c4c4;">div1</div>
<div id="lager2" style="position:relative; width: 100%; background-color: #eeeeee;">div2</div>
<br>
<br>
<input type="button" value="Visa/göm" onClick="showhide(document.getElementById('lager1'));">
</body>
</html>
