make sure to detach listeners and elements

- fallback to gif if no videos exist
- clean up elements and handlers when falling back
- add more checks for other types of files such as ogg and mpeg4
encoded mp4