<component lightWeight="true">
<attach event="onpropertychange" onevent="checkPropertyChange()" />
<attach event="ondetach" onevent="restore()" />
<attach event="onresize" for="window" onevent="update()" />
<script type="text/javascript">
var viewportwidth = (typeof window.innerWidth != 'undefined' ? window.innerWidth : element.document.documentElement.clientWidth);
var doc = element.document;
var resizetimeout = null;
var apply = false;
switch(element.nodeName){
	case '#comment':
	case 'HTML':
	case 'HEAD':
	case 'TITLE':
	case 'SCRIPT':
	case 'STYLE':
	case 'LINK':
	case 'META':
	break;
	default:
		apply = true;
	break;
}
function update(){
	if(resizetimeout !== null){
		window.clearTimeout(resizetimeout);
	}
	resizetimeout = window.setTimeout(function(){
		restore();
		init();
		resizetimeout = null;
	},100);
}
function restore(){
	if(apply){
		try{
			element.runtimeStyle.removeAttribute("width");
			element.runtimeStyle.removeAttribute("height");
		}
		catch(e){}
	}
}
function init(){
	if(apply){
		updateBorderBoxWidth();
		updateBorderBoxHeight();
	}
}
function checkPropertyChange(){
	if(apply){
		var pn = event.propertyName;
		if(pn === "style.boxSizing" && element.style.boxSizing === ""){
			element.style.removeAttribute("boxSizing");
			element.runtimeStyle.removeAttribute("boxSizing");
			element.runtimeStyle.removeAttribute("width");
			element.runtimeStyle.removeAttribute("height");
		}
		switch (pn){
			case "style.width":
			case "style.minWidth":
			case "style.maxWidth":
			case "style.borderLeftWidth":
			case "style.borderLeftStyle":
			case "style.borderRightWidth":
			case "style.borderRightStyle":
			case "style.paddingLeft":
			case "style.paddingRight":
				updateBorderBoxWidth();
			break;
		
			case "style.height":
			case "style.minHeight":
			case "style.maxHeight":
			case "style.borderTopWidth":
			case "style.borderTopStyle":
			case "style.borderBottomWidth":
			case "style.borderBottomStyle":
			case "style.paddingTop":
			case "style.paddingBottom":
				updateBorderBoxHeight();
			break;
		
			case "className":
			case "style.boxSizing":
				updateBorderBoxWidth();
				updateBorderBoxHeight();
			break;
		}
	}
}
function getPixelValue(value){
	var PIXEL = /^\d+(px)?$/i;
	if (PIXEL.test(value)) return parseInt(value);
	var style = element.style.left;
	var runtimeStyle = element.runtimeStyle.left;
	element.runtimeStyle.left = element.currentStyle.left;
	element.style.left = value || 0;
	value = parseInt(element.style.pixelLeft);
	element.style.left = style;
	element.runtimeStyle.left = runtimeStyle;
	return value;
}

function getPixelWidth(object, value){
	// For Pixel Values
	var PIXEL = /^\d+(px)?$/i;
	if (PIXEL.test(value)) return parseInt(value);
	
	// For Percentage Values
	var PERCENT = /^[\d\.]+%$/i;
	if (PERCENT.test(value)){
		try{
			var parentPaddingLeft = getPixelWidth(object.parentElement,object.parentElement.currentStyle.paddingLeft);
			var parentPaddingRight = getPixelWidth(object.parentElement,object.parentElement.currentStyle.paddingRight);
			var parentBorderLeft = getPixelWidth(object.parentElement,object.parentElement.currentStyle.borderLeft);
			var parentBorderRight = getPixelWidth(object.parentElement,object.parentElement.currentStyle.borderRight);
			var parentWidth = object.parentElement.offsetWidth - parentPaddingLeft - parentPaddingRight - parentBorderLeft - parentBorderRight;
			var value = (parseFloat(value) / 100) * parentWidth;
		}
		catch(e){
			var value = (parseFloat(value) / 100) * element.document.documentElement.clientWidth;
		}
		return parseInt(value);
	}
	var style = object.style.left;
	var runtimeStyle = object.runtimeStyle.left;
	object.runtimeStyle.left = object.currentStyle.left;
	object.style.left = value || 0;
	value = parseInt(object.style.pixelLeft);
	object.style.left = style;
	object.runtimeStyle.left = runtimeStyle;
	
	return value;
}

