Ah, nu vet jag vad som kan vara problemet....det är det här med variabeln i.
När dina timeouter slår till så försöker den leta efter variabeln i, och vid den tidpunkten har ju i minskat till 0,och därigenom blir den noll. Detta går att lösa med jobbiga "sparanden" av värdet i för olika tidpunkter, men det är inte en bra lösning i detta fallet.
Bästa lösningen är det där rekursiva sättet som Onkelborg förslår.
Do it like that.
(Onkelborg: i vanliga javascript (kan inte jQuery) så är argument 1 en sträng om man vill tro w3schools:
"The first parameter of setTimeout() is a string that contains a JavaScript statement. This statement could be a statement like "alert('5 seconds!')" or a call to a function, like "alertMsg()".
"
http://www.w3schools.com/js/js_timing.asp )