<public:component>

<script type="text/javascript">



// IE5.5+ PNG Alpha Fix v2.0 Alpha

// (c) 2004-2009 Angus Turnbull http://www.twinhelix.com



// This is licensed under the GNU LGPL, version 2.1 or later.

// For details, see: http://creativecommons.org/licenses/LGPL/2.1/



var IEPNGFix = window.IEPNGFix || {};

IEPNGFix.data = IEPNGFix.data || {};





// CONFIG: blankImg is the path to blank.gif, *relative to the HTML document*.

// Try either:

// * An absolute path like:  'blank.gif'

// * A path relative to this HTC file like:  thisFolder + 'blank.gif'

var thisFolder = document.URL.replace(/(\\|\/)[^\\\/]*$/, '/');

IEPNGFix.blankImg = thisFolder + 'blank.gif';





IEPNGFix.fix = function(elm, src, t) {

	// Applies an image 'src' to an element 'elm' using the DirectX filter.

	// If 'src' is null, filter is disabled.

	// Disables the 'hook' to prevent infinite recursion on setting BG/src.

	// 't' = type, where background tile = 0, background = 1, IMG SRC = 2.



	var h = this.hook.enabled;

	this.hook.enabled = 0;



	var f = 'DXImageTransform.Microsoft.AlphaImageLoader';

		src = (src || '').replace(/\(/g, '%28').replace(/\)/g, '%29');



	if (

		src && !(/IMG|INPUT/.test(elm.nodeName) && (t != 2)) &&

		elm.currentStyle.width == 'auto' && elm.currentStyle.height == 'auto'

	) {

		if (elm.offsetWidth) {

			elm.style.width = elm.offsetWidth + 'px';

		}

		if (elm.clientHeight) {

			elm.style.height = elm.clientHeight + 'px';

		}

		if (elm.currentStyle.display == 'inline') {

			elm.style.display = 'inline-block';

		}

	}



	if (t == 1) {

		elm.style.backgroundImage = 'url("' + this.blankImg + '")';

	}

	if (t == 2) {

		elm.src = this.blankImg;

	}



	if (elm.filters[f]) {

		elm.filters[f].enabled = src ? true : false;

		if (src) {

			elm.filters[f].src = src;

		}

	} else if (src) {

		elm.style.filter = 'progid:' + f + '(src="' + src +

			'",sizingMethod="' + (t == 2 ? 'scale' : 'crop') + '")';

	}



	this.hook.enabled = h;

};





IEPNGFix.process = function(elm, init) {

	// Checks the onpropertychange event (on first 'init' run, a fake event)

	// and calls the filter-applying-functions.



	if (

		!/MSIE (5\.5|6)/.test(navigator.userAgent) ||

		typeof elm.filters == 'unknown'

	) {

		return;

	}

	if (!this.data[elm.uniqueID]) {

		this.data[elm.uniqueID] = {

			className: ''

		};

	}

	var data = this.data[elm.uniqueID],

		evt = init ? { propertyName: 'src,backgroundImage' } : event,

		isSrc = /src/.test(evt.propertyName),

		isBg = /backgroundImage/.test(evt.propertyName),

		isPos = /width|height|background(Pos|Rep)/.test(evt.propertyName),

		isClass = !init && ((elm.className != data.className) &&

			(elm.className || data.className));

	if (!(isSrc || isBg || isPos || isClass)) {

		return;

	}

	data.className = elm.className;

	var blank = this.blankImg.match(/([^\/]+)$/)[1],

		eS = elm.style,

		eCS = elm.currentStyle;



	// Required for Whatever:hover - erase set BG if className changes.

	if (

		isClass && (eS.backgroundImage.indexOf('url(') == -1 ||

		eS.backgroundImage.indexOf(blank) > -1)

	) {

		return setTimeout(function() {

			eS.backgroundImage = '';

		}, 0);

	}



	// Foregrounds.

	if (isSrc && elm.src && { IMG: 1, INPUT: 1 }[elm.nodeName]) {

		if ((/\.png/i).test(elm.src)) {

			if (!elm.oSrc) {

				// MM rollover compat

				elm.oSrc = elm.src;

			}

			this.fix(elm, elm.src, 2);

		} else if (elm.src.indexOf(blank) == -1) {

			this.fix(elm, '');

		}

	}



	// Backgrounds.

	var bgSrc = eCS.backgroundImage || eS.backgroundImage;

	if ((bgSrc + elm.src).indexOf(blank) == -1) {

		var bgPNG = bgSrc.match(/url[("']+(.*\.png[^\)"']*)[\)"']/i);

		if (bgPNG) {

			if (this.tileBG && !{ IMG: 1, INPUT: 1 }[elm.nodeName]) {

				this.tileBG(elm, bgPNG[1]);

				this.fix(elm, '', 1);

			} else {

				if (data.tiles && data.tiles.src) {

					this.tileBG(elm, '');

				}

				this.fix(elm, bgPNG[1], 1);

				this.childFix(elm);

			}

		} else {

			if (data.tiles && data.tiles.src) {

				this.tileBG(elm, '');

			}

			this.fix(elm, '');

		}

	} else if ((isPos || isClass) && data.tiles && data.tiles.src) {

		this.tileBG(elm, data.tiles.src);

	}



	if (init) {

		this.hook.enabled = 1;

		elm.attachEvent('onpropertychange', this.hook);

	}

};





IEPNGFix.childFix = function(elm) {

	// "hasLayout" fix for unclickable children inside PNG backgrounds.

	var tags = [

			'a',

			'input',

			'select',

			'textarea',

			'button',

			'iframe',

			'object'

		],

		t = tags.length,

		tFix = [];

	while (t--) {

		var pFix = elm.all.tags(tags[t]),

			e = pFix.length;

		while (e--) {

			tFix.push(pFix[e]);

		}

	}

	t = tFix.length;

	if (t && (/relative|absolute/i).test(elm.currentStyle.position)) {

		alert('IEPNGFix: Unclickable children of element:' +

			'\n\n<' + elm.nodeName + (elm.id && ' id=' + elm.id) + '>');

	}

	while (t--) {

		if (!(/relative|absolute/i).test(tFix[t].currentStyle.position)) {

			tFix[t].style.position = 'relative';

		}

	}

};





IEPNGFix.hook = function() {

	if (IEPNGFix.hook.enabled) {

		IEPNGFix.process(element, 0);

	}

};





IEPNGFix.process(element, 1);



</script>

</public:component>

