no te lo guarda porque lo estas declarando en la función, declararlo fuera para que tenga un ámbito global

:
Código Javascript
:
Ver original<html>
<head>
<script type="text/javascript">
<!--
//variables globales:
var oldprod;
var oldname;
function cambiarValores(obj,prod) {
var img = obj.src;
img = img.split('/').pop();
img = img == 'boton-bebidas-' + obj.name + '-off.png' ? 'images/boton-bebidas-' + obj.name + '-on.png' : 'images/boton-bebidas-' + obj.name + '-off.png';
obj.src = img;
if(oldprod == prod) {
var oldimg = document.getElementsByName(oldname)[0];
oldimg.src = 'images/boton-bebidas-' + oldname + '-off.png';
}
//alert(oldprod);
//alert(prod);
oldprod = prod;
oldname = obj.name;
}
//-->
</script>
</head>
<body>
<img src="images/boton-bebidas-1-off.png" name="1" alt="1" onclick="cambiarValores(this,'Coca-Cola')" />
<input type="hidden" name="coca-cola-1" value="bebida" />
<img src="images/boton-bebidas-2-off.png" name="2" alt="2" onclick="cambiarValores(this,'Coca-Cola')" />
<input type="hidden" name="coca-cola-2" value="bebida" />
</body>
</html>