/* constructor */
function ZoomControledContent( controledElementId, controledElementBaseFontSize, sizeMonitorId, defaultMonitorSize, minMonitorSize )
{
	if( typeof document.getElementById( 'documentBody' ).style.zoom != 'undefined' )
	{
		if( navigator.userAgent.toLowerCase().indexOf( 'msie 5.0' ) == -1 )
		{
			this.controledElement             = document.getElementById( controledElementId );
			this.controledElementBaseFontSize = controledElementBaseFontSize;
			this.sizeMonitor                  = document.getElementById( sizeMonitorId );
			this.defaultMonitorSize           = defaultMonitorSize;
			this.minMonitorSize               = minMonitorSize;
			this.filteredImages               = new Array();
			this.index                        = 0;

			this.init();

			ZoomControledContent.enabled       = true;
		}
	}
}


/* class field */
ZoomControledContent.elementsArray = new Array();
ZoomControledContent.enabled       = false;
ZoomControledContent.magnification = 1;



/* method - init */
function ZoomControledContent_init()
{
	this.setZoom();

	this.index = ZoomControledContent.elementsArray.length;
	ZoomControledContent.elementsArray[this.index] = this;

	var instanceStr = 'ZoomControledContent.elementsArray[' + this.index + ']';
	this.sizeMonitor.onresize = function()
	{
		eval( instanceStr + '.setZoom()' );
	}
}
ZoomControledContent.prototype.init = ZoomControledContent_init;


/* method - getFilterImages */
function ZoomControledContent_getFilterImages()
{
	if( this.filteredImages.length == 0 )
	{
		var ElementImages = new Array();
		var ElementInputs = new Array();

		ElementImages = this.controledElement.getElementsByTagName( 'img' );
		ElementInputs = this.controledElement.getElementsByTagName( 'input' );

		for( var i = 0; i < ElementImages.length; i++ )
		{
			if( ElementImages[i].className.indexOf( 'filter' ) != -1 )
			{
				this.filteredImages[this.filteredImages.length] = ElementImages[i];
			}
		}

		for( var i = 0; i < ElementInputs.length; i++ )
		{
			if( ElementInputs[i].type == 'image' && ElementInputs[i].className.indexOf( 'filter' ) != -1 )
			{
				this.filteredImages.push( ElementInputs[i] );
			}
		}
	}
}
ZoomControledContent.prototype.getFilterImages = ZoomControledContent_getFilterImages;


/* method - setFilterImages */
function ZoomControledContent_setFilterImages()
{
	var styleValue   = 0;
	var opacityValue = 0;
	var alphaProperty = 'progid:DXImageTransform.Microsoft.Alpha(style=' + styleValue + ', opacity=' + opacityValue + ')';

	var sizingMethodValue   = 'scale';

	for( var i = 0; i < this.filteredImages.length; i++ )
	{
		var srcValue            = this.filteredImages[i].src;
		var imageLoaderProperty = 'Progid:DXImageTransform.Microsoft.AlphaImageLoader(Src=' + srcValue + ',SizingMethod=' + sizingMethodValue + ')';

		this.filteredImages[i].style.filter = alphaProperty;
		this.filteredImages[i].style.filter = imageLoaderProperty
	}
}
ZoomControledContent.prototype.setFilterImages = ZoomControledContent_setFilterImages;


/* method - setZoom */
function ZoomControledContent_setZoom()
{
	this.getFilterImages();
	this.setFilterImages();

	var currentSize   = this.sizeMonitor.offsetWidth;
	ZoomControledContent.magnification = currentSize / this.defaultMonitorSize;

	if( currentSize >= this.minMonitorSize )
	{
		this.controledElement.style.fontSize = this.controledElementBaseFontSize + 'px';
		this.controledElement.style.zoom     = ZoomControledContent.magnification;
	}
	else
	{
		this.controledElement.style.fontSize = '';
	}
}
ZoomControledContent.prototype.setZoom = ZoomControledContent_setZoom;
