My first JavaScript! I have little experience with C++ and even less with Java, but that was enough to figure out a way to solve the task. The solution is rather good, but there may be better ways. I'm going to start a pull request. Even if it gets rejected, an expert can use the idea.
NOTE: The code needs some serious testing before potential merging. I did some testing and it worked, but don't trust in my skills.