var minmax_elements;
minmax_props = new Array(new Array('min-width', 'minWidth'), new Array('max-width', 'maxWidth'));


function minmax_bind(el)
{
	var i, em, ms, st = el.style, cs = el.currentStyle;

	if (minmax_elements == window.undefined)
	{
		if (!document.body || !document.body.currentStyle)
			return;

		minmax_elements = new Array();
		window.attachEvent('onresize', minmax_delayout);
	}

	for (i = minmax_props.length; i-- > 0; )
		if (cs[minmax_props[i][0]])
			st[minmax_props[i][1]] = cs[minmax_props[i][0]];

	for (i = minmax_props.length; i-- > 0; )
	{
		ms = cs[minmax_props[i][1]];
		if (ms && ms != 'auto' && ms != 'none' && ms != '0' && ms!='')
		{
			st.minmaxWidth = cs.width;
			minmax_elements[minmax_elements.length] = el;
			minmax_delayout();
			break;
		}
	}
}


var minmax_delaying = false;


function minmax_delayout()
{
	if (minmax_delaying)
		return;
	minmax_delaying= true;
	window.setTimeout(minmax_layout, 0);
}


function minmax_stopdelaying() { minmax_delaying = false; }


function minmax_layout()
{
	window.setTimeout(minmax_stopdelaying, 100);
	var i, el, st, cs, optimal, inrange;

	for (i = minmax_elements.length; i-- > 0;)
	{
		el = minmax_elements[i];
		st = el.style;
		cs = el.currentStyle;

		st.width = st.minmaxWidth;
		optimal = el.offsetWidth;
		inrange = true;

		if (inrange && cs.minWidth && cs.minWidth != '0' && cs.minWidth != 'auto' && cs.minWidth != '')
		{
			st.width= cs.minWidth;
			inrange = (el.offsetWidth < optimal);
		}

		if (inrange && cs.maxWidth && cs.maxWidth != 'none' && cs.maxWidth != 'auto' && cs.maxWidth != '')
		{
			st.width = cs.maxWidth;
			inrange = (el.offsetWidth > optimal);
		}

		if (inrange)
			st.width = st.minmaxWidth;
	}
}


var minmax_SCANDELAY = 500;


function minmax_scan()
{
    var el;
	for (var i = 0; i < document.all.length; i++)
		if (!document.all[i].minmax_bound)
		{
			document.all[i].minmax_bound = true;
			minmax_bind(document.all[i]);
		}
}


var minmax_scanner;


function minmax_stop()
{
	window.clearInterval(minmax_scanner);
	minmax_scan();
}

if (document.all) {
    minmax_scan();
    minmax_scanner = window.setInterval(minmax_scan, minmax_SCANDELAY);
    window.attachEvent('onload', minmax_stop);
}