dfect 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/doc/index.html ADDED
@@ -0,0 +1,2323 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml">
5
+ <head>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
7
+
8
+ <meta name="generator" content="ERBook 9.0.0 &mdash; http://snk.tuxfamily.org/lib/erbook/"/>
9
+
10
+ <title>Dfect 1.1.0 &mdash; Assertion testing library for Ruby</title>
11
+
12
+ <meta name="author" content="Suraj N. Kurapati"/>
13
+
14
+ <meta name="date" content="27 October 2009"/>
15
+
16
+ <link rel="alternate" type="application/rss+xml" href="http://snk.tuxfamily.org/lib/dfect/ann.xml"/>
17
+
18
+ <style type="text/css" media="screen">
19
+ /*<![CDATA[*/
20
+ /*
21
+ * jQuery UI CSS Framework
22
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
23
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
24
+ */
25
+
26
+ /* Layout helpers
27
+ ----------------------------------*/
28
+ .ui-helper-hidden { display: none; }
29
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
30
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
31
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
32
+ .ui-helper-clearfix { display: inline-block; }
33
+ /* required comment for clearfix to work in Opera \*/
34
+ * html .ui-helper-clearfix { height:1%; }
35
+ .ui-helper-clearfix { display:block; }
36
+ /* end clearfix */
37
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
38
+
39
+
40
+ /* Interaction Cues
41
+ ----------------------------------*/
42
+ .ui-state-disabled { cursor: default !important; }
43
+
44
+
45
+ /* Icons
46
+ ----------------------------------*/
47
+
48
+ /* states and images */
49
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
50
+
51
+
52
+ /* Misc visuals
53
+ ----------------------------------*/
54
+
55
+ /* Overlays */
56
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
57
+
58
+
59
+
60
+ /*
61
+ * jQuery UI CSS Framework
62
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
63
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
64
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
65
+ */
66
+
67
+
68
+ /* Component containers
69
+ ----------------------------------*/
70
+ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
71
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
72
+ .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAeUlEQVRoge3OMQHAIBAAsVL/nh8JDDfAkCjImpn5HvbfDpwIVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVhtqiwTEKTLXTgAAAABJRU5ErkJggg==") 50% 50% repeat-x; color: #222222; }
73
+ .ui-widget-content a { color: #222222; }
74
+ .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAALElEQVQYlWN49OjRfyYGBgaGIUT8//8fSqBx0Yh///4RL8vAwAAVQ2MNOwIAl6g6KkOJwk8AAAAASUVORK5CYII=") 50% 50% repeat-x; color: #222222; font-weight: bold; }
75
+ .ui-widget-header a { color: #222222; }
76
+
77
+ /* Interaction states
78
+ ----------------------------------*/
79
+ .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAANUlEQVQ4je3LMQoAIBADwb38/6t5wFXaWAiCtUiaYZvF9hBACOFbuntVVe11B0CSjjeE8BwThQIJ8dhEl0YAAAAASUVORK5CYII=") 50% 50% repeat-x; font-weight: normal; color: #555555; outline: none; }
80
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; outline: none; }
81
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAANklEQVQ4jWN48uTJfyYGBgaGUWKUGCWGLfHt2zcoi5GREYNgYmJCZiG42IiB98woMUqMEtgIAMdjCdyg+eEBAAAAAElFTkSuQmCC") 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
82
+ .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; outline: none; }
83
+ .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAMElEQVQ4je3LIQ4AIBTD0O3f/8wrFgmKhMy8pKJKwkhSKeVbbGuAPU9f4PIopTxgAeS0DRtI4yK0AAAAAElFTkSuQmCC") 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
84
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; }
85
+
86
+ /* Interaction Cues
87
+ ----------------------------------*/
88
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAP0lEQVQ4je3PMQrAMABC0a/3v2zX0mCXNkOgc6C4PARd5DqPGKCU8luS8SbAQhiCQRgJE56kZTfbbP9RSvnkBsWcEAZRWcgqAAAAAElFTkSuQmCC") 50% 50% repeat-x; color: #363636; }
89
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
90
+ .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAPklEQVQ4je3PMQqAMABD0Z/c/7aCIAXjJIhD10LJ8vgZw30eMUApZV/GhZNgSTjoLYElY/hNMJ/S6gullCkPiCIPCr4NiEwAAAAASUVORK5CYII=") 50% 50% repeat-x; color: #cd0a0a; }
91
+ .ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
92
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
93
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
94
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
95
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
96
+
97
+ /* Icons
98
+ ----------------------------------*/
99
+
100
+ /* states and images */
101
+ .ui-icon { width: 16px; height: 16px; background-image: url("data:image/png;base64,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"); }
102
+ .ui-widget-content .ui-icon {background-image: url("data:image/png;base64,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"); }
103
+ .ui-widget-header .ui-icon {background-image: url("data:image/png;base64,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"); }
104
+ .ui-state-default .ui-icon { background-image: url("data:image/png;base64,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"); }
105
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url("data:image/png;base64,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"); }
106
+ .ui-state-active .ui-icon {background-image: url("data:image/png;base64,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"); }
107
+ .ui-state-highlight .ui-icon {background-image: url("data:image/png;base64,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"); }
108
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url("data:image/png;base64,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"); }
109
+
110
+ /* positioning */
111
+ .ui-icon-carat-1-n { background-position: 0 0; }
112
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
113
+ .ui-icon-carat-1-e { background-position: -32px 0; }
114
+ .ui-icon-carat-1-se { background-position: -48px 0; }
115
+ .ui-icon-carat-1-s { background-position: -64px 0; }
116
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
117
+ .ui-icon-carat-1-w { background-position: -96px 0; }
118
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
119
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
120
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
121
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
122
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
123
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
124
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
125
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
126
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
127
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
128
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
129
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
130
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
131
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
132
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
133
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
134
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
135
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
136
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
137
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
138
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
139
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
140
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
141
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
142
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
143
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
144
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
145
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
146
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
147
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
148
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
149
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
150
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
151
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
152
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
153
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
154
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
155
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
156
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
157
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
158
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
159
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
160
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
161
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
162
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
163
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
164
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
165
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
166
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
167
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
168
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
169
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
170
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
171
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
172
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
173
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
174
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
175
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
176
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
177
+ .ui-icon-extlink { background-position: -32px -80px; }
178
+ .ui-icon-newwin { background-position: -48px -80px; }
179
+ .ui-icon-refresh { background-position: -64px -80px; }
180
+ .ui-icon-shuffle { background-position: -80px -80px; }
181
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
182
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
183
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
184
+ .ui-icon-folder-open { background-position: -16px -96px; }
185
+ .ui-icon-document { background-position: -32px -96px; }
186
+ .ui-icon-document-b { background-position: -48px -96px; }
187
+ .ui-icon-note { background-position: -64px -96px; }
188
+ .ui-icon-mail-closed { background-position: -80px -96px; }
189
+ .ui-icon-mail-open { background-position: -96px -96px; }
190
+ .ui-icon-suitcase { background-position: -112px -96px; }
191
+ .ui-icon-comment { background-position: -128px -96px; }
192
+ .ui-icon-person { background-position: -144px -96px; }
193
+ .ui-icon-print { background-position: -160px -96px; }
194
+ .ui-icon-trash { background-position: -176px -96px; }
195
+ .ui-icon-locked { background-position: -192px -96px; }
196
+ .ui-icon-unlocked { background-position: -208px -96px; }
197
+ .ui-icon-bookmark { background-position: -224px -96px; }
198
+ .ui-icon-tag { background-position: -240px -96px; }
199
+ .ui-icon-home { background-position: 0 -112px; }
200
+ .ui-icon-flag { background-position: -16px -112px; }
201
+ .ui-icon-calendar { background-position: -32px -112px; }
202
+ .ui-icon-cart { background-position: -48px -112px; }
203
+ .ui-icon-pencil { background-position: -64px -112px; }
204
+ .ui-icon-clock { background-position: -80px -112px; }
205
+ .ui-icon-disk { background-position: -96px -112px; }
206
+ .ui-icon-calculator { background-position: -112px -112px; }
207
+ .ui-icon-zoomin { background-position: -128px -112px; }
208
+ .ui-icon-zoomout { background-position: -144px -112px; }
209
+ .ui-icon-search { background-position: -160px -112px; }
210
+ .ui-icon-wrench { background-position: -176px -112px; }
211
+ .ui-icon-gear { background-position: -192px -112px; }
212
+ .ui-icon-heart { background-position: -208px -112px; }
213
+ .ui-icon-star { background-position: -224px -112px; }
214
+ .ui-icon-link { background-position: -240px -112px; }
215
+ .ui-icon-cancel { background-position: 0 -128px; }
216
+ .ui-icon-plus { background-position: -16px -128px; }
217
+ .ui-icon-plusthick { background-position: -32px -128px; }
218
+ .ui-icon-minus { background-position: -48px -128px; }
219
+ .ui-icon-minusthick { background-position: -64px -128px; }
220
+ .ui-icon-close { background-position: -80px -128px; }
221
+ .ui-icon-closethick { background-position: -96px -128px; }
222
+ .ui-icon-key { background-position: -112px -128px; }
223
+ .ui-icon-lightbulb { background-position: -128px -128px; }
224
+ .ui-icon-scissors { background-position: -144px -128px; }
225
+ .ui-icon-clipboard { background-position: -160px -128px; }
226
+ .ui-icon-copy { background-position: -176px -128px; }
227
+ .ui-icon-contact { background-position: -192px -128px; }
228
+ .ui-icon-image { background-position: -208px -128px; }
229
+ .ui-icon-video { background-position: -224px -128px; }
230
+ .ui-icon-script { background-position: -240px -128px; }
231
+ .ui-icon-alert { background-position: 0 -144px; }
232
+ .ui-icon-info { background-position: -16px -144px; }
233
+ .ui-icon-notice { background-position: -32px -144px; }
234
+ .ui-icon-help { background-position: -48px -144px; }
235
+ .ui-icon-check { background-position: -64px -144px; }
236
+ .ui-icon-bullet { background-position: -80px -144px; }
237
+ .ui-icon-radio-off { background-position: -96px -144px; }
238
+ .ui-icon-radio-on { background-position: -112px -144px; }
239
+ .ui-icon-pin-w { background-position: -128px -144px; }
240
+ .ui-icon-pin-s { background-position: -144px -144px; }
241
+ .ui-icon-play { background-position: 0 -160px; }
242
+ .ui-icon-pause { background-position: -16px -160px; }
243
+ .ui-icon-seek-next { background-position: -32px -160px; }
244
+ .ui-icon-seek-prev { background-position: -48px -160px; }
245
+ .ui-icon-seek-end { background-position: -64px -160px; }
246
+ .ui-icon-seek-first { background-position: -80px -160px; }
247
+ .ui-icon-stop { background-position: -96px -160px; }
248
+ .ui-icon-eject { background-position: -112px -160px; }
249
+ .ui-icon-volume-off { background-position: -128px -160px; }
250
+ .ui-icon-volume-on { background-position: -144px -160px; }
251
+ .ui-icon-power { background-position: 0 -176px; }
252
+ .ui-icon-signal-diag { background-position: -16px -176px; }
253
+ .ui-icon-signal { background-position: -32px -176px; }
254
+ .ui-icon-battery-0 { background-position: -48px -176px; }
255
+ .ui-icon-battery-1 { background-position: -64px -176px; }
256
+ .ui-icon-battery-2 { background-position: -80px -176px; }
257
+ .ui-icon-battery-3 { background-position: -96px -176px; }
258
+ .ui-icon-circle-plus { background-position: 0 -192px; }
259
+ .ui-icon-circle-minus { background-position: -16px -192px; }
260
+ .ui-icon-circle-close { background-position: -32px -192px; }
261
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
262
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
263
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
264
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
265
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
266
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
267
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
268
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
269
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
270
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
271
+ .ui-icon-circle-check { background-position: -208px -192px; }
272
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
273
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
274
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
275
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
276
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
277
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
278
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
279
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
280
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
281
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
282
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
283
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
284
+
285
+
286
+ /* Misc visuals
287
+ ----------------------------------*/
288
+
289
+ /* Corner radius */
290
+ .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
291
+ .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
292
+ .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
293
+ .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
294
+ .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
295
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
296
+ .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
297
+ .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
298
+ .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
299
+
300
+ /* Overlays */
301
+ .ui-widget-overlay { background: #aaaaaa url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAe0lEQVRoge3OMQHAIBAAMcC/kjdZJHTI0A4XBdkz86wfO18H3hRUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUF8O8A8WdY6opAAAAAElFTkSuQmCC") 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
302
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAe0lEQVRoge3OMQHAIBAAMcC/kjdZJHTI0A4XBdkz86wfO18H3hRUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUF8O8A8WdY6opAAAAAElFTkSuQmCC") 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion
303
+ ----------------------------------*/
304
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
305
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
306
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
307
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
308
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
309
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
310
+ .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
311
+ ----------------------------------*/
312
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; }
313
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
314
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
315
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
316
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
317
+ .ui-datepicker .ui-datepicker-next { right:2px; }
318
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
319
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
320
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
321
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
322
+ .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
323
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
324
+ .ui-datepicker select.ui-datepicker-month,
325
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
326
+ .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
327
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
328
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
329
+ .ui-datepicker td { border: 0; padding: 1px; }
330
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
331
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
332
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
333
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
334
+
335
+ /* with multiple calendars */
336
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
337
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
338
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
339
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
340
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
341
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
342
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
343
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
344
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
345
+ .ui-datepicker-row-break { clear:both; width:100%; }
346
+
347
+ /* RTL support */
348
+ .ui-datepicker-rtl { direction: rtl; }
349
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
350
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
351
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
352
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
353
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
354
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
355
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
356
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
357
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
358
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
359
+
360
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
361
+ .ui-datepicker-cover {
362
+ display: none; /*sorry for IE5*/
363
+ display/**/: block; /*sorry for IE5*/
364
+ position: absolute; /*must have*/
365
+ z-index: -1; /*must have*/
366
+ filter: mask(); /*must have*/
367
+ top: -4px; /*must have*/
368
+ left: -4px; /*must have*/
369
+ width: 200px; /*must have*/
370
+ height: 200px; /*must have*/
371
+ }/* Dialog
372
+ ----------------------------------*/
373
+ .ui-dialog { position: relative; padding: .2em; width: 300px; }
374
+ .ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
375
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
376
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
377
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
378
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
379
+ .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
380
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
381
+ .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
382
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
383
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
384
+ /* Progressbar
385
+ ----------------------------------*/
386
+ .ui-progressbar { height:2em; text-align: left; }
387
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
388
+ ----------------------------------*/
389
+ .ui-resizable { position: relative;}
390
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
391
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
392
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
393
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
394
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
395
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
396
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
397
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
398
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
399
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
400
+ ----------------------------------*/
401
+ .ui-slider { position: relative; text-align: left; }
402
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
403
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
404
+
405
+ .ui-slider-horizontal { height: .8em; }
406
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
407
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
408
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
409
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
410
+
411
+ .ui-slider-vertical { width: .8em; height: 100px; }
412
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
413
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
414
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
415
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
416
+ ----------------------------------*/
417
+ .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
418
+ .ui-tabs .ui-tabs-nav { list-style: none; margin: 0; padding: .2em .2em 0; }
419
+ .ui-tabs .ui-tabs-nav li { float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
420
+ .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
421
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
422
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
423
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
424
+ .ui-tabs .ui-tabs-panel { display: block; border: 0; padding: 1em 1.4em; background: none; }
425
+ .ui-tabs .ui-tabs-hide { display: none !important; }
426
+
427
+ /*]]>*/
428
+ </style>
429
+
430
+ <style type="text/css" media="all">
431
+ /*<![CDATA[*/body {
432
+ color: #000000;
433
+ background-color: #FFFFFF;
434
+ line-height: 1.5em;
435
+ font-family: Calibri, Verdana, sans-serif; }
436
+
437
+ em, strong, dt {
438
+ font-family: Constantia, "Book Antiqua", "URW Bookman L", serif; }
439
+
440
+ blockquote {
441
+ color: #333;
442
+ font-style: italic;
443
+ background-image: url(84728784);
444
+ background-repeat: no-repeat;
445
+ margin-left: 0;
446
+ padding-left: 65px;
447
+ min-height: 50px; }
448
+
449
+ hr {
450
+ height: 0;
451
+ border: 0;
452
+ border-top: thin dashed #000000; }
453
+
454
+ tt, code, pre {
455
+ font-family: Monaco, Consolas, "Lucida Console", monospace;
456
+ font-size: 1em;
457
+ line-height: 1em; }
458
+
459
+ code.para {
460
+ white-space: pre; }
461
+
462
+ ins {
463
+ text-decoration: none; }
464
+
465
+ a > img {
466
+ border: none; }
467
+
468
+ dt {
469
+ margin-top: 1.5em;
470
+ font-weight: bolder; }
471
+
472
+ h1, h2, h3, h4, h5, h6, .title {
473
+ font-weight: lighter;
474
+ font-family: Constantia, "Book Antiqua", "URW Bookman L", serif; }
475
+
476
+ #__lof__ h1, #__lof__ h2, #__lof__ h3, #__lof__ h4, #__lof__ h5, #__lof__ h6 {
477
+ margin-top: 1.25em; }
478
+
479
+ #__doc__ h1, #__doc__ h2, #__doc__ h3, #__doc__ h4, #__doc__ h5, #__doc__ h6 {
480
+ margin-top: 2.5em;
481
+ line-height: 1.25em; }
482
+ #__doc__ h1 {
483
+ font-size: 2.0em; }
484
+ #__doc__ h2 {
485
+ font-size: 1.8em; }
486
+ #__doc__ h3 {
487
+ font-size: 1.6em; }
488
+ #__doc__ h4 {
489
+ font-size: 1.4em; }
490
+ #__doc__ h5 {
491
+ font-size: 1.2em; }
492
+ #__doc__ h6 {
493
+ font-size: 1.0em; }
494
+
495
+ table {
496
+ border: none;
497
+ border-collapse: collapse;
498
+ margin: auto;
499
+ margin-top: 1em;
500
+ margin-bottom: 1em; }
501
+
502
+ th, td {
503
+ padding: 1em;
504
+ border: 1px solid #bbb;
505
+ vertical-align: top;
506
+ background-color: #FFFFFF; }
507
+
508
+ th {
509
+ background-color: #F5F5F5; }
510
+
511
+ #__header__ > .title {
512
+ font-size: 2.25em; }
513
+
514
+ @media print {
515
+ #__header__ .printer_friendly_toggle {
516
+ display: none; } }
517
+
518
+ @media screen {
519
+ #__header__ .printer_friendly_toggle {
520
+ display: inline; } }
521
+
522
+ #__abstract__ {
523
+ margin-bottom: 5em; }
524
+
525
+ #__toc__ ul > li {
526
+ list-style-type: none; }
527
+ #__toc__ li ul {
528
+ padding-bottom: 1em; }
529
+ #__toc__ > ul {
530
+ padding-left: 1em; }
531
+
532
+ #__footer__ {
533
+ padding-top: 1em;
534
+ text-align: center;
535
+ margin: auto; }
536
+
537
+ .part > .title, .chapter > .title {
538
+ padding-bottom: 0.5em; }
539
+
540
+ .part > .title > big, .chapter > .title > big {
541
+ display: block;
542
+ margin-top: 0.25em; }
543
+
544
+ .paragraph > .title, .tip > .title, .note > .title, .caution > .title, .warning > .title, .important > .title, .figure > .title, .table > .title, .example > .title, .equation > .title, .procedure > .title {
545
+ font-size: large;
546
+ margin-top: 2em; }
547
+
548
+ .tip, .note, .caution, .warning, .important, .figure, .table, .example, .equation, .procedure {
549
+ margin: 3em; }
550
+
551
+ .tip .nav, .note .nav, .caution .nav, .warning .nav, .important .nav, .figure .nav, .table .nav, .example .nav, .equation .nav, .procedure .nav {
552
+ margin-right: -3em; }
553
+
554
+ .tip > .content, .note > .content, .caution > .content, .warning > .content, .important > .content, .figure > .content, .table > .content, .example > .content, .equation > .content, .procedure > .content {
555
+ min-height: 48px; }
556
+
557
+ .tip > .content > .icon, .note > .content > .icon, .caution > .content > .icon, .warning > .content > .icon, .important > .content > .icon {
558
+ float: left;
559
+ margin-top: 0;
560
+ margin-right: 1em;
561
+ margin-bottom: 1em;
562
+ margin-left: 0; }
563
+
564
+ .figure > .title {
565
+ text-align: center; }
566
+ .figure > .content img {
567
+ display: block;
568
+ margin: auto; }
569
+ /*]]>*/
570
+ </style>
571
+
572
+ <style type="text/css" media="screen">
573
+ /*<![CDATA[*/body {
574
+ margin: 0;
575
+ padding: 0.5em;
576
+ background-color: #FFFFFF; }
577
+
578
+ #__body__, #__abstract__ > .title, #__toc__ > .title, .part > .title, .chapter > .title, .section > .title, .paragraph > .title, #__bib__ > .title {
579
+ display: none; }
580
+
581
+ .tabs {
582
+ clear: both; }
583
+
584
+ .ui-widget {
585
+ font-size: 1em; }
586
+
587
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a {
588
+ cursor: pointer; }
589
+
590
+ tt {
591
+ background-color: #F0F8FF; }
592
+
593
+ pre {
594
+ cursor: text;
595
+ line-height: normal;
596
+ border: 1px solid #b1d827;
597
+ background-color: #F5FFDF;
598
+ padding: 1em;
599
+ display: inline-block;
600
+ margin: 0;
601
+ min-width: 92.5%; }
602
+
603
+ code.para {
604
+ cursor: text;
605
+ line-height: normal;
606
+ border: 1px solid #b1d827;
607
+ background-color: #F5FFDF;
608
+ padding: 1em;
609
+ display: inline-block;
610
+ margin: 0;
611
+ min-width: 92.5%;
612
+ background-color: #FFFFE8;
613
+ border-color: #EEDD88; }
614
+
615
+ pre.para {
616
+ background-color: #FFFFE8;
617
+ border-color: #EEDD88; }
618
+
619
+ a {
620
+ text-decoration: none; }
621
+ a:hover {
622
+ text-decoration: underline; }
623
+ a:link {
624
+ color: #0038E1; }
625
+ a:visited {
626
+ color: #800080; }
627
+ a[href]:not([href^="#"]) {
628
+ background: url(84731990);
629
+ background-position: center right;
630
+ background-repeat: no-repeat;
631
+ padding-right: 13px; }
632
+
633
+ #__header__ > .logo {
634
+ text-align: center; }
635
+ #__header__ > .title_and_subtitle {
636
+ float: left;
637
+ margin-right: 1.5em; }
638
+ #__header__ > .title_and_subtitle .title {
639
+ margin-top: 0.25em; }
640
+ #__header__ > .authors_and_date {
641
+ text-align: right; }
642
+ #__header__ > .authors_and_date .authors, #__header__ > .authors_and_date .date {
643
+ margin-top: 0;
644
+ margin-bottom: 0.25em; }
645
+ #__header__ > .authors_and_date .date {
646
+ font-weight: lighter; }
647
+
648
+ #__toc__ li ul {
649
+ border-left: thick solid #F5F5F5; }
650
+ #__toc__ li ul:hover {
651
+ border-color: #DCDCDC; }
652
+
653
+ #__toc__ a:target, #__lof__ a:target {
654
+ background: url(84731598);
655
+ background-position: center right;
656
+ background-repeat: no-repeat;
657
+ padding-right: 20px; }
658
+
659
+ .nav {
660
+ float: right;
661
+ clear: right; }
662
+ .nav > a > img:hover {
663
+ background-color: yellow; }
664
+
665
+ .ui-tabs > .ui-tabs-panel > .nav {
666
+ position: relative;
667
+ margin-top: -3.375em;
668
+ margin-right: -1em; }
669
+
670
+ .ui-tabs > .ui-tabs-nav > li:last-child {
671
+ margin-right: 9em; }
672
+
673
+ #__nfo__ > table td:first-child, #__nfo__ > .validations {
674
+ text-align: center; }
675
+ /*]]>*/
676
+ </style>
677
+
678
+ <style type="text/css" media="print">
679
+ /*<![CDATA[*/body {
680
+ font-family: Constantia, "Book Antiqua", "URW Bookman L", serif; }
681
+
682
+ em, strong, dt {
683
+ font-family: Calibri, Verdana, sans-serif; }
684
+
685
+ tt {
686
+ font-weight: normal; }
687
+
688
+ pre {
689
+ border: none; }
690
+
691
+ h1, h2, h3, h4, h5, h6, .title {
692
+ font-weight: normal;
693
+ font-family: Calibri, Verdana, sans-serif;
694
+ clear: both; }
695
+
696
+ a:link, a:visited {
697
+ color: #000000;
698
+ text-decoration: none; }
699
+ a[href]:not([href^="#"]):link, a[href]:not([href^="#"]):visited {
700
+ color: #0000FF;
701
+ text-decoration: underline;
702
+ font-weight: bolder; }
703
+ a.xref[title]:link, a.xref[title]:visited {
704
+ color: #0000FF;
705
+ text-decoration: underline;
706
+ font-weight: bolder; }
707
+ a[href]:not([href^="#"]):after {
708
+ content: " " attr(href);
709
+ font-family: Monaco, Consolas, "Lucida Console", monospace; }
710
+ a.xref[title]:after {
711
+ content: " " attr(title); }
712
+ a:after {
713
+ font-weight: normal;
714
+ font-size: smaller; }
715
+
716
+ .tabs > ul, .nav, #__lof__, #__nfo__ {
717
+ display: none; }
718
+
719
+ #__toc__, .part, .chapter, #__bib__ {
720
+ page-break-before: always; }
721
+
722
+ #__header__, #__footer__ {
723
+ text-align: center; }
724
+
725
+ #__header__ > .authors_and_date > .authors {
726
+ margin-top: 1.625em;
727
+ margin-bottom: -0.25em; }
728
+
729
+ .header_outside_above, #__header__, .header_outside_below, .logo {
730
+ margin-bottom: 5em; }
731
+
732
+ .footer_outside_above, #__footer__, .footer_outside_below, #__bib__, #__nfo__ {
733
+ margin-top: 5em; }
734
+
735
+ #__header__ .header_inside_above, #__footer__ .footer_inside_above {
736
+ margin-bottom: 4em; }
737
+
738
+ #__header__ .header_inside_below, #__footer__ .footer_inside_below {
739
+ margin-top: 4em; }
740
+
741
+ .part > .title > big, .chapter > .title > big {
742
+ padding-bottom: 0.5em; }
743
+ /*]]>*/
744
+ </style>
745
+
746
+ <script type="text/javascript">
747
+ //<![CDATA[
748
+ /*
749
+ * jQuery JavaScript Library v1.3.2
750
+ * http://jquery.com/
751
+ *
752
+ * Copyright (c) 2009 John Resig
753
+ * Dual licensed under the MIT and GPL licenses.
754
+ * http://docs.jquery.com/License
755
+ *
756
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
757
+ * Revision: 6246
758
+ */
759
+ (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
760
+ /*
761
+ * Sizzle CSS Selector Engine - v0.9.3
762
+ * Copyright 2009, The Dojo Foundation
763
+ * Released under the MIT, BSD, and GPL Licenses.
764
+ * More information: http://sizzlejs.com/
765
+ */
766
+ (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
767
+ /*
768
+ * jQuery UI 1.7.2
769
+ *
770
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
771
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
772
+ * and GPL (GPL-LICENSE.txt) licenses.
773
+ *
774
+ * http://docs.jquery.com/UI
775
+ */
776
+ jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/*
777
+ * jQuery UI Tabs 1.7.2
778
+ *
779
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
780
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
781
+ * and GPL (GPL-LICENSE.txt) licenses.
782
+ *
783
+ * http://docs.jquery.com/UI/Tabs
784
+ *
785
+ * Depends:
786
+ * ui.core.js
787
+ */
788
+ (function(a){a.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable}this._tabify(true)},_setData:function(b,c){if(b=="selected"){if(this.options.collapsible&&c==this.options.selected){return}this.select(c)}else{this.options[b]=c;if(b=="deselectable"){this.options.collapsible=c}this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+a.data(b)},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+a.data(this.list[0]));return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(c,b){return{tab:c,panel:b,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(n){this.list=this.element.children("ul:first");this.lis=a("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);var p=this,d=this.options;var c=/^#.+/;this.anchors.each(function(r,o){var q=a(o).attr("href");var s=q.split("#")[0],u;if(s&&(s===location.toString().split("#")[0]||(u=a("base")[0])&&s===u.href)){q=o.hash;o.href=q}if(c.test(q)){p.panels=p.panels.add(p._sanitizeSelector(q))}else{if(q!="#"){a.data(o,"href.tabs",q);a.data(o,"load.tabs",q.replace(/#.*$/,""));var w=p._tabId(o);o.href="#"+w;var v=a("#"+w);if(!v.length){v=a(d.panelTemplate).attr("id",w).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r-1]||p.list);v.data("destroy.tabs",true)}p.panels=p.panels.add(v)}else{d.disabled.push(r)}}});if(n){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(d.selected===undefined){if(location.hash){this.anchors.each(function(q,o){if(o.hash==location.hash){d.selected=q;return false}})}if(typeof d.selected!="number"&&d.cookie){d.selected=parseInt(p._cookie(),10)}if(typeof d.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}d.selected=d.selected||0}else{if(d.selected===null){d.selected=-1}}d.selected=((d.selected>=0&&this.anchors[d.selected])||d.selected<0)?d.selected:0;d.disabled=a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(q,o){return p.lis.index(q)}))).sort();if(a.inArray(d.selected,d.disabled)!=-1){d.disabled.splice(a.inArray(d.selected,d.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(d.selected>=0&&this.anchors.length){this.panels.eq(d.selected).removeClass("ui-tabs-hide");this.lis.eq(d.selected).addClass("ui-tabs-selected ui-state-active");p.element.queue("tabs",function(){p._trigger("show",null,p._ui(p.anchors[d.selected],p.panels[d.selected]))});this.load(d.selected)}a(window).bind("unload",function(){p.lis.add(p.anchors).unbind(".tabs");p.lis=p.anchors=p.panels=null})}else{d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[d.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(d.cookie){this._cookie(d.selected,d.cookie)}for(var g=0,m;(m=this.lis[g]);g++){a(m)[a.inArray(g,d.disabled)!=-1&&!a(m).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(d.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(d.event!="mouseover"){var f=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var j=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){f("hover",a(this))});this.lis.bind("mouseout.tabs",function(){j("hover",a(this))});this.anchors.bind("focus.tabs",function(){f("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var b,h;if(d.fx){if(a.isArray(d.fx)){b=d.fx[0];h=d.fx[1]}else{b=h=d.fx}}function e(i,o){i.css({display:""});if(a.browser.msie&&o.opacity){i[0].style.removeAttribute("filter")}}var k=h?function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(h,h.duration||"normal",function(){e(o,h);p._trigger("show",null,p._ui(i,o[0]))})}:function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");p._trigger("show",null,p._ui(i,o[0]))};var l=b?function(o,i){i.animate(b,b.duration||"normal",function(){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");e(i,b);p.element.dequeue("tabs")})}:function(o,i,q){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");p.element.dequeue("tabs")};this.anchors.bind(d.event+".tabs",function(){var o=this,r=a(this).closest("li"),i=p.panels.filter(":not(.ui-tabs-hide)"),q=a(p._sanitizeSelector(this.hash));if((r.hasClass("ui-tabs-selected")&&!d.collapsible)||r.hasClass("ui-state-disabled")||r.hasClass("ui-state-processing")||p._trigger("select",null,p._ui(this,q[0]))===false){this.blur();return false}d.selected=p.anchors.index(this);p.abort();if(d.collapsible){if(r.hasClass("ui-tabs-selected")){d.selected=-1;if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){l(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this));this.blur();return false}}}if(d.cookie){p._cookie(d.selected,d.cookie)}if(q.length){if(i.length){p.element.queue("tabs",function(){l(o,i)})}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(a.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var c=a.data(this,"href.tabs");if(c){this.href=c}var d=a(this).unbind(".tabs");a.each(["href","load","cache"],function(e,f){d.removeData(f+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(a.data(this,"destroy.tabs")){a(this).remove()}else{a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(b.cookie){this._cookie(null,b.cookie)}},add:function(e,d,c){if(c===undefined){c=this.anchors.length}var b=this,g=this.options,i=a(g.tabTemplate.replace(/#\{href\}/g,e).replace(/#\{label\}/g,d)),h=!e.indexOf("#")?e.replace("#",""):this._tabId(a("a",i)[0]);i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var f=a("#"+h);if(!f.length){f=a(g.panelTemplate).attr("id",h).data("destroy.tabs",true)}f.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(c>=this.lis.length){i.appendTo(this.list);f.appendTo(this.list[0].parentNode)}else{i.insertBefore(this.lis[c]);f.insertBefore(this.panels[c])}g.disabled=a.map(g.disabled,function(k,j){return k>=c?++k:k});this._tabify();if(this.anchors.length==1){i.addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[c],this.panels[c]))},remove:function(b){var d=this.options,e=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(e.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(b+(b+1<this.anchors.length?1:-1))}d.disabled=a.map(a.grep(d.disabled,function(g,f){return g!=b}),function(g,f){return g>=b?--g:g});this._tabify();this._trigger("remove",null,this._ui(e.find("a")[0],c[0]))},enable:function(b){var c=this.options;if(a.inArray(b,c.disabled)==-1){return}this.lis.eq(b).removeClass("ui-state-disabled");c.disabled=a.grep(c.disabled,function(e,d){return e!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]))},disable:function(c){var b=this,d=this.options;if(c!=d.selected){this.lis.eq(c).addClass("ui-state-disabled");d.disabled.push(c);d.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}},select:function(b){if(typeof b=="string"){b=this.anchors.index(this.anchors.filter("[href$="+b+"]"))}else{if(b===null){b=-1}}if(b==-1&&this.options.collapsible){b=this.options.selected}this.anchors.eq(b).trigger(this.options.event+".tabs")},load:function(e){var c=this,g=this.options,b=this.anchors.eq(e)[0],d=a.data(b,"load.tabs");this.abort();if(!d||this.element.queue("tabs").length!==0&&a.data(b,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(e).addClass("ui-state-processing");if(g.spinner){var f=a("span",b);f.data("label.tabs",f.html()).html(g.spinner)}this.xhr=a.ajax(a.extend({},g.ajaxOptions,{url:d,success:function(i,h){a(c._sanitizeSelector(b.hash)).html(i);c._cleanup();if(g.cache){a.data(b,"cache.tabs",true)}c._trigger("load",null,c._ui(c.anchors[e],c.panels[e]));try{g.ajaxOptions.success(i,h)}catch(j){}c.element.dequeue("tabs")}}))},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup()},url:function(c,b){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",b)},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.7.2",getter:"length",defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:"click",fx:null,idPrefix:"ui-tabs-",panelTemplate:"<div></div>",spinner:"<em>Loading&#8230;</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'}});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(d,f){var b=this,g=this.options;var c=b._rotate||(b._rotate=function(h){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var i=g.selected;b.select(++i<b.anchors.length?i:0)},d);if(h){h.stopPropagation()}});var e=b._unrotate||(b._unrotate=!f?function(h){if(h.clientX){b.rotate(null)}}:function(h){t=g.selected;c()});if(d){this.element.bind("tabsshow",c);this.anchors.bind(g.event+".tabs",e);c()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",c);this.anchors.unbind(g.event+".tabs",e);delete this._rotate;delete this._unrotate}}})})(jQuery);;/*
789
+ * jQuery UI Effects 1.7.2
790
+ *
791
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
792
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
793
+ * and GPL (GPL-LICENSE.txt) licenses.
794
+ *
795
+ * http://docs.jquery.com/UI/Effects/
796
+ */
797
+ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(var f=0;f<h.length;f++){if(h[f]!==null){g.data("ec.storage."+h[f],g[0].style[h[f]])}}},restore:function(g,h){for(var f=0;f<h.length;f++){if(h[f]!==null){g.css(h[f],g.data("ec.storage."+h[f]))}}},setMode:function(f,g){if(g=="toggle"){g=f.is(":hidden")?"show":"hide"}return g},getBaseline:function(g,h){var i,f;switch(g[0]){case"top":i=0;break;case"middle":i=0.5;break;case"bottom":i=1;break;default:i=g[0]/h.height}switch(g[1]){case"left":f=0;break;case"center":f=0.5;break;case"right":f=1;break;default:f=g[1]/h.width}return{x:f,y:i}},createWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent()}var g={width:f.outerWidth(true),height:f.outerHeight(true),"float":f.css("float")};f.wrap('<div class="ui-effects-wrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');var j=f.parent();if(f.css("position")=="static"){j.css({position:"relative"});f.css({position:"relative"})}else{var i=f.css("top");if(isNaN(parseInt(i,10))){i="auto"}var h=f.css("left");if(isNaN(parseInt(h,10))){h="auto"}j.css({position:f.css("position"),top:i,left:h,zIndex:f.css("z-index")}).show();f.css({position:"relative",top:0,left:0})}j.css(g);return j},removeWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent().replaceWith(f)}return f},setTransition:function(g,i,f,h){h=h||{};d.each(i,function(k,j){unit=g.cssUnit(j);if(unit[0]>0){h[j]=unit[0]*f+unit[1]}});return h},animateClass:function(h,i,k,j){var f=(typeof k=="function"?k:(j?j:null));var g=(typeof k=="string"?k:null);return this.each(function(){var q={};var o=d(this);var p=o.attr("style")||"";if(typeof p=="object"){p=p.cssText}if(h.toggle){o.hasClass(h.toggle)?h.remove=h.toggle:h.add=h.toggle}var l=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.addClass(h.add)}if(h.remove){o.removeClass(h.remove)}var m=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.removeClass(h.add)}if(h.remove){o.addClass(h.remove)}for(var r in m){if(typeof m[r]!="function"&&m[r]&&r.indexOf("Moz")==-1&&r.indexOf("length")==-1&&m[r]!=l[r]&&(r.match(/color/i)||(!r.match(/color/i)&&!isNaN(parseInt(m[r],10))))&&(l.position!="static"||(l.position=="static"&&!r.match(/left|top|bottom|right/)))){q[r]=m[r]}}o.animate(q,i,g,function(){if(typeof d(this).attr("style")=="object"){d(this).attr("style")["cssText"]="";d(this).attr("style")["cssText"]=p}else{d(this).attr("style",p)}if(h.add){d(this).addClass(h.add)}if(h.remove){d(this).removeClass(h.remove)}if(f){f.apply(this,arguments)}})})}};function c(g,f){var i=g[1]&&g[1].constructor==Object?g[1]:{};if(f){i.mode=f}var h=g[1]&&g[1].constructor!=Object?g[1]:(i.duration?i.duration:g[2]);h=d.fx.off?0:typeof h==="number"?h:d.fx.speeds[h]||d.fx.speeds._default;var j=i.callback||(d.isFunction(g[1])&&g[1])||(d.isFunction(g[2])&&g[2])||(d.isFunction(g[3])&&g[3]);return[g[0],i,h,j]}d.fn.extend({_show:d.fn.show,_hide:d.fn.hide,__toggle:d.fn.toggle,_addClass:d.fn.addClass,_removeClass:d.fn.removeClass,_toggleClass:d.fn.toggleClass,effect:function(g,f,h,i){return d.effects[g]?d.effects[g].call(this,{method:g,options:f||{},duration:h,callback:i}):null},show:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._show.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"show"))}},hide:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._hide.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"hide"))}},toggle:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))||(d.isFunction(arguments[0])||typeof arguments[0]=="boolean")){return this.__toggle.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"toggle"))}},addClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{add:g},f,i,h]):this._addClass(g)},removeClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{remove:g},f,i,h]):this._removeClass(g)},toggleClass:function(g,f,i,h){return((typeof f!=="boolean")&&f)?d.effects.animateClass.apply(this,[{toggle:g},f,i,h]):this._toggleClass(g,f)},morph:function(f,h,g,j,i){return d.effects.animateClass.apply(this,[{add:h,remove:f},g,j,i])},switchClass:function(){return this.morph.apply(this,arguments)},cssUnit:function(f){var g=this.css(f),h=[];d.each(["em","px","%","pt"],function(j,k){if(g.indexOf(k)>0){h=[parseFloat(g),k]}});return h}});d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(g,f){d.fx.step[f]=function(h){if(h.state==0){h.start=e(h.elem,f);h.end=b(h.end)}h.elem.style[f]="rgb("+[Math.max(Math.min(parseInt((h.pos*(h.end[0]-h.start[0]))+h.start[0],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[1]-h.start[1]))+h.start[1],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[2]-h.start[2]))+h.start[2],10),255),0)].join(",")+")"}});function b(g){var f;if(g&&g.constructor==Array&&g.length==3){return g}if(f=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(g)){return[parseInt(f[1],10),parseInt(f[2],10),parseInt(f[3],10)]}if(f=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(g)){return[parseFloat(f[1])*2.55,parseFloat(f[2])*2.55,parseFloat(f[3])*2.55]}if(f=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(g)){return[parseInt(f[1],16),parseInt(f[2],16),parseInt(f[3],16)]}if(f=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(g)){return[parseInt(f[1]+f[1],16),parseInt(f[2]+f[2],16),parseInt(f[3]+f[3],16)]}if(f=/rgba\(0, 0, 0, 0\)/.exec(g)){return a.transparent}return a[d.trim(g).toLowerCase()]}function e(h,f){var g;do{g=d.curCSS(h,f);if(g!=""&&g!="transparent"||d.nodeName(h,"body")){break}f="backgroundColor"}while(h=h.parentNode);return b(g)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};d.easing.jswing=d.easing.swing;d.extend(d.easing,{def:"easeOutQuad",swing:function(g,h,f,j,i){return d.easing[d.easing.def](g,h,f,j,i)},easeInQuad:function(g,h,f,j,i){return j*(h/=i)*h+f},easeOutQuad:function(g,h,f,j,i){return -j*(h/=i)*(h-2)+f},easeInOutQuad:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h+f}return -j/2*((--h)*(h-2)-1)+f},easeInCubic:function(g,h,f,j,i){return j*(h/=i)*h*h+f},easeOutCubic:function(g,h,f,j,i){return j*((h=h/i-1)*h*h+1)+f},easeInOutCubic:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h+f}return j/2*((h-=2)*h*h+2)+f},easeInQuart:function(g,h,f,j,i){return j*(h/=i)*h*h*h+f},easeOutQuart:function(g,h,f,j,i){return -j*((h=h/i-1)*h*h*h-1)+f},easeInOutQuart:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h+f}return -j/2*((h-=2)*h*h*h-2)+f},easeInQuint:function(g,h,f,j,i){return j*(h/=i)*h*h*h*h+f},easeOutQuint:function(g,h,f,j,i){return j*((h=h/i-1)*h*h*h*h+1)+f},easeInOutQuint:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h*h+f}return j/2*((h-=2)*h*h*h*h+2)+f},easeInSine:function(g,h,f,j,i){return -j*Math.cos(h/i*(Math.PI/2))+j+f},easeOutSine:function(g,h,f,j,i){return j*Math.sin(h/i*(Math.PI/2))+f},easeInOutSine:function(g,h,f,j,i){return -j/2*(Math.cos(Math.PI*h/i)-1)+f},easeInExpo:function(g,h,f,j,i){return(h==0)?f:j*Math.pow(2,10*(h/i-1))+f},easeOutExpo:function(g,h,f,j,i){return(h==i)?f+j:j*(-Math.pow(2,-10*h/i)+1)+f},easeInOutExpo:function(g,h,f,j,i){if(h==0){return f}if(h==i){return f+j}if((h/=i/2)<1){return j/2*Math.pow(2,10*(h-1))+f}return j/2*(-Math.pow(2,-10*--h)+2)+f},easeInCirc:function(g,h,f,j,i){return -j*(Math.sqrt(1-(h/=i)*h)-1)+f},easeOutCirc:function(g,h,f,j,i){return j*Math.sqrt(1-(h=h/i-1)*h)+f},easeInOutCirc:function(g,h,f,j,i){if((h/=i/2)<1){return -j/2*(Math.sqrt(1-h*h)-1)+f}return j/2*(Math.sqrt(1-(h-=2)*h)+1)+f},easeInElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}return -(h*Math.pow(2,10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k))+f},easeOutElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}return h*Math.pow(2,-10*i)*Math.sin((i*l-j)*(2*Math.PI)/k)+m+f},easeInOutElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l/2)==2){return f+m}if(!k){k=l*(0.3*1.5)}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}if(i<1){return -0.5*(h*Math.pow(2,10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k))+f}return h*Math.pow(2,-10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k)*0.5+m+f},easeInBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}return k*(h/=j)*h*((i+1)*h-i)+f},easeOutBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}return k*((h=h/j-1)*h*((i+1)*h+i)+1)+f},easeInOutBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}if((h/=j/2)<1){return k/2*(h*h*(((i*=(1.525))+1)*h-i))+f}return k/2*((h-=2)*h*(((i*=(1.525))+1)*h+i)+2)+f},easeInBounce:function(g,h,f,j,i){return j-d.easing.easeOutBounce(g,i-h,0,j,i)+f},easeOutBounce:function(g,h,f,j,i){if((h/=i)<(1/2.75)){return j*(7.5625*h*h)+f}else{if(h<(2/2.75)){return j*(7.5625*(h-=(1.5/2.75))*h+0.75)+f}else{if(h<(2.5/2.75)){return j*(7.5625*(h-=(2.25/2.75))*h+0.9375)+f}else{return j*(7.5625*(h-=(2.625/2.75))*h+0.984375)+f}}}},easeInOutBounce:function(g,h,f,j,i){if(h<i/2){return d.easing.easeInBounce(g,h*2,0,j,i)*0.5+f}return d.easing.easeOutBounce(g,h*2-i,0,j,i)*0.5+j*0.5+f}})})(jQuery);;/*
798
+ * jQuery UI Effects Highlight 1.7.2
799
+ *
800
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
801
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
802
+ * and GPL (GPL-LICENSE.txt) licenses.
803
+ *
804
+ * http://docs.jquery.com/UI/Effects/Highlight
805
+ *
806
+ * Depends:
807
+ * effects.core.js
808
+ */
809
+ (function(a){a.effects.highlight=function(b){return this.queue(function(){var e=a(this),d=["backgroundImage","backgroundColor","opacity"];var h=a.effects.setMode(e,b.options.mode||"show");var c=b.options.color||"#ffff99";var g=e.css("backgroundColor");a.effects.save(e,d);e.show();e.css({backgroundImage:"none",backgroundColor:c});var f={backgroundColor:g};if(h=="hide"){f.opacity=0}e.animate(f,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(h=="hide"){e.hide()}a.effects.restore(e,d);if(h=="show"&&a.browser.msie){this.style.removeAttribute("filter")}if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);;
810
+ $(function() {
811
+ /*
812
+ %< File.join(ERBook::INSTALL, 'LICENSE')
813
+ */
814
+
815
+ //
816
+ // respond to changes in window location
817
+ //
818
+ var $last_hash = null;
819
+
820
+ function on_hash_change() {
821
+ var curr_hash = window.location.hash;
822
+
823
+ if (curr_hash && curr_hash != $last_hash) {
824
+ $last_hash = curr_hash;
825
+ reveal_hash(curr_hash);
826
+ }
827
+
828
+ setTimeout(on_hash_change, 300);
829
+ }
830
+
831
+ //
832
+ // Sets the location bar hash to the given value.
833
+ //
834
+ // [prevent_jump]
835
+ // If true, prevents the browser from jumping to
836
+ // the element corresponding to the given hash.
837
+ //
838
+ function set_hash(hash, prevent_jump) {
839
+ if ($last_hash == hash) {
840
+ return;
841
+ }
842
+
843
+ var set_the_hash = function() {
844
+ //
845
+ // XXX: bypass on_hash_change() by setting $last_hash
846
+ //
847
+ window.location.hash = $last_hash = hash;
848
+ }
849
+
850
+ if (prevent_jump) {
851
+ var target = $(hash);
852
+
853
+ if (target.length) {
854
+ //
855
+ // This particular approach to solving the browser
856
+ // jumping problem comes from the jQuery.LocalScroll
857
+ // plugin, which is dual licensed under MIT and GPL:
858
+ //
859
+ // Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
860
+ //
861
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
862
+ // of this software and associated documentation files (the "Software"), to deal
863
+ // in the Software without restriction, including without limitation the rights
864
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
865
+ // copies of the Software, and to permit persons to whom the Software is
866
+ // furnished to do so, subject to the following conditions:
867
+ //
868
+ // The above copyright notice and this permission notice shall be included in
869
+ // all copies or substantial portions of the Software.
870
+ //
871
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
872
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
873
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
874
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
875
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
876
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
877
+ // THE SOFTWARE.
878
+ //
879
+ // This plugin is documented at:
880
+ //
881
+ // http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html
882
+ //
883
+ // And its source is available at:
884
+ //
885
+ // http://flesler-plugins.googlecode.com/svn/trunk/jquery.localScroll/jquery.localScroll.js
886
+ //
887
+ var target_id = target.attr('id');
888
+
889
+ //
890
+ // temporarily place a dummy element at the current
891
+ // screen position and give it the ID of the target
892
+ //
893
+ var original_screen_position = $(window).scrollTop();
894
+
895
+ var dummy = $('<span/>').attr('id', target_id).css({
896
+ position: 'absolute',
897
+ top: original_screen_position
898
+ });
899
+
900
+ target.removeAttr('id').before(dummy);
901
+
902
+ //
903
+ // when we set the hash, the browser will jump to the
904
+ // dummy, which is where the browser screen currently
905
+ // is, and therefore the jump will not be visualized!
906
+ //
907
+ console.log($(window).scrollTop())
908
+ console.log(target)
909
+ set_the_hash();
910
+ console.log($(window).scrollTop())
911
+
912
+ //
913
+ // undo the temporary changes
914
+ //
915
+ dummy.remove();
916
+ target.attr('id', target_id);
917
+
918
+ //
919
+ // the above approach does not work for Opera and IE.
920
+ // they ignore the dummy and jump to the actual target
921
+ //
922
+ $(window).scrollTop(original_screen_position);
923
+
924
+ return;
925
+ }
926
+ }
927
+
928
+ set_the_hash();
929
+ }
930
+
931
+ //
932
+ // Returns the tab corresponding to the
933
+ // given panel in the given tabs widget.
934
+ //
935
+ function tab_by_panel(panel, tabs_widget) {
936
+ if (!tabs_widget) {
937
+ tabs_widget = panel.parent('.ui-tabs');
938
+ }
939
+
940
+ return tabs_widget.find(
941
+ '.ui-tabs-nav > li > a[href=#'+ panel.attr('id') +']'
942
+ ).parent('li');
943
+ }
944
+
945
+ //
946
+ // Reveals the element at the given hash by (1) activating all
947
+ // tabs that contain it, (2) smoothly scrolling to it, and (3)
948
+ // updating the hash in the browser's location bar accordingly.
949
+ //
950
+ function reveal_hash(hash) {
951
+ var target = $(hash);
952
+
953
+ if (target.length) {
954
+ var target_is_panel = target.is('div') &&
955
+ target.parent('.ui-tabs').length;
956
+
957
+ //
958
+ // reveal all tabs which contain the target
959
+ //
960
+ if (target.is(':hidden')) {
961
+ var panels = target.parents('.ui-tabs > div:hidden').get().reverse();
962
+
963
+ if (target_is_panel) {
964
+ panels.push(target);
965
+ }
966
+
967
+ for (var i in panels) {
968
+ var panel = $(panels[i]);
969
+ var tabs_widget = panel.parent('.ui-tabs');
970
+ var selected_index = tabs_widget.tabs('option', 'selected');
971
+
972
+ //
973
+ // map the panel to its tab because tabs do not
974
+ // have to be in the same order as their panels
975
+ //
976
+ var tab = tab_by_panel(panel, tabs_widget);
977
+ var wanted_index = tab.prevAll('li').length;
978
+
979
+ if (wanted_index != selected_index) {
980
+ tabs_widget.tabs('select', wanted_index);
981
+ }
982
+ }
983
+ }
984
+
985
+ //
986
+ // scroll to the tab bar instead of the target
987
+ // because it contains the title for the target
988
+ //
989
+ var scroll_target = target;
990
+
991
+ if (target_is_panel) {
992
+ var tabs_nav = target.parent('.ui-tabs').find('> .ui-tabs-nav');
993
+
994
+ if (!tabs_nav.is(':hidden')) {
995
+ scroll_target = tabs_nav;
996
+ }
997
+ }
998
+
999
+ var scroll_offset = scroll_target.offset().top;
1000
+
1001
+ //
1002
+ // set body height so that any element can be
1003
+ // brought to the top of the screen via scrolling
1004
+ //
1005
+ var document_height = $(document).height();
1006
+ var window_height = $(window).height();
1007
+ if (document_height - scroll_offset <= window_height) {
1008
+ $('body').css('min-height', document_height + window_height);
1009
+ }
1010
+
1011
+ $('html, body').animate(
1012
+ { scrollTop: scroll_offset }, 'slow', 'swing', function() {
1013
+ set_hash(hash, target_is_panel);
1014
+ }
1015
+ );
1016
+ }
1017
+ }
1018
+
1019
+ //
1020
+ // create jQuery UI tabs
1021
+ //
1022
+ $('.tabs').tabs();
1023
+
1024
+ //
1025
+ // make internal hyperlinks reveal their targets when clicked
1026
+ //
1027
+ $('a[href^=#]').click(function() {
1028
+ var link = $(this);
1029
+ var hash = link.attr('href');
1030
+
1031
+ if (link.parent('li').parent('.ui-tabs-nav').length) {
1032
+ // tab clicks should not cause the screen to scroll
1033
+ set_hash(hash, true);
1034
+ }
1035
+ else {
1036
+ reveal_hash(hash);
1037
+ }
1038
+
1039
+ return false;
1040
+ });
1041
+
1042
+ //
1043
+ // checkbox for printer friendly stylesheet
1044
+ //
1045
+ $('#__header__ > .authors_and_date').append(
1046
+ $('<span/>').addClass('printer_friendly_toggle').append(
1047
+ $('<input/>').attr('type', 'checkbox').click(function() {
1048
+ var checkbox = $(this);
1049
+
1050
+ function change_media(src, dst) {
1051
+ var styles = $('style[media="'+ src +'"]');
1052
+ if (styles.length) {
1053
+ //
1054
+ // try changing the media in-place
1055
+ //
1056
+ var before = checkbox.offset();
1057
+ styles.attr('media', dst);
1058
+ var after = checkbox.offset();
1059
+
1060
+ if (after.top == before.top && after.left == before.left) {
1061
+ //
1062
+ // try reinserting the <style> into document.
1063
+ // this works in Webkit browsers, which ignore
1064
+ // the in-place changing approach tried above.
1065
+ //
1066
+ styles.each(function() {
1067
+ var style = $(this);
1068
+ var parent = style.parent();
1069
+
1070
+ style.remove();
1071
+ parent.append(style);
1072
+ });
1073
+ }
1074
+ }
1075
+ }
1076
+
1077
+ if (checkbox.is(':checked')) {
1078
+ change_media('screen', 'none');
1079
+ change_media('print', 'screen,print');
1080
+ }
1081
+ else {
1082
+ change_media('screen,print', 'print');
1083
+ change_media('none', 'screen');
1084
+ }
1085
+
1086
+ return true;
1087
+ })
1088
+ ).append(" Printer friendly")
1089
+ );
1090
+
1091
+ //
1092
+ // activate embedded data URIs
1093
+ //
1094
+ var data_uri_by_embed_uri = {"84731990":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC","84731598":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIkSURBVDiNjZJNSxtRFIbfc+cjmZkkfjSCEFuQtghCwUWj0KXb/IQs3GlBKBQ3waWLoNBfIBSkJYI/ILsupIsuGrIqLQGRoEak6KLNmExzZ+aeLuJMZ4oLz+7e97nPORwuMTMeUvOVvTrAW0TUZua1brN2AgAUCVZeH9aZeUsToh2Eaq21Xz3593h3U9P1vcKjojPyPDV0+z0wL3abtYEAgOWNxmYmY7x5ufTMnCsVV4QQn8rrDSduT7STny46mm7AzheEputTAFYBQIxz2llceOxYVgZP5maEbZkxMF/ZnQVg64YR+8xM1gbwCgBEeb0xC8B27GwMTE7mbKIxAKCsG8YouQ/dNDUiEU9QzjnZFFDIWZqmaauRwDAzuf8EYFYvYsFEwUkB+ZyFMBwDADwAKpmzYoDIiwQeM6eAMFQggnd37ARSDpN54EsQqB0JOreDPynAHXgQQrRjQeBrKYGUklkdA4AOoDMcjlKA63oyCMLju+MpK2XfXF4kERPA10hwKv3A/vzl+71At1mTAFINkkUP+crzld0egFLiyu82a2Y0AZY3DnvMnAJa+1Uz7kJ0npuaLmUsG74coX9zfRVlOgBogs6fPy2VZooT6LtDfPtxdpWQgZkPPLe/JDTdGvb7koGjKBMAEITq4OLyxnNvPZxdXEtmPkK6PgS+/+739c9bX47eg7me2kF5vZElom0Ab4noo1Jqu7Vf/XXPLkS3WUv9mb/vR+THZPMfuQAAAABJRU5ErkJggg==","84731220":"data:image/png;base64,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","84730758":"data:image/png;base64,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","84730296":"data:image/png;base64,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","84729764":"data:image/png;base64,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","84729302":"data:image/png;base64,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","84728784":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAU3SURBVGiB7VlPaBRXHP5+82aTSLIrkY3YJR68VmuSPXlRPPQPGg05iD14sZfEUkpbPJQqQVJs0yQlkEDobaE9CaloTlI0InhYNOBi2yAFT0JxZW2ysn/cmTczvx4ym+7Ozs7uzK6kQj54zOzvzbz3fe/3583MEjPjbYay3QRaxY6A7caOgO2G2uoAExMTB4QQVy3LGrEsq+XxnFAUpcDMCVVVv71y5Ure2d/yhKqqLgwPDw8PDg6SEMLzWj8lu3ytlLLr9u3bXzx48OAlgJma+f3Rrcb4+HgoGo1+FI/HSUoJKWVDQpXnThsR1fSHQiEcP36849GjR2NtFxCLxYSu64qiKDBNsyXyAGBZVo3NNE2EQiEA2OU2dttj1gkvwn766+GNCvAi50eQF96IgCCrHVRQ2wW0Sq7tHhgfHw/FYrF69bELAAzDgGEYvsipqtoU+cA5MDExcUBV1Z/27t37vld97+rqEtPT056TOCGlRF9fH44dO4b9+/cHTmDAQ4AQ4uqpU6c+jMfj5Itdk0in07h27RrOnz+/ZWurByzLGjl8+DBpmlZVn5tBo/AhIuzbtw+GYSCfz6OnpycQ+UYCVCEEDMNoG/GKscHM6O7ursodv+Q9BfhBOypL0ErUsoBmCDda2WbKLTO75mJgAX43paB7QYWdiIjYsQK+X2gqB3WbqFmbc0wvQfZvBUC3815fHggaLl4hREQgoq1KV36kLh/LhYSZNQCdAKpeapoS0I5wqSciEokgEokgm80CAHbv3g0hxNY1hmHg3r17xvr6+q9u3BoKCLrCzfRJKTE3N2devHhRhMNh5HI5qKqKyclJSCl1+7bSxsbG8srKys8AXgcS4IzddnmEiEpPnjz5anFxcebChQvhPXv2AAA0TeOFhYUjxWJRBWAAKADYcBPQVBK3kqxeNgD86tWr35PJ5Oj8/PxGMpnUmRnRaLR09uzZAQAv7ZYB8I+zAgFtDiG/HiEi7u3tzV+/fn0tm82+p+v6lw8fPvyso6Ojo7+///uDBw8eWltbKwKo+7Ld0AOVIeRczRZXHwAgpRQA1GQy+Xp2dva7W7duHXr+/HnCNM2+EydOfAqAsLnQgohUIqri/EZDyE20Y1wqFoudAEI2SfXOnTvZqampr58+fTrAzO+cPn26z+ap2GIUKtdY1AkhIlIvX75cQ8rt6MfmNlWpVOqyyVU+8vLS0tLfAL5x2AGgasB6OdBJRKZpmnB+MqncdCptdlWpjO8tmxOKokBRFORyOWiaxrYAaZOz7GP53Ko4N5m5avIaAUQkAKi6rv+WSqVG4/G4UvlGJqVEPp+HEAKRSKSOfm9YloVnz56hUCi8XF1dTdvkpIN8pQDLrQK5CijrSCaT05ZldS4vL3/AzAIADQ0NWaOjoyoRIRwO4+7du3JlZUXA4dZGsPPhz8ePH/8AQLPb6zLxemRdibo8mxCAHrt1A+gAwGfOnDly7ty5xZGRkV0AsLq6Km/cuLGWSCQ+yWQymh8B+C8hS9jcpHLMXPPhthnUeICZmYh0bK4KAdABcCwWG+jv71dN08TNmzdLqVTqr6WlpY8zmUzN7uhDgG6LKAYhD7h4YKuDqBObn03EyZMno4ODg38cPXpUSaVShRcvXkwmEolfcrlc/Q+i3ignlQ6gyMxBx6m/EzOzZntCDAwM/AgA9+/fn02n01OJRKIQdEIbyuYUwYmXUdcDZVy6dOldZv7cNM3JmZmZdKsTth3OXdPZxsbGQo2u2c7W0AP/d7z1f/LtCNhu7AjYbrz1Av4F8/cV1apw1zkAAAAASUVORK5CYII=","84728322":"data:image/png;base64,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","84727874":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJOgAACToB8GSSSgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAS1SURBVFiF7ZddbBRVFMf/596Z3W3rtiwtUFsJFQhWMQSIWi0UKJHPlISvCGpiogkxig8SlBSj0Rij6YMPJhB9IyZqTFRC4pNKAgElplSIsRURRL6xtLRLu53dmbn3Hh9mFrZ1Kcs2pi9McnJndu8953c+7rkzxMwYz0uMq/W7AACssSpofo2qlJQfW6X66QNvs7rT9WOKQNP22Kz4xNqOadX1y1CkM0UDLH7dXlo3ddahV9a9O62m6n6/WD1FUS9qtbbMe6i5bUXDxkR/5h+AijVfBEBTa+TD1Q3PbJlX3xQ/39eFeKyyeOt3AvDIi2THJsivn1u5fUXt5LroxeRJMBjA2BoZFdIJm7fRBHFP+f4tLTvnRksism/oCjQrKOOjIlaFgWTSOX3pj0FmRiAGBszMBgyG1gqdZ38+cvh9tWGk7ttG4IltJXWTJtbsf37NjulplaSeVDeYDTRrGKMw6PahrKK89OH43FJjVAimYFhBax/aKFRXTEfn3+2T8+kfFaDpjUhD3X0z9m5e9lJNz9A5eCoDRughGxhoeF4ag+41aKOgtA9tfCgzfCwvmXRLG7cEWNRqbZ5d9+iulY2bKi8ku6CMAhGBmQFigAIAIzTYaLBQYFYwRsGwzhGD0eokL0DTzug7jXNWvjq/fkHFqd6jAANEwV4jQQEAgvwaykIoMGmwMGCjoTkACUZTOMDCndaelsZnn5oyubr0VE87iAQIBCKCEHRjyxOFBcY+UqofQ24SaX8IMACMALGEhRKAGYZ14QAEOL3XL2urzCDpdKMsloCAgLAEBBG0ceF4STg6ibRKwtVDYV0w2ABGM4xmaMUwiiE4ghnevFB1AQCHP1BbF7dG/pw+MPutWTNnVnZc/A5CANFoDBAaWmQgJUFIAkmCsAPdzATWDKIcUwwo30VGOQCDiEgyDw9H3rPgUJu/u/PEby8cO97R3TB1DWw7AtcMQlEGQhKERRA2QVqhhPfCDv4bBigDGmYIABEikqMCEJEAYHXs0ge62i+tPXjk+/Pz713FidIpECJQPsywLSAtcQNCWrnGEdTNzeBbACyim7/k2wUiFHlir//X4LneFtfd9+Xy5pYHrnKX7PXOQsjQS4tQYpcjEa0J8m+CvGvF0L4JR0ZpJA4wKEc3Idybt+uEdPEX9F0/l1rvet988uSS1Y+XJxKxC86vAYQlUFlWC75alT5/+kImaMPgoMOb4KQwxNdwlJlNb14DI8+CMEeRUOyc0X5sq/3mwgWN62vrE/HTqUOQNqEmXo8zR5z+z3Yc35BJwgGgAPiheCPus88uh4b/UwNhlepQ0TBp3+2/d/CHn9p+bz/TP2fialgyEuRYgEnCAZAB4OYYG6lDA/A4x+tbpWDkG07Q+gB9bI/63OvvOjXgDHy0fMWq6hRdBsNhIZEOAfI5kI1Chnl4W8wLEBJ6RGSyhsO5EoDs3Kd/TCUvrXOcb7/YuHZTHXE3ywgcAOlwfnbNDa9Hen67CGRBFAAV1oWdBQAgzh70T7rXe5pd79OvonbJg5E4hsII5AJ4AHQ+wwUB5IBkw4pwDwsAdOU4UiQGl8xc6r3cK3AtnMPBksK++Qp6I/o/r3H/MroL8C8JiYMXQa6AIwAAAABJRU5ErkJggg==","84727398":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJOgAACToB8GSSSgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAASrSURBVFiF7ZdtaFZlGMd/133O2dgcmunUZDgzzIYvJIH2wU2UtDKKXkCCLIqiDyIWZfhCEYIRCUIgUvYhApMKKoUMDd9ymagzNHTGZNlSp5tz0z17e55zzn1ffXjOo8/WZuqH+SEfuLgOPPc5/9/1v677PhxRVW7nz9xW9TsAtwowZ7X4Ve/4i24bAFcoKb173MZH3h2yY8FSKRx8AGDqhBnpt57/eJ43aszhqqVSOugATh1i1Cx+ZvW0svEVNbNWFE4eVABVR1d4mfOpehY9+kb5tAkz9lSu8J8cNACnjshGpOMOTrcdY/7Dz42a/eBTmyqXFy6/medIfydh1Ur/64pxM+cGnq8igogICCJylXtieUXJsGF3FbV2NeLUouoYM3QCF1uaurfu//zb6oLoFX1f3S0BVK4q2PPmwg/mXOo6h4jBE58siMHINdNS6VbSUReKw6nDOcvw4tH4tij6ZvdnB21rasHeDdp5PQB/oD+6wxSN7acScYMRL8kCJE4IqCqqDtUsRHNHA8XB0OCFx5bM2rL3iyOz35Z5+9bp2YF0BpwBq5bYhkQuQ+ySbDPZTAYrIY4MTrLXlpBYM8Q25HJPMw1Xjsqzc1+aVFY26UDlqoKZNw3gXEzswiyEzYrHZHAS4gixksFKhJMIJyFWQjKuk/boIq1djbR0nuXYhd3Mnvl42eTxD22rXO6/2J/OgC2wGhO5ECMeBoPxPXwEMMk8CKHtpjPTRmfUTjrsxFqLs4qLFRtnZ6vxSh3Tx88fOaxk2PqqlYUV1R9mVt0QQCbupivTjmd8giDAOEirRV1M5Hrose3EGmYXK4gPngi5jaKAi5XQprmQqqe0ZGKh58mUG3NAkY50G80dfyEGvMDg+YLnC8YXjCcYD7zcjlAQp7icuCbhlIpRs4hSfuqnmu+/PLDWLmFNb6l/zYCIeFwdczBGMIasaALh+YIXGPxA8APBC6Q3oC/4vseM8idoOdfe9uuhXe8dWGuXAd51HcgeOHiqWQAREC9X8bXwEhfEZDnVKbndqQoFUszU0fM4WHOo6dSxhsW/b3bViZaKiNW8w6dvCwzgoUhRUELZ8PsxgcH3kyoDk3UhAUnFTaRtJ+queVbij2BicZXu3PPT37W7Wl9u+MXWX30u2CTHAwEkPXSttX8cvySmGBHIgKiIGAMogiDjxo8tHDHSL2rqqcM5AXWMKCyn1E2Jf9ixpfbIVx2vtZ+mLUHLtVT6avU6ikXEAAVAkOT86yA/Xv10+rb7ZhWPaOqpw8WOewqn4pqH9+zYuX1/zcbMsrCLHiACwj45rXrtHdHLAVV1ImITy2xiVX4FCjjAiqDGCL5vuHdIJQ3H21LVP/+4ueaTaH1yX5REnIQFonzxflugqlEyjPmiOeE4uccgqMHngSHzObzvRMtv1bVrjm6KtueJ5SByOa2qcV+9AWZAQxFxuWqT8MkOkAGMgI71prN123fnTlY3vn5yqz3RZ30OIgYyqmr70+r3ddxrQfZcCK5WnsTTH5X9GUXp83W7Ly2s30tznks5iIh+LL8hB/q4YQGb1xYDyKXLFzec2R+uO7Ofnj7i+l+ivQq88234vwf4B6YlTDQudkyaAAAAAElFTkSuQmCC","84726992":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABSlJREFUWIXdl1lsVUUYx/8zc7a7daUroXQhlkpoQ4sVA8b6gilbIEIDggEiEiSRFwzEJ/pCXXjgQR8sAW0I0QQSicZIiC9IsClFFqlC6HorXW/Xe+/p7b3nnpnxobbpJW1pS+uD3+N3vpn/b2b+c853gP9rrNp1WZtNHVlo4ZLDl/YzkC+lhAMUZ+9Uv3MCIHK6eraQ4sXvX9ri0tVvD2wtMt4oyaZPvP1rE1bf93ff/f72dGMWbAcKj1xMNYTSeGh7cbxUFNhcQpE2Lvxwz1Sj4czfvn4vONU4ulAAGicni/LTjYR4Jxo7g2jzjSAzJQ5Ll3iUCDUqphu3IACF7150MUqPvr4mS2/sCkICEEKic3AUhfkZBlXJjkUF0HW6JTXJTVwOHYOmNZHv80eQlRYHSFLyQgCrdlXOeKUkIRtezklVff5ITH7U4vC4dAjO00sOVzvnASDJ8vJPz5ghPZSz+ZNg9uaq/VNOQkmypjMaifKYvC0kKBn3eaI6Z4DsTZ9/mBTvOHZ0TxnbVV7q1hXlfO6mqi3P1nEhvIFg2NbU2Ol0hcIM2yAgPHcI5pwA8rd95iFEnN5UVqS19piQTMHO8lJFEHIpb+OZ1Mm1DLjT1jVsexyxizQ0hkF/CJSSlitXKmK353kAYc4rUpPilbQlcXjQ5MOv9zvgdjuwesVSw1b4yRgAxut7B4KGxgjIpDdLSpyOx20+Swh5dTqdaQEo2I6VKzKNJ0+HwIWEkBJ1j7rx6ppcnVIcTdt4xjVeawmHyYVE1BYTZ+5xqFCpxMOmHoVSXJgzAICSrPREtHX7JxKdfSaYoiIj2UMczJ7kBVuldExY/Gu83FQXrtc2WlLImtvVe5vmBJC5tdIppUh3OjUEQ1bMM29PAMsyl6gScgMAFB+6WECkuOlxaLBsCQkgM8lAR++wbO0cClpW9PgMi5wawBg1VACghMJ65mqFLRuMMUooSwYAytgxl6EWFOSlcv9oFJpCkehScb22kQsujzyoOTg8Z4DWxFxTEvDASBhOI9bZDk1BYCRsQwovADCCbbvfKsS6wizW548gJU5HQ4tPhsJRJcevTWu+GQFwpYJT0BbfoIl4V+xL0O3Q0NfvtyXFnZLD1SrnMlNRGf78O4BwlCMlXofKxhcisucHAEAKcbW1vdfKSHZP5AgBDI2if9g0OHi9orscACAkgS3Geo5AKIqoJSVltPbuud0t8wagjF3wdvUpTo0izjm2C4yOeYJzAS2smLe/2BdglA72Do0gwaki2aMhErFQ+9ArbFvMaL7nArT+dKKJc1FT/0eztTI7GZQQcCEmrpniUFQAICBnb/7eEtaZBOwofrzxyLI5P3Xv/L662QDM2BFlb69MQFRvXlf8UlIUKmnvCWBtfhpu1TXADEUeS0LfznmltCnU3V0jBN9DKIsQKU7Xn9tbNVMfOGsAAMgpr9qpG9p3b64vUhraBpCe5IQ5PMzbO3xsNBL9yvvzxx8AQNmBb4wbNQfDsxGdHM/tB9rcK66GI1Glpb1HZiS70DUwgrycpWx9aQEIJdvG6+YjPiuAZaY3GwA0hSHBrcOKcjxo9kGAQgqZWVJSPeV3fsEAnl470UIJqbVsLobNsY4nagtwPnbE/tRux6ICAIAQ5Hirt0sKbiPJY8Dj1DDoN0FABpuvVQYWHcB77WQdF/JUw1/Nlko44gyK5raOMICzLyIOzOHPaLjpl1vuvFuir3/otW7fAOO2vLw8FP7I670hXhRizpFdVmn856KLFf8AcP0p5DnhnVEAAAAASUVORK5CYII="};
1095
+
1096
+ $('img[src]').each(function() {
1097
+ var image = $(this);
1098
+ var data_uri = data_uri_by_embed_uri[image.attr('src')];
1099
+
1100
+ if (data_uri) {
1101
+ image.attr('src', data_uri);
1102
+ }
1103
+ });
1104
+
1105
+ $('style').each(function() {
1106
+ var style = $(this);
1107
+ var css = style.text();
1108
+
1109
+ if (css) {
1110
+ for (var embed_uri in data_uri_by_embed_uri) {
1111
+ var src = new RegExp('\\burl\\(' + embed_uri + '\\)', 'g');
1112
+ var dst = 'url("' + data_uri_by_embed_uri[embed_uri] + '")';
1113
+
1114
+ css = css.replace(src, dst);
1115
+ }
1116
+
1117
+ style.text(css);
1118
+ }
1119
+ });
1120
+
1121
+ //
1122
+ // ready for action!
1123
+ //
1124
+ $('#__loading__').append("Ready!").
1125
+ fadeOut('slow', function() {
1126
+ $('#__body__').show();
1127
+ on_hash_change();
1128
+ });
1129
+ });
1130
+
1131
+ //]]>
1132
+ </script>
1133
+ </head>
1134
+ <body>
1135
+
1136
+ <div id="__loading__">
1137
+ Loading... <noscript><ins>Failed!</ins> <p>Please enable JavaScript in your Web browser.</p> <div style="display: none"><br/><hr/><br/></div></noscript>
1138
+ </div>
1139
+
1140
+ <div id="__body__">
1141
+
1142
+
1143
+ <div id="__header__">
1144
+
1145
+
1146
+
1147
+ <div class="title_and_subtitle">
1148
+ <h1 class="title">Dfect 1.1.0</h1>
1149
+
1150
+ <h2 class="subtitle">Assertion testing library for Ruby</h2>
1151
+ </div>
1152
+
1153
+ <div class="authors_and_date">
1154
+ <h3 class="authors"><a href="mailto:sunaku@gmail.com">Suraj N. Kurapati</a></h3>
1155
+
1156
+ <h3 class="date">27 October 2009</h3>
1157
+ </div>
1158
+
1159
+
1160
+ </div>
1161
+
1162
+
1163
+
1164
+ <div class="tabs">
1165
+ <ul>
1166
+
1167
+ <li><a href="#__doc__">Document</a></li>
1168
+
1169
+ <li><a href="#__toc__">Contents</a></li>
1170
+
1171
+
1172
+ <li><a href="#__nfo__">About</a></li>
1173
+ </ul>
1174
+
1175
+
1176
+
1177
+ <div id="__toc__">
1178
+ <h1 class="title">Contents</h1>
1179
+ <ul><li>1&nbsp;&nbsp;<a id="a__toc__Introduction" href="#Introduction">Introduction</a><ul><li>1.1&nbsp;&nbsp;<a id="a__toc__Features" href="#Features">Features</a></li><li>1.2&nbsp;&nbsp;<a id="a__toc__Motivation" href="#Motivation">Motivation</a></li><li>1.3&nbsp;&nbsp;<a id="a__toc__Etymology" href="#Etymology">Etymology</a></li><li>1.4&nbsp;&nbsp;<a id="a__toc__License" href="#License">License</a></li><li>1.5&nbsp;&nbsp;<a id="a__toc__Credits" href="#Credits">Credits</a></li><li>1.6&nbsp;&nbsp;<a id="a__toc__Related-works" href="#Related-works">Related works</a></li></ul></li><li>2&nbsp;&nbsp;<a id="a__toc__Setup" href="#Setup">Setup</a><ul><li>2.1&nbsp;&nbsp;<a id="a__toc__Requirements" href="#Requirements">Requirements</a></li><li>2.2&nbsp;&nbsp;<a id="a__toc__Installation" href="#Installation">Installation</a></li><li>2.3&nbsp;&nbsp;<a id="a__toc__Version-numbers" href="#Version-numbers">Version numbers</a></li></ul></li><li>3&nbsp;&nbsp;<a id="a__toc__Usage" href="#Usage">Usage</a><ul><li>3.1&nbsp;&nbsp;<a id="a__toc__Assertions" href="#Assertions">Assertions</a><ul><li><a id="a__toc__Negation" href="#Negation">Negation</a></li><li><a id="a__toc__Sampling" href="#Sampling">Sampling</a></li><li>3.1.1&nbsp;&nbsp;<a id="a__toc__Failures" href="#Failures">Failures</a></li></ul></li><li>3.2&nbsp;&nbsp;<a id="a__toc__Tests" href="#Tests">Tests</a><ul><li>3.2.1&nbsp;&nbsp;<a id="a__toc__Hooks" href="#Hooks">Hooks</a></li><li>3.2.2&nbsp;&nbsp;<a id="a__toc__Insulation" href="#Insulation">Insulation</a></li></ul></li><li>3.3&nbsp;&nbsp;<a id="a__toc__Execution" href="#Execution">Execution</a><ul><li>3.3.1&nbsp;&nbsp;<a id="a__toc__Automatic-test-execution" href="#Automatic-test-execution">Automatic test execution</a></li></ul></li><li>3.4&nbsp;&nbsp;<a id="a__toc__Reporting" href="#Reporting">Reporting</a></li><li>3.5&nbsp;&nbsp;<a id="a__toc__Emulation" href="#Emulation">Emulation</a></li></ul></li><li>4&nbsp;&nbsp;<a id="a__toc__History" href="#History">History</a><ul><li>4.1&nbsp;&nbsp;<a id="a__toc__Version-1-1-0-2009-10-27" href="#Version-1-1-0-2009-10-27">Version 1.1.0 (2009-10-27)</a><ul><li><a id="a__toc__Thank-you" href="#Thank-you">Thank you</a></li><li><a id="a__toc__New-features" href="#New-features">New features</a></li><li><a id="a__toc__Housekeeping" href="#Housekeeping">Housekeeping</a></li></ul></li><li>4.2&nbsp;&nbsp;<a id="a__toc__Version-1-0-1-2009-10-07" href="#Version-1-0-1-2009-10-07">Version 1.0.1 (2009-10-07)</a><ul><li><a id="a__toc__Bug-fixes" href="#Bug-fixes">Bug fixes</a></li><li><a id="a__toc__Housekeeping-89349386" href="#Housekeeping-89349386">Housekeeping</a></li></ul></li><li>4.3&nbsp;&nbsp;<a id="a__toc__Version-1-0-0-2009-05-03" href="#Version-1-0-0-2009-05-03">Version 1.0.0 (2009-05-03)</a><ul><li><a id="a__toc__Incompatible-changes" href="#Incompatible-changes">Incompatible changes</a></li><li><a id="a__toc__New-features-89369182" href="#New-features-89369182">New features</a></li><li><a id="a__toc__Bug-fixes-89398092" href="#Bug-fixes-89398092">Bug fixes</a></li><li><a id="a__toc__Housekeeping-89393948" href="#Housekeeping-89393948">Housekeeping</a></li></ul></li><li>4.4&nbsp;&nbsp;<a id="a__toc__Version-0-1-0-2009-04-28" href="#Version-0-1-0-2009-04-28">Version 0.1.0 (2009-04-28)</a><ul><li><a id="a__toc__Thank-you-89444068" href="#Thank-you-89444068">Thank you</a></li><li><a id="a__toc__New-features-89472950" href="#New-features-89472950">New features</a></li><li><a id="a__toc__Bug-fixes-79582034" href="#Bug-fixes-79582034">Bug fixes</a></li><li><a id="a__toc__Housekeeping-81713450" href="#Housekeeping-81713450">Housekeeping</a></li></ul></li><li>4.5&nbsp;&nbsp;<a id="a__toc__Version-0-0-0-2009-04-13" href="#Version-0-0-0-2009-04-13">Version 0.0.0 (2009-04-13)</a></li></ul></li></ul>
1180
+
1181
+ <div id="__lof__"><div id="__example__"><h2 class="title">Examples</h2> <ol><li><a id="a__toc__A-sample-unit-test" href="#A-sample-unit-test">A sample unit test</a></li></ol></div></div>
1182
+ </div>
1183
+
1184
+ <div id="__doc__" class="tabs">
1185
+ <h1 style="display: none">Document</h1>
1186
+ <ul>
1187
+ <li><a href="#Introduction">Introduction</a></li>
1188
+ <li><a href="#Setup">Setup</a></li>
1189
+ <li><a href="#Usage">Usage</a></li>
1190
+ <li><a href="#History">History</a></li>
1191
+ </ul>
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+ <div class="chapter" id="Introduction">
1201
+ <a name="Introduction"/><div class="nav"><a title="Focus this segment" href="#Introduction"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus next segment" href="#Features"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Introduction"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1202
+ <h1 class="title">
1203
+ Chapter&nbsp;1
1204
+ <br/>
1205
+ <big>Introduction</big>
1206
+ </h1>
1207
+ <div class="content"><p>Dfect is an assertion testing library for Ruby that emphasizes a simple assertion vocabulary, instant debuggability of failures, and flexibility in composing tests.</p>
1208
+
1209
+ <ul>
1210
+ <li><a class="xref" href="#History" title="Chapter 4. &quot;History&quot;">What&#8217;s new?</a> &#8212; history of project releases.</li>
1211
+
1212
+ <li><a href='http://github.com/sunaku/dfect'>Source code</a> &#8212; obtain via <a href='http://git-scm.com'>Git</a> or browse online.</li>
1213
+
1214
+ <li><a href='./api/index.html'>API reference</a> &#8212; documentation for source code.</li>
1215
+
1216
+ <li><a href='http://snk.tuxfamily.org/lib/dfect/'>Project home</a> &#8212; the Dfect project home page.</li>
1217
+ </ul>
1218
+
1219
+ <p>To get help or provide feedback, simply <a class="xref" href="#License" title="Section 1.4. &quot;License&quot;">contact the author(s)</a>.</p>
1220
+
1221
+ <div class="tabs"><ul><li><a href="#Features">Features</a></li><li><a href="#Motivation">Motivation</a></li><li><a href="#Etymology">Etymology</a></li><li><a href="#License">License</a></li><li><a href="#Credits">Credits</a></li><li><a href="#Related-works">Related works</a></li></ul>
1222
+ <div class="section" id="Features">
1223
+ <a name="Features"/><div class="nav"><a title="Focus this segment" href="#Features"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Introduction"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Motivation"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Features"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1224
+ <h1 class="title">
1225
+ 1.1&nbsp;&nbsp;Features
1226
+ </h1>
1227
+ <div class="content"><p>Dfect is exciting because:</p>
1228
+
1229
+ <ul>
1230
+ <li>It has only 5 methods to remember: D F E C T.</li>
1231
+
1232
+ <li>It lets you debug assertion failures interactively.</li>
1233
+
1234
+ <li>It keeps a detailed report of assertion failures.</li>
1235
+
1236
+ <li>It lets you nest tests and execution hooks.</li>
1237
+
1238
+ <li>Its core consists of a mere 313 lines of code.</li>
1239
+ </ul></div>
1240
+ </div>
1241
+
1242
+
1243
+
1244
+ <div class="section" id="Motivation">
1245
+ <a name="Motivation"/><div class="nav"><a title="Focus this segment" href="#Motivation"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Features"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Etymology"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Motivation"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1246
+ <h1 class="title">
1247
+ 1.2&nbsp;&nbsp;Motivation
1248
+ </h1>
1249
+ <div class="content"><p>The basic premise of Dfect is that, when a failure occurs, I want to be put inside an interactive debugger where I have the freedom to properly scrutinize the state of my program and determine the root cause of the failure.</p>
1250
+
1251
+ <p>Other testing libraries do not fulfill this need. Instead, they simply report each failed assertion along with a stack trace (if I am lucky) and abruptly terminate my program.</p>
1252
+
1253
+ <p>This deliberate separation of <em>fault</em> (my program being in an erroneous state) and <em>cause</em> (the source code of my program which caused the fault) reduces me to a primitive and laborious investigative technique known as &#8221;<a href='http://oopweb.com/CPP/Documents/DebugCPP/Volume/techniques.html#PRINTF'>printf debugging</a>&#8221;.</p>
1254
+
1255
+ <p>If you are not the least bit <em>unsettled</em> by those two words, then recall your first encounter with <a href='http://tryruby.hobix.com/'>IRB, the interactive Ruby shell</a>: remember how you would enter code expressions and IRB would <em>instantly</em> evaluate them and show you the result?</p>
1256
+
1257
+ <p>What an immense productivity boost! A <em>stark contrast</em> to the endless toil of wrapping every such experiment in standard boilerplate (<code class="line">public static void</code>&#8230;), saving the result to a correctly named file, invoking the C/C++/Java compiler, and finally executing the binary&#8212;only to be greeted by a <a href='http://en.wikipedia.org/wiki/Segmentation_fault'>segfault</a>. ;-)</p>
1258
+
1259
+ <p>I exaggerate, for the sake of entertainment, of course. But my point is that the Ruby testing libraries of today have (thus far) limited our productivity by orphaning us from the nurturing environment of IRB and shooing us off to a barren desert of antiquated techniques. How cruel!</p>
1260
+
1261
+ <p>And that, I say, is why Dfect is essential to Ruby developers today. It reunites us with our playful, interactive, <em>real-time</em> IRB roots and, with unwavering tenacity, enables us to investigate failures <em>productively</em>!</p></div>
1262
+ </div>
1263
+
1264
+
1265
+
1266
+ <div class="section" id="Etymology">
1267
+ <a name="Etymology"/><div class="nav"><a title="Focus this segment" href="#Etymology"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Motivation"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#License"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Etymology"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1268
+ <h1 class="title">
1269
+ 1.3&nbsp;&nbsp;Etymology
1270
+ </h1>
1271
+ <div class="content"><p>Dfect is named after the D F E C T methods it provides.</p>
1272
+
1273
+ <p>The name is also play on the word &#8220;defect&#8221;, whereby the intentional misspelling of &#8220;defect&#8221; as &#8220;dfect&#8221; is a defect in itself! <tt>;-)</tt></p>
1274
+
1275
+ <p>This wordplay is similar to <a href='http://www.erlang.org/doc/apps/mnesia/index.html'>Mnesia</a>&#8217;s play on the word &#8220;amnesia&#8221;, whereby the intentional omission of the letter &#8220;A&#8221; indicates forgetfulness&#8212;the key characteristic of having amnesia. Clever!</p></div>
1276
+ </div>
1277
+
1278
+
1279
+
1280
+ <div class="section" id="License">
1281
+ <a name="License"/><div class="nav"><a title="Focus this segment" href="#License"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Etymology"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Credits"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__License"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1282
+ <h1 class="title">
1283
+ 1.4&nbsp;&nbsp;License
1284
+ </h1>
1285
+ <div class="content"><p>(the ISC license)</p>
1286
+
1287
+ <p>Copyright 2009 Suraj N. Kurapati <a href='mailto:sunaku@gmail.com'>&#115;&#117;&#110;&#097;&#107;&#117;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;</a></p>
1288
+
1289
+ <p>Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.</p>
1290
+
1291
+ <p>THE SOFTWARE IS PROVIDED &#8220;AS IS&#8221; AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</p></div>
1292
+ </div>
1293
+
1294
+
1295
+
1296
+ <div class="section" id="Credits">
1297
+ <a name="Credits"/><div class="nav"><a title="Focus this segment" href="#Credits"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#License"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Related-works"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Credits"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1298
+ <h1 class="title">
1299
+ 1.5&nbsp;&nbsp;Credits
1300
+ </h1>
1301
+ <div class="content"><p>Dfect is made possible by <a class="xref" href="#History" title="Chapter 4. &quot;History&quot;">contributions</a> from users like you:</p>
1302
+
1303
+ <ul>
1304
+ <li><a href='http://github.com/francois'>François Beausoleil</a></li>
1305
+
1306
+ <li><a href='http://github.com/ibc'>Iñaki Baz Castillo</a></li>
1307
+ </ul></div>
1308
+ </div>
1309
+
1310
+
1311
+
1312
+ <div class="section" id="Related-works">
1313
+ <a name="Related-works"/><div class="nav"><a title="Focus this segment" href="#Related-works"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Credits"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Setup"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Related-works"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1314
+ <h1 class="title">
1315
+ 1.6&nbsp;&nbsp;Related works
1316
+ </h1>
1317
+ <div class="content"><ul>
1318
+ <li><a href='http://assert2.rubyforge.org'>assert{ 2.0 }</a></li>
1319
+
1320
+ <li><a href='http://chneukirchen.org/repos/bacon/README'>Bacon</a></li>
1321
+
1322
+ <li><a href='http://github.com/jeremymcanally/context'>Context</a></li>
1323
+
1324
+ <li><a href='http://blog.zenspider.com/minitest'>minitest</a></li>
1325
+
1326
+ <li><a href='http://rspec.info'>RSpec</a></li>
1327
+
1328
+ <li><a href='http://thoughtbot.com/projects/shoulda'>Shoulda</a></li>
1329
+
1330
+ <li><a href='http://test-spec.rubyforge.org/test-spec'>test-spec</a></li>
1331
+
1332
+ <li><a href='http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/index.html'>Test::Unit</a></li>
1333
+
1334
+ <li><a href='http://github.com/ahoward/testy/tree/master'>Testy</a></li>
1335
+
1336
+ <li><a href='http://www.ruby-forum.com/topic/183354'>Verify</a></li>
1337
+ </ul></div>
1338
+ </div>
1339
+ </div></div>
1340
+ </div>
1341
+
1342
+
1343
+
1344
+
1345
+ <div class="chapter" id="Setup">
1346
+ <a name="Setup"/><div class="nav"><a title="Focus this segment" href="#Setup"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Related-works"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Requirements"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Setup"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1347
+ <h1 class="title">
1348
+ Chapter&nbsp;2
1349
+ <br/>
1350
+ <big>Setup</big>
1351
+ </h1>
1352
+ <div class="content"><div class="tabs"><ul><li><a href="#Requirements">Requirements</a></li><li><a href="#Installation">Installation</a></li><li><a href="#Version-numbers">Version numbers</a></li></ul>
1353
+ <div class="section" id="Requirements">
1354
+ <a name="Requirements"/><div class="nav"><a title="Focus this segment" href="#Requirements"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Setup"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Installation"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Requirements"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1355
+ <h1 class="title">
1356
+ 2.1&nbsp;&nbsp;Requirements
1357
+ </h1>
1358
+ <div class="content"><p>Your system needs the following software to run Dfect.</p>
1359
+
1360
+ <ins><table border="1"><thead><tr><th>Software</th><th>Description</th><th>Notes</th></tr></thead><tbody><tr><td><a href='http://ruby-lang.org'>Ruby</a></td><td>Ruby language interpreter</td><td>Version 1.8.6, 1.8.7, and 1.9.1 have been tested successfully.</td></tr><tr><td><a href='http://rubygems.org'>RubyGems</a></td><td>Ruby packaging system</td><td>Version 1.3.1 is or newer required.</td></tr><tr><td><a href='http://www.datanoise.com/ruby-debug'>ruby-debug</a></td><td>Interactive debugger</td><td><strong>This requirement is optional.</strong> If this library is not available, then IRB (the standard interactive Ruby shell) will be used instead.</td></tr></tbody></table></ins></div>
1361
+ </div>
1362
+
1363
+ <div class="section" id="Installation">
1364
+ <a name="Installation"/><div class="nav"><a title="Focus this segment" href="#Installation"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Requirements"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Version-numbers"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Installation"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1365
+ <h1 class="title">
1366
+ 2.2&nbsp;&nbsp;Installation
1367
+ </h1>
1368
+ <div class="content"><p>You can install Dfect by running this command:</p>
1369
+
1370
+ <pre>gem install dfect</pre>
1371
+
1372
+ <p>If you want to develop Dfect, run this command:</p>
1373
+
1374
+ <pre>gem install dfect --development</pre></div>
1375
+ </div>
1376
+
1377
+
1378
+
1379
+ <div class="section" id="Version-numbers">
1380
+ <a name="Version-numbers"/><div class="nav"><a title="Focus this segment" href="#Version-numbers"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Installation"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Usage"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Version-numbers"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1381
+ <h1 class="title">
1382
+ 2.3&nbsp;&nbsp;Version numbers
1383
+ </h1>
1384
+ <div class="content"><p>Dfect releases are numbered in <em>major.minor.patch</em> form according to the <a href='http://www.rubygems.org/read/chapter/7'>RubyGems rational versioning policy</a>, which can be summarized as follows:</p>
1385
+
1386
+ <ins><table border="1"><thead><tr><td rowspan="2">What increased in the version number?</td><td colspan="3">The increase indicates that the release:</td></tr><tr><th>Is backward compatible?</th><th>Has new features?</th><th>Has bug fixes?</th></tr></thead><tbody><tr><th>major</th><td style="background-color: #FFE4E1;">No</td><td>Yes</td><td>Yes</td></tr><tr><th>minor</th><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><th>patch</th><td>Yes</td><td style="background-color: #FFE4E1;">No</td><td>Yes</td></tr></tbody></table></ins></div>
1387
+ </div>
1388
+ </div></div>
1389
+ </div>
1390
+
1391
+
1392
+
1393
+
1394
+
1395
+ <div class="chapter" id="Usage">
1396
+ <a name="Usage"/><div class="nav"><a title="Focus this segment" href="#Usage"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Version-numbers"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Assertions"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Usage"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1397
+ <h1 class="title">
1398
+ Chapter&nbsp;3
1399
+ <br/>
1400
+ <big>Usage</big>
1401
+ </h1>
1402
+ <div class="content"><p>Begin by loading Dfect into your program:</p>
1403
+
1404
+ <ins><pre lang="ruby" class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">rubygems</span><span style="color:#710">'</span></span> <span style="color:#888"># only necessary if you are using Ruby 1.8</span>
1405
+ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect</span><span style="color:#710">'</span></span>
1406
+ </pre></ins><p> You now have access to the <a href='api/classes/Dfect.html'><code class="line"><span style="color:#036;font-weight:bold">Dfect</span></code> module</a>, which provides methods that can be mixed-in or called directly, according to your preference:</p>
1407
+
1408
+ <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.<span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">hello</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span> <span style="color:#888"># D() is a class method</span>
1409
+ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">world</span><span style="color:#710">&quot;</span></span>
1410
+ <span style="color:#080;font-weight:bold">end</span>
1411
+
1412
+ <span style="color:#888"># the above is same as:</span>
1413
+
1414
+ include <span style="color:#036;font-weight:bold">Dfect</span> <span style="color:#888"># mix-in the Dfect API</span>
1415
+
1416
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">hello</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span> <span style="color:#888"># D() is an instance method</span>
1417
+ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">world</span><span style="color:#710">&quot;</span></span>
1418
+ <span style="color:#080;font-weight:bold">end</span>
1419
+ </pre></ins><p> The following sections explain these provided methods in detail. If you are impatient, you can skip to <a class="xref" href="#A-sample-unit-test" title="Example 1">A sample unit test</a> for an illustrative example.</p>
1420
+
1421
+ <div class="tabs"><ul><li><a href="#Assertions">Assertions</a></li><li><a href="#Tests">Tests</a></li><li><a href="#Execution">Execution</a></li><li><a href="#Reporting">Reporting</a></li><li><a href="#Emulation">Emulation</a></li></ul>
1422
+ <div class="section" id="Assertions">
1423
+ <a name="Assertions"/><div class="nav"><a title="Focus this segment" href="#Assertions"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Usage"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Negation"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Assertions"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1424
+ <h1 class="title">
1425
+ 3.1&nbsp;&nbsp;Assertions
1426
+ </h1>
1427
+ <div class="content"><p>The following methods accept a block parameter and assert something about the result of executing that block. They also accept an optional message, which is shown in <a class="xref" href="#Failures" title="Section 3.1.1. &quot;Failures&quot;">failure reports</a> if they fail.</p>
1428
+
1429
+ <p>See the <a href='./api/index.html'>API documentation</a> for details and examples.</p>
1430
+
1431
+ <ins><table border="1"><thead><tr><th>Method</th><th>Description</th></tr></thead><tbody><tr><td>T</td><td>assert true (not <code class="line"><span style="color:#038;font-weight:bold">nil</span></code> and not <code class="line"><span style="color:#038;font-weight:bold">false</span></code>)</td></tr><tr><td>F</td><td>assert not true (<code class="line"><span style="color:#038;font-weight:bold">nil</span></code> or <code class="line"><span style="color:#038;font-weight:bold">false</span></code>)</td></tr><tr><td>E</td><td>assert that an execption is raised</td></tr><tr><td>C</td><td>assert that a symbol is thrown</td></tr></tbody></table></ins><div class="tabs"><ul><li><a href="#Negation">Negation</a></li><li><a href="#Sampling">Sampling</a></li><li><a href="#Failures">Failures</a></li></ul>
1432
+ <div class="paragraph" id="Negation">
1433
+ <a name="Negation"/><div class="nav"><a title="Focus this segment" href="#Negation"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Assertions"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Sampling"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Negation"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1434
+ <p class="title">Negation</p>
1435
+ <div class="content"><p>These methods are the <em>opposite</em> of <a class="xref" href="#Assertions" title="Section 3.1. &quot;Assertions&quot;">normal assertions</a>.</p>
1436
+
1437
+ <ins><table border="1"><thead><tr><th>Method</th><th>Description</th></tr></thead><tbody><tr><td>T!</td><td>same as F</td></tr><tr><td>F!</td><td>same as T</td></tr><tr><td>E!</td><td>assert that an exception is <em>not</em> raised</td></tr><tr><td>C!</td><td>assert that a symbol is <em>not</em> thrown</td></tr></tbody></table></ins></div>
1438
+ </div>
1439
+
1440
+ <div class="paragraph" id="Sampling">
1441
+ <a name="Sampling"/><div class="nav"><a title="Focus this segment" href="#Sampling"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Negation"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Failures"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Sampling"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1442
+ <p class="title">Sampling</p>
1443
+ <div class="content"><p>These methods allow you to <em>check the outcome</em> of an <a class="xref" href="#Assertions" title="Section 3.1. &quot;Assertions&quot;">assertion</a> without including the assertion in the execution report.</p>
1444
+
1445
+ <ins><table border="1"><thead><tr><th>Method</th><th>Description</th></tr></thead><tbody><tr><td>T?</td><td>returns <code class="line"><span style="color:#038;font-weight:bold">true</span></code> if T passes; <code class="line"><span style="color:#038;font-weight:bold">false</span></code> otherwise</td></tr><tr><td>F?</td><td>returns <code class="line"><span style="color:#038;font-weight:bold">true</span></code> if F passes; <code class="line"><span style="color:#038;font-weight:bold">false</span></code> otherwise</td></tr><tr><td>E?</td><td>returns <code class="line"><span style="color:#038;font-weight:bold">true</span></code> if E passes; <code class="line"><span style="color:#038;font-weight:bold">false</span></code> otherwise</td></tr><tr><td>C?</td><td>returns <code class="line"><span style="color:#038;font-weight:bold">true</span></code> if C passes; <code class="line"><span style="color:#038;font-weight:bold">false</span></code> otherwise</td></tr></tbody></table></ins></div>
1446
+ </div>
1447
+
1448
+ <div class="section" id="Failures">
1449
+ <a name="Failures"/><div class="nav"><a title="Focus this segment" href="#Failures"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Sampling"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Tests"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Failures"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1450
+ <h1 class="title">
1451
+ 3.1.1&nbsp;&nbsp;Failures
1452
+ </h1>
1453
+ <div class="content"><p>When an assertion fails, details about the failure will be shown:</p>
1454
+
1455
+ <pre>- fail: block must yield true (!nil &amp;&amp; !false)
1456
+ code: |-
1457
+ [12..22] in test/simple.rb
1458
+ 12
1459
+ 13 D &quot;with more nested tests&quot; do
1460
+ 14 x = 5
1461
+ 15
1462
+ 16 T { x &gt; 2 } # passes
1463
+ =&gt; 17 F { x &gt; 2 } # fails
1464
+ 18 E { x.hello } # passes
1465
+ 19 end
1466
+ 20 end
1467
+ 21
1468
+ 22 # equivalent of before(:each) or setup()
1469
+ vars:
1470
+ x: 5
1471
+ y: 83
1472
+ call:
1473
+ - test/simple.rb:17
1474
+ - test/simple.rb:3</pre>
1475
+
1476
+ <p>You will then be placed into a debugger to investigate the failure if the <code class="line"><span style="color:#A60">:debug</span></code> option is enabled in <a href='api/classes/Dfect.html'><code class="line"><span style="color:#036;font-weight:bold">Dfect</span>.options</code></a>.</p>
1477
+
1478
+ <p>Details about all assertion failures and a trace of all tests executed are stored by Dfect and provided by the <a href='api/classes/Dfect.html'><code class="line"><span style="color:#036;font-weight:bold">Dfect</span>.report</code></a> method.</p></div>
1479
+ </div>
1480
+ </div></div>
1481
+ </div>
1482
+
1483
+ <div class="section" id="Tests">
1484
+ <a name="Tests"/><div class="nav"><a title="Focus this segment" href="#Tests"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Failures"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Hooks"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Tests"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1485
+ <h1 class="title">
1486
+ 3.2&nbsp;&nbsp;Tests
1487
+ </h1>
1488
+ <div class="content"><p>The <a href='api/classes/Dfect.html'><code class="line">D()</code> method</a> defines a new <strong>test</strong>, which is analagous to the <code class="line">describe()</code> environment provided by BDD frameworks like RSpec.</p>
1489
+
1490
+ <p>A test may also contain nested tests.</p>
1491
+
1492
+ <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">outer test</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span>
1493
+ <span style="color:#888"># assertions and logic here</span>
1494
+
1495
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">inner test</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span>
1496
+ <span style="color:#888"># more assertions and logic here</span>
1497
+ <span style="color:#080;font-weight:bold">end</span>
1498
+ <span style="color:#080;font-weight:bold">end</span>
1499
+ </pre></ins>
1500
+
1501
+ <div class="tabs"><ul><li><a href="#Hooks">Hooks</a></li><li><a href="#Insulation">Insulation</a></li></ul>
1502
+ <div class="section" id="Hooks">
1503
+ <a name="Hooks"/><div class="nav"><a title="Focus this segment" href="#Hooks"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Tests"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Insulation"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Hooks"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1504
+ <h1 class="title">
1505
+ 3.2.1&nbsp;&nbsp;Hooks
1506
+ </h1>
1507
+ <div class="content"><p>The <a href='api/classes/Dfect.html'><code class="line">D()</code> method</a> provides several entry points (hooks) into the test execution process:</p>
1508
+
1509
+ <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">outer test</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span>
1510
+ <span style="color:#036;font-weight:bold">D</span> .&lt; { puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">before each nested test</span><span style="color:#710">&quot;</span></span> }
1511
+ <span style="color:#036;font-weight:bold">D</span> .&gt; { puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">after each nested test</span><span style="color:#710">&quot;</span></span> }
1512
+ <span style="color:#036;font-weight:bold">D</span> .&lt;&lt; { puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">before all nested tests</span><span style="color:#710">&quot;</span></span> }
1513
+ <span style="color:#036;font-weight:bold">D</span> .&gt;&gt; { puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">after all nested tests</span><span style="color:#710">&quot;</span></span> }
1514
+
1515
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">inner test</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span>
1516
+ <span style="color:#888"># assertions and logic here</span>
1517
+ <span style="color:#080;font-weight:bold">end</span>
1518
+ <span style="color:#080;font-weight:bold">end</span>
1519
+ </pre></ins><p> A hook method may be called multiple times. Each call registers additional logic to execute during the hook:</p>
1520
+
1521
+ <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">D</span> .&lt; { puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">do something</span><span style="color:#710">&quot;</span></span> }
1522
+ <span style="color:#036;font-weight:bold">D</span> .&lt; { puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">do something more!</span><span style="color:#710">&quot;</span></span> }
1523
+ </pre></ins></div>
1524
+ </div>
1525
+
1526
+ <div class="section" id="Insulation">
1527
+ <a name="Insulation"/><div class="nav"><a title="Focus this segment" href="#Insulation"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Hooks"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Execution"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Insulation"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1528
+ <h1 class="title">
1529
+ 3.2.2&nbsp;&nbsp;Insulation
1530
+ </h1>
1531
+ <div class="content"><p>Use the singleton class of a temporary object to shield your test logic from Ruby&#8217;s global environment, the code being tested, and from other tests:</p>
1532
+
1533
+ <ins><pre lang="ruby" class="para"><span style="color:#080;font-weight:bold">class</span> &lt;&lt; <span style="color:#B06;font-weight:bold">Object</span>.new
1534
+ <span style="color:#888"># your test logic here</span>
1535
+ <span style="color:#080;font-weight:bold">end</span>
1536
+ </pre></ins><p> Inside this insulated environment, you are free to:</p>
1537
+
1538
+ <ul>
1539
+ <li>mix-in any modules your test logic needs</li>
1540
+
1541
+ <li>define your own constants, methods, and classes</li>
1542
+ </ul>
1543
+
1544
+ <p>For example:</p>
1545
+
1546
+ <ins><pre lang="ruby" class="para"><span style="color:#080;font-weight:bold">class</span> &lt;&lt; <span style="color:#B06;font-weight:bold">Object</span>.new
1547
+ include <span style="color:#036;font-weight:bold">SomeModule</span>
1548
+ extend <span style="color:#036;font-weight:bold">AnotherModule</span>
1549
+
1550
+ <span style="color:#036;font-weight:bold">YOUR_CONSTANT</span> = <span style="color:#00D;font-weight:bold">123</span>
1551
+
1552
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">your tests here</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span>
1553
+ <span style="color:#888"># your test logic here</span>
1554
+
1555
+ your_helper_method
1556
+ <span style="color:#080;font-weight:bold">end</span>
1557
+
1558
+ <span style="color:#080;font-weight:bold">def</span> <span style="color:#038;font-weight:bold">self</span>.your_helper_method
1559
+ <span style="color:#888"># your helper logic here</span>
1560
+
1561
+ helper = <span style="color:#036;font-weight:bold">YourHelperClass</span>.new
1562
+ helper.do_something_helpful
1563
+
1564
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#00D;font-weight:bold">2</span> + <span style="color:#00D;font-weight:bold">2</span> != <span style="color:#00D;font-weight:bold">5</span> }
1565
+ <span style="color:#080;font-weight:bold">end</span>
1566
+
1567
+ <span style="color:#080;font-weight:bold">class</span> <span style="color:#B06;font-weight:bold">YourHelperClass</span>
1568
+ <span style="color:#888"># your helper logic here</span>
1569
+ <span style="color:#080;font-weight:bold">end</span>
1570
+ <span style="color:#080;font-weight:bold">end</span>
1571
+ </pre></ins></div>
1572
+ </div>
1573
+ </div></div>
1574
+ </div>
1575
+
1576
+ <div class="section" id="Execution">
1577
+ <a name="Execution"/><div class="nav"><a title="Focus this segment" href="#Execution"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Insulation"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Automatic-test-execution"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Execution"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1578
+ <h1 class="title">
1579
+ 3.3&nbsp;&nbsp;Execution
1580
+ </h1>
1581
+ <div class="content"><p>You can configure test execution using:</p>
1582
+
1583
+ <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.options = your_options_hash
1584
+ </pre></ins><p> You can execute all tests defined thus far using:</p>
1585
+
1586
+ <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.run
1587
+ </pre></ins><p> You can stop this execution at any time using:</p>
1588
+
1589
+ <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.stop
1590
+ </pre></ins><p> You can view the results of execution using:</p>
1591
+
1592
+ <ins><pre lang="ruby" class="para">puts <span style="color:#036;font-weight:bold">Dfect</span>.report.to_yaml
1593
+ </pre></ins><p> See the <a href='./api/index.html'>API documentation</a> for details and examples.</p>
1594
+
1595
+ <div class="tabs"><ul><li><a href="#Automatic-test-execution">Automatic test execution</a></li></ul>
1596
+ <div class="section" id="Automatic-test-execution">
1597
+ <a name="Automatic-test-execution"/><div class="nav"><a title="Focus this segment" href="#Automatic-test-execution"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Execution"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Reporting"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Automatic-test-execution"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1598
+ <h1 class="title">
1599
+ 3.3.1&nbsp;&nbsp;Automatic test execution
1600
+ </h1>
1601
+ <div class="content"><ins><pre lang="ruby" class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">rubygems</span><span style="color:#710">'</span></span> <span style="color:#888"># only necessary if you are using Ruby 1.8</span>
1602
+ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect/auto</span><span style="color:#710">'</span></span> <span style="color:#888"># &lt;== notice the &quot;auto&quot;</span>
1603
+ </pre></ins> The above code will mix-in the <code class="line"><span style="color:#036;font-weight:bold">Dfect</span></code> module into your program and will execute all tests defined by your program before it terminates.</div>
1604
+ </div>
1605
+ </div></div>
1606
+ </div>
1607
+
1608
+ <div class="section" id="Reporting">
1609
+ <a name="Reporting"/><div class="nav"><a title="Focus this segment" href="#Reporting"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Automatic-test-execution"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Emulation"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Reporting"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1610
+ <h1 class="title">
1611
+ 3.4&nbsp;&nbsp;Reporting
1612
+ </h1>
1613
+ <div class="content"><p>You can insert status messages, which can be arbitrary Ruby objects, into the execution report using the <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::S()</code> method.</p>
1614
+
1615
+ <p>See the <a href='./api/index.html'>API documentation</a> for details and examples.</p></div>
1616
+ </div>
1617
+
1618
+
1619
+
1620
+ <div class="section" id="Emulation">
1621
+ <a name="Emulation"/><div class="nav"><a title="Focus this segment" href="#Emulation"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Reporting"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#A-sample-unit-test"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Emulation"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1622
+ <h1 class="title">
1623
+ 3.5&nbsp;&nbsp;Emulation
1624
+ </h1>
1625
+ <div class="content"><p>Dfect provides emulation layers for several popular testing libraries:</p>
1626
+
1627
+ <ul>
1628
+ <li><tt>dfect/unit</tt> &#8212; Test::Unit</li>
1629
+
1630
+ <li><tt>dfect/mini</tt> &#8212; Minitest</li>
1631
+
1632
+ <li><tt>dfect/spec</tt> &#8212; RSpec</li>
1633
+ </ul>
1634
+
1635
+ <p>Simply <code class="line">require()</code> one of these emulation layers into your test suite and you can write your tests using the familiar syntax of that testing library.</p>
1636
+
1637
+ <p>See the <a href='./api/index.html'>API documentation</a> for details and examples.</p></div>
1638
+ </div>
1639
+ </div>
1640
+
1641
+
1642
+ <div class="example" id="A-sample-unit-test">
1643
+ <a name="A-sample-unit-test"/><div class="nav"><a title="Focus this segment" href="#A-sample-unit-test"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Emulation"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#History"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__A-sample-unit-test"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1644
+ <p class="title">Example 1.&nbsp;&nbsp;A sample unit test</p>
1645
+ <div class="content"><p>The following code is from Dfect&#8217;s very own test suite.</p>
1646
+
1647
+ <ins><pre lang="ruby" class="para"><span style="color:#888">#--</span>
1648
+ <span style="color:#888"># Copyright protects this work.</span>
1649
+ <span style="color:#888"># See LICENSE file for details.</span>
1650
+ <span style="color:#888">#++</span>
1651
+
1652
+ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect/auto</span><span style="color:#710">'</span></span>
1653
+
1654
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">T()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1655
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#038;font-weight:bold">true</span> }
1656
+ <span style="color:#036;font-weight:bold">T</span> { !<span style="color:#038;font-weight:bold">false</span> }
1657
+ <span style="color:#036;font-weight:bold">T</span> { !<span style="color:#038;font-weight:bold">nil</span> }
1658
+
1659
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#00D;font-weight:bold">0</span> } <span style="color:#888"># zero is true in Ruby! :)</span>
1660
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#00D;font-weight:bold">1</span> }
1661
+
1662
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">must return block value</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1663
+ inner = rand()
1664
+ outer = <span style="color:#036;font-weight:bold">T</span> { inner }
1665
+
1666
+ <span style="color:#036;font-weight:bold">T</span> { outer == inner }
1667
+ <span style="color:#080;font-weight:bold">end</span>
1668
+ <span style="color:#080;font-weight:bold">end</span>
1669
+
1670
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">T!()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1671
+ T! { !<span style="color:#038;font-weight:bold">true</span> }
1672
+ T! { <span style="color:#038;font-weight:bold">false</span> }
1673
+ T! { <span style="color:#038;font-weight:bold">nil</span> }
1674
+
1675
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">must return block value</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1676
+ inner = <span style="color:#038;font-weight:bold">nil</span>
1677
+ outer = T! { inner }
1678
+
1679
+ <span style="color:#036;font-weight:bold">T</span> { outer == inner }
1680
+ <span style="color:#080;font-weight:bold">end</span>
1681
+ <span style="color:#080;font-weight:bold">end</span>
1682
+
1683
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">T?()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1684
+ <span style="color:#036;font-weight:bold">T</span> { T? { <span style="color:#038;font-weight:bold">true</span> } }
1685
+ <span style="color:#036;font-weight:bold">F</span> { T? { <span style="color:#038;font-weight:bold">false</span> } }
1686
+ <span style="color:#036;font-weight:bold">F</span> { T? { <span style="color:#038;font-weight:bold">nil</span> } }
1687
+
1688
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">must not return block value</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1689
+ inner = rand()
1690
+ outer = T? { inner }
1691
+
1692
+ <span style="color:#036;font-weight:bold">F</span> { outer == inner }
1693
+ <span style="color:#036;font-weight:bold">T</span> { outer == <span style="color:#038;font-weight:bold">true</span> }
1694
+ <span style="color:#080;font-weight:bold">end</span>
1695
+ <span style="color:#080;font-weight:bold">end</span>
1696
+
1697
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">F() must be same as T!()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1698
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#036;font-weight:bold">D</span>.method(<span style="color:#A60">:F</span>) == <span style="color:#036;font-weight:bold">D</span>.method(<span style="color:#A60">:T!</span>) }
1699
+ <span style="color:#080;font-weight:bold">end</span>
1700
+
1701
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">F!() must be same as T()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1702
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#036;font-weight:bold">D</span>.method(<span style="color:#A60">:F!</span>) == <span style="color:#036;font-weight:bold">D</span>.method(<span style="color:#A60">:T</span>) }
1703
+ <span style="color:#080;font-weight:bold">end</span>
1704
+
1705
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">F?()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1706
+ <span style="color:#036;font-weight:bold">T</span> { T? { <span style="color:#038;font-weight:bold">true</span> } }
1707
+ <span style="color:#036;font-weight:bold">F</span> { T? { <span style="color:#038;font-weight:bold">false</span> } }
1708
+ <span style="color:#036;font-weight:bold">F</span> { T? { <span style="color:#038;font-weight:bold">nil</span> } }
1709
+
1710
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">must not return block value</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1711
+ inner = rand()
1712
+ outer = F? { inner }
1713
+
1714
+ <span style="color:#036;font-weight:bold">F</span> { outer == inner }
1715
+ <span style="color:#036;font-weight:bold">T</span> { outer == <span style="color:#038;font-weight:bold">false</span> }
1716
+ <span style="color:#080;font-weight:bold">end</span>
1717
+ <span style="color:#080;font-weight:bold">end</span>
1718
+
1719
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">E()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1720
+ E(<span style="color:#036;font-weight:bold">SyntaxError</span>) { raise <span style="color:#036;font-weight:bold">SyntaxError</span> }
1721
+
1722
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">forbids block to not raise anything</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1723
+ <span style="color:#036;font-weight:bold">F</span> { E? {} }
1724
+ <span style="color:#080;font-weight:bold">end</span>
1725
+
1726
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">forbids block to raise something unexpected</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1727
+ <span style="color:#036;font-weight:bold">F</span> { E?(<span style="color:#036;font-weight:bold">ArgumentError</span>) { raise <span style="color:#036;font-weight:bold">SyntaxError</span> } }
1728
+ <span style="color:#080;font-weight:bold">end</span>
1729
+
1730
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">defaults to StandardError when no kinds specified</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1731
+ <span style="color:#036;font-weight:bold">E</span> { raise <span style="color:#036;font-weight:bold">StandardError</span> }
1732
+ <span style="color:#036;font-weight:bold">E</span> { raise }
1733
+ <span style="color:#080;font-weight:bold">end</span>
1734
+
1735
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">does not default to StandardError when kinds are specified</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1736
+ <span style="color:#036;font-weight:bold">F</span> { E?(<span style="color:#036;font-weight:bold">SyntaxError</span>) { raise } }
1737
+ <span style="color:#080;font-weight:bold">end</span>
1738
+
1739
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows nested rescue</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1740
+ <span style="color:#036;font-weight:bold">E</span> <span style="color:#036;font-weight:bold">SyntaxError</span> <span style="color:#080;font-weight:bold">do</span>
1741
+ <span style="color:#080;font-weight:bold">begin</span>
1742
+ raise <span style="color:#036;font-weight:bold">LoadError</span>
1743
+ <span style="color:#080;font-weight:bold">rescue</span> <span style="color:#036;font-weight:bold">LoadError</span>
1744
+ <span style="color:#080;font-weight:bold">end</span>
1745
+
1746
+ raise <span style="color:#080;font-weight:bold">rescue</span> <span style="color:#038;font-weight:bold">nil</span>
1747
+
1748
+ raise <span style="color:#036;font-weight:bold">SyntaxError</span>
1749
+ <span style="color:#080;font-weight:bold">end</span>
1750
+ <span style="color:#080;font-weight:bold">end</span>
1751
+ <span style="color:#080;font-weight:bold">end</span>
1752
+
1753
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">E!()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1754
+ E!(<span style="color:#036;font-weight:bold">SyntaxError</span>) { raise <span style="color:#036;font-weight:bold">ArgumentError</span> }
1755
+
1756
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows block to not raise anything</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1757
+ E!(<span style="color:#036;font-weight:bold">SyntaxError</span>) {}
1758
+ <span style="color:#080;font-weight:bold">end</span>
1759
+
1760
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows block to raise something unexpected</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1761
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#080;font-weight:bold">not</span> E?(<span style="color:#036;font-weight:bold">ArgumentError</span>) { raise <span style="color:#036;font-weight:bold">SyntaxError</span> } }
1762
+ <span style="color:#080;font-weight:bold">end</span>
1763
+
1764
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">defaults to StandardError when no kinds specified</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1765
+ E! { raise <span style="color:#036;font-weight:bold">LoadError</span> }
1766
+ <span style="color:#080;font-weight:bold">end</span>
1767
+
1768
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">does not default to StandardError when kinds are specified</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1769
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#080;font-weight:bold">not</span> E?(<span style="color:#036;font-weight:bold">SyntaxError</span>) { raise } }
1770
+ <span style="color:#080;font-weight:bold">end</span>
1771
+
1772
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows nested rescue</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1773
+ E! <span style="color:#036;font-weight:bold">SyntaxError</span> <span style="color:#080;font-weight:bold">do</span>
1774
+ <span style="color:#080;font-weight:bold">begin</span>
1775
+ raise <span style="color:#036;font-weight:bold">LoadError</span>
1776
+ <span style="color:#080;font-weight:bold">rescue</span> <span style="color:#036;font-weight:bold">LoadError</span>
1777
+ <span style="color:#080;font-weight:bold">end</span>
1778
+
1779
+ raise <span style="color:#080;font-weight:bold">rescue</span> <span style="color:#038;font-weight:bold">nil</span>
1780
+
1781
+ raise <span style="color:#036;font-weight:bold">ArgumentError</span>
1782
+ <span style="color:#080;font-weight:bold">end</span>
1783
+ <span style="color:#080;font-weight:bold">end</span>
1784
+ <span style="color:#080;font-weight:bold">end</span>
1785
+
1786
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">C()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1787
+ C(<span style="color:#A60">:foo</span>) { throw <span style="color:#A60">:foo</span> }
1788
+
1789
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">forbids block to not throw anything</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1790
+ <span style="color:#036;font-weight:bold">F</span> { C?(<span style="color:#A60">:bar</span>) {} }
1791
+ <span style="color:#080;font-weight:bold">end</span>
1792
+
1793
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">forbids block to throw something unexpected</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1794
+ <span style="color:#036;font-weight:bold">F</span> { C?(<span style="color:#A60">:bar</span>) { throw <span style="color:#A60">:foo</span> } }
1795
+ <span style="color:#080;font-weight:bold">end</span>
1796
+
1797
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows nested catch</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1798
+ <span style="color:#036;font-weight:bold">C</span> <span style="color:#A60">:foo</span> <span style="color:#080;font-weight:bold">do</span>
1799
+ catch <span style="color:#A60">:bar</span> <span style="color:#080;font-weight:bold">do</span>
1800
+ throw <span style="color:#A60">:bar</span>
1801
+ <span style="color:#080;font-weight:bold">end</span>
1802
+
1803
+ throw <span style="color:#A60">:foo</span>
1804
+ <span style="color:#080;font-weight:bold">end</span>
1805
+ <span style="color:#080;font-weight:bold">end</span>
1806
+
1807
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">returns the value thrown along with symbol</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1808
+ inner = rand()
1809
+ outer = C(<span style="color:#A60">:foo</span>) { throw <span style="color:#A60">:foo</span>, inner }
1810
+
1811
+ <span style="color:#036;font-weight:bold">T</span> { outer == inner }
1812
+ <span style="color:#080;font-weight:bold">end</span>
1813
+ <span style="color:#080;font-weight:bold">end</span>
1814
+
1815
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">C!()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1816
+ C!(<span style="color:#A60">:bar</span>) { throw <span style="color:#A60">:foo</span> }
1817
+
1818
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows block to not throw anything</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1819
+ C!(<span style="color:#A60">:bar</span>) {}
1820
+ <span style="color:#080;font-weight:bold">end</span>
1821
+
1822
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows block to throw something unexpected</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1823
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#080;font-weight:bold">not</span> C?(<span style="color:#A60">:bar</span>) { throw <span style="color:#A60">:foo</span> } }
1824
+ <span style="color:#080;font-weight:bold">end</span>
1825
+
1826
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows nested catch</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1827
+ C! <span style="color:#A60">:bar</span> <span style="color:#080;font-weight:bold">do</span>
1828
+ catch <span style="color:#A60">:moz</span> <span style="color:#080;font-weight:bold">do</span>
1829
+ throw <span style="color:#A60">:moz</span>
1830
+ <span style="color:#080;font-weight:bold">end</span>
1831
+
1832
+ throw <span style="color:#A60">:foo</span>
1833
+ <span style="color:#080;font-weight:bold">end</span>
1834
+ <span style="color:#080;font-weight:bold">end</span>
1835
+
1836
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">does not return the value thrown along with symbol</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1837
+ inner = rand()
1838
+ outer = C!(<span style="color:#A60">:foo</span>) { throw <span style="color:#A60">:bar</span>, inner }
1839
+
1840
+ <span style="color:#036;font-weight:bold">F</span> { outer == inner }
1841
+ <span style="color:#036;font-weight:bold">T</span> { outer == <span style="color:#038;font-weight:bold">nil</span> }
1842
+ <span style="color:#080;font-weight:bold">end</span>
1843
+ <span style="color:#080;font-weight:bold">end</span>
1844
+
1845
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">D()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1846
+ history = []
1847
+
1848
+ <span style="color:#036;font-weight:bold">D</span> .&lt;&lt; { history &lt;&lt; <span style="color:#A60">:before_all</span> }
1849
+ <span style="color:#036;font-weight:bold">D</span> .&lt; { history &lt;&lt; <span style="color:#A60">:before_each</span> }
1850
+ <span style="color:#036;font-weight:bold">D</span> .&gt; { history &lt;&lt; <span style="color:#A60">:after_each</span> }
1851
+ <span style="color:#036;font-weight:bold">D</span> .&gt;&gt; { history &lt;&lt; <span style="color:#A60">:after_all</span> }
1852
+
1853
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">first nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1854
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_all</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1855
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_each</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1856
+ <span style="color:#036;font-weight:bold">F</span> { history.select {|x| x == <span style="color:#A60">:after_each</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1857
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_all</span> }.length == <span style="color:#00D;font-weight:bold">0</span> }
1858
+ <span style="color:#080;font-weight:bold">end</span>
1859
+
1860
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">second nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1861
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_all</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1862
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_each</span> }.length == <span style="color:#00D;font-weight:bold">2</span> }
1863
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_each</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1864
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_all</span> }.length == <span style="color:#00D;font-weight:bold">0</span> }
1865
+ <span style="color:#080;font-weight:bold">end</span>
1866
+
1867
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">third nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1868
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_all</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1869
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_each</span> }.length == <span style="color:#00D;font-weight:bold">3</span> }
1870
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_each</span> }.length == <span style="color:#00D;font-weight:bold">2</span> }
1871
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_all</span> }.length == <span style="color:#00D;font-weight:bold">0</span> }
1872
+ <span style="color:#080;font-weight:bold">end</span>
1873
+
1874
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">fourth nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1875
+ <span style="color:#036;font-weight:bold">D</span> .&lt;&lt; { history &lt;&lt; <span style="color:#A60">:nested_before_all</span> }
1876
+ <span style="color:#036;font-weight:bold">D</span> .&lt; { history &lt;&lt; <span style="color:#A60">:nested_before_each</span> }
1877
+ <span style="color:#036;font-weight:bold">D</span> .&gt; { history &lt;&lt; <span style="color:#A60">:nested_after_each</span> }
1878
+ <span style="color:#036;font-weight:bold">D</span> .&gt;&gt; { history &lt;&lt; <span style="color:#A60">:nested_after_all</span> }
1879
+
1880
+ nested_before_each = <span style="color:#00D;font-weight:bold">0</span>
1881
+
1882
+ <span style="color:#036;font-weight:bold">D</span> .&lt; <span style="color:#080;font-weight:bold">do</span>
1883
+ <span style="color:#888"># outer values remain the same for this nesting</span>
1884
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_all</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1885
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_each</span> }.length == <span style="color:#00D;font-weight:bold">4</span> }
1886
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_each</span> }.length == <span style="color:#00D;font-weight:bold">3</span> }
1887
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_all</span> }.length == <span style="color:#00D;font-weight:bold">0</span> }
1888
+
1889
+ nested_before_each += <span style="color:#00D;font-weight:bold">1</span>
1890
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_each</span> }.length == nested_before_each }
1891
+ <span style="color:#080;font-weight:bold">end</span>
1892
+
1893
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">first double-nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1894
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_all</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1895
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_each</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1896
+ <span style="color:#036;font-weight:bold">F</span> { history.select {|x| x == <span style="color:#A60">:nested_after_each</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1897
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_all</span> }.length == <span style="color:#00D;font-weight:bold">0</span> }
1898
+ <span style="color:#080;font-weight:bold">end</span>
1899
+
1900
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">second double-nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1901
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_all</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1902
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_each</span> }.length == <span style="color:#00D;font-weight:bold">2</span> }
1903
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_each</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1904
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_all</span> }.length == <span style="color:#00D;font-weight:bold">0</span> }
1905
+ <span style="color:#080;font-weight:bold">end</span>
1906
+
1907
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">third double-nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1908
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_all</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
1909
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_each</span> }.length == <span style="color:#00D;font-weight:bold">3</span> }
1910
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_each</span> }.length == <span style="color:#00D;font-weight:bold">2</span> }
1911
+ <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_all</span> }.length == <span style="color:#00D;font-weight:bold">0</span> }
1912
+ <span style="color:#080;font-weight:bold">end</span>
1913
+ <span style="color:#080;font-weight:bold">end</span>
1914
+ <span style="color:#080;font-weight:bold">end</span>
1915
+
1916
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">D.&lt;() must allow inheritance checking when called without a block</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1917
+ <span style="color:#036;font-weight:bold">F</span> { <span style="color:#036;font-weight:bold">D</span> &lt; <span style="color:#036;font-weight:bold">Kernel</span> }
1918
+ <span style="color:#036;font-weight:bold">F</span> { <span style="color:#036;font-weight:bold">D</span> &lt; <span style="color:#036;font-weight:bold">Object</span> }
1919
+ <span style="color:#036;font-weight:bold">F</span> { <span style="color:#036;font-weight:bold">D</span> &lt; <span style="color:#036;font-weight:bold">Module</span> }
1920
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#036;font-weight:bold">D</span>.class == <span style="color:#036;font-weight:bold">Module</span> }
1921
+
1922
+ c = <span style="color:#036;font-weight:bold">Class</span>.new { include <span style="color:#036;font-weight:bold">D</span> }
1923
+ <span style="color:#036;font-weight:bold">T</span> { c &lt; <span style="color:#036;font-weight:bold">D</span> }
1924
+ <span style="color:#080;font-weight:bold">end</span>
1925
+
1926
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">YAML must be able to serialize a class</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1927
+ <span style="color:#036;font-weight:bold">T</span> { <span style="color:#036;font-weight:bold">SyntaxError</span>.to_yaml == <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">--- SyntaxError</span><span style="color:#b0b">\n</span><span style="color:#710">&quot;</span></span> }
1928
+ <span style="color:#080;font-weight:bold">end</span>
1929
+
1930
+ <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">stoping #run</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1931
+ <span style="color:#036;font-weight:bold">Dfect</span>.stop
1932
+ raise <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">this must not be reached!</span><span style="color:#710">'</span></span>
1933
+ <span style="color:#080;font-weight:bold">end</span>
1934
+
1935
+ </pre></ins></div>
1936
+ </div>
1937
+ </div>
1938
+ </div>
1939
+
1940
+
1941
+
1942
+
1943
+ <div class="chapter" id="History">
1944
+ <a name="History"/><div class="nav"><a title="Focus this segment" href="#History"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#A-sample-unit-test"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Version-1-1-0-2009-10-27"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__History"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1945
+ <h1 class="title">
1946
+ Chapter&nbsp;4
1947
+ <br/>
1948
+ <big>History</big>
1949
+ </h1>
1950
+ <div class="content"><div class="tabs"><ul><li><a href="#Version-1-1-0-2009-10-27">Version 1.1.0 (2009-10-27)</a></li><li><a href="#Version-1-0-1-2009-10-07">Version 1.0.1 (2009-10-07)</a></li><li><a href="#Version-1-0-0-2009-05-03">Version 1.0.0 (2009-05-03)</a></li><li><a href="#Version-0-1-0-2009-04-28">Version 0.1.0 (2009-04-28)</a></li><li><a href="#Version-0-0-0-2009-04-13">Version 0.0.0 (2009-04-13)</a></li></ul>
1951
+ <div class="section" id="Version-1-1-0-2009-10-27">
1952
+ <a name="Version-1-1-0-2009-10-27"/><div class="nav"><a title="Focus this segment" href="#Version-1-1-0-2009-10-27"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#History"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Thank-you"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Version-1-1-0-2009-10-27"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1953
+ <h1 class="title">
1954
+ 4.1&nbsp;&nbsp;Version 1.1.0 (2009-10-27)
1955
+ </h1>
1956
+ <div class="content"><p>This release adds a new method for emitting status messages and does some internal housekeeping.</p>
1957
+
1958
+ <div class="tabs"><ul><li><a href="#Thank-you">Thank you</a></li><li><a href="#New-features">New features</a></li><li><a href="#Housekeeping">Housekeeping</a></li></ul>
1959
+ <div class="paragraph" id="Thank-you">
1960
+ <a name="Thank-you"/><div class="nav"><a title="Focus this segment" href="#Thank-you"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Version-1-1-0-2009-10-27"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#New-features"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Thank-you"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1961
+ <p class="title">Thank you</p>
1962
+ <div class="content"><ul>
1963
+ <li>Iñaki Baz Castillo used Dfect and suggested new features.</li>
1964
+ </ul></div>
1965
+ </div>
1966
+
1967
+
1968
+
1969
+ <div class="paragraph" id="New-features">
1970
+ <a name="New-features"/><div class="nav"><a title="Focus this segment" href="#New-features"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Thank-you"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Housekeeping"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__New-features"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1971
+ <p class="title">New features</p>
1972
+ <div class="content"><ul>
1973
+ <li>Add <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::S()</code> method for <a class="xref" href="#Reporting" title="Section 3.4. &quot;Reporting&quot;">adding status messages</a> to the execution report. This feature was <a href='http://github.com/sunaku/dfect/issues/closed#issue/1'>requested by</a> Iñaki Baz Castillo.</li>
1974
+ </ul></div>
1975
+ </div>
1976
+
1977
+
1978
+
1979
+ <div class="paragraph" id="Housekeeping">
1980
+ <a name="Housekeeping"/><div class="nav"><a title="Focus this segment" href="#Housekeeping"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#New-features"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Version-1-0-1-2009-10-07"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Housekeeping"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
1981
+ <p class="title">Housekeeping</p>
1982
+ <div class="content"><ul>
1983
+ <li>
1984
+ <p>Remove unused require of &#8216;delegate&#8217; standard library in &#8216;dfect/spec&#8217; RSpec emulation layer.</p>
1985
+ </li>
1986
+
1987
+ <li>
1988
+ <p>Mention <a class="xref" href="#Emulation" title="Section 3.5">Emulation</a> layers for popular testing libraries.</p>
1989
+ </li>
1990
+
1991
+ <li>
1992
+ <p>Mention that assertions take an optional message parameter.</p>
1993
+ </li>
1994
+
1995
+ <li>
1996
+ <p>Replace sample unit test with Dfect test suite.</p>
1997
+ </li>
1998
+
1999
+ <li>
2000
+ <p>Upgrade user manual to ERBook 9.0.0.</p>
2001
+ </li>
2002
+ </ul></div>
2003
+ </div>
2004
+ </div></div>
2005
+ </div>
2006
+
2007
+ <div class="section" id="Version-1-0-1-2009-10-07">
2008
+ <a name="Version-1-0-1-2009-10-07"/><div class="nav"><a title="Focus this segment" href="#Version-1-0-1-2009-10-07"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Housekeeping"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Bug-fixes"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Version-1-0-1-2009-10-07"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2009
+ <h1 class="title">
2010
+ 4.2&nbsp;&nbsp;Version 1.0.1 (2009-10-07)
2011
+ </h1>
2012
+ <div class="content"><p>This release fixes a bug in the Test::Unit emulation library and revises the user manual.</p>
2013
+
2014
+ <div class="tabs"><ul><li><a href="#Bug-fixes">Bug fixes</a></li><li><a href="#Housekeeping-89349386">Housekeeping</a></li></ul>
2015
+ <div class="paragraph" id="Bug-fixes">
2016
+ <a name="Bug-fixes"/><div class="nav"><a title="Focus this segment" href="#Bug-fixes"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Version-1-0-1-2009-10-07"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Housekeeping-89349386"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Bug-fixes"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2017
+ <p class="title">Bug fixes</p>
2018
+ <div class="content"><ul>
2019
+ <li>The parameters for the <code class="line">assert_equal()</code> method in the <tt>dfect/unit</tt> library were in the wrong order.</li>
2020
+ </ul></div>
2021
+ </div>
2022
+
2023
+
2024
+
2025
+ <div class="paragraph" id="Housekeeping-89349386">
2026
+ <a name="Housekeeping-89349386"/><div class="nav"><a title="Focus this segment" href="#Housekeeping-89349386"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Bug-fixes"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Version-1-0-0-2009-05-03"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Housekeeping-89349386"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2027
+ <p class="title">Housekeeping</p>
2028
+ <div class="content"><ul>
2029
+ <li>
2030
+ <p>Revise user manual to better fit jQuery UI tabs.</p>
2031
+ </li>
2032
+
2033
+ <li>
2034
+ <p>Justify the use of <code class="line">eval()</code> in emulation libraries.</p>
2035
+ </li>
2036
+
2037
+ <li>
2038
+ <p>Use simpler Copyright reminder at the top of every file.</p>
2039
+ </li>
2040
+
2041
+ <li>
2042
+ <p>Make SLOC count in user manual reflect the <em>core</em> library only.</p>
2043
+ </li>
2044
+
2045
+ <li>
2046
+ <p>Mark code spans with <code class="line">{<span style="color:#A60">:lang=</span>ruby}</code> instead of HTML <code class="line">&lt;code/&gt;</code> tags.</p>
2047
+ </li>
2048
+
2049
+ <li>
2050
+ <p>Open source is for fun, so <a href='http://loiclemeur.com/english/2009/03/never-criticize-your-competitors.html'>be nice</a>: speak of &#8220;related works&#8221; instead of &#8220;competitors&#8221;.</p>
2051
+ </li>
2052
+ </ul></div>
2053
+ </div>
2054
+ </div></div>
2055
+ </div>
2056
+
2057
+ <div class="section" id="Version-1-0-0-2009-05-03">
2058
+ <a name="Version-1-0-0-2009-05-03"/><div class="nav"><a title="Focus this segment" href="#Version-1-0-0-2009-05-03"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Housekeeping-89349386"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Incompatible-changes"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Version-1-0-0-2009-05-03"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2059
+ <h1 class="title">
2060
+ 4.3&nbsp;&nbsp;Version 1.0.0 (2009-05-03)
2061
+ </h1>
2062
+ <div class="content"><p>This release improves default choices, adds emulation layers to mimic other testing libraries, and fixes some bugs.</p>
2063
+
2064
+ <div class="tabs"><ul><li><a href="#Incompatible-changes">Incompatible changes</a></li><li><a href="#New-features-89369182">New features</a></li><li><a href="#Bug-fixes-89398092">Bug fixes</a></li><li><a href="#Housekeeping-89393948">Housekeeping</a></li></ul>
2065
+ <div class="paragraph" id="Incompatible-changes">
2066
+ <a name="Incompatible-changes"/><div class="nav"><a title="Focus this segment" href="#Incompatible-changes"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Version-1-0-0-2009-05-03"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#New-features-89369182"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Incompatible-changes"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2067
+ <p class="title">Incompatible changes</p>
2068
+ <div class="content"><ul>
2069
+ <li>
2070
+ <p>The <code class="line"><span style="color:#A60">:debug</span></code> option is now enabled by default and is no longer linked to the value of <code class="line"><span style="color:#d70;font-weight:bold">$DEBUG</span></code>.</p>
2071
+ </li>
2072
+
2073
+ <li>
2074
+ <p><code class="line"><span style="color:#036;font-weight:bold">Dfect</span>.run()</code> now appends to previous results by default.</p>
2075
+
2076
+ <p>This behavior can be disabled by passing <code class="line"><span style="color:#038;font-weight:bold">false</span></code> to the method.</p>
2077
+ </li>
2078
+ </ul></div>
2079
+ </div>
2080
+
2081
+
2082
+
2083
+ <div class="paragraph" id="New-features-89369182">
2084
+ <a name="New-features-89369182"/><div class="nav"><a title="Focus this segment" href="#New-features-89369182"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Incompatible-changes"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Bug-fixes-89398092"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__New-features-89369182"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2085
+ <p class="title">New features</p>
2086
+ <div class="content"><ul>
2087
+ <li>
2088
+ <p>Add emulation layers to mimic other testing libraries:</p>
2089
+
2090
+ <ul>
2091
+ <li><tt>dfect/unit</tt> &#8212; Test::Unit</li>
2092
+
2093
+ <li><tt>dfect/mini</tt> &#8212; Minitest</li>
2094
+
2095
+ <li><tt>dfect/spec</tt> &#8212; RSpec</li>
2096
+ </ul>
2097
+ </li>
2098
+ </ul></div>
2099
+ </div>
2100
+
2101
+
2102
+
2103
+ <div class="paragraph" id="Bug-fixes-89398092">
2104
+ <a name="Bug-fixes-89398092"/><div class="nav"><a title="Focus this segment" href="#Bug-fixes-89398092"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#New-features-89369182"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Housekeeping-89393948"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Bug-fixes-89398092"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2105
+ <p class="title">Bug fixes</p>
2106
+ <div class="content"><ul>
2107
+ <li>Do not blindly replace <code class="line"><span style="color:#036;font-weight:bold">Class</span><span style="color:#888">#to_yaml</span></code>; it might be fixed someday.</li>
2108
+ </ul></div>
2109
+ </div>
2110
+
2111
+
2112
+
2113
+ <div class="paragraph" id="Housekeeping-89393948">
2114
+ <a name="Housekeeping-89393948"/><div class="nav"><a title="Focus this segment" href="#Housekeeping-89393948"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Bug-fixes-89398092"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Version-0-1-0-2009-04-28"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Housekeeping-89393948"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2115
+ <p class="title">Housekeeping</p>
2116
+ <div class="content"><ul>
2117
+ <li>
2118
+ <p>Add <a class="xref" href="#Motivation" title="Section 1.2">Motivation</a> section in user manual to promote interactive debugging.</p>
2119
+ </li>
2120
+
2121
+ <li>
2122
+ <p>Add brief <a class="xref" href="#History" title="Chapter 4">History</a> of this project&#8217;s inception.</p>
2123
+ </li>
2124
+
2125
+ <li>
2126
+ <p>Remove redundant assertions for F!() and T!() methods in test suite.</p>
2127
+ </li>
2128
+
2129
+ <li>
2130
+ <p>Add copyright notice at the top of every file.</p>
2131
+ </li>
2132
+ </ul></div>
2133
+ </div>
2134
+ </div></div>
2135
+ </div>
2136
+
2137
+ <div class="section" id="Version-0-1-0-2009-04-28">
2138
+ <a name="Version-0-1-0-2009-04-28"/><div class="nav"><a title="Focus this segment" href="#Version-0-1-0-2009-04-28"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Housekeeping-89393948"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Thank-you-89444068"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Version-0-1-0-2009-04-28"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2139
+ <h1 class="title">
2140
+ 4.4&nbsp;&nbsp;Version 0.1.0 (2009-04-28)
2141
+ </h1>
2142
+ <div class="content"><p>This release adds new variations to assertion methods, fixes several bugs, and improves test coverage.</p>
2143
+
2144
+ <div class="tabs"><ul><li><a href="#Thank-you-89444068">Thank you</a></li><li><a href="#New-features-89472950">New features</a></li><li><a href="#Bug-fixes-79582034">Bug fixes</a></li><li><a href="#Housekeeping-81713450">Housekeeping</a></li></ul>
2145
+ <div class="paragraph" id="Thank-you-89444068">
2146
+ <a name="Thank-you-89444068"/><div class="nav"><a title="Focus this segment" href="#Thank-you-89444068"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Version-0-1-0-2009-04-28"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#New-features-89472950"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Thank-you-89444068"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2147
+ <p class="title">Thank you</p>
2148
+ <div class="content"><ul>
2149
+ <li>François Beausoleil contributed patches for both code <em>and</em> tests! :-)</li>
2150
+ </ul></div>
2151
+ </div>
2152
+
2153
+
2154
+
2155
+ <div class="paragraph" id="New-features-89472950">
2156
+ <a name="New-features-89472950"/><div class="nav"><a title="Focus this segment" href="#New-features-89472950"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Thank-you-89444068"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Bug-fixes-79582034"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__New-features-89472950"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2157
+ <p class="title">New features</p>
2158
+ <div class="content"><ul>
2159
+ <li>
2160
+ <p>Added <a class="xref" href="#Negation" title="Paragraph. &quot;Negation&quot;">negation (m!)</a> and <a class="xref" href="#Sampling" title="Paragraph. &quot;Sampling&quot;">sampling (m?)</a> variations to <a class="xref" href="#Assertions" title="Section 3.1. &quot;Assertions&quot;">assertion methods</a>.</p>
2161
+
2162
+ <p>These new methods implement assertion functionality missing so far (previously we could not assert that a given exception was NOT thrown) and thereby allow us to fully test Dfect using itself.</p>
2163
+ </li>
2164
+
2165
+ <li>
2166
+ <p>Added documentation on <a class="xref" href="#Insulation" title="Section 3.2.2. &quot;Insulation&quot;">how to insulate tests</a> from the global Ruby namespace.</p>
2167
+ </li>
2168
+ </ul></div>
2169
+ </div>
2170
+
2171
+
2172
+
2173
+ <div class="paragraph" id="Bug-fixes-79582034">
2174
+ <a name="Bug-fixes-79582034"/><div class="nav"><a title="Focus this segment" href="#Bug-fixes-79582034"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#New-features-89472950"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Housekeeping-81713450"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Bug-fixes-79582034"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2175
+ <p class="title">Bug fixes</p>
2176
+ <div class="content"><ul>
2177
+ <li>
2178
+ <p>The <code class="line">E()</code> method did not consider the case where a block does not raise anything as a failure. &#8212;<em>François Beausoleil</em></p>
2179
+ </li>
2180
+
2181
+ <li>
2182
+ <p>When creating a report about an assertion failure, an exception would be thrown if any local variables pointed to an empty array.</p>
2183
+ </li>
2184
+
2185
+ <li>
2186
+ <p>The <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::&lt;()</code> method broke the inheritance-checking behavior of the &lt; class method.</p>
2187
+
2188
+ <p>Added a bypass to the originial behavior so that <code class="line"><span style="color:#036;font-weight:bold">RCov</span>::<span style="color:#036;font-weight:bold">XX</span></code> can properly generate a report about code that uses Dfect.</p>
2189
+ </li>
2190
+
2191
+ <li>
2192
+ <p>Added workaround for YAML error when serializing a class object:</p>
2193
+
2194
+ <pre>TypeError: can&#39;t dump anonymous class Class</pre>
2195
+ </li>
2196
+ </ul></div>
2197
+ </div>
2198
+
2199
+
2200
+
2201
+ <div class="paragraph" id="Housekeeping-81713450">
2202
+ <a name="Housekeeping-81713450"/><div class="nav"><a title="Focus this segment" href="#Housekeeping-81713450"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Bug-fixes-79582034"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Version-0-0-0-2009-04-13"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Housekeeping-81713450"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2203
+ <p class="title">Housekeeping</p>
2204
+ <div class="content"><ul>
2205
+ <li>Filled the big holes in test coverage. Everything except the runtime debugging logic is now covered by the unit tests.</li>
2206
+ </ul></div>
2207
+ </div>
2208
+ </div></div>
2209
+ </div>
2210
+
2211
+ <div class="section" id="Version-0-0-0-2009-04-13">
2212
+ <a name="Version-0-0-0-2009-04-13"/><div class="nav"><a title="Focus this segment" href="#Version-0-0-0-2009-04-13"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Housekeeping-81713450"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Return to listing" href="#a__toc__Version-0-0-0-2009-04-13"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
2213
+ <h1 class="title">
2214
+ 4.5&nbsp;&nbsp;Version 0.0.0 (2009-04-13)
2215
+ </h1>
2216
+ <div class="content"><p>For the longest time, I took <a href='http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/index.html'>Test::Unit</a> and <a href='http://rspec.info'>RSpec</a> for granted. They were the epitomy of modern Ruby practice; the insurmountable status quo; immortalized in books, conferences, and blogs alike.</p>
2217
+
2218
+ <p>Why would <em>anyone</em> think of using anything remotely different, let alone be foolish enough to write an alternative testing library when these are clearly <em>good enough</em>?</p>
2219
+
2220
+ <p>Recent experiments in assertion testing libraries smashed my world view:</p>
2221
+
2222
+ <ul>
2223
+ <li><a href='http://assert2.rubyforge.org'>assert{ 2.0 }</a></li>
2224
+
2225
+ <li><a href='http://github.com/ahoward/testy/tree/master'>Testy</a></li>
2226
+
2227
+ <li><a href='http://www.ruby-forum.com/topic/183354'>Verify</a></li>
2228
+ </ul>
2229
+
2230
+ <p>The status quo was certainly <em>not</em> &#8220;good enough&#8221;, as I had so blindly believed all these years. In fact, they were <em>verbose</em> behemoths that chose to encode endless permutations of conjecture into methods.</p>
2231
+
2232
+ <p>Empowered by this revelation and inspired by <a href='http://www.ruby-forum.com/topic/183354#801895'>Sean O&#8217;Halpin&#8217;s musing</a> on alternative names for assertion methods, I rose to challenge the status quo.</p>
2233
+
2234
+ <p>And so I present to you the first public release of Dfect.</p></div>
2235
+ </div>
2236
+ </div></div>
2237
+ </div>
2238
+
2239
+
2240
+ </div>
2241
+
2242
+
2243
+ <div style="display: none"><br/><hr/><br/></div>
2244
+
2245
+ <div id="__nfo__">
2246
+ <p>This document was generated by <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook 9.0.0</a> on <b>2009-10-27 00:34:17 -0700</b> using the following resources.</p>
2247
+
2248
+ <table border="1">
2249
+ <thead>
2250
+ <tr>
2251
+ <th>Resource</th>
2252
+ <th>Origin</th>
2253
+ <th>License</th>
2254
+ </tr>
2255
+ </thead>
2256
+ <tbody>
2257
+ <tr>
2258
+ <td>
2259
+ <img alt="here_frag" src="84731598" class="icon"/>
2260
+ <img alt="important" src="84731220" class="icon"/>
2261
+ <img alt="warning" src="84730758" class="icon"/>
2262
+ <img alt="caution" src="84730296" class="icon"/>
2263
+ <img alt="note" src="84729764" class="icon"/>
2264
+ <img alt="tip" src="84729302" class="icon"/>
2265
+ <img alt="quote" src="84728784" class="icon"/>
2266
+ <img alt="nav_here" src="84728322" class="icon"/>
2267
+ <img alt="nav_prev" src="84727874" class="icon"/>
2268
+ <img alt="nav_next" src="84727398" class="icon"/>
2269
+ <img alt="nav_list" src="84726992" class="icon"/>
2270
+ </td>
2271
+ <td>
2272
+ <a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a>
2273
+
2274
+ <p>&copy; 2005 <a href="http://tango.freedesktop.org">Tango Desktop Project</a></p>
2275
+ </td>
2276
+ <td>
2277
+ <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License Agreement</a>
2278
+ </td>
2279
+ </tr>
2280
+
2281
+ <tr>
2282
+ <td>
2283
+ <img alt="hyperlink" src="84731990" class="icon"/>
2284
+ </td>
2285
+ <td>
2286
+ <a href="http://www.mediawiki.org/skins-1.5/monobook/external.png">MediaWiki Monobook Skin</a>
2287
+
2288
+ <p>&copy; 2007 <a href="https://www.ohloh.net/projects/mediawiki/contributors">MediaWiki contributors</a></p>
2289
+ </td>
2290
+ <td>
2291
+ <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2</a>
2292
+ </td>
2293
+ </tr>
2294
+ </tbody>
2295
+ </table>
2296
+
2297
+ <p class="validations">
2298
+ <a href="http://validator.w3.org/check?uri=referer"><img
2299
+ src="http://www.w3.org/Icons/valid-xhtml10-blue"
2300
+ alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
2301
+
2302
+ <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"><img
2303
+ src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
2304
+ alt="Valid CSS!" height="31" width="88" /></a>
2305
+ </p>
2306
+ </div>
2307
+ </div>
2308
+
2309
+
2310
+
2311
+
2312
+ <div id="__footer__">
2313
+
2314
+
2315
+
2316
+
2317
+ </div>
2318
+
2319
+
2320
+
2321
+ </div>
2322
+ </body>
2323
+ </html>