issue46, added a javascript-based slider to modify slide-interval
[phpfspot.git] / slider / css / boxsizing.htc
diff --git a/slider/css/boxsizing.htc b/slider/css/boxsizing.htc
new file mode 100644 (file)
index 0000000..fbeaa56
--- /dev/null
@@ -0,0 +1,157 @@
+<component lightWeight="true">\r
+<attach event="onpropertychange" onevent="checkPropertyChange()" />\r
+<attach event="ondetach" onevent="restore()" />\r
+<script>\r
+//<![CDATA[\r
+\r
+var doc = element.document;\r
+\r
+function init() {\r
+       updateBorderBoxWidth();\r
+       updateBorderBoxHeight();\r
+}\r
+\r
+function restore() {\r
+       element.runtimeStyle.width = "";\r
+       element.runtimeStyle.height = "";\r
+}\r
+\r
+/* border width getters */\r
+function getBorderWidth(sSide) {\r
+       if (element.currentStyle["border" + sSide + "Style"] == "none")\r
+               return 0;\r
+       var n = parseInt(element.currentStyle["border" + sSide + "Width"]);\r
+       return n || 0;\r
+}\r
+\r
+function getBorderLeftWidth() { return getBorderWidth("Left"); }\r
+function getBorderRightWidth() { return getBorderWidth("Right"); }\r
+function getBorderTopWidth() { return getBorderWidth("Top"); }\r
+function getBorderBottomWidth() { return getBorderWidth("Bottom"); }\r
+/* end border width getters */\r
+\r
+/* padding getters */\r
+function getPadding(sSide) {\r
+       var n = parseInt(element.currentStyle["padding" + sSide]);\r
+       return n || 0;\r
+}\r
+\r
+function getPaddingLeft() { return getPadding("Left"); }\r
+function getPaddingRight() { return getPadding("Right"); }\r
+function getPaddingTop() { return getPadding("Top"); }\r
+function getPaddingBottom() { return getPadding("Bottom"); }\r
+/* end padding getters */\r
+\r
+function getBoxSizing() {\r
+       var s = element.style;\r
+       var cs = element.currentStyle\r
+\r
+       if (typeof s.boxSizing != "undefined" && s.boxSizing != "")\r
+               return s.boxSizing;\r
+       if (typeof s["box-sizing"] != "undefined" && s["box-sizing"] != "")\r
+               return s["box-sizing"];\r
+       if (typeof cs.boxSizing != "undefined" && cs.boxSizing != "")\r
+               return cs.boxSizing;\r
+       if (typeof cs["box-sizing"] != "undefined" && cs["box-sizing"] != "")\r
+               return cs["box-sizing"];\r
+       return getDocumentBoxSizing();\r
+}\r
+\r
+function getDocumentBoxSizing() {\r
+       if (doc.compatMode == null || doc.compatMode == "BackCompat")\r
+               return "border-box";\r
+       return "content-box"\r
+}\r
+\r
+/* width and height setters */\r
+function setBorderBoxWidth(n) {\r
+       element.runtimeStyle.width = Math.max(0, n - getBorderLeftWidth() -\r
+               getPaddingLeft() - getPaddingRight() - getBorderRightWidth()) + "px";\r
+}\r
+\r
+function setBorderBoxHeight(n) {\r
+       element.runtimeStyle.height = Math.max(0, n - getBorderTopWidth() -\r
+               getPaddingTop() - getPaddingBottom() - getBorderBottomWidth()) + "px";\r
+}\r
+\r
+function setContentBoxWidth(n) {\r
+       element.runtimeStyle.width = Math.max(0, n + getBorderLeftWidth() +\r
+               getPaddingLeft() + getPaddingRight() + getBorderRightWidth()) + "px";\r
+}\r
+\r
+function setContentBoxHeight(n) {\r
+       element.runtimeStyle.height = Math.max(0, n + getBorderTopWidth() +\r
+               getPaddingTop() + getPaddingBottom() + getBorderBottomWidth()) + "px";\r
+}\r
+/* end width and height setters */\r
+\r
+function updateBorderBoxWidth() {\r
+       element.runtimeStyle.width = "";\r
+       if (getDocumentBoxSizing() == getBoxSizing())\r
+               return;\r
+       var csw = element.currentStyle.width;\r
+       if (csw != "auto" && csw.indexOf("px") != -1) {\r
+               if (getBoxSizing() == "border-box")\r
+                       setBorderBoxWidth(parseInt(csw));\r
+               else\r
+                       setContentBoxWidth(parseInt(csw));\r
+       }\r
+}\r
+\r
+function updateBorderBoxHeight() {\r
+       element.runtimeStyle.height = "";       \r
+       if (getDocumentBoxSizing() == getBoxSizing())\r
+               return;\r
+       var csh = element.currentStyle.height;\r
+       if (csh != "auto" && csh.indexOf("px") != -1) {\r
+               if (getBoxSizing() == "border-box")\r
+                       setBorderBoxHeight(parseInt(csh));\r
+               else\r
+                       setContentBoxHeight(parseInt(csh));\r
+       }\r
+}\r
+\r
+function checkPropertyChange() {\r
+       var pn = event.propertyName;\r
+       var undef;\r
+\r
+       if (pn == "style.boxSizing" && element.style.boxSizing == "") {\r
+               element.style.removeAttribute("boxSizing");\r
+               element.runtimeStyle.boxSizing = undef;         \r
+       }\r
+\r
+\r
+       switch (pn) {\r
+               case "style.width":\r
+               case "style.borderLeftWidth":\r
+               case "style.borderLeftStyle":\r
+               case "style.borderRightWidth":\r
+               case "style.borderRightStyle":\r
+               case "style.paddingLeft":\r
+               case "style.paddingRight":\r
+                       updateBorderBoxWidth();\r
+                       break;\r
+               \r
+               case "style.height":\r
+               case "style.borderTopWidth":\r
+               case "style.borderTopStyle":\r
+               case "style.borderBottomWidth":\r
+               case "style.borderBottomStyle":\r
+               case "style.paddingTop":\r
+               case "style.paddingBottom":\r
+                       updateBorderBoxHeight();\r
+                       break;\r
+               \r
+               case "className":\r
+               case "style.boxSizing":\r
+                       updateBorderBoxWidth();\r
+                       updateBorderBoxHeight();\r
+                       break;\r
+       }\r
+}\r
+\r
+init();\r
+\r
+//]]>\r
+</script>\r
+</component>
\ No newline at end of file