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 | }); |
---|