The reason your code goes wrong after second function call is You did not unset mousedown touchstart event when you call next one.
So at the time you run the second function, You have 2 event listener on body and both of them works. this causes the issue.