]> git.donarmstrong.com Git - roundcube.git/blobdiff - skins/default/pngbehavior.htc
Imported Upstream version 0.5
[roundcube.git] / skins / default / pngbehavior.htc
index 54ee968903e61001837cfcb184dd11a16f0f0d0b..fb5f1c8d4e80bd33ec0d6719af40857f975cc5c7 100644 (file)
@@ -1,74 +1,84 @@
-<public:component>
+<public:component lightWeight="true">
 <public:attach event="onpropertychange" onevent="propertyChanged()" />
-<public:attach event="onbeforeprint" for="window" onevent="beforePrint()" />
-<public:attach event="onafterprint" for="window" onevent="afterPrint()" />
+<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/>
+<public:attach event="onafterprint" onevent="afterPrint()" for="window"/>
 <script>
 
 /*
  * PNG Behavior
  *
- * This script was created by Erik Arvidsson (erik(at)eae.net)
+ * This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik)
  * for WebFX (http://webfx.eae.net)
- * Copyright 2002
- * 
- * For usage see license at http://webfx.eae.net/license.html  
+ * Copyright 2002-2004
  *
- * Version: 1.01a
+ * For usage see license at http://webfx.eae.net/license.html
+ *
+ * Version: 1.02
+ * Created: 2001-??-?? First working version
+ * Updated: 2002-03-28 Fixed issue when starting with a non png image and
+ *                      switching between non png images
+ *          2003-01-06 Fixed RegExp to correctly work with IE 5.0x
+ *          2004-05-09  When printing revert to original
  *
  */
-var IS_PNG = /\.png$/i;
-var supported = /MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == 'Win32';
-var realSrc, realHeight, realWidth;
-var blankSrc = 'skins/default/images/blank.gif';
+
+var supported = /MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32",
+  realSrc,
+  blankSrc = "skins/default/images/blank.gif",
+  isPrinting = false;
+
 if (supported) fixImage();
+
 function propertyChanged() {
-  if (supported && event.propertyName == 'src') {
-    var i = element.src.lastIndexOf(blankSrc);
-    if (i == -1 || i != element.src.length - blankSrc.length) {
-      fixImage();
-    }
-  }
-}
+       if (!supported || isPrinting) return;
+
+       var pName = event.propertyName;
+       if (pName != "src") return;
+       // if not set to blank
+       if (!new RegExp(blankSrc).test(src))
+               fixImage();
+};
+
 function fixImage() {
-  if (realSrc && element.src == realSrc) {
-    // this is an attempt to set the image to itself!
-    // pointless - leave the filter as-is, restore the blank image
-    element.src = blankSrc;
-  } else {
-    // set the image to something different
-    if (IS_PNG.test(element.src)) {
-      // fixable PNG
-      realSrc = element.src;
-      realWidth = element.width;
-      realHeight = element.height;
-      element.src = blankSrc;
-      element.style.width = realWidth + 'px';
-      element.style.height = realHeight + 'px';
-      element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + encodeURI(realSrc) + "',sizingMethod='scale')";
-    } else {
-      // ordinary image - make sure the fix is removed
-      if (realSrc) {
-        realSrc = null;
-        element.runtimeStyle.filter = '';
-      }
-    }
-  }
+       // get src
+       var src = element.src;
+
+       // check for real change
+       if (src == realSrc && /\.png$/i.test(src)) {
+               element.src = blankSrc;
+               return;
+       }
+
+       if ( ! new RegExp(blankSrc).test(src)) {
+               // backup old src
+               realSrc = src;
+       }
+
+       // test for png
+       if (/\.png$/i.test(realSrc)) {
+               // set blank image
+               element.src = blankSrc;
+               // set filter
+               element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." +
+                                       "AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
+       }
+       else {
+               // remove filter
+               element.runtimeStyle.filter = "";
+       }
 }
+
 function beforePrint() {
-  if (realSrc) {
-    supported = false;
-    element.src = realSrc;
-    element.runtimeStyle.filter = '';
-    supported = true;
-  }
+       isPrinting = true;
+       element.src = realSrc;
+       element.runtimeStyle.filter = "";
+       realSrc = null;
 }
+
 function afterPrint() {
-  if (realSrc) {
-    var rs = realSrc;
-    realSrc = null;
-    element.src = rs;
-  }
+       isPrinting = false;
+       fixImage();
 }
+
 </script>
 </public:component>