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