docs: function(t, p, v, sfx, recurse) {
  				if (sfx === "px" || !sfx) { return v; }
  				if (sfx === "auto" || !v) { return 0; }
  				var horiz = _horizExp.test(p),
  					node = t,
  					neg = (v < 0);
  				if (neg) {
  					v = -v;
  				}
  				_tempDiv.style.cssText = "border-style:solid; border-width:0; position:absolute; line-height:0;";
  				if (sfx === "%" || sfx === "em" || !node.appendChild) {
  					node = t.parentNode || document.body;
  					_tempDiv.style[(horiz ? "width" : "height")] = v + sfx;
  				} else {
  					_tempDiv.style[(horiz ? "borderLeftWidth" : "borderTopWidth")] = v + sfx;
  				}
  				node.appendChild(_tempDiv);
  				var pix = parseFloat(_tempDiv[(horiz ? "offsetWidth" : "offsetHeight")]);
  				node.removeChild(_tempDiv);
  				if (pix === 0 && !recurse) { //in some browsers (like IE7/8), occasionally the value isn't accurately reported initially, but if we run the function again it will take effect. 
  					pix = _convertToPixels(t, p, v, sfx, true);
  				}
  				return neg ? -pix : pix;
  			}