code: function CSSStyleDeclaration(element) {
  			var
  			style = this,
  			currentStyle = element.currentStyle,
  			fontSize = getComputedStylePixel(element, 'fontSize'),
  			unCamelCase = function (match) {
  				return '-' + match.toLowerCase();
  			},
  			property;
  
  			for (property in currentStyle) {
  				Array.prototype.push.call(style, property === 'styleFloat' ? 'float' : property.replace(/[A-Z]/, unCamelCase));
  
  				if (property === 'width') {
  					style[property] = element.offsetWidth + 'px';
  				} else if (property === 'height') {
  					style[property] = element.offsetHeight + 'px';
  				} else if (property === 'styleFloat') {
  					style.float = currentStyle[property];
  				} else if (/margin.|padding.|border.+W/.test(property) && style[property] !== 'auto') {
  					style[property] = Math.round(getComputedStylePixel(element, property, fontSize)) + 'px';
  				} else if (/^outline/.test(property)) {
  					// errors on checking outline
  					try {
  						style[property] = currentStyle[property];
  					} catch (error) {
  						style.outlineColor = currentStyle.color;
  						style.outlineStyle = style.outlineStyle || 'none';
  						style.outlineWidth = style.outlineWidth || '0px';
  						style.outline = [style.outlineColor, style.outlineWidth, style.outlineStyle].join(' ');
  					}
  				} else {
  					style[property] = currentStyle[property];
  				}
  			}
  
  			setShortStyleProperty(style, 'margin');
  			setShortStyleProperty(style, 'padding');
  			setShortStyleProperty(style, 'border');
  
  			style.fontSize = Math.round(fontSize) + 'px';
  		}
docs: <CSSStyleDeclaration>