function Zoomer(inob)
{
	var pos = inob.position ? inob.position : 'absolute';
	var callback = inob.callback ? inob.callback : false;
	var overflow = inob.overflow ? inob.overflow : false;
	var zoomadj = inob.adj ? inob.adj : 20;
	var maxh = inob.h;
	var maxw = inob.w;
	var el = $(inob.el);
	var h = 1;
	var w = 1;
	var hadj = maxh > maxw ? ((maxh / maxw) * zoomadj) | 0 : zoomadj;
	var wadj = maxw > maxh ? ((maxw / maxh) * zoomadj) | 0 : zoomadj;
	var s = document.viewport.getScrollOffsets();
	var d = document.viewport.getDimensions();
	var t = (maxh - h) / 2;
	var l = (maxw - w) / 2;
	var st = (((d.height - maxh) / 2) | 0) + s.top;
	if(st < 15)
		st = 15;
	var sl = (((d.width - maxw) / 2) | 0) + s.left;
	if(pos == 'fixed')
	{
		el.setStyle({clip:'rect('+t+'px '+(l+w)+'px '+(t+h)+'px '+l+'px)',visibility:'visible'});
	}
	else
	{
		el.setStyle({clip:'rect('+t+'px '+(l+w)+'px '+(t+h)+'px '+l+'px)',position:'absolute',top:st+'px',left:sl+'px',height:maxh+'px',width:maxw+'px',visibility:'visible'});
	}
	var intv = setInterval(expandThis, 1);		
	function expandThis()
	{
		var htest = false;
		var wtest = false;
		h += hadj;
		w += wadj;
		if(h > maxh)
		{
			htest = true;
			h = maxh;
		}
		if(w > maxw)
		{
			wtest = true;
			w = maxw;
		}
		t = (maxh - h) / 2;
		l = (maxw - w) / 2;
		el.setStyle({clip:'rect('+t+'px '+(l+w)+'px '+(t+h)+'px '+l+'px)'});
		if(htest && wtest)
		{
			clearInterval(intv);
/*
			if(Prototype.Browser.IE || Prototype.Browser.WebKit)
			{
				// IE & Safari are not resetting the clip to default properly in that 
				// the overflow can't be set to 'visible'.
				var par = $(document.body).getDimensions();
				var useh = d.height > par.height ? d.height : par.height;
				var usew = d.width > par.width ? d.width : par.width;
				var eloff = el.positionedOffset();
				var scr = document.viewport.getScrollOffsets();
				var cleft = -(eloff.left + scr.left);
				var ctop = -(eloff.top + scr.top);
				var cright = usew - eloff.left + scr.left;
				if(cright < el.getWidth())
				{
					cright = el.getWidth();
				}
				var cbottom = useh - eloff.top;
				if(cbottom < el.getHeight())
				{
					cbottom = el.getHeight();
				}
				el.style.clip = 'rect('+ctop+'px, '+cright+'px, '+cbottom+'px, '+cleft+'px)';
			}
			else
			{
*/
				el.style.clip = 'rect(auto auto auto auto)';
//			}
			if(overflow)
			{
				el.style.overflow = overflow;
			}
			if(callback !== false) callback();
		}
	}
}

