function getOffset(elem) {    if (elem.getBoundingClientRect) {        // "правильный" вариант        return getOffsetRect(elem)    } else {        // пусть работает хоть как-то        return getOffsetSum(elem)    }}function getOffsetSum(elem) {    var top=0, left=0    while(elem) {        top = top + parseInt(elem.offsetTop)        left = left + parseInt(elem.offsetLeft)        elem = elem.offsetParent    }    return {top: top, left: left}}function getOffsetRect(elem) {    // (1)    var box = elem.getBoundingClientRect()    // (2)    var body = document.body    var docElem = document.documentElement    // (3)    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft    // (4)    var clientTop = docElem.clientTop || body.clientTop || 0    var clientLeft = docElem.clientLeft || body.clientLeft || 0    // (5)    var top  = box.top +  scrollTop - clientTop    var left = box.left + scrollLeft - clientLeft    return { top: Math.round(top), left: Math.round(left) }}
