[80] | 1 | /* |
---|
| 2 | IE7, version 0.9 (alpha) (2005-08-19) |
---|
| 3 | Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/) |
---|
| 4 | License: http://creativecommons.org/licenses/LGPL/2.1/ |
---|
| 5 | */ |
---|
| 6 | IE7.addModule("ie7-dhtml", function() { |
---|
| 7 | |
---|
| 8 | /* --------------------------------------------------------------------- |
---|
| 9 | This module is still in development and should not be used. |
---|
| 10 | --------------------------------------------------------------------- */ |
---|
| 11 | |
---|
| 12 | ie7CSS.specialize("recalc", function() { |
---|
| 13 | this.inherit(); |
---|
| 14 | for (var i = 0; i < this.recalcs.length; i++) { |
---|
| 15 | var $recalc = this.recalcs[i]; |
---|
| 16 | for (var j = 0; i < $recalc[3].length; i++) { |
---|
| 17 | _addPropertyChangeHandler($recalc[3][j], _getPropertyName($recalc[2]), $recalc[1]); |
---|
| 18 | } |
---|
| 19 | } |
---|
| 20 | }); |
---|
| 21 | |
---|
| 22 | // constants |
---|
| 23 | var _PATTERNS = { |
---|
| 24 | width: "(width|paddingLeft|paddingRight|borderLeftWidth|borderRightWidth|borderLeftStyle|borderRightStyle)", |
---|
| 25 | height: "(height|paddingTop|paddingBottom|borderTopHeight|borderBottomHeight|borderTopStyle|borderBottomStyle)" |
---|
| 26 | }; |
---|
| 27 | var _PROPERTY_NAMES = { |
---|
| 28 | width: "fixedWidth", |
---|
| 29 | height: "fixedHeight", |
---|
| 30 | right: "width", |
---|
| 31 | bottom: "height" |
---|
| 32 | }; |
---|
| 33 | var _DASH_LETTER = /-(\w)/g; |
---|
| 34 | var _PROPERTY_NAME = /\w+/; |
---|
| 35 | |
---|
| 36 | function _addPropertyChangeHandler($element, $propertyName, $fix) { |
---|
| 37 | addEventHandler($element, "onpropertychange", function() { |
---|
| 38 | if (_getPattern($propertyName).test(event.propertyName)) { |
---|
| 39 | _reset($element, $propertyName); |
---|
| 40 | $fix($element); |
---|
| 41 | } |
---|
| 42 | }); |
---|
| 43 | }; |
---|
| 44 | function _upper($match, $letter) {return $letter.toUpperCase()}; |
---|
| 45 | function _getPropertyName($pattern) { |
---|
| 46 | return String(String($pattern).toLowerCase().replace(_DASH_LETTER, _upper).match(_PROPERTY_NAME)); |
---|
| 47 | }; |
---|
| 48 | function _getPattern($propertyName) { |
---|
| 49 | return eval("/^style." + (_PATTERNS[$propertyName] || $propertyName) + "$/"); |
---|
| 50 | }; |
---|
| 51 | function _reset($element, $propertyName) { |
---|
| 52 | $element.runtimeStyle[$propertyName] = ""; |
---|
| 53 | $propertyName = _PROPERTY_NAMES[$propertyName] |
---|
| 54 | if ($propertyName) $element.runtimeStyle[$propertyName] = ""; |
---|
| 55 | }; |
---|
| 56 | |
---|
| 57 | }); |
---|