#1 Hacer un setinterval dentro de una función y que el set interval se llame a si misma es una barbaridad creo yo.
Creo que te has confundido entre setTimeout() y setInterval().
Tal como lo tienes, la primera ejecución creará un intervalo periodico de ese script, la segunda creará otro intervalo de ejecución de esa función, pero la anterior seguirá ejecutandose.
setInterval(func, time) define una función que se ejecutará constantemente cada 'time' tiempo hasta que tu quieras que pare mediante clearInterval();
Lo que quieres hacer creo que sería esto:
var currID = 0;
$(document).ready(function(){
currID=Number($(".syncmedia ul li.active".text()); //Valor del "li" que tiene clase active
$("#slider li".click(function(){
$("#slider li".removeClass("active"; //elimina la clase active de todos los "li"
$(this).addClass("active"; //añade la clase active al "li" clickeado
});
auto(); //ejecuta la funcion auto con el valor del "li" activado
setInterval(auto(),5000); //esta vez ejecutará la funcion auto con la que hemos definido como activa
});
function auto(){
var prevID = currID;
currID++; //valor del proximo "li" a activar
if(currID==6) var currID=1; //si llega a 6 tomamos como proximo li el de valor 1
$("#slider li:nth-child("+prevID+"".removeClass("active"; //eliminamos la clase del activo
$("#slider li:nth-child("+currID+"".addClass("active"; //añadimos la clase activo al siguiente
alert(currID); //esto es un test que demuestra que funciona y cada 5s(intervalo de abajo) me va mostrando 1,2,3,4,5 y vuelta a empezar 1,2,3...
}
Creo que se pilla lo que hago. Primero, declaro como 'global' la variable donde guardamos que 'slide' está activo. después ejecuto la función auto, y creo un intervalo de ejecución de la función auto (solo uno).
No he probado el código, es posible que contenga errores, pero creo que es el camino adecuado.