Buenas,
según el último código que has puesto, la función alternar_banner() se llama a sí misma cada cierto tiempo infinitas veces, pero no llegará a ejecutarse nunca porque no la llamas desde ningún sitio. Para hacer lo que quieres tendrias que llamarla desde siguiente y sólo incrementar el contador ahí. Tendrías que tener también en cuenta qué debería hacer la función anterior, cuando contador sea menor que cero. Seria algo así:
Código Javascript
:
Ver original//función para rotar el banner
function alternar_banner()
{
// en esta función sólo ponemos el cambio de baner y así se puede usar
// desde anterior y desde siguiente
window.document["banner"].src = array_imagen[contador].src;
window.document['banner'].parentNode.href = array_url[contador];
// contador ++ <--------- esto no deberia ir aqui
// contador = contador % array_imagen.length <-------- esto tampoco
// setTimeout("alternar_banner()",7000) <----------- ni esto
}
function siguiente
{
contador++;
// si cuando acabes quieres que vuelva a empezar incluye esta linea
contador = contador % array_imagen.length ;
// también se podría hacer que si es el último o el primero no haga nada
if ( contador == array_imagen.length)
{
contador--;
return;
}
setTimeout("alternar_banner()",7000) ;
//no es obligatorio pero si recomendable poner el punto y coma al final
// de cada instruccion
}
</script>
y así ya podrías llamar a la función como habías puesto.
Sería conveniente también controlar la propagación de eventos por si se lanza un nuevo evento antes de que finalice el que se esta ejecutando. Para eso tendrías que hacer una función que se encargara de esto y que sería la que llamaría a siguiente y a anterior.