No puedo seguir, pero esto sería un comienzo. Pone los guiones en las posiciones que deben. Luego sigo.
Código PHP:
<html>
<head>
<title>Untitled</title>
<script>
guiones=new Array(2,5,7);
function mirar(este){
esto=este.value;
caracteres=esto.length;
principio=esto.substring(0,esto.length-1);
ultimo=esto.substring(esto.length-1,esto.length)
for(a=0;a<guiones.length;a++){
if(caracteres==guiones[a] && ultimo!="-"){ultimo="-"+ultimo;}
}
este.value=principio+ultimo;
}
</script>
</head>
<body>
<form>
<input onkeyup="return mirar(this)">
</form>
</body>
</html>