Makes use of getBoundingClientRect to calculate element parent intersections. Also includes handling for page scroll.
Inspiration taken and extended from here:
http://stackoverflow.com/questions/487073/check-if-element-is-visible-after-scrolling#answer-21627295