The code is used to check if any part of the element is visible as you can see in the demo. If you wish to check if element is fully visible, you can try code mentioned in one of the responses to this article.
Here is the smart contract that manages all the cryptokittens in a network: https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#readContract
If you look close enough, you can see the method Pause which can render all kittens in the network frozen.
Well, yes. There can be another front end.
If we fork the code, we could even make cryptomonkeys. But how do we arrive on the right UI? We cannot just allow everyone to make pull requests to a UI and update the same to a continuous integration system.
It would be interesting if it was actually so.
But crytokitties are not decentrailised in the aspect that you own your kitten. You do only in the UI (and who owns the UI?). All kitties are owned by the central Kitty Corp and they can pull the plug any time they like.
Cryptokittes is not a blockchain use case. If anything, it is more of a parody chain network. Anything on Cryptokittes was possible with already existing technologies with much less latency and better user experience.
It could be heralded only as an experimental case to bring out fundamental flaws in blockchain technologies like Etherium.