keydragzoom/src/keydragzoom.js
function (h) {
    var computedStyle;
    var bw = {};
    if (document.defaultView && document.defaultView.getComputedStyle) {
      computedStyle = h.ownerDocument.defaultView.getComputedStyle(h, "");
      if (computedStyle) {
        // The computed styles are always in pixel units (good!)
        bw.top = parseInt(computedStyle.borderTopWidth, 10) || 0;
        bw.bottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;
        bw.left = parseInt(computedStyle.borderLeftWidth, 10) || 0;
        bw.right = parseInt(computedStyle.borderRightWidth, 10) || 0;
        return bw;
      }
    } else if (document.documentElement.currentStyle) { // MSIE
      if (h.currentStyle) {
        // The current styles may not be in pixel units so try to convert (bad!)
        bw.top = parseInt(toPixels(h.currentStyle.borderTopWidth), 10) || 0;
        bw.bottom = parseInt(toPixels(h.currentStyle.borderBottomWidth), 10) || 0;
        bw.left = parseInt(toPixels(h.currentStyle.borderLeftWidth), 10) || 0;
        bw.right = parseInt(toPixels(h.currentStyle.borderRightWidth), 10) || 0;
        return bw;
      }
    }
    // Shouldn't get this far for any modern browser
    bw.top = parseInt(h.style["border-top-width"], 10) || 0;
    bw.bottom = parseInt(h.style["border-bottom-width"], 10) || 0;
    bw.left = parseInt(h.style["border-left-width"], 10) || 0;
    bw.right = parseInt(h.style["border-right-width"], 10) || 0;
    return bw;
  }
function (h) {
    var computedStyle;
    var bw = {};
    if (document.defaultView && document.defaultView.getComputedStyle) {
      computedStyle = h.ownerDocument.defaultView.getComputedStyle(h, "");
      if (computedStyle) {
        // The computed styles are always in pixel units (good!)
        bw.top = parseInt(computedStyle.borderTopWidth, 10) || 0;
        bw.bottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;
        bw.left = parseInt(computedStyle.borderLeftWidth, 10) || 0;
        bw.right = parseInt(computedStyle.borderRightWidth, 10) || 0;
        return bw;
      }
    } else if (document.documentElement.currentStyle) { // MSIE
      if (h.currentStyle) {
        // The current styles may not be in pixel units so try to convert (bad!)
        bw.top = parseInt(toPixels(h.currentStyle.borderTopWidth), 10) || 0;
        bw.bottom = parseInt(toPixels(h.currentStyle.borderBottomWidth), 10) || 0;
        bw.left = parseInt(toPixels(h.currentStyle.borderLeftWidth), 10) || 0;
        bw.right = parseInt(toPixels(h.currentStyle.borderRightWidth), 10) || 0;
        return bw;
      }
    }
    // Shouldn't get this far for any modern browser
    bw.top = parseInt(h.style["border-top-width"], 10) || 0;
    bw.bottom = parseInt(h.style["border-bottom-width"], 10) || 0;
    bw.left = parseInt(h.style["border-left-width"], 10) || 0;
    bw.right = parseInt(h.style["border-right-width"], 10) || 0;
    return bw;
  }
function ( h ) { var computedStyle ; var bw = { } ; if ( document . defaultView && document . defaultView . getComputedStyle ) { computedStyle = h . ownerDocument . defaultView . getComputedStyle ( h , "" ) ; if ( computedStyle ) { // The computed styles are always in pixel units (good!)
 bw . top = parseInt ( computedStyle . borderTopWidth , 10 ) || 0 ; bw . bottom = parseInt ( computedStyle . borderBottomWidth , 10 ) || 0 ; bw . left = parseInt ( computedStyle . borderLeftWidth , 10 ) || 0 ; bw . right = parseInt ( computedStyle . borderRightWidth , 10 ) || 0 ; return bw ; } } else if ( document . documentElement . currentStyle ) { // MSIE
 if ( h . currentStyle ) { // The current styles may not be in pixel units so try to convert (bad!)
 bw . top = parseInt ( toPixels ( h . currentStyle . borderTopWidth ) , 10 ) || 0 ; bw . bottom = parseInt ( toPixels ( h . currentStyle . borderBottomWidth ) , 10 ) || 0 ; bw . left = parseInt ( toPixels ( h . currentStyle . borderLeftWidth ) , 10 ) || 0 ; bw . right = parseInt ( toPixels ( h . currentStyle . borderRightWidth ) , 10 ) || 0 ; return bw ; } } // Shouldn't get this far for any modern browser
 bw . top = parseInt ( h . style [ "border-top-width" ] , 10 ) || 0 ; bw . bottom = parseInt ( h . style [ "border-bottom-width" ] , 10 ) || 0 ; bw . left = parseInt ( h . style [ "border-left-width" ] , 10 ) || 0 ; bw . right = parseInt ( h . style [ "border-right-width" ] , 10 ) || 0 ; return bw ; }
Get the widths of the borders of an HTML element.

@param {Node} h  The HTML element.
@return {Object} The width object {top, bottom left, right}.
Get the widths of the borders of an HTML element .