<public:component>
    <script type="text/javascript">

        // IE5.5+ PNG Alpha Fix v2.0 Alpha
// (c) 2004-2008 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 || {};


// This must be a path to a blank image, relative to the HTML document(s).
// In production use I suggest '/images/blank.gif' or similar. That's all!
        IEPNGFix.blankImg = '/v5/css/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'
            ) {
                elm.style.width = elm.offsetWidth + 'px';
                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)) {
                    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>