function getPixelHeight(object, value){
	var PIXEL = /^\d+(px)?$/i;
	if (PIXEL.test(value)) return parseInt(value);
	var PERCENT = /^[\d\.]+%$/i;
	if (PERCENT.test(value)){
		try{
			if(object.parentElement.currentStyle.height != "auto"){
				switch(object.parentElement.nodeName){
					default:
						if(object.parentElement.currentStyle.height !== "auto"){
							var parentPaddingTop = getPixelWidth(object.parentElement,object.parentElement.currentStyle.paddingTop);
							var parentPaddingBottom = getPixelWidth(object.parentElement,object.parentElement.currentStyle.paddingBottom);
							var parentBorderTop = getPixelWidth(object.parentElement,object.parentElement.currentStyle.borderTop);
							var parentBorderBottom = getPixelWidth(object.parentElement,object.parentElement.currentStyle.borderBottom);
							var parentHeight = object.parentElement.offsetHeight - parentPaddingTop - parentPaddingBottom - parentBorderTop - parentBorderBottom;
							value = (parseFloat(value) / 100) * parentHeight;
						}
						else {
							value = "auto";
						}
					break;
					
					case 'HTML':
						parentHeight = element.document.documentElement.clientHeight;
						if(parentHeight !== "auto"){
							value = (parseFloat(value) / 100) * parentHeight;
						}
						else {
							value = "auto";
						}
					break;
				}
				if(value !== "auto") value = parseInt(value);
			}
			else {
				value = "auto";
			}
		}
		catch(e){
			value = "auto";
		}
		return value;
	}
	var style = object.style.left;
	var runtimeStyle = object.runtimeStyle.left;
	object.runtimeStyle.left = object.currentStyle.left;
	object.style.left = value || 0;
	value = parseInt(object.style.pixelLeft);
	object.style.left = style;
	object.runtimeStyle.left = runtimeStyle;
	
	return value;
}
function getBorderWidth(sSide){
	if(element.currentStyle["border" + sSide + "Style"] == "none"){
		return 0;
	}
	var n = getPixelValue(element.currentStyle["border" + sSide + "Width"]);
	return n || 0;
}
function getBorderLeftWidth() { return getBorderWidth("Left"); }
function getBorderRightWidth() { return getBorderWidth("Right"); }
function getBorderTopWidth() { return getBorderWidth("Top"); }
function getBorderBottomWidth() { return getBorderWidth("Bottom"); }

function getPadding(sSide) {
	var n = getPixelValue(element.currentStyle["padding" + sSide]);
	return n || 0;
}
function getPaddingLeft() { return getPadding("Left"); }
function getPaddingRight() { return getPadding("Right"); }
function getPaddingTop() { return getPadding("Top"); }
function getPaddingBottom() { return getPadding("Bottom"); }

function getBoxSizing(){
	var s = element.style;
	var cs = element.currentStyle
	if(typeof s.boxSizing != "undefined" && s.boxSizing != ""){
		return s.boxSizing;
	}
	if(typeof s["box-sizing"] != "undefined" && s["box-sizing"] != ""){
		return s["box-sizing"];
	}
	if(typeof cs.boxSizing != "undefined" && cs.boxSizing != ""){
		return cs.boxSizing;
	}
	if(typeof cs["box-sizing"] != "undefined" && cs["box-sizing"] != ""){
		return cs["box-sizing"];
	}
	return getDocumentBoxSizing();
}
function getDocumentBoxSizing(){
	if(doc.compatMode === null || doc.compatMode === "BackCompat"){
		return "border-box";
	}
	return "content-box"
}
function setBorderBoxWidth(n){
	element.runtimeStyle.width = Math.max(0, n - getBorderLeftWidth() -
		getPaddingLeft() - getPaddingRight() - getBorderRightWidth()) + "px";
}
function setBorderBoxMinWidth(n){
	element.runtimeStyle.minWidth = Math.max(0, n - getBorderLeftWidth() -
		getPaddingLeft() - getPaddingRight() - getBorderRightWidth()) + "px";
}
function setBorderBoxMaxWidth(n){
	element.runtimeStyle.maxWidth = Math.max(0, n - getBorderLeftWidth() -
		getPaddingLeft() - getPaddingRight() - getBorderRightWidth()) + "px";
}
function setBorderBoxHeight(n){
	element.runtimeStyle.height = Math.max(0, n - getBorderTopWidth() -
		getPaddingTop() - getPaddingBottom() - getBorderBottomWidth()) + "px";
}
function setBorderBoxMinHeight(n){
	element.runtimeStyle.minHeight = Math.max(0, n - getBorderTopWidth() -
		getPaddingTop() - getPaddingBottom() - getBorderBottomWidth()) + "px";
}
function setBorderBoxMaxHeight(n){
	element.runtimeStyle.maxHeight = Math.max(0, n - getBorderTopWidth() -
		getPaddingTop() - getPaddingBottom() - getBorderBottomWidth()) + "px";
}
function setContentBoxWidth(n){
	element.runtimeStyle.width = Math.max(0, n + getBorderLeftWidth() +
		getPaddingLeft() + getPaddingRight() + getBorderRightWidth()) + "px";
}
function setContentBoxMinWidth(n){
	element.runtimeStyle.minWidth = Math.max(0, n + getBorderLeftWidth() +
		getPaddingLeft() + getPaddingRight() + getBorderRightWidth()) + "px";
}
function setContentBoxMaxWidth(n){
	element.runtimeStyle.maxWidth = Math.max(0, n + getBorderLeftWidth() +
		getPaddingLeft() + getPaddingRight() + getBorderRightWidth()) + "px";
}
function setContentBoxHeight(n){
	element.runtimeStyle.height = Math.max(0, n + getBorderTopWidth() +
		getPaddingTop() + getPaddingBottom() + getBorderBottomWidth()) + "px";
}
function setContentBoxMinHeight(n){
	element.runtimeStyle.minHeight = Math.max(0, n + getBorderTopWidth() +
		getPaddingTop() + getPaddingBottom() + getBorderBottomWidth()) + "px";
}
function setContentBoxMaxHeight(n){
	element.runtimeStyle.maxHeight = Math.max(0, n + getBorderTopWidth() +
		getPaddingTop() + getPaddingBottom() + getBorderBottomWidth()) + "px";
}
function updateBorderBoxWidth() {
	if(getDocumentBoxSizing() == getBoxSizing()){
		return;
	}
	var csw = element.currentStyle.width;
	if(csw != "auto"){
		csw = getPixelWidth(element,csw);
		if(getBoxSizing() == "border-box"){
			setBorderBoxWidth(parseInt(csw));
		}
		else{
			setContentBoxWidth(parseInt(csw));
		}
	}
	csw = element.currentStyle.minWidth;
	if(csw != "none"){
		csw = getPixelWidth(element,csw);
		if(getBoxSizing() == "border-box"){
			setBorderBoxMinWidth(parseInt(csw));
		}
		else{
			setContentBoxMinWidth(parseInt(csw));
		}
	}
	csw = element.currentStyle.maxWidth;
	if(csw != "none"){
		csw = getPixelWidth(element,csw);
		if(getBoxSizing() == "border-box"){
			setBorderBoxMaxWidth(parseInt(csw));
		}
		else{
			setContentBoxMaxWidth(parseInt(csw));
		}
	}
}

function updateBorderBoxHeight() {
	if(getDocumentBoxSizing() == getBoxSizing()){
		return;
	}
	var csh = element.currentStyle.height;
	if(csh != "auto"){
		csh = getPixelHeight(element,csh);
		if(csh !== "auto"){
			if(getBoxSizing() == "border-box"){
				setBorderBoxHeight(parseInt(csh));
			}
			else{
				setContentBoxHeight(parseInt(csh));
			}
		}
	}
	csh = element.currentStyle.minHeight;
	if(csh != "none"){
		csh = getPixelHeight(element,csh);
		if(csh !== "none"){
			if(getBoxSizing() == "border-box"){
				setBorderBoxMinHeight(parseInt(csh));
			}
			else{
				setContentBoxMinHeight(parseInt(csh));
			}
		}
	}
	csh = element.currentStyle.maxHeight;
	if(csh != "none"){
		csh = getPixelHeight(element,csh);
		if(csh !== "none"){
			if(getBoxSizing() == "border-box"){
				setBorderBoxMaxHeight(parseInt(csh));
			}
			else{
				setContentBoxMaxHeight(parseInt(csh));
			}
		}
	}
}
init();
</script>
</component>