Revision 912:5e80956cc792 public

View differences:

public/help/wiki_syntax_detailed.html
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
<title>RedmineWikiFormatting</title>
5
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
<style type="text/css">
7
    body { font:80% Verdana,Tahoma,Arial,sans-serif; }
8
    h1, h2, h3, h4 {  font-family: Trebuchet MS,Georgia,"Times New Roman",serif; }
9
    pre, code { font-size:120%; }
10
    pre code { font-size:100%; }
11
    pre {
12
        margin: 1em 1em 1em 1.6em;
13
        padding: 2px;
14
        background-color: #fafafa;
15
        border: 1px solid #dadada;
16
        width:95%;
17
        overflow-x: auto;
18
    }
19
    a.new { color: #b73535; }
20

  
21
    .CodeRay .c  { color:#666; }
22
    
23
    .CodeRay .cl { color:#B06; font-weight:bold }
24
    .CodeRay .dl { color:black }
25
    .CodeRay .fu { color:#06B; font-weight:bold }
26
    
27
    .CodeRay .il { background: #eee }
28
    .CodeRay .il .idl { font-weight: bold; color: #888 }
29
    
30
    .CodeRay .iv { color:#33B }
31
    .CodeRay .r  { color:#080; font-weight:bold }
32
    
33
    .CodeRay .s  { background-color:#fff0f0 }
34
    .CodeRay .s  .dl { color:#710 }
35
</style>
36
</head>
37

  
38
<body>
39
<h1><a name="1" class="wiki-page"></a>Wiki formatting</h1>
40

  
41
    <h2><a name="2" class="wiki-page"></a>Links</h2>
42

  
43
        <h3><a name="3" class="wiki-page"></a>Redmine links</h3>
44

  
45
        <p>Redmine allows hyperlinking between issues, changesets and wiki pages from anywhere wiki formatting is used.</p>
46
        <ul>
47
            <li>Link to an issue: <strong>#124</strong> (displays <del><a href="#" class="issue" title="bulk edit doesn't change the category or fixed version properties (Closed)">#124</a></del>, link is striked-through if the issue is closed)</li>
48
            <li>Link to a changeset: <strong>r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">r758</a>)</li>
49
            <li>Link to a changeset with a non-numeric hash: <strong>commit:c6f4d0fd</strong> (displays <a href="#" class="changeset">c6f4d0fd</a>).</li>
50
            <li>Link to a changeset of another project: <strong>sandbox:r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">sandbox:r758</a>)</li>
51
            <li>Link to a changeset with a non-numeric hash: <strong>sandbox:c6f4d0fd</strong> (displays <a href="#" class="changeset">sandbox:c6f4d0fd</a>).</li>
52
        </ul>
53

  
54
        <p>Wiki links:</p>
55

  
56
        <ul>
57
            <li><strong>[[Guide]]</strong> displays a link to the page named 'Guide': <a href="#" class="wiki-page">Guide</a></li>
58
            <li><strong>[[Guide#further-reading]]</strong> takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: <a href="#" class="wiki-page">Guide</a></li>
59
            <li><strong>[[Guide|User manual]]</strong> displays a link to the same page but with a different text: <a href="#" class="wiki-page">User manual</a></li>
60
        </ul>
61

  
62
        <p>You can also link to pages of an other project wiki:</p>
63

  
64
        <ul>
65
            <li><strong>[[sandbox:some page]]</strong> displays a link to the page named 'Some page' of the Sandbox wiki</li>
66
            <li><strong>[[sandbox:]]</strong> displays a link to the Sandbox wiki main page</li>
67
        </ul>
68

  
69
        <p>Wiki links are displayed in red if the page doesn't exist yet, eg: <a href="#" class="wiki-page new">Nonexistent page</a>.</p>
70

  
71
        <p>Links to other resources:</p>
72

  
73
        <ul>
74
            <li>Documents:
75
                <ul>
76
                    <li><strong>document#17</strong> (link to document with id 17)</li>
77
                    <li><strong>document:Greetings</strong> (link to the document with title "Greetings")</li>
78
                    <li><strong>document:"Some document"</strong> (double quotes can be used when document title contains spaces)</li>
79
                    <li><strong>sandbox:document:"Some document"</strong> (link to a document with title "Some document" in other project "sandbox")</li>
80
                </ul></li>
81
        </ul>
82

  
83
        <ul>
84
            <li>Versions:
85
                <ul>
86
                    <li><strong>version#3</strong> (link to version with id 3)</li>
87
                    <li><strong>version:1.0.0</strong> (link to version named "1.0.0")</li>
88
                    <li><strong>version:"1.0 beta 2"</strong></li>
89
                    <li><strong>sandbox:version:1.0.0</strong> (link to version "1.0.0" in the project "sandbox")</li>
90
                </ul></li>
91
        </ul>
92

  
93
        <ul>
94
            <li>Attachments:
95
                <ul>
96
                    <li><strong>attachment:file.zip</strong> (link to the attachment of the current object named file.zip)</li>
97
                    <li>For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)</li>
98
                </ul></li>
99
        </ul>
100

  
101
        <ul>
102
             <li>Repository files:
103
                <ul>
104
                    <li><strong>source:some/file</strong>           (link to the file located at /some/file in the project's repository)</li>
105
                    <li><strong>source:some/file@52</strong>        (link to the file's revision 52)</li>
106
                    <li><strong>source:some/file#L120</strong>      (link to line 120 of the file)</li>
107
                    <li><strong>source:some/file@52#L120</strong>   (link to line 120 of the file's revision 52)</li>
108
                    <li><strong>source:"some file@52#L120"</strong> (use double quotes when the URL contains spaces</li>
109
                    <li><strong>export:some/file</strong>           (force the download of the file)</li>
110
                    <li><strong>sandbox:source:some/file</strong>   (link to the file located at /some/file in the repository of the project "sandbox")</li>
111
                    <li><strong>sandbox:export:some/file</strong>   (force the download of the file)</li>
112
                </ul></li>
113
        </ul>
114

  
115
        <ul>
116
            <li>Forum messages:
117
                <ul>
118
                    <li><strong>message#1218</strong> (link to message with id 1218)</li>
119
                </ul></li>
120
        </ul>
121

  
122
        <ul>
123
            <li>Projects:
124
                <ul>
125
                    <li><strong>project#3</strong> (link to project with id 3)</li>
126
                    <li><strong>project:someproject</strong> (link to project named "someproject")</li>
127
                </ul></li>
128
        </ul>
129

  
130

  
131
        <p>Escaping:</p>
132

  
133
        <ul>
134
            <li>You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !</li>
135
        </ul>
136

  
137

  
138
        <h3><a name="4" class="wiki-page"></a>External links</h3>
139

  
140
        <p>HTTP URLs and email addresses are automatically turned into clickable links:</p>
141

  
142
<pre>
143
http://www.redmine.org, someone@foo.bar
144
</pre>
145

  
146
        <p>displays: <a class="external" href="http://www.redmine.org">http://www.redmine.org</a>, <a href="mailto:someone@foo.bar" class="email">someone@foo.bar</a></p>
147

  
148
        <p>If you want to display a specific text instead of the URL, you can use the standard textile syntax:</p>
149

  
150
<pre>
151
"Redmine web site":http://www.redmine.org
152
</pre>
153

  
154
        <p>displays: <a href="http://www.redmine.org" class="external">Redmine web site</a></p>
155

  
156

  
157
    <h2><a name="5" class="wiki-page"></a>Text formatting</h2>
158

  
159

  
160
    <p>For things such as headlines, bold, tables, lists, Redmine supports Textile syntax.  See <a class="external" href="http://www.textism.com/tools/textile/">http://www.textism.com/tools/textile/</a> for information on using any of these features.  A few samples are included below, but the engine is capable of much more of that.</p>
161

  
162
        <h3><a name="6" class="wiki-page"></a>Font style</h3>
163

  
164
<pre>
165
* *bold*
166
* _italic_
167
* _*bold italic*_
168
* +underline+
169
* -strike-through-
170
</pre>
171

  
172
        <p>Display:</p>
173

  
174
        <ul>
175
            <li><strong>bold</strong></li>
176
            <li><em>italic</em></li>
177
            <li><em>*bold italic*</em></li>
178
            <li><ins>underline</ins></li>
179
            <li><del>strike-through</del></li>
180
        </ul>
181

  
182
        <h3><a name="7" class="wiki-page"></a>Inline images</h3>
183

  
184
        <ul>
185
            <li><strong>!image_url!</strong> displays an image located at image_url (textile syntax)</li>
186
            <li><strong>!>image_url!</strong> right floating image</li>
187
            <li>If you have an image attached to your wiki page, it can be displayed inline using its filename: <strong>!attached_image.png!</strong></li>
188
        </ul>
189

  
190
        <h3><a name="8" class="wiki-page"></a>Headings</h3>
191

  
192
<pre>
193
h1. Heading
194
h2. Subheading
195
h3. Subsubheading
196
</pre>
197

  
198
        <p>Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.</p>
199

  
200

  
201

  
202

  
203
<h3><a name="9" class="wiki-page"></a>Bullets and Numbering</h3>
204

  
205
<pre>
206
* First Level Bullet
207
** Second Level Bullet
208
** Another Second Level Bullet
209
*** Third Level Bullet
210
** Back to 2nd Level Bullet
211
* Back to 1st Level Bullet
212
</pre>
213

  
214
<ul>
215
    <li>First Level Bullet</li>
216
    <ul>
217
      <li>Second Level Bullet</li>
218
      <li>Another Second Level Bullet</li>
219
        <ul>
220
          <li>Third Level Bullet</li>
221
        </ul>
222
        <li>Back to 2nd Level Bullet</li>
223
    </ul>
224
    
225
    <li>Back to 1st Level Bullet</li>
226
</ul>
227

  
228
<pre>
229
# First Level Numbering
230
## Second Level Numbering
231
## Another Second Level Numbering
232
### Third Level Numbering
233
## Back to 2nd Level Numbering
234
# Back to 1st Level Numbering
235
</pre>
236

  
237
<ol>
238
    <li>First Level Numbering</li>
239
    <ol>
240
      <li>Second Level Numbering</li>
241
      <li>Another Second Level Numbering</li>
242
        <ol>
243
          <li>Third Level Numbering</li>
244
        </ol>
245
        <li>Back to 2nd Level Numbering</li>
246
    </ol>
247
    <li>Back to 1st Level Numbering</li>
248
</ol>
249

  
250
<pre>
251
# First Level Numbering
252
#* Bullet inside numbering environment
253
#* Another Bullet inside numbering environment
254
# Back to 1st Level Numbering
255
</pre>
256

  
257
<ol>
258
    <li>First Level Numbering</li>
259
    <ul>
260
      <li>Bullet inside numbering environment</li>
261
      <li>Another Bullet inside numbering environment</li>
262
    </ul>
263
    
264
    <li>Back to 1st Level Numbering</li>
265
</ol>
266

  
267

  
268

  
269

  
270

  
271

  
272

  
273
        <h3><a name="9" class="wiki-page"></a>Paragraphs</h3>
274

  
275
<pre>
276
p>. right aligned
277
p=. centered
278
</pre>
279

  
280
        <p style="text-align:center;">This is a centered paragraph.</p>
281

  
282

  
283
        <h3><a name="10" class="wiki-page"></a>Blockquotes</h3>
284

  
285
        <p>Start the paragraph with <strong>bq.</strong></p>
286

  
287
<pre>
288
bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
289
To go live, all you need to add is a database and a web server.
290
</pre>
291

  
292
        <p>Display:</p>
293

  
294
        <blockquote>
295
                <p>Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.<br />To go live, all you need to add is a database and a web server.</p>
296
        </blockquote>
297

  
298

  
299
        <h3><a name="11" class="wiki-page"></a>Table of content</h3>
300

  
301
<pre>
302
{{toc}} => left aligned toc
303
{{>toc}} => right aligned toc
304
</pre>
305

  
306
    <h2><a name="12" class="wiki-page"></a>Macros</h2>
307

  
308
    <p>Redmine has the following builtin macros:</p>
309

  
310
    <p><dl><dt><code>hello_world</code></dt><dd><p>Sample macro.</p></dd><dt><code>include</code></dt><dd><p>Include a wiki page. Example:</p>
311

  
312
    <pre><code>{{include(Foo)}}</code></pre></dd><dt><code>macro_list</code></dt><dd><p>Displays a list of all available macros, including description if available.</p></dd></dl></p>
313

  
314

  
315
    <h2><a name="13" class="wiki-page"></a>Code highlighting</h2>
316

  
317
    <p>Code highlightment relies on <a href="http://coderay.rubychan.de/" class="external">CodeRay</a>, a fast syntax highlighting library written completely in Ruby. It currently supports c, cpp, css, delphi, groovy, html, java, javascript, json, php, python, rhtml, ruby, scheme, sql, xml and yaml languages.</p>
318

  
319
    <p>You can highlight code in your wiki page using this syntax:</p>
320

  
321
<pre>
322
&lt;pre&gt;&lt;code class="ruby"&gt;
323
  Place you code here.
324
&lt;/code&gt;&lt;/pre&gt;
325
</pre>
326

  
327
    <p>Example:</p>
328

  
329
<pre><code class="ruby CodeRay"><span class="no"> 1</span> <span class="c"># The Greeter class</span>
330
<span class="no"> 2</span> <span class="r">class</span> <span class="cl">Greeter</span>
331
<span class="no"> 3</span>   <span class="r">def</span> <span class="fu">initialize</span>(name)
332
<span class="no"> 4</span>     <span class="iv">@name</span> = name.capitalize
333
<span class="no"> 5</span>   <span class="r">end</span>
334
<span class="no"> 6</span> 
335
<span class="no"> 7</span>   <span class="r">def</span> <span class="fu">salute</span>
336
<span class="no"> 8</span>     puts <span class="s"><span class="dl">"</span><span class="k">Hello </span><span class="il"><span class="idl">#{</span><span class="iv">@name</span><span class="idl">}</span></span><span class="k">!</span><span class="dl">"</span></span> 
337
<span class="no"> 9</span>   <span class="r">end</span>
338
<span class="no"><strong>10</strong></span> <span class="r">end</span>
339
</code>
340
</pre>
341
</body>
342
</html>
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
<head>
4
<title>RedmineWikiFormatting</title>
5
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
<style type="text/css">
7
    body { font:80% Verdana,Tahoma,Arial,sans-serif; }
8
    h1, h2, h3, h4 {  font-family: Trebuchet MS,Georgia,"Times New Roman",serif; }
9
    pre, code { font-size:120%; }
10
    pre code { font-size:100%; }
11
    pre {
12
        margin: 1em 1em 1em 1.6em;
13
        padding: 2px;
14
        background-color: #fafafa;
15
        border: 1px solid #dadada;
16
        width:95%;
17
        overflow-x: auto;
18
    }
19
    a.new { color: #b73535; }
20

  
21
    .syntaxhl .line-numbers { padding: 2px 4px 2px 4px; background-color: #eee; margin:0 }
22
    .syntaxhl .comment  { color:#666; }
23

  
24
    .syntaxhl .class { color:#B06; font-weight:bold }
25
    .syntaxhl .delimiter { color:black }
26
    .syntaxhl .function { color:#06B; font-weight:bold }
27

  
28
    .syntaxhl .inline { background: #eee }
29
    .syntaxhl .inline .inline-delimiter { font-weight: bold; color: #888 }
30

  
31
    .syntaxhl .instance-variable { color:#33B }
32
    .syntaxhl .reserved { color:#080; font-weight:bold }
33

  
34
    .syntaxhl .string { background-color:#fff0f0; color: #D20; }
35
    .syntaxhl .string .delimiter { color:#710 }
36

  
37
</style>
38
</head>
39

  
40
<body>
41
<h1><a name="1" class="wiki-page"></a>Wiki formatting</h1>
42

  
43
    <h2><a name="2" class="wiki-page"></a>Links</h2>
44

  
45
        <h3><a name="3" class="wiki-page"></a>Redmine links</h3>
46

  
47
        <p>Redmine allows hyperlinking between issues, changesets and wiki pages from anywhere wiki formatting is used.</p>
48
        <ul>
49
            <li>Link to an issue: <strong>#124</strong> (displays <del><a href="#" class="issue" title="bulk edit doesn't change the category or fixed version properties (Closed)">#124</a></del>, link is striked-through if the issue is closed)</li>
50
            <li>Link to a changeset: <strong>r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">r758</a>)</li>
51
            <li>Link to a changeset with a non-numeric hash: <strong>commit:c6f4d0fd</strong> (displays <a href="#" class="changeset">c6f4d0fd</a>).</li>
52
            <li>Link to a changeset of another project: <strong>sandbox:r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">sandbox:r758</a>)</li>
53
            <li>Link to a changeset with a non-numeric hash: <strong>sandbox:c6f4d0fd</strong> (displays <a href="#" class="changeset">sandbox:c6f4d0fd</a>).</li>
54
        </ul>
55

  
56
        <p>Wiki links:</p>
57

  
58
        <ul>
59
            <li><strong>[[Guide]]</strong> displays a link to the page named 'Guide': <a href="#" class="wiki-page">Guide</a></li>
60
            <li><strong>[[Guide#further-reading]]</strong> takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: <a href="#" class="wiki-page">Guide</a></li>
61
            <li><strong>[[Guide|User manual]]</strong> displays a link to the same page but with a different text: <a href="#" class="wiki-page">User manual</a></li>
62
        </ul>
63

  
64
        <p>You can also link to pages of an other project wiki:</p>
65

  
66
        <ul>
67
            <li><strong>[[sandbox:some page]]</strong> displays a link to the page named 'Some page' of the Sandbox wiki</li>
68
            <li><strong>[[sandbox:]]</strong> displays a link to the Sandbox wiki main page</li>
69
        </ul>
70

  
71
        <p>Wiki links are displayed in red if the page doesn't exist yet, eg: <a href="#" class="wiki-page new">Nonexistent page</a>.</p>
72

  
73
        <p>Links to other resources:</p>
74

  
75
        <ul>
76
            <li>Documents:
77
                <ul>
78
                    <li><strong>document#17</strong> (link to document with id 17)</li>
79
                    <li><strong>document:Greetings</strong> (link to the document with title "Greetings")</li>
80
                    <li><strong>document:"Some document"</strong> (double quotes can be used when document title contains spaces)</li>
81
                    <li><strong>sandbox:document:"Some document"</strong> (link to a document with title "Some document" in other project "sandbox")</li>
82
                </ul></li>
83
        </ul>
84

  
85
        <ul>
86
            <li>Versions:
87
                <ul>
88
                    <li><strong>version#3</strong> (link to version with id 3)</li>
89
                    <li><strong>version:1.0.0</strong> (link to version named "1.0.0")</li>
90
                    <li><strong>version:"1.0 beta 2"</strong></li>
91
                    <li><strong>sandbox:version:1.0.0</strong> (link to version "1.0.0" in the project "sandbox")</li>
92
                </ul></li>
93
        </ul>
94

  
95
        <ul>
96
            <li>Attachments:
97
                <ul>
98
                    <li><strong>attachment:file.zip</strong> (link to the attachment of the current object named file.zip)</li>
99
                    <li>For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)</li>
100
                </ul></li>
101
        </ul>
102

  
103
        <ul>
104
             <li>Repository files:
105
                <ul>
106
                    <li><strong>source:some/file</strong>           (link to the file located at /some/file in the project's repository)</li>
107
                    <li><strong>source:some/file@52</strong>        (link to the file's revision 52)</li>
108
                    <li><strong>source:some/file#L120</strong>      (link to line 120 of the file)</li>
109
                    <li><strong>source:some/file@52#L120</strong>   (link to line 120 of the file's revision 52)</li>
110
                    <li><strong>source:"some file@52#L120"</strong> (use double quotes when the URL contains spaces</li>
111
                    <li><strong>export:some/file</strong>           (force the download of the file)</li>
112
                    <li><strong>sandbox:source:some/file</strong>   (link to the file located at /some/file in the repository of the project "sandbox")</li>
113
                    <li><strong>sandbox:export:some/file</strong>   (force the download of the file)</li>
114
                </ul></li>
115
        </ul>
116

  
117
        <ul>
118
            <li>Forum messages:
119
                <ul>
120
                    <li><strong>message#1218</strong> (link to message with id 1218)</li>
121
                </ul></li>
122
        </ul>
123

  
124
        <ul>
125
            <li>Projects:
126
                <ul>
127
                    <li><strong>project#3</strong> (link to project with id 3)</li>
128
                    <li><strong>project:someproject</strong> (link to project named "someproject")</li>
129
                </ul></li>
130
        </ul>
131

  
132

  
133
        <p>Escaping:</p>
134

  
135
        <ul>
136
            <li>You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !</li>
137
        </ul>
138

  
139

  
140
        <h3><a name="4" class="wiki-page"></a>External links</h3>
141

  
142
        <p>HTTP URLs and email addresses are automatically turned into clickable links:</p>
143

  
144
<pre>
145
http://www.redmine.org, someone@foo.bar
146
</pre>
147

  
148
        <p>displays: <a class="external" href="http://www.redmine.org">http://www.redmine.org</a>, <a href="mailto:someone@foo.bar" class="email">someone@foo.bar</a></p>
149

  
150
        <p>If you want to display a specific text instead of the URL, you can use the standard textile syntax:</p>
151

  
152
<pre>
153
"Redmine web site":http://www.redmine.org
154
</pre>
155

  
156
        <p>displays: <a href="http://www.redmine.org" class="external">Redmine web site</a></p>
157

  
158

  
159
    <h2><a name="5" class="wiki-page"></a>Text formatting</h2>
160

  
161

  
162
    <p>For things such as headlines, bold, tables, lists, Redmine supports Textile syntax.  See <a class="external" href="http://www.textism.com/tools/textile/">http://www.textism.com/tools/textile/</a> for information on using any of these features.  A few samples are included below, but the engine is capable of much more of that.</p>
163

  
164
        <h3><a name="6" class="wiki-page"></a>Font style</h3>
165

  
166
<pre>
167
* *bold*
168
* _italic_
169
* _*bold italic*_
170
* +underline+
171
* -strike-through-
172
</pre>
173

  
174
        <p>Display:</p>
175

  
176
        <ul>
177
            <li><strong>bold</strong></li>
178
            <li><em>italic</em></li>
179
            <li><em>*bold italic*</em></li>
180
            <li><ins>underline</ins></li>
181
            <li><del>strike-through</del></li>
182
        </ul>
183

  
184
        <h3><a name="7" class="wiki-page"></a>Inline images</h3>
185

  
186
        <ul>
187
            <li><strong>!image_url!</strong> displays an image located at image_url (textile syntax)</li>
188
            <li><strong>!>image_url!</strong> right floating image</li>
189
            <li>If you have an image attached to your wiki page, it can be displayed inline using its filename: <strong>!attached_image.png!</strong></li>
190
        </ul>
191

  
192
        <h3><a name="8" class="wiki-page"></a>Headings</h3>
193

  
194
<pre>
195
h1. Heading
196
h2. Subheading
197
h3. Subsubheading
198
</pre>
199

  
200
        <p>Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.</p>
201

  
202

  
203

  
204

  
205
<h3><a name="9" class="wiki-page"></a>Bullets and Numbering</h3>
206

  
207
<pre>
208
* First Level Bullet
209
** Second Level Bullet
210
** Another Second Level Bullet
211
*** Third Level Bullet
212
** Back to 2nd Level Bullet
213
* Back to 1st Level Bullet
214
</pre>
215

  
216
<ul>
217
    <li>First Level Bullet</li>
218
    <ul>
219
      <li>Second Level Bullet</li>
220
      <li>Another Second Level Bullet</li>
221
        <ul>
222
          <li>Third Level Bullet</li>
223
        </ul>
224
        <li>Back to 2nd Level Bullet</li>
225
    </ul>
226
    
227
    <li>Back to 1st Level Bullet</li>
228
</ul>
229

  
230
<pre>
231
# First Level Numbering
232
## Second Level Numbering
233
## Another Second Level Numbering
234
### Third Level Numbering
235
## Back to 2nd Level Numbering
236
# Back to 1st Level Numbering
237
</pre>
238

  
239
<ol>
240
    <li>First Level Numbering</li>
241
    <ol>
242
      <li>Second Level Numbering</li>
243
      <li>Another Second Level Numbering</li>
244
        <ol>
245
          <li>Third Level Numbering</li>
246
        </ol>
247
        <li>Back to 2nd Level Numbering</li>
248
    </ol>
249
    <li>Back to 1st Level Numbering</li>
250
</ol>
251

  
252
<pre>
253
# First Level Numbering
254
#* Bullet inside numbering environment
255
#* Another Bullet inside numbering environment
256
# Back to 1st Level Numbering
257
</pre>
258

  
259
<ol>
260
    <li>First Level Numbering</li>
261
    <ul>
262
      <li>Bullet inside numbering environment</li>
263
      <li>Another Bullet inside numbering environment</li>
264
    </ul>
265
    
266
    <li>Back to 1st Level Numbering</li>
267
</ol>
268

  
269

  
270

  
271

  
272

  
273

  
274

  
275
        <h3><a name="9" class="wiki-page"></a>Paragraphs</h3>
276

  
277
<pre>
278
p>. right aligned
279
p=. centered
280
</pre>
281

  
282
        <p style="text-align:center;">This is a centered paragraph.</p>
283

  
284

  
285
        <h3><a name="10" class="wiki-page"></a>Blockquotes</h3>
286

  
287
        <p>Start the paragraph with <strong>bq.</strong></p>
288

  
289
<pre>
290
bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
291
To go live, all you need to add is a database and a web server.
292
</pre>
293

  
294
        <p>Display:</p>
295

  
296
        <blockquote>
297
                <p>Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.<br />To go live, all you need to add is a database and a web server.</p>
298
        </blockquote>
299

  
300

  
301
        <h3><a name="11" class="wiki-page"></a>Table of content</h3>
302

  
303
<pre>
304
{{toc}} => left aligned toc
305
{{>toc}} => right aligned toc
306
</pre>
307

  
308
    <h2><a name="12" class="wiki-page"></a>Macros</h2>
309

  
310
    <p>Redmine has the following builtin macros:</p>
311

  
312
    <p><dl><dt><code>hello_world</code></dt><dd><p>Sample macro.</p></dd><dt><code>include</code></dt><dd><p>Include a wiki page. Example:</p>
313

  
314
    <pre><code>{{include(Foo)}}</code></pre></dd><dt><code>macro_list</code></dt><dd><p>Displays a list of all available macros, including description if available.</p></dd></dl></p>
315

  
316

  
317
    <h2><a name="13" class="wiki-page"></a>Code highlighting</h2>
318

  
319
    <p>Default code highlightment relies on <a href="http://coderay.rubychan.de/" class="external">CodeRay</a>, a fast syntax highlighting library written completely in Ruby. It currently supports c, cpp, css, delphi, groovy, html, java, javascript, json, php, python, rhtml, ruby, scheme, sql, xml and yaml languages.</p>
320

  
321
    <p>You can highlight code in your wiki page using this syntax:</p>
322

  
323
<pre>
324
&lt;pre&gt;&lt;code class="ruby"&gt;
325
  Place you code here.
326
&lt;/code&gt;&lt;/pre&gt;
327
</pre>
328

  
329
    <p>Example:</p>
330

  
331
<pre><code class="ruby syntaxhl"><span class="line-numbers"> 1</span> <span class="comment"># The Greeter class</span>
332
<span class="line-numbers"> 2</span> <span class="reserved">class</span> <span class="class">Greeter</span>
333
<span class="line-numbers"> 3</span>   <span class="reserved">def</span> <span class="function">initialize</span>(name)
334
<span class="line-numbers"> 4</span>     <span class="instance-variable">@name</span> = name.capitalize
335
<span class="line-numbers"> 5</span>   <span class="reserved">end</span>
336
<span class="line-numbers"> 6</span> 
337
<span class="line-numbers"> 7</span>   <span class="reserved">def</span> <span class="function">salute</span>
338
<span class="line-numbers"> 8</span>     puts <span class="string"><span class="delimiter">"</span><span class="content">Hello </span><span class="inline"><span class="inline-delimiter">#{</span><span class="instance-variable">@name</span><span class="inline-delimiter">}</span></span><span class="content">!</span><span class="delimiter">"</span></span> 
339
<span class="line-numbers"> 9</span>   <span class="reserved">end</span>
340
<span class="line-numbers"><strong>10</strong></span> <span class="reserved">end</span></code>
341
</pre>
342
</body>
343
</html>
public/javascripts/application.js
86 86
var fileFieldCount = 1;
87 87

  
88 88
function addFileField() {
89
    if (fileFieldCount >= 10) return false
90
    fileFieldCount++;
91
    var f = document.createElement("input");
92
    f.type = "file";
93
    f.name = "attachments[" + fileFieldCount + "][file]";
94
    f.size = 30;
95
    var d = document.createElement("input");
96
    d.type = "text";
97
    d.name = "attachments[" + fileFieldCount + "][description]";
98
    d.size = 60;
99
    var dLabel = new Element('label');
100
    dLabel.addClassName('inline');
101
    // Pulls the languge value used for Optional Description
102
    dLabel.update($('attachment_description_label_content').innerHTML)
103
    p = document.getElementById("attachments_fields");
104
    p.appendChild(document.createElement("br"));
105
    p.appendChild(f);
106
    p.appendChild(dLabel);
107
    dLabel.appendChild(d);
89
  var fields = $('attachments_fields');
90
  if (fields.childElements().length >= 10) return false;
91
  fileFieldCount++;
92
  var s = new Element('span');
93
  s.update(fields.down('span').innerHTML);
94
  s.down('input.file').name = "attachments[" + fileFieldCount + "][file]";
95
  s.down('input.description').name = "attachments[" + fileFieldCount + "][description]";
96
  fields.appendChild(s);
97
}
108 98

  
99
function removeFileField(el) {
100
  var fields = $('attachments_fields');
101
	var s = Element.up(el, 'span');
102
	if (fields.childElements().length > 1) {
103
		s.remove();
104
	} else {
105
		s.update(s.innerHTML);
106
	}
107
}
108

  
109
function checkFileSize(el, maxSize, message) {
110
  var files = el.files;
111
  if (files) {
112
    for (var i=0; i<files.length; i++) {
113
      if (files[i].size > maxSize) {
114
        alert(message);
115
        el.value = "";
116
      }
117
    }
118
  }
109 119
}
110 120

  
111 121
function showTab(name) {
......
188 198
    }
189 199
}
190 200

  
201
function showModal(id, width) {
202
  el = $(id);
203
	if (el == undefined || el.visible()) {return;}
204
  var h = $$('body')[0].getHeight();
205
  var d = document.createElement("div");
206
  d.id = 'modalbg';
207
  $('main').appendChild(d);
208
  $('modalbg').setStyle({ width: '100%', height: h + 'px' });
209
  $('modalbg').show();
210

  
211
  var pageWidth = document.viewport.getWidth();
212
	el.setStyle({'width': width});
213
	el.setStyle({'left': (((pageWidth - el.getWidth())/2  *100) / pageWidth) + '%'});
214
  el.addClassName('modal');
215
	el.show();
216

  
217
  var submit = el.down("input[type=submit]");
218
	if (submit) {
219
  	submit.focus();
220
  }
221
}
222

  
223
function hideModal(el) {
224
  var modal = Element.up(el, 'div.modal');
225
	if (modal) {
226
		modal.hide();
227
	}
228
	var bg = $('modalbg');
229
	if (bg) {
230
  	bg.remove();
231
  }
232
}
233

  
191 234
function collapseScmEntry(id) {
192 235
    var els = document.getElementsByClassName(id, 'browser');
193 236
	for (var i = 0; i < els.length; i++) {
......
250 293
                         { minChars: 3,
251 294
                           frequency: 0.5,
252 295
                           paramName: 'q',
296
                           method: 'get',
253 297
                           updateElement: function(value) {
254 298
                             document.getElementById('issue_parent_issue_id').value = value.id;
255 299
                           }});
......
262 306
                         { minChars: 3,
263 307
                           frequency: 0.5,
264 308
                           paramName: 'q',
309
                           method: 'get',
265 310
                           updateElement: function(value) {
266 311
                             document.getElementById('relation_issue_to_id').value = value.id;
267 312
                           },
public/javascripts/calendar/lang/calendar-ar.js
1
// Calendar AR language
2
// Author: SmartData.com.sa
3
// Encoding: any
4
// Distributed under the same terms as the calendar itself.
5

  
6
// For translators: please use UTF-8 if possible.  We strongly believe that
7
// Unicode is the answer to a real internationalized world.  Also please
8
// include your contact information in the header, as can be seen above.
9

  
10
// full day names
11
Calendar._DN = new Array
12
("الاحد",
13
 "الاثنين",
14
 "الثلاثاء",
15
 "الاربعاء",
16
 "الخميس",
17
 "الجمعة",
18
 "السبت",
19
 "الاحد");
20

  
21
// Please note that the following array of short day names (and the same goes
22
// for short month names, _SMN) isn't absolutely necessary.  We give it here
23
// for exemplification on how one can customize the short day names, but if
24
// they are simply the first N letters of the full name you can simply say:
25
//
26
//   Calendar._SDN_len = N; // short day name length
27
//   Calendar._SMN_len = N; // short month name length
28
//
29
// If N = 3 then this is not needed either since we assume a value of 3 if not
30
// present, to be compatible with translation files that were written before
31
// this feature.
32

  
33
// short day names
34
Calendar._SDN = new Array
35
("أح",
36
 "إث",
37
 "ث",
38
 "أر",
39
 "خ",
40
 "ج",
41
 "س",
42
 "أح");
43

  
44
// First day of the week. "0" means display Sunday first, "1" means display
45
// Monday first, etc.
46
Calendar._FD = 0;
47

  
48
// full month names
49
Calendar._MN = new Array
50
("كانون الثاني",
51
 "شباط",
52
 "حزيران",
53
 "آذار",
54
 "أيار",
55
 "نيسان",
56
 "تموز",
57
 "آب",
58
 "أيلول",
59
 "تشرين الاول",
60
 "تشرين الثاني",
61
 "كانون الاول");
62

  
63
// short month names
64
Calendar._SMN = new Array
65
("كانون الثاني",
66
 "شباط",
67
 "حزيران",
68
 "آذار",
69
 "أيار",
70
 "نيسان",
71
 "تموز",
72
 "آب",
73
 "أيلول",
74
 "تشرين الاول",
75
 "تشرين الثاني",
76
 "كانون الاول");
77

  
78
// tooltips
79
Calendar._TT = {};
80
Calendar._TT["INFO"] = "حول التقويم";
81

  
82
Calendar._TT["ABOUT"] =
83
"اختيار الوقت والتاريخ\n" +
84
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
85
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
86
"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
87
"\n\n" +
88
"اختيار التاريخ:\n" +
89
"- استخدم هذه الازرار \xab, \xbb لاختيار السنة\n" +
90
"- استخدم هذه الازرار " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " لاختيار الشهر\n" +
91
"- استمر في النقر فوق الازرار للتظليل السريع.";
92
Calendar._TT["ABOUT_TIME"] = "\n\n" +
93
"اختيار الوقت:\n" +
94
"- انقر على اي جزء من اجزاء الوقت لزيادته\n" +
95
"-  لانقاصهShiftاو انقر مع الضغط على مفتاح  \n" +
96
"- او انقر واسحب للتظليل السريع.";
97

  
98
Calendar._TT["PREV_YEAR"] = "السنة السابقة";
99
Calendar._TT["PREV_MONTH"] = "الشهر السابق";
100
Calendar._TT["GO_TODAY"] = "اذهب لليوم";
101
Calendar._TT["NEXT_MONTH"] = "الشهر القادم";
102
Calendar._TT["NEXT_YEAR"] = "السنة القادمة";
103
Calendar._TT["SEL_DATE"] = "اختر التاريخ";
104
Calendar._TT["DRAG_TO_MOVE"] = "اسحب للتتحرك";
105
Calendar._TT["PART_TODAY"] = "اليوم";
106

  
107
// the following is to inform that "%s" is to be the first day of week
108
// %s will be replaced with the day name.
109
Calendar._TT["DAY_FIRST"] = " اولا%sاعرض ";
110

  
111
// This may be locale-dependent.  It specifies the week-end days, as an array
112
// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
113
// means Monday, etc.
114
Calendar._TT["WEEKEND"] = "5,6";
115

  
116
Calendar._TT["CLOSE"] = "مغلق";
117
Calendar._TT["TODAY"] = "اليوم";
118
Calendar._TT["TIME_PART"] = "انقر او اسحب لتغير القيمة";
119

  
120
// date formats
121
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
122
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
123

  
124
Calendar._TT["WK"] = "رقم الاسبوع";
125
Calendar._TT["TIME"] = "الوقت:";
public/javascripts/calendar/lang/calendar-hr.js
18 18
 "Cetvrtak",
19 19
 "Petak",
20 20
 "Subota",
21
 "Nedjelja"); 
21
 "Nedjelja");
22 22

  
23 23
// Please note that the following array of short day names (and the same goes
24 24
// for short month names, _SMN) isn't absolutely necessary.  We give it here
......
51 51
Calendar._MN = new Array
52 52
("Sijecanj",
53 53
 "Veljaca",
54
 "O?ujak",
54
 "Ožujak",
55 55
 "Travanj",
56 56
 "Svibanj",
57 57
 "Lipanj",
......
66 66
Calendar._SMN = new Array
67 67
("Sij",
68 68
 "Velj",
69
 "O?u",
69
 "Ožu",
70 70
 "Tra",
71 71
 "Svi",
72 72
 "Lip",
......
100 100

  
101 101
Calendar._TT["PREV_YEAR"] = "Prethodna godina (hold for menu)";
102 102
Calendar._TT["PREV_MONTH"] = "Prethodni mjesec (hold for menu)";
103
Calendar._TT["GO_TODAY"] = "Na dana?nji dan";   
103
Calendar._TT["GO_TODAY"] = "Na današnji dan";
104 104
Calendar._TT["NEXT_MONTH"] = "Naredni mjesec (hold for menu)";
105 105
Calendar._TT["NEXT_YEAR"] = "Naredna godina (hold for menu)";
106 106
Calendar._TT["SEL_DATE"] = "Odaberite datum";
......
109 109

  
110 110
// the following is to inform that "%s" is to be the first day of week
111 111
// %s will be replaced with the day name.
112
Calendar._TT["DAY_FIRST"] = "Prika?i %s prvo";
112
Calendar._TT["DAY_FIRST"] = "Prikaži %s prvo";
113 113

  
114 114
// This may be locale-dependent.  It specifies the week-end days, as an array
115 115
// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
public/javascripts/context_menu.js
85 85
        }
86 86
      }
87 87
    }
88
    else{
89
      this.RightClick(e);
90
    }
91 88
  },
92 89
  
93 90
  createMenu: function() {
public/javascripts/jstoolbar/lang/jstoolbar-ar.js
1
jsToolBar.strings = {}; 
2
jsToolBar.strings ['Strong'] = 'قوي';
3
jsToolBar.strings ['Italic'] = 'مائل';
4
jsToolBar.strings ['Underline'] = 'تسطير';
5
jsToolBar.strings ['Deleted'] = 'محذوف';
6
jsToolBar.strings ['Code'] = 'رمز ضمني';
7
jsToolBar.strings ['Heading 1'] = 'عنوان 1';
8
jsToolBar.strings ['Heading 2'] = 'عنوان 2';
9
jsToolBar.strings ['Heading 3'] = 'عنوان 3';
10
jsToolBar.strings ['Unordered list'] = 'قائمة غير مرتبة';
11
jsToolBar.strings ['Ordered list'] = 'قائمة مرتبة';
12
jsToolBar.strings ['Quote'] = 'اقتباس';
13
jsToolBar.strings ['Unquote'] = 'إزالة الاقتباس';
14
jsToolBar.strings ['Preformatted text'] = 'نص مسبق التنسيق';
15
jsToolBar.strings ['Wiki link'] = 'رابط الى صفحة ويكي';
16
jsToolBar.strings ['Image'] = 'صورة';
public/javascripts/raphael.js
1
/*
2
 * Raphael 1.5.2 - JavaScript Vector Library
3
 *
4
 * Copyright (c) 2010 Dmitry Baranovskiy (http://raphaeljs.com)
5
 * Licensed under the MIT (http://raphaeljs.com/license.html) license.
6
 */
7
(function(){function cC(a,b,c,d,e,f){function o(a,b){var c,d,e,f,j,k;for(e=a,k=0;k<8;k++){f=m(e)-a;if(B(f)<b)return e;j=(3*i*e+2*h)*e+g;if(B(j)<1e-6)break;e=e-f/j}c=0,d=1,e=a;if(e<c)return c;if(e>d)return d;while(c<d){f=m(e);if(B(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cB(b){return function(c,d,e,f){var g={back:b};a.is(e,"function")?f=e:g.rot=e,c&&c.constructor==bN&&(c=c.attrs.path),c&&(g.along=c);return this.animate(g,d,f)}}function cp(){return this.x+q+this.y}function bm(a,b,c){function d(){var g=Array[e].slice.call(arguments,0),h=g[v]("►"),i=d.cache=d.cache||{},j=d.count=d.count||[];if(i[f](h))return c?c(i[h]):i[h];j[w]>=1e3&&delete i[j.shift()],j[L](h),i[h]=a[m](b,g);return c?c(i[h]):i[h]}return d}function bh(){var a=[],b=0;for(;b<32;b++)a[b]=(~~(y.random()*16))[H](16);a[12]=4,a[16]=(a[16]&3|8)[H](16);return"r-"+a[v]("")}function a(){if(a.is(arguments[0],G)){var b=arguments[0],d=bV[m](a,b.splice(0,3+a.is(b[0],E))),e=d.set();for(var g=0,h=b[w];g<h;g++){var i=b[g]||{};c[f](i.type)&&e[L](d[i.type]().attr(i))}return e}return bV[m](a,arguments)}a.version="1.5.2";var b=/[, ]+/,c={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},d=/\{(\d+)\}/g,e="prototype",f="hasOwnProperty",g=document,h=window,i={was:Object[e][f].call(h,"Raphael"),is:h.Raphael},j=function(){this.customAttributes={}},k,l="appendChild",m="apply",n="concat",o="createTouch"in g,p="",q=" ",r=String,s="split",t="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend orientationchange touchcancel gesturestart gesturechange gestureend"[s](q),u={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},v="join",w="length",x=r[e].toLowerCase,y=Math,z=y.max,A=y.min,B=y.abs,C=y.pow,D=y.PI,E="number",F="string",G="array",H="toString",I="fill",J=Object[e][H],K={},L="push",M=/^url\(['"]?([^\)]+?)['"]?\)$/i,N=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,O={NaN:1,Infinity:1,"-Infinity":1},P=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,Q=y.round,R="setAttribute",S=parseFloat,T=parseInt,U=" progid:DXImageTransform.Microsoft",V=r[e].toUpperCase,W={blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/",opacity:1,path:"M0,0",r:0,rotation:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",translation:"0 0",width:0,x:0,y:0},X={along:"along",blur:E,"clip-rect":"csv",cx:E,cy:E,fill:"colour","fill-opacity":E,"font-size":E,height:E,opacity:E,path:"path",r:E,rotation:"csv",rx:E,ry:E,scale:"csv",stroke:"colour","stroke-opacity":E,"stroke-width":E,translation:"csv",width:E,x:E,y:E},Y="replace",Z=/^(from|to|\d+%?)$/,$=/\s*,\s*/,_={hs:1,rg:1},ba=/,?([achlmqrstvxz]),?/gi,bb=/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,bc=/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,bd=/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,be=function(a,b){return a.key-b.key};a.type=h.SVGAngle||g.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML";if(a.type=="VML"){var bf=g.createElement("div"),bg;bf.innerHTML='<v:shape adj="1"/>',bg=bf.firstChild,bg.style.behavior="url(#default#VML)";if(!bg||typeof bg.adj!="object")return a.type=null;bf=null}a.svg=!(a.vml=a.type=="VML"),j[e]=a[e],k=j[e],a._id=0,a._oid=0,a.fn={},a.is=function(a,b){b=x.call(b);if(b=="finite")return!O[f](+a);return b=="null"&&a===null||b==typeof a||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||J.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return((h<0)*180+y.atan(-i/-h)*180/D+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*D/180},a.deg=function(a){return a*180/D%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,G)){var e=b.length;while(e--)if(B(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(f<d)return c-f;if(f>b-d)return c-f+b}return c},a.setWindow=function(a){h=a,g=h.document};var bi=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),d=e.body}catch(f){d=createPopup().document.body}var h=d.createTextRange();bi=bm(function(a){try{d.style.color=r(a)[Y](c,p);var b=h.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b[H](16)).slice(-6)}catch(e){return"none"}})}else{var i=g.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",g.body[l](i),bi=bm(function(a){i.style.color=a;return g.defaultView.getComputedStyle(i,p).getPropertyValue("color")})}return bi(b)},bj=function(){return"hsb("+[this.h,this.s,this.b]+")"},bk=function(){return"hsl("+[this.h,this.s,this.l]+")"},bl=function(){return this.hex};a.hsb2rgb=function(b,c,d,e){a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b&&(d=b.b,c=b.s,b=b.h,e=b.o);return a.hsl2rgb(b,c,d/2,e)},a.hsl2rgb=function(b,c,d,e){a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b&&(d=b.l,c=b.s,b=b.h);if(b>1||c>1||d>1)b/=360,c/=100,d/=100;var f={},g=["r","g","b"],h,i,j,k,l,m;if(!c)f={r:d,g:d,b:d};else{d<.5?h=d*(1+c):h=d+c-d*c,i=2*d-h;for(var n=0;n<3;n++)j=b+1/3*-(n-1),j<0&&j++,j>1&&j--,j*6<1?f[g[n]]=i+(h-i)*6*j:j*2<1?f[g[n]]=h:j*3<2?f[g[n]]=i+(h-i)*(2/3-j)*6:f[g[n]]=i}f.r*=255,f.g*=255,f.b*=255,f.hex="#"+(16777216|f.b|f.g<<8|f.r<<16).toString(16).slice(1),a.is(e,"finite")&&(f.opacity=e),f.toString=bl;return f},a.rgb2hsb=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,F)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;var f=z(b,c,d),g=A(b,c,d),h,i,j=f;if(g==f)return{h:0,s:0,b:f,toString:bj};var k=f-g;i=k/f,b==f?h=(c-d)/k:c==f?h=2+(d-b)/k:h=4+(b-c)/k,h/=6,h<0&&h++,h>1&&h--;return{h:h,s:i,b:j,toString:bj}},a.rgb2hsl=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,F)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;var f=z(b,c,d),g=A(b,c,d),h,i,j=(f+g)/2,k;if(g==f)k={h:0,s:0,l:j};else{var l=f-g;i=j<.5?l/(f+g):l/(2-f-g),b==f?h=(c-d)/l:c==f?h=2+(d-b)/l:h=4+(b-c)/l,h/=6,h<0&&h++,h>1&&h--,k={h:h,s:i,l:j}}k.toString=bk;return k},a._path2string=function(){return this.join(",")[Y](ba,"$1")},a.getRGB=bm(function(b){if(!b||!!((b=r(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none"};!_[f](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bi(b));var c,d,e,g,h,i,j,k=b.match(N);if(k){k[2]&&(g=T(k[2].substring(5),16),e=T(k[2].substring(3,5),16),d=T(k[2].substring(1,3),16)),k[3]&&(g=T((i=k[3].charAt(3))+i,16),e=T((i=k[3].charAt(2))+i,16),d=T((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s]($),d=S(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=S(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),g=S(j[2]),j[2].slice(-1)=="%"&&(g*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=S(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5][s]($),d=S(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=S(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),g=S(j[2]),j[2].slice(-1)=="%"&&(g*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=S(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,g,h)}if(k[6]){j=k[6][s]($),d=S(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=S(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),g=S(j[2]),j[2].slice(-1)=="%"&&(g*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=S(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,g,h)}k={r:d,g:e,b:g},k.hex="#"+(16777216|g|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1}},a),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=bm(function(b){if(!b)return null;var c={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},d=[];a.is(b,G)&&a.is(b[0],G)&&(d=bo(b)),d[w]||r(b)[Y](bb,function(a,b,e){var f=[],g=x.call(b);e[Y](bc,function(a,b){b&&f[L](+b)}),g=="m"&&f[w]>2&&(d[L]([b][n](f.splice(0,2))),g="l",b=b=="m"?"l":"L");while(f[w]>=c[g]){d[L]([b][n](f.splice(0,c[g])));if(!c[g])break}}),d[H]=a._path2string;return d}),a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=C(j,3)*a+C(j,2)*3*i*c+j*3*i*i*e+C(i,3)*g,l=C(j,3)*b+C(j,2)*3*i*d+j*3*i*i*f+C(i,3)*h,m=a+2*i*(c-a)+i*i*(e-2*c+a),n=b+2*i*(d-b)+i*i*(f-2*d+b),o=c+2*i*(e-c)+i*i*(g-2*e+c),p=d+2*i*(f-d)+i*i*(h-2*f+d),q=(1-i)*a+i*c,r=(1-i)*b+i*d,s=(1-i)*e+i*g,t=(1-i)*f+i*h,u=90-y.atan((m-o)/(n-p))*180/D;(m>o||n<p)&&(u+=180);return{x:k,y:l,m:{x:m,y:n},n:{x:o,y:p},start:{x:q,y:r},end:{x:s,y:t},alpha:u}};var bn=bm(function(a){if(!a)return{x:0,y:0,width:0,height:0};a=bw(a);var b=0,c=0,d=[],e=[],f;for(var g=0,h=a[w];g<h;g++){f=a[g];if(f[0]=="M")b=f[1],c=f[2],d[L](b),e[L](c);else{var i=bv(b,c,f[1],f[2],f[3],f[4],f[5],f[6]);d=d[n](i.min.x,i.max.x),e=e[n](i.min.y,i.max.y),b=f[5],c=f[6]}}var j=A[m](0,d),k=A[m](0,e);return{x:j,y:k,width:z[m](0,d)-j,height:z[m](0,e)-k}}),bo=function(b){var c=[];if(!a.is(b,G)||!a.is(b&&b[0],G))b=a.parsePathString(b);for(var d=0,e=b[w];d<e;d++){c[d]=[];for(var f=0,g=b[d][w];f<g;f++)c[d][f]=b[d][f]}c[H]=a._path2string;return c},bp=bm(function(b){if(!a.is(b,G)||!a.is(b&&b[0],G))b=a.parsePathString(b);var c=[],d=0,e=0,f=0,g=0,h=0;b[0][0]=="M"&&(d=b[0][1],e=b[0][2],f=d,g=e,h++,c[L](["M",d,e]));for(var i=h,j=b[w];i<j;i++){var k=c[i]=[],l=b[i];if(l[0]!=x.call(l[0])){k[0]=x.call(l[0]);switch(k[0]){case"a":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]-d).toFixed(3),k[7]=+(l[7]-e).toFixed(3);break;case"v":k[1]=+(l[1]-e).toFixed(3);break;case"m":f=l[1],g=l[2];default:for(var m=1,n=l[w];m<n;m++)k[m]=+(l[m]-(m%2?d:e)).toFixed(3)}}else{k=c[i]=[],l[0]=="m"&&(f=l[1]+d,g=l[2]+e);for(var o=0,p=l[w];o<p;o++)c[i][o]=l[o]}var q=c[i][w];switch(c[i][0]){case"z":d=f,e=g;break;case"h":d+=+c[i][q-1];break;case"v":e+=+c[i][q-1];break;default:d+=+c[i][q-2],e+=+c[i][q-1]}}c[H]=a._path2string;return c},0,bo),bq=bm(function(b){if(!a.is(b,G)||!a.is(b&&b[0],G))b=a.parsePathString(b);var c=[],d=0,e=0,f=0,g=0,h=0;b[0][0]=="M"&&(d=+b[0][1],e=+b[0][2],f=d,g=e,h++,c[0]=["M",d,e]);for(var i=h,j=b[w];i<j;i++){var k=c[i]=[],l=b[i];if(l[0]!=V.call(l[0])){k[0]=V.call(l[0]);switch(k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+d),k[7]=+(l[7]+e);break;case"V":k[1]=+l[1]+e;break;case"H":k[1]=+l[1]+d;break;case"M":f=+l[1]+d,g=+l[2]+e;default:for(var m=1,n=l[w];m<n;m++)k[m]=+l[m]+(m%2?d:e)}}else for(var o=0,p=l[w];o<p;o++)c[i][o]=l[o];switch(k[0]){case"Z":d=f,e=g;break;case"H":d=k[1];break;case"V":e=k[1];break;case"M":f=c[i][c[i][w]-2],g=c[i][c[i][w]-1];default:d=c[i][c[i][w]-2],e=c[i][c[i][w]-1]}}c[H]=a._path2string;return c},null,bo),br=function(a,b,c,d){return[a,b,c,d,c,d]},bs=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},bt=function(a,b,c,d,e,f,g,h,i,j){var k=D*120/180,l=D/180*(+e||0),m=[],o,p=bm(function(a,b,c){var d=a*y.cos(c)-b*y.sin(c),e=a*y.sin(c)+b*y.cos(c);return{x:d,y:e}});if(!j){o=p(a,b,-l),a=o.x,b=o.y,o=p(h,i,-l),h=o.x,i=o.y;var q=y.cos(D/180*e),r=y.sin(D/180*e),t=(a-h)/2,u=(b-i)/2,x=t*t/(c*c)+u*u/(d*d);x>1&&(x=y.sqrt(x),c=x*c,d=x*d);var z=c*c,A=d*d,C=(f==g?-1:1)*y.sqrt(B((z*A-z*u*u-A*t*t)/(z*u*u+A*t*t))),E=C*c*u/d+(a+h)/2,F=C*-d*t/c+(b+i)/2,G=y.asin(((b-F)/d).toFixed(9)),H=y.asin(((i-F)/d).toFixed(9));G=a<E?D-G:G,H=h<E?D-H:H,G<0&&(G=D*2+G),H<0&&(H=D*2+H),g&&G>H&&(G=G-D*2),!g&&H>G&&(H=H-D*2)}else G=j[0],H=j[1],E=j[2],F=j[3];var I=H-G;if(B(I)>k){var J=H,K=h,L=i;H=G+k*(g&&H>G?1:-1),h=E+c*y.cos(H),i=F+d*y.sin(H),m=bt(h,i,c,d,e,0,g,K,L,[H,J,E,F])}I=H-G;var M=y.cos(G),N=y.sin(G),O=y.cos(H),P=y.sin(H),Q=y.tan(I/4),R=4/3*c*Q,S=4/3*d*Q,T=[a,b],U=[a+R*N,b-S*M],V=[h+R*P,i-S*O],W=[h,i];U[0]=2*T[0]-U[0],U[1]=2*T[1]-U[1];if(j)return[U,V,W][n](m);m=[U,V,W][n](m)[v]()[s](",");var X=[];for(var Y=0,Z=m[w];Y<Z;Y++)X[Y]=Y%2?p(m[Y-1],m[Y],l).y:p(m[Y],m[Y+1],l).x;return X},bu=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:C(j,3)*a+C(j,2)*3*i*c+j*3*i*i*e+C(i,3)*g,y:C(j,3)*b+C(j,2)*3*i*d+j*3*i*i*f+C(i,3)*h}},bv=bm(function(a,b,c,d,e,f,g,h){var i=e-2*c+a-(g-2*e+c),j=2*(c-a)-2*(e-c),k=a-c,l=(-j+y.sqrt(j*j-4*i*k))/2/i,n=(-j-y.sqrt(j*j-4*i*k))/2/i,o=[b,h],p=[a,g],q;B(l)>"1e12"&&(l=.5),B(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bu(a,b,c,d,e,f,g,h,l),p[L](q.x),o[L](q.y)),n>0&&n<1&&(q=bu(a,b,c,d,e,f,g,h,n),p[L](q.x),o[L](q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+y.sqrt(j*j-4*i*k))/2/i,n=(-j-y.sqrt(j*j-4*i*k))/2/i,B(l)>"1e12"&&(l=.5),B(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bu(a,b,c,d,e,f,g,h,l),p[L](q.x),o[L](q.y)),n>0&&n<1&&(q=bu(a,b,c,d,e,f,g,h,n),p[L](q.x),o[L](q.y));return{min:{x:A[m](0,p),y:A[m](0,o)},max:{x:z[m](0,p),y:z[m](0,o)}}}),bw=bm(function(a,b){var c=bq(a),d=b&&bq(b),e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][n](bt[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][n](bs(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][n](bs(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](br(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](br(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](br(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](br(b.x,b.y,b.X,b.Y))}return a},h=function(a,b){if(a[b][w]>7){a[b].shift();var e=a[b];while(e[w])a.splice(b++,0,["C"][n](e.splice(0,6)));a.splice(b,1),k=z(c[w],d&&d[w]||0)}},i=function(a,b,e,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),e.bx=0,e.by=0,e.x=a[g][1],e.y=a[g][2],k=z(c[w],d&&d[w]||0))};for(var j=0,k=z(c[w],d&&d[w]||0);j<k;j++){c[j]=g(c[j],e),h(c,j),d&&(d[j]=g(d[j],f)),d&&h(d,j),i(c,d,e,f,j),i(d,c,f,e,j);var l=c[j],o=d&&d[j],p=l[w],q=d&&o[w];e.x=l[p-2],e.y=l[p-1],e.bx=S(l[p-4])||e.x,e.by=S(l[p-3])||e.y,f.bx=d&&(S(o[q-4])||f.x),f.by=d&&(S(o[q-3])||f.y),f.x=d&&o[q-2],f.y=d&&o[q-1]}return d?[c,d]:c},null,bo),bx=bm(function(b){var c=[];for(var d=0,e=b[w];d<e;d++){var f={},g=b[d].match(/^([^:]*):?([\d\.]*)/);f.color=a.getRGB(g[1]);if(f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c[L](f)}for(d=1,e=c[w]-1;d<e;d++)if(!c[d].offset){var h=S(c[d-1].offset||0),i=0;for(var j=d+1;j<e;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=S(i);var k=(i-h)/(j-d+1);for(;d<j;d++)h+=k,c[d].offset=h+"%"}return c}),by=function(b,c,d,e){var f;if(!a.is(b,F)&&!a.is(b,"object"))return{container:1,x:b,y:c,width:d,height:e};f=a.is(b,F)?g.getElementById(b):b;if(f.tagName)return c==null?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d}},bz=function(a,b){var c=this;for(var d in b)if(b[f](d)&&!(d in a))switch(typeof b[d]){case"function":(function(b){a[d]=a===c?b:function(){return b[m](c,arguments)}})(b[d]);break;case"object":a[d]=a[d]||{},bz.call(this,a[d],b[d]);break;default:a[d]=b[d]}},bA=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)},bB=function(a,b){b.top!==a&&(bA(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},bC=function(a,b){b.bottom!==a&&(bA(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},bD=function(a,b,c){bA(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},bE=function(a,b,c){bA(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},bF=function(a){return function(){throw new Error("Raphaël: you are calling to method “"+a+"” of removed object")}};a.pathToRelative=bp;if(a.svg){k.svgns="http://www.w3.org/2000/svg",k.xlink="http://www.w3.org/1999/xlink",Q=function(a){return+a+(~~a===a)*.5};var bG=function(a,b){if(!b){a=g.createElementNS(k.svgns,a),a.style.webkitTapHighlightColor="rgba(0,0,0,0)";return a}for(var c in b)b[f](c)&&a[R](c,r(b[c]))};a[H]=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var bH=function(a,b){var c=bG("path");b.canvas&&b.canvas[l](c);var d=new bN(c,b);d.type="path",bK(d,{fill:"none",stroke:"#000",path:a});return d},bI=function(a,b,c){var d="linear",e=.5,f=.5,h=a.style;b=r(b)[Y](bd,function(a,b,c){d="radial";if(b&&c){e=S(b),f=S(c);var g=(f>.5)*2-1;C(e-.5,2)+C(f-.5,2)>.25&&(f=y.sqrt(.25-C(e-.5,2))*g+.5)&&f!=.5&&(f=f.toFixed(5)-1e-5*g)}return p}),b=b[s](/\s*\-\s*/);if(d=="linear"){var i=b.shift();i=-S(i);if(isNaN(i))return null;var j=[0,0,y.cos(i*D/180),y.sin(i*D/180)],k=1/(z(B(j[2]),B(j[3]))||1);j[2]*=k,j[3]*=k,j[2]<0&&(j[0]=-j[2],j[2]=0),j[3]<0&&(j[1]=-j[3],j[3]=0)}var m=bx(b);if(!m)return null;var n=a.getAttribute(I);n=n.match(/^url\(#(.*)\)$/),n&&c.defs.removeChild(g.getElementById(n[1]));var o=bG(d+"Gradient");o.id=bh(),bG(o,d=="radial"?{fx:e,fy:f}:{x1:j[0],y1:j[1],x2:j[2],y2:j[3]}),c.defs[l](o);for(var q=0,t=m[w];q<t;q++){var u=bG("stop");bG(u,{offset:m[q].offset?m[q].offset:q?"100%":"0%","stop-color":m[q].color||"#fff"}),o[l](u)}bG(a,{fill:"url(#"+o.id+")",opacity:1,"fill-opacity":1}),h.fill=p,h.opacity=1,h.fillOpacity=1;return 1},bJ=function(b){var c=b.getBBox();bG(b.pattern,{patternTransform:a.format("translate({0},{1})",c.x,c.y)})},bK=function(c,d){var e={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},h=c.node,i=c.attrs,j=c.rotate(),k=function(a,b){b=e[x.call(b)];if(b){var c=a.attrs["stroke-width"]||"1",f=({round:c,square:c,butt:0})[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],i=b[w];while(i--)g[i]=b[i]*c+(i%2?1:-1)*f;bG(h,{"stroke-dasharray":g[v](",")})}};d[f]("rotation")&&(j=d.rotation);var m=r(j)[s](b);m.length-1?(m[1]=+m[1],m[2]=+m[2]):m=null,S(j)&&c.rotate(0,!0);for(var n in d)if(d[f](n)){if(!W[f](n))continue;var o=d[n];i[n]=o;switch(n){case"blur":c.blur(o);break;case"rotation":c.rotate(o,!0);break;case"href":case"title":case"target":var t=h.parentNode;if(x.call(t.tagName)!="a"){var u=bG("a");t.insertBefore(u,h),u[l](h),t=u}n=="target"&&o=="blank"?t.setAttributeNS(c.paper.xlink,"show","new"):t.setAttributeNS(c.paper.xlink,n,o);break;case"cursor":h.style.cursor=o;break;case"clip-rect":var y=r(o)[s](b);if(y[w]==4){c.clip&&c.clip.parentNode.parentNode.removeChild(c.clip.parentNode);var z=bG("clipPath"),A=bG("rect");z.id=bh(),bG(A,{x:y[0],y:y[1],width:y[2],height:y[3]}),z[l](A),c.paper.defs[l](z),bG(h,{"clip-path":"url(#"+z.id+")"}),c.clip=A}if(!o){var B=g.getElementById(h.getAttribute("clip-path")[Y](/(^url\(#|\)$)/g,p));B&&B.parentNode.removeChild(B),bG(h,{"clip-path":p}),delete c.clip}break;case"path":c.type=="path"&&bG(h,{d:o?i.path=bq(o):"M0,0"});break;case"width":h[R](n,o);if(i.fx)n="x",o=i.x;else break;case"x":i.fx&&(o=-i.x-(i.width||0));case"rx":if(n=="rx"&&c.type=="rect")break;case"cx":m&&(n=="x"||n=="cx")&&(m[1]+=o-i[n]),h[R](n,o),c.pattern&&bJ(c);break;case"height":h[R](n,o);if(i.fy)n="y",o=i.y;else break;case"y":i.fy&&(o=-i.y-(i.height||0));case"ry":if(n=="ry"&&c.type=="rect")break;case"cy":m&&(n=="y"||n=="cy")&&(m[2]+=o-i[n]),h[R](n,o),c.pattern&&bJ(c);break;case"r":c.type=="rect"?bG(h,{rx:o,ry:o}):h[R](n,o);break;case"src":c.type=="image"&&h.setAttributeNS(c.paper.xlink,"href",o);break;case"stroke-width":h.style.strokeWidth=o,h[R](n,o),i["stroke-dasharray"]&&k(c,i["stroke-dasharray"]);break;case"stroke-dasharray":k(c,o);break;case"translation":var C=r(o)[s](b);C[0]=+C[0]||0,C[1]=+C[1]||0,m&&(m[1]+=C[0],m[2]+=C[1]),cA.call(c,C[0],C[1]);break;case"scale":C=r(o)[s](b),c.scale(+C[0]||1,+C[1]||+C[0]||1,isNaN(S(C[2]))?null:+C[2],isNaN(S(C[3]))?null:+C[3]);break;case I:var D=r(o).match(M);if(D){z=bG("pattern");var E=bG("image");z.id=bh(),bG(z,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),bG(E,{x:0,y:0}),E.setAttributeNS(c.paper.xlink,"href",D[1]),z[l](E);var F=g.createElement("img");F.style.cssText="position:absolute;left:-9999em;top-9999em",F.onload=function(){bG(z,{width:this.offsetWidth,height:this.offsetHeight}),bG(E,{width:this.offsetWidth,height:this.offsetHeight}),g.body.removeChild(this),c.paper.safari()},g.body[l](F),F.src=D[1],c.paper.defs[l](z),h.style.fill="url(#"+z.id+")",bG(h,{fill:"url(#"+z.id+")"}),c.pattern=z,c.pattern&&bJ(c);break}var G=a.getRGB(o);if(!G.error)delete d.gradient,delete i.gradient,!a.is(i.opacity,"undefined")&&a.is(d.opacity,"undefined")&&bG(h,{opacity:i.opacity}),!a.is(i["fill-opacity"],"undefined")&&a.is(d["fill-opacity"],"undefined")&&bG(h,{"fill-opacity":i["fill-opacity"]});else if((({circle:1,ellipse:1})[f](c.type)||r(o).charAt()!="r")&&bI(h,o,c.paper)){i.gradient=o,i.fill="none";break}G[f]("opacity")&&bG(h,{"fill-opacity":G.opacity>1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(o),h[R](n,G.hex),n=="stroke"&&G[f]("opacity")&&bG(h,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity});break;case"gradient":(({circle:1,ellipse:1})[f](c.type)||r(o).charAt()!="r")&&bI(h,o,c.paper);break;case"opacity":i.gradient&&!i[f]("stroke-opacity")&&bG(h,{"stroke-opacity":o>1?o/100:o});case"fill-opacity":if(i.gradient){var H=g.getElementById(h.getAttribute(I)[Y](/^url\(#|\)$/g,p));if(H){var J=H.getElementsByTagName("stop");J[J[w]-1][R]("stop-opacity",o)}break};default:n=="font-size"&&(o=T(o,10)+"px");var K=n[Y](/(\-.)/g,function(a){return V.call(a.substring(1))});h.style[K]=o,h[R](n,o)}}bM(c,d),m?c.rotate(m.join(q)):S(j)&&c.rotate(j,!0)},bL=1.2,bM=function(b,c){if(b.type=="text"&&!!(c[f]("text")||c[f]("font")||c[f]("font-size")||c[f]("x")||c[f]("y"))){var d=b.attrs,e=b.node,h=e.firstChild?T(g.defaultView.getComputedStyle(e.firstChild,p).getPropertyValue("font-size"),10):10;if(c[f]("text")){d.text=c.text;while(e.firstChild)e.removeChild(e.firstChild);var i=r(c.text)[s]("\n");for(var j=0,k=i[w];j<k;j++)if(i[j]){var m=bG("tspan");j&&bG(m,{dy:h*bL,x:d.x}),m[l](g.createTextNode(i[j])),e[l](m)}}else{i=e.getElementsByTagName("tspan");for(j=0,k=i[w];j<k;j++)j&&bG(i[j],{dy:h*bL,x:d.x})}bG(e,{y:d.y});var n=b.getBBox(),o=d.y-(n.y+n.height/2);o&&a.is(o,"finite")&&bG(e,{y:d.y+o})}},bN=function(b,c){var d=0,e=0;this[0]=b,this.id=a._oid++,this.node=b,b.raphael=this,this.paper=c,this.attrs=this.attrs||{},this.transformations=[],this._={tx:0,ty:0,rt:{deg:0,cx:0,cy:0},sx:1,sy:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},bO=bN[e];bN[e].rotate=function(c,d,e){if(this.removed)return this;if(c==null){if(this._.rt.cx)return[this._.rt.deg,this._.rt.cx,this._.rt.cy][v](q);return this._.rt.deg}var f=this.getBBox();c=r(c)[s](b),c[w]-1&&(d=S(c[1]),e=S(c[2])),c=S(c[0]),d!=null&&d!==!1?this._.rt.deg=c:this._.rt.deg+=c,e==null&&(d=null),this._.rt.cx=d,this._.rt.cy=e,d=d==null?f.x+f.width/2:d,e=e==null?f.y+f.height/2:e,this._.rt.deg?(this.transformations[0]=a.format("rotate({0} {1} {2})",this._.rt.deg,d,e),this.clip&&bG(this.clip,{transform:a.format("rotate({0} {1} {2})",-this._.rt.deg,d,e)})):(this.transformations[0]=p,this.clip&&bG(this.clip,{transform:p})),bG(this.node,{transform:this.transformations[v](q)});return this},bN[e].hide=function(){!this.removed&&(this.node.style.display="none");return this},bN[e].show=function(){!this.removed&&(this.node.style.display="");return this},bN[e].remove=function(){if(!this.removed){bA(this,this.paper),this.node.parentNode.removeChild(this.node);for(var a in this)delete this[a];this.removed=!0}},bN[e].getBBox=function(){if(this.removed)return this;if(this.type=="path")return bn(this.attrs.path);if(this.node.style.display=="none"){this.show();var a=!0}var b={};try{b=this.node.getBBox()}catch(c){}finally{b=b||{}}if(this.type=="text"){b={x:b.x,y:Infinity,width:0,height:0};for(var d=0,e=this.node.getNumberOfChars();d<e;d++){var f=this.node.getExtentOfChar(d);f.y<b.y&&(b.y=f.y),f.y+f.height-b.y>b.height&&(b.height=f.y+f.height-b.y),f.x+f.width-b.x>b.width&&(b.width=f.x+f.width-b.x)}}a&&this.hide();return b},bN[e].attr=function(b,c){if(this.removed)return this;if(b==null){var d={};for(var e in this.attrs)this.attrs[f](e)&&(d[e]=this.attrs[e]);this._.rt.deg&&(d.rotation=this.rotate()),(this._.sx!=1||this._.sy!=1)&&(d.scale=this.scale()),d.gradient&&d.fill=="none"&&(d.fill=d.gradient)&&delete d.gradient;return d}if(c==null&&a.is(b,F)){if(b=="translation")return cA.call(this);if(b=="rotation")return this.rotate();if(b=="scale")return this.scale();if(b==I&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;return this.attrs[b]}if(c==null&&a.is(b,G)){var g={};for(var h=0,i=b.length;h<i;h++)g[b[h]]=this.attr(b[h]);return g}if(c!=null){var j={};j[b]=c}else b!=null&&a.is(b,"object")&&(j=b);for(var k in this.paper.customAttributes)if(this.paper.customAttributes[f](k)&&j[f](k)&&a.is(this.paper.customAttributes[k],"function")){var l=this.paper.customAttributes[k].apply(this,[][n](j[k]));this.attrs[k]=j[k];for(var m in l)l[f](m)&&(j[m]=l[m])}bK(this,j);return this},bN[e].toFront=function(){if(this.removed)return this;this.node.parentNode[l](this.node);var a=this.paper;a.top!=this&&bB(this,a);return this},bN[e].toBack=function(){if(this.removed)return this;if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),bC(this,this.paper);var a=this.paper}return this},bN[e].insertAfter=function(a){if(this.removed)return this;var b=a.node||a[a.length-1].node;b.nextSibling?b.parentNode.insertBefore(this.node,b.nextSibling):b.parentNode[l](this.node),bD(this,a,this.paper);return this},bN[e].insertBefore=function(a){if(this.removed)return this;var b=a.node||a[0].node;b.parentNode.insertBefore(this.node,b),bE(this,a,this.paper);return this},bN[e].blur=function(a){var b=this;if(+a!==0){var c=bG("filter"),d=bG("feGaussianBlur");b.attrs.blur=a,c.id=bh(),bG(d,{stdDeviation:+a||1.5}),c.appendChild(d),b.paper.defs.appendChild(c),b._blur=c,bG(b.node,{filter:"url(#"+c.id+")"})}else b._blur&&(b._blur.parentNode.removeChild(b._blur),delete b._blur,delete b.attrs.blur),b.node.removeAttribute("filter")};var bP=function(a,b,c,d){var e=bG("circle");a.canvas&&a.canvas[l](e);var f=new bN(e,a);f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",bG(e,f.attrs);return f},bQ=function(a,b,c,d,e,f){var g=bG("rect");a.canvas&&a.canvas[l](g);var h=new bN(g,a);h.attrs={x:b,y:c,width:d,height:e,r:f||0,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",bG(g,h.attrs);return h},bR=function(a,b,c,d,e){var f=bG("ellipse");a.canvas&&a.canvas[l](f);var g=new bN(f,a);g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",bG(f,g.attrs);return g},bS=function(a,b,c,d,e,f){var g=bG("image");bG(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(a.xlink,"href",b),a.canvas&&a.canvas[l](g);var h=new bN(g,a);h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image";return h},bT=function(a,b,c,d){var e=bG("text");bG(e,{x:b,y:c,"text-anchor":"middle"}),a.canvas&&a.canvas[l](e);var f=new bN(e,a);f.attrs={x:b,y:c,"text-anchor":"middle",text:d,font:W.font,stroke:"none",fill:"#000"},f.type="text",bK(f,f.attrs);return f},bU=function(a,b){this.width=a||this.width,this.height=b||this.height,this.canvas[R]("width",this.width),this.canvas[R]("height",this.height);return this},bV=function(){var b=by[m](0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,h=b.height;if(!c)throw new Error("SVG container not found.");var i=bG("svg");d=d||0,e=e||0,f=f||512,h=h||342,bG(i,{xmlns:"http://www.w3.org/2000/svg",version:1.1,width:f,height:h}),c==1?(i.style.cssText="position:absolute;left:"+d+"px;top:"+e+"px",g.body[l](i)):c.firstChild?c.insertBefore(i,c.firstChild):c[l](i),c=new j,c.width=f,c.height=h,c.canvas=i,bz.call(c,c,a.fn),c.clear();return c};k.clear=function(){var a=this.canvas;while(a.firstChild)a.removeChild(a.firstChild);this.bottom=this.top=null,(this.desc=bG("desc"))[l](g.createTextNode("Created with Raphaël")),a[l](this.desc),a[l](this.defs=bG("defs"))},k.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]=bF(a)}}if(a.vml){var bW={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bX=/([clmz]),?([^clmz]*)/gi,bY=/ progid:\S+Blur\([^\)]+\)/g,bZ=/-?[^,\s-]+/g,b$=1e3+q+1e3,b_=10,ca={path:1,rect:1},cb=function(a){var b=/[ahqstv]/ig,c=bq;r(a).match(b)&&(c=bw),b=/[clmz]/g;if(c==bq&&!r(a).match(b)){var d=r(a)[Y](bX,function(a,b,c){var d=[],e=x.call(b)=="m",f=bW[b];c[Y](bZ,function(a){e&&d[w]==2&&(f+=d+bW[b=="m"?"l":"L"],d=[]),d[L](Q(a*b_))});return f+d});return d}var e=c(a),f,g;d=[];for(var h=0,i=e[w];h<i;h++){f=e[h],g=x.call(e[h][0]),g=="z"&&(g="x");for(var j=1,k=f[w];j<k;j++)g+=Q(f[j]*b_)+(j!=k-1?",":p);d[L](g)}return d[v](q)};a[H]=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version},bH=function(a,b){var c=cd("group");c.style.cssText="position:absolute;left:0;top:0;width:"+b.width+"px;height:"+b.height+"px",c.coordsize=b.coordsize,c.coordorigin=b.coordorigin;var d=cd("shape"),e=d.style;e.width=b.width+"px",e.height=b.height+"px",d.coordsize=b$,d.coordorigin=b.coordorigin,c[l](d);var f=new bN(d,c,b),g={fill:"none",stroke:"#000"};a&&(g.path=a),f.type="path",f.path=[],f.Path=p,bK(f,g),b.canvas[l](c);var h=cd("skew");h.on=!0,d.appendChild(h),f.skew=h;return f},bK=function(c,d){c.attrs=c.attrs||{};var e=c.node,h=c.attrs,i=e.style,j,k=(d.x!=h.x||d.y!=h.y||d.width!=h.width||d.height!=h.height||d.r!=h.r)&&c.type=="rect",m=c;for(var n in d)d[f](n)&&(h[n]=d[n]);k&&(h.path=cc(h.x,h.y,h.width,h.height,h.r),c.X=h.x,c.Y=h.y,c.W=h.width,c.H=h.height),d.href&&(e.href=d.href),d.title&&(e.title=d.title),d.target&&(e.target=d.target),d.cursor&&(i.cursor=d.cursor),"blur"in d&&c.blur(d.blur);if(d.path&&c.type=="path"||k)e.path=cb(h.path);d.rotation!=null&&c.rotate(d.rotation,!0),d.translation&&(j=r(d.translation)[s](b),cA.call(c,j[0],j[1]),c._.rt.cx!=null&&(c._.rt.cx+=+j[0],c._.rt.cy+=+j[1],c.setBox(c.attrs,j[0],j[1]))),d.scale&&(j=r(d.scale)[s](b),c.scale(+j[0]||1,+j[1]||+j[0]||1,+j[2]||null,+j[3]||null));if("clip-rect"in d){var o=r(d["clip-rect"])[s](b);if(o[w]==4){o[2]=+o[2]+ +o[0],o[3]=+o[3]+ +o[1];var q=e.clipRect||g.createElement("div"),t=q.style,u=e.parentNode;t.clip=a.format("rect({1}px {2}px {3}px {0}px)",o),e.clipRect||(t.position="absolute",t.top=0,t.left=0,t.width=c.paper.width+"px",t.height=c.paper.height+"px",u.parentNode.insertBefore(q,u),q[l](u),e.clipRect=q)}d["clip-rect"]||e.clipRect&&(e.clipRect.style.clip=p)}c.type=="image"&&d.src&&(e.src=d.src),c.type=="image"&&d.opacity&&(e.filterOpacity=U+".Alpha(opacity="+d.opacity*100+")",i.filter=(e.filterMatrix||p)+(e.filterOpacity||p)),d.font&&(i.font=d.font),d["font-family"]&&(i.fontFamily='"'+d["font-family"][s](",")[0][Y](/^['"]+|['"]+$/g,p)+'"'),d["font-size"]&&(i.fontSize=d["font-size"]),d["font-weight"]&&(i.fontWeight=d["font-weight"]),d["font-style"]&&(i.fontStyle=d["font-style"]);if(d.opacity!=null||d["stroke-width"]!=null||d.fill!=null||d.stroke!=null||d["stroke-width"]!=null||d["stroke-opacity"]!=null||d["fill-opacity"]!=null||d["stroke-dasharray"]!=null||d["stroke-miterlimit"]!=null||d["stroke-linejoin"]!=null||d["stroke-linecap"]!=null){e=c.shape||e;var v=e.getElementsByTagName(I)&&e.getElementsByTagName(I)[0],x=!1;!v&&(x=v=cd(I));if("fill-opacity"in d||"opacity"in d){var y=((+h["fill-opacity"]+1||2)-1)*((+h.opacity+1||2)-1)*((+a.getRGB(d.fill).o+1||2)-1);y=A(z(y,0),1),v.opacity=y}d.fill&&(v.on=!0);if(v.on==null||d.fill=="none")v.on=!1;if(v.on&&d.fill){var B=d.fill.match(M);B?(v.src=B[1],v.type="tile"):(v.color=a.getRGB(d.fill).hex,v.src=p,v.type="solid",a.getRGB(d.fill).error&&(m.type in{circle:1,ellipse:1}||r(d.fill).charAt()!="r")&&bI(m,d.fill)&&(h.fill="none",h.gradient=d.fill))}x&&e[l](v);var C=e.getElementsByTagName("stroke")&&e.getElementsByTagName("stroke")[0],D=!1;!C&&(D=C=cd("stroke"));if(d.stroke&&d.stroke!="none"||d["stroke-width"]||d["stroke-opacity"]!=null||d["stroke-dasharray"]||d["stroke-miterlimit"]||d["stroke-linejoin"]||d["stroke-linecap"])C.on=!0;(d.stroke=="none"||C.on==null||d.stroke==0||d["stroke-width"]==0)&&(C.on=!1);var E=a.getRGB(d.stroke);C.on&&d.stroke&&(C.color=E.hex),y=((+h["stroke-opacity"]+1||2)-1)*((+h.opacity+1||2)-1)*((+E.o+1||2)-1);var F=(S(d["stroke-width"])||1)*.75;y=A(z(y,0),1),d["stroke-width"]==null&&(F=h["stroke-width"]),d["stroke-width"]&&(C.weight=F),F&&F<1&&(y*=F)&&(C.weight=1),C.opacity=y,d["stroke-linejoin"]&&(C.joinstyle=d["stroke-linejoin"]||"miter"),C.miterlimit=d["stroke-miterlimit"]||8,d["stroke-linecap"]&&(C.endcap=d["stroke-linecap"]=="butt"?"flat":d["stroke-linecap"]=="square"?"square":"round");if(d["stroke-dasharray"]){var G={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};C.dashstyle=G[f](d["stroke-dasharray"])?G[d["stroke-dasharray"]]:p}D&&e[l](C)}if(m.type=="text"){i=m.paper.span.style,h.font&&(i.font=h.font),h["font-family"]&&(i.fontFamily=h["font-family"]),h["font-size"]&&(i.fontSize=h["font-size"]),h["font-weight"]&&(i.fontWeight=h["font-weight"]),h["font-style"]&&(i.fontStyle=h["font-style"]),m.node.string&&(m.paper.span.innerHTML=r(m.node.string)[Y](/</g,"&#60;")[Y](/&/g,"&#38;")[Y](/\n/g,"<br>")),m.W=h.w=m.paper.span.offsetWidth,m.H=h.h=m.paper.span.offsetHeight,m.X=h.x,m.Y=h.y+Q(m.H/2);switch(h["text-anchor"]){case"start":m.node.style["v-text-align"]="left",m.bbx=Q(m.W/2);break;case"end":m.node.style["v-text-align"]="right",m.bbx=-Q(m.W/2);break;default:m.node.style["v-text-align"]="center"}}},bI=function(a,b){a.attrs=a.attrs||{};var c=a.attrs,d,e="linear",f=".5 .5";a.attrs.gradient=b,b=r(b)[Y](bd,function(a,b,c){e="radial",b&&c&&(b=S(b),c=S(c),C(b-.5,2)+C(c-.5,2)>.25&&(c=y.sqrt(.25-C(b-.5,2))*((c>.5)*2-1)+.5),f=b+q+c);return p}),b=b[s](/\s*\-\s*/);if(e=="linear"){var g=b.shift();g=-S(g);if(isNaN(g))return null}var h=bx(b);if(!h)return null;a=a.shape||a.node,d=a.getElementsByTagName(I)[0]||cd(I),!d.parentNode&&a.appendChild(d);if(h[w]){d.on=!0,d.method="none",d.color=h[0].color,d.color2=h[h[w]-1].color;var i=[];for(var j=0,k=h[w];j<k;j++)h[j].offset&&i[L](h[j].offset+q+h[j].color);d.colors&&(d.colors.value=i[w]?i[v]():"0% "+d.color),e=="radial"?(d.type="gradientradial",d.focus="100%",d.focussize=f,d.focusposition=f):(d.type="gradient",d.angle=(270-g)%360)}return 1},bN=function(b,c,d){var e=0,f=0,g=0,h=1;this[0]=b,this.id=a._oid++,this.node=b,b.raphael=this,this.X=0,this.Y=0,this.attrs={},this.Group=c,this.paper=d,this._={tx:0,ty:0,rt:{deg:0},sx:1,sy:1},!d.bottom&&(d.bottom=this),this.prev=d.top,d.top&&(d.top.next=this),d.top=this,this.next=null},bO=bN[e],bO.rotate=function(a,c,d){if(this.removed)return this;if(a==null){if(this._.rt.cx)return[this._.rt.deg,this._.rt.cx,this._.rt.cy][v](q);return this._.rt.deg}a=r(a)[s](b),a[w]-1&&(c=S(a[1]),d=S(a[2])),a=S(a[0]),c!=null?this._.rt.deg=a:this._.rt.deg+=a,d==null&&(c=null),this._.rt.cx=c,this._.rt.cy=d,this.setBox(this.attrs,c,d),this.Group.style.rotation=this._.rt.deg;return this},bO.setBox=function(a,b,c){if(this.removed)return this;var d=this.Group.style,e=this.shape&&this.shape.style||this.node.style;a=a||{};for(var g in a)a[f](g)&&(this.attrs[g]=a[g]);b=b||this._.rt.cx,c=c||this._.rt.cy;var h=this.attrs,i,j,k,l;switch(this.type){case"circle":i=h.cx-h.r,j=h.cy-h.r,k=l=h.r*2;break;case"ellipse":i=h.cx-h.rx,j=h.cy-h.ry,k=h.rx*2,l=h.ry*2;break;case"image":i=+h.x,j=+h.y,k=h.width||0,l=h.height||0;break;case"text":this.textpath.v=["m",Q(h.x),", ",Q(h.y-2),"l",Q(h.x)+1,", ",Q(h.y-2)][v](p),i=h.x-Q(this.W/2),j=h.y-this.H/2,k=this.W,l=this.H;break;case"rect":case"path":if(!this.attrs.path)i=0,j=0,k=this.paper.width,l=this.paper.height;else{var m=bn(this.attrs.path);i=m.x,j=m.y,k=m.width,l=m.height}break;default:i=0,j=0,k=this.paper.width,l=this.paper.height}b=b==null?i+k/2:b,c=c==null?j+l/2:c;var n=b-this.paper.width/2,o=c-this.paper.height/2,q;d.left!=(q=n+"px")&&(d.left=q),d.top!=(q=o+"px")&&(d.top=q),this.X=ca[f](this.type)?-n:i,this.Y=ca[f](this.type)?-o:j,this.W=k,this.H=l,ca[f](this.type)?(e.left!=(q=-n*b_+"px")&&(e.left=q),e.top!=(q=-o*b_+"px")&&(e.top=q)):this.type=="text"?(e.left!=(q=-n+"px")&&(e.left=q),e.top!=(q=-o+"px")&&(e.top=q)):(d.width!=(q=this.paper.width+"px")&&(d.width=q),d.height!=(q=this.paper.height+"px")&&(d.height=q),e.left!=(q=i-n+"px")&&(e.left=q),e.top!=(q=j-o+"px")&&(e.top=q),e.width!=(q=k+"px")&&(e.width=q),e.height!=(q=l+"px")&&(e.height=q))},bO.hide=function(){!this.removed&&(this.Group.style.display="none");return this},bO.show=function(){!this.removed&&(this.Group.style.display="block");return this},bO.getBBox=function(){if(this.removed)return this;if(ca[f](this.type))return bn(this.attrs.path);return{x:this.X+(this.bbx||0),y:this.Y,width:this.W,height:this.H}},bO.remove=function(){if(!this.removed){bA(this,this.paper),this.node.parentNode.removeChild(this.node),this.Group.parentNode.removeChild(this.Group),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var a in this)delete this[a];this.removed=!0}},bO.attr=function(b,c){if(this.removed)return this;if(b==null){var d={};for(var e in this.attrs)this.attrs[f](e)&&(d[e]=this.attrs[e]);this._.rt.deg&&(d.rotation=this.rotate()),(this._.sx!=1||this._.sy!=1)&&(d.scale=this.scale()),d.gradient&&d.fill=="none"&&(d.fill=d.gradient)&&delete d.gradient;return d}if(c==null&&a.is(b,"string")){if(b=="translation")return cA.call(this);if(b=="rotation")return this.rotate();if(b=="scale")return this.scale();if(b==I&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;return this.attrs[b]}if(this.attrs&&c==null&&a.is(b,G)){var g,h={};for(e=0,g=b[w];e<g;e++)h[b[e]]=this.attr(b[e]);return h}var i;c!=null&&(i={},i[b]=c),c==null&&a.is(b,"object")&&(i=b);if(i){for(var j in this.paper.customAttributes)if(this.paper.customAttributes[f](j)&&i[f](j)&&a.is(this.paper.customAttributes[j],"function")){var k=this.paper.customAttributes[j].apply(this,[][n](i[j]));this.attrs[j]=i[j];for(var l in k)k[f](l)&&(i[l]=k[l])}i.text&&this.type=="text"&&(this.node.string=i.text),bK(this,i),i.gradient&&(({circle:1,ellipse:1})[f](this.type)||r(i.gradient).charAt()!="r")&&bI(this,i.gradient),(!ca[f](this.type)||this._.rt.deg)&&this.setBox(this.attrs)}return this},bO.toFront=function(){!this.removed&&this.Group.parentNode[l](this.Group),this.paper.top!=this&&bB(this,this.paper);return this},bO.toBack=function(){if(this.removed)return this;this.Group.parentNode.firstChild!=this.Group&&(this.Group.parentNode.insertBefore(this.Group,this.Group.parentNode.firstChild),bC(this,this.paper));return this},bO.insertAfter=function(a){if(this.removed)return this;a.constructor==cD&&(a=a[a.length-1]),a.Group.nextSibling?a.Group.parentNode.insertBefore(this.Group,a.Group.nextSibling):a.Group.parentNode[l](this.Group),bD(this,a,this.paper);return this},bO.insertBefore=function(a){if(this.removed)return this;a.constructor==cD&&(a=a[0]),a.Group.parentNode.insertBefore(this.Group,a.Group),bE(this,a,this.paper);return this},bO.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;d=d.replace(bY,p),+b!==0?(this.attrs.blur=b,c.filter=d+q+U+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",Q(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur)},bP=function(a,b,c,d){var e=cd("group"),f=cd("oval"),g=f.style;e.style.cssText="position:absolute;left:0;top:0;width:"+a.width+"px;height:"+a.height+"px",e.coordsize=b$,e.coordorigin=a.coordorigin,e[l](f);var h=new bN(f,e,a);h.type="circle",bK(h,{stroke:"#000",fill:"none"}),h.attrs.cx=b,h.attrs.cy=c,h.attrs.r=d,h.setBox({x:b-d,y:c-d,width:d*2,height:d*2}),a.canvas[l](e);return h};function cc(b,c,d,e,f){return f?a.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z",b+f,c,d-f*2,f,-f,e-f*2,f*2-d,f*2-e):a.format("M{0},{1}l{2},0,0,{3},{4},0z",b,c,d,e,-d)}bQ=function(a,b,c,d,e,f){var g=cc(b,c,d,e,f),h=a.path(g),i=h.attrs;h.X=i.x=b,h.Y=i.y=c,h.W=i.width=d,h.H=i.height=e,i.r=f,i.path=g,h.type="rect";return h},bR=function(a,b,c,d,e){var f=cd("group"),g=cd("oval"),h=g.style;f.style.cssText="position:absolute;left:0;top:0;width:"+a.width+"px;height:"+a.height+"px",f.coordsize=b$,f.coordorigin=a.coordorigin,f[l](g);var i=new bN(g,f,a);i.type="ellipse",bK(i,{stroke:"#000"}),i.attrs.cx=b,i.attrs.cy=c,i.attrs.rx=d,i.attrs.ry=e,i.setBox({x:b-d,y:c-e,width:d*2,height:e*2}),a.canvas[l](f);return i},bS=function(a,b,c,d,e,f){var g=cd("group"),h=cd("image");g.style.cssText="position:absolute;left:0;top:0;width:"+a.width+"px;height:"+a.height+"px",g.coordsize=b$,g.coordorigin=a.coordorigin,h.src=b,g[l](h);var i=new bN(h,g,a);i.type="image",i.attrs.src=b,i.attrs.x=c,i.attrs.y=d,i.attrs.w=e,i.attrs.h=f,i.setBox({x:c,y:d,width:e,height:f}),a.canvas[l](g);var j=cd("skew");j.on=!0,h.appendChild(j),i.skew=j;return i},bT=function(b,c,d,e){var f=cd("group"),g=cd("shape"),h=g.style,i=cd("path"),j=i.style,k=cd("textpath");f.style.cssText="position:absolute;left:0;top:0;width:"+b.width+"px;height:"+b.height+"px",f.coordsize=b$,f.coordorigin=b.coordorigin,i.v=a.format("m{0},{1}l{2},{1}",Q(c*10),Q(d*10),Q(c*10)+1),i.textpathok=!0,h.width=b.width,h.height=b.height,k.string=r(e),k.on=!0,g[l](k),g[l](i),f[l](g);var m=new bN(k,f,b);m.shape=g,m.textpath=i,m.type="text",m.attrs.text=e,m.attrs.x=c,m.attrs.y=d,m.attrs.w=1,m.attrs.h=1,bK(m,{font:W.font,stroke:"none",fill:"#000"}),m.setBox(),b.canvas[l](f);return m},bU=function(a,b){var c=this.canvas.style;a==+a&&(a+="px"),b==+b&&(b+="px"),c.width=a,c.height=b,c.clip="rect(0 "+a+" "+b+" 0)";return this};var cd;g.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!g.namespaces.rvml&&g.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),cd=function(a){return g.createElement("<rvml:"+a+' class="rvml">')}}catch(ce){cd=function(a){return g.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}bV=function(){var b=by[m](0,arguments),c=b.container,d=b.height,e,f=b.width,h=b.x,i=b.y;if(!c)throw new Error("VML container not found.");var k=new j,n=k.canvas=g.createElement("div"),o=n.style;h=h||0,i=i||0,f=f||512,d=d||342,f==+f&&(f+="px"),d==+d&&(d+="px"),k.width=1e3,k.height=1e3,k.coordsize=b_*1e3+q+b_*1e3,k.coordorigin="0 0",k.span=g.createElement("span"),k.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",n[l](k.span),o.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(g.body[l](n),o.left=h+"px",o.top=i+"px",o.position="absolute"):c.firstChild?c.insertBefore(n,c.firstChild):c[l](n),bz.call(k,k,a.fn);return k},k.clear=function(){this.canvas.innerHTML=p,this.span=g.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas[l](this.span),this.bottom=this.top=null},k.remove=function(){this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]=bF(a);return!0}}var cf=navigator.userAgent.match(/Version\/(.*?)\s/);navigator.vendor=="Apple Computer, Inc."&&(cf&&cf[1]<4||navigator.platform.slice(0,2)=="iP")?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});h.setTimeout(function(){a.remove()})}:k.safari=function(){};var cg=function(){this.returnValue=!1},ch=function(){return this.originalEvent.preventDefault()},ci=function(){this.cancelBubble=!0},cj=function(){return this.originalEvent.stopPropagation()},ck=function(){if(g.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,g=function(e){if(o&&u[f](b))for(var g=0,h=e.targetTouches&&e.targetTouches.length;g<h;g++)if(e.targetTouches[g].target==a){var i=e;e=e.targetTouches[g],e.originalEvent=i,e.preventDefault=ch,e.stopPropagation=cj;break}return c.call(d,e)};a.addEventListener(e,g,!1);return function(){a.removeEventListener(e,g,!1);return!0}};if(g.attachEvent)return function(a,b,c,d){var e=function(a){a=a||h.event,a.preventDefault=a.preventDefault||cg,a.stopPropagation=a.stopPropagation||ci;return c.call(d,a)};a.attachEvent("on"+b,e);var f=function(){a.detachEvent("on"+b,e);return!0};return f}}(),cl=[],cm=function(a){var b=a.clientX,c=a.clientY,d=g.documentElement.scrollTop||g.body.scrollTop,e=g.documentElement.scrollLeft||g.body.scrollLeft,f,h=cl.length;while(h--){f=cl[h];if(o){var i=a.touches.length,j;while(i--){j=a.touches[i];if(j.identifier==f.el._drag.id){b=j.clientX,c=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}}else a.preventDefault();b+=e,c+=d,f.move&&f.move.call(f.move_scope||f.el,b-f.el._drag.x,c-f.el._drag.y,b,c,a)}},cn=function(b){a.unmousemove(cm).unmouseup(cn);var c=cl.length,d;while(c--)d=cl[c],d.el._drag={},d.end&&d.end.call(d.end_scope||d.start_scope||d.move_scope||d.el,b);cl=[]};for(var co=t[w];co--;)(function(b){a[b]=bN[e][b]=function(c,d){a.is(c,"function")&&(this.events=this.events||[],this.events.push({name:b,f:c,unbind:ck(this.shape||this.node||g,b,c,d||this)}));return this},a["un"+b]=bN[e]["un"+b]=function(a){var c=this.events,d=c[w];while(d--)if(c[d].name==b&&c[d].f==a){c[d].unbind(),c.splice(d,1),!c.length&&delete this.events;return this}return this}})(t[co]);bO.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},bO.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)},bO.drag=function(b,c,d,e,f,h){this._drag={},this.mousedown(function(i){(i.originalEvent||i).preventDefault();var j=g.documentElement.scrollTop||g.body.scrollTop,k=g.documentElement.scrollLeft||g.body.scrollLeft;this._drag.x=i.clientX+k,this._drag.y=i.clientY+j,this._drag.id=i.identifier,c&&c.call(f||e||this,i.clientX+k,i.clientY+j,i),!cl.length&&a.mousemove(cm).mouseup(cn),cl.push({el:this,move:b,end:d,move_scope:e,start_scope:f,end_scope:h})});return this},bO.undrag=function(b,c,d){var e=cl.length;while(e--)cl[e].el==this&&cl[e].move==b&&cl[e].end==d&&cl.splice(e++,1);!cl.length&&a.unmousemove(cm).unmouseup(cn)},k.circle=function(a,b,c){return bP(this,a||0,b||0,c||0)},k.rect=function(a,b,c,d,e){return bQ(this,a||0,b||0,c||0,d||0,e||0)},k.ellipse=function(a,b,c,d){return bR(this,a||0,b||0,c||0,d||0)},k.path=function(b){b&&!a.is(b,F)&&!a.is(b[0],G)&&(b+=p);return bH(a.format[m](a,arguments),this)},k.image=function(a,b,c,d,e){return bS(this,a||"about:blank",b||0,c||0,d||0,e||0)},k.text=function(a,b,c){return bT(this,a||0,b||0,r(c))},k.set=function(a){arguments[w]>1&&(a=Array[e].splice.call(arguments,0,arguments[w]));return new cD(a)},k.setSize=bU,k.top=k.bottom=null,k.raphael=a,bO.resetScale=function(){if(this.removed)return this;this._.sx=1,this._.sy=1,this.attrs.scale="1 1"},bO.scale=function(a,b,c,d){if(this.removed)return this;if(a==null&&b==null)return{x:this._.sx,y:this._.sy,toString:cp};b=b||a,!+b&&(b=a);var e,f,g,h,i=this.attrs;if(a!=0){var j=this.getBBox(),k=j.x+j.width/2,l=j.y+j.height/2,m=B(a/this._.sx),o=B(b/this._.sy);c=+c||c==0?c:k,d=+d||d==0?d:l;var r=this._.sx>0,s=this._.sy>0,t=~~(a/B(a)),u=~~(b/B(b)),x=m*t,y=o*u,z=this.node.style,A=c+B(k-c)*x*(k>c==r?1:-1),C=d+B(l-d)*y*(l>d==s?1:-1),D=a*t>b*u?o:m;switch(this.type){case"rect":case"image":var E=i.width*m,F=i.height*o;this.attr({height:F,r:i.r*D,width:E,x:A-E/2,y:C-F/2});break;case"circle":case"ellipse":this.attr({rx:i.rx*m,ry:i.ry*o,r:i.r*D,cx:A,cy:C});break;case"text":this.attr({x:A,y:C});break;case"path":var G=bp(i.path),H=!0,I=r?x:m,J=s?y:o;for(var K=0,L=G[w];K<L;K++){var M=G[K],N=V.call(M[0]);if(N=="M"&&H)continue;H=!1;if(N=="A")M[G[K][w]-2]*=I,M[G[K][w]-1]*=J,M[1]*=m,M[2]*=o,M[5]=+(t+u?!!+M[5]:!+M[5]);else if(N=="H")for(var O=1,P=M[w];O<P;O++)M[O]*=I;else if(N=="V")for(O=1,P=M[w];O<P;O++)M[O]*=J;else for(O=1,P=M[w];O<P;O++)M[O]*=O%2?I:J}var Q=bn(G);e=A-Q.x-Q.width/2,f=C-Q.y-Q.height/2,G[0][1]+=e,G[0][2]+=f,this.attr({path:G})}this.type in{text:1,image:1}&&(t!=1||u!=1)?this.transformations?(this.transformations[2]="scale("[n](t,",",u,")"),this.node[R]("transform",this.transformations[v](q)),e=t==-1?-i.x-(E||0):i.x,f=u==-1?-i.y-(F||0):i.y,this.attr({x:e,y:f}),i.fx=t-1,i.fy=u-1):(this.node.filterMatrix=U+".Matrix(M11="[n](t,", M12=0, M21=0, M22=",u,", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')"),z.filter=(this.node.filterMatrix||p)+(this.node.filterOpacity||p)):this.transformations?(this.transformations[2]=p,this.node[R]("transform",this.transformations[v](q)),i.fx=0,i.fy=0):(this.node.filterMatrix=p,z.filter=(this.node.filterMatrix||p)+(this.node.filterOpacity||p)),i.scale=[a,b,c,d][v](q),this._.sx=a,this._.sy=b}return this},bO.clone=function(){if(this.removed)return null;var a=this.attr();delete a.scale,delete a.translation;return this.paper[this.type]().attr(a)};var cq={},cr=function(b,c,d,e,f,g,h,i,j){var k=0,l=100,m=[b,c,d,e,f,g,h,i].join(),n=cq[m],o,p;!n&&(cq[m]=n={data:[]}),n.timer&&clearTimeout(n.timer),n.timer=setTimeout(function(){delete cq[m]},2e3);if(j!=null){var q=cr(b,c,d,e,f,g,h,i);l=~~q*10}for(var r=0;r<l+1;r++){n.data[j]>r?p=n.data[r*l]:(p=a.findDotsAtSegment(b,c,d,e,f,g,h,i,r/l),n.data[r]=p),r&&(k+=C(C(o.x-p.x,2)+C(o.y-p.y,2),.5));if(j!=null&&k>=j)return p;o=p}if(j==null)return k},cs=function(b,c){return function(d,e,f){d=bw(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;o<p;o++){i=d[o];if(i[0]=="M")g=+i[1],h=+i[2];else{j=cr(g,h,i[1],i[2],i[3],i[4],i[5],i[6]);if(n+j>e){if(c&&!l.start){m=cr(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C",m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M",m.x,m.y+"C",m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]][v](),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cr(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[1],i[2],i[3],i[4],i[5],i[6],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},ct=cs(1),cu=cs(),cv=cs(0,1);bO.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return ct(this.attrs.path)}},bO.getPointAtLength=function(a){if(this.type=="path")return cu(this.attrs.path,a)},bO.getSubpath=function(a,b){if(this.type=="path"){if(B(this.getTotalLength()-b)<"1e-6")return cv(this.attrs.path,a).end;var c=cv(this.attrs.path,b,1);return a?cv(c,a).end:c}},a.easing_formulas={linear:function(a){return a},"<":function(a){return C(a,3)},">":function(a){return C(a-1,3)+1},"<>":function(a){a=a*2;if(a<1)return C(a,3)/2;a-=2;return(C(a,3)+2)/2},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==0||a==1)return a;var b=.3,c=b/4;return C(2,-10*a)*y.sin((a-c)*2*D/b)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};var cw=[],cx=function(){var b=+(new Date);for(var c=0;c<cw[w];c++){var d=cw[c];if(d.stop||d.el.removed)continue;var e=b-d.start,g=d.ms,h=d.easing,i=d.from,j=d.diff,k=d.to,l=d.t,m=d.el,n={},o;if(e<g){var r=h(e/g);for(var s in i)if(i[f](s)){switch(X[s]){case"along":o=r*g*j[s],k.back&&(o=k.len-o);var t=cu(k[s],o);m.translate(j.sx-j.x||0,j.sy-j.y||0),j.x=t.x,j.y=t.y,m.translate(t.x-j.sx,t.y-j.sy),k.rot&&m.rotate(j.r+t.alpha,t.x,t.y);break;case E:o=+i[s]+r*g*j[s];break;case"colour":o="rgb("+[cz(Q(i[s].r+r*g*j[s].r)),cz(Q(i[s].g+r*g*j[s].g)),cz(Q(i[s].b+r*g*j[s].b))][v](",")+")";break;case"path":o=[];for(var u=0,x=i[s][w];u<x;u++){o[u]=[i[s][u][0]];for(var y=1,z=i[s][u][w];y<z;y++)o[u][y]=+i[s][u][y]+r*g*j[s][u][y];o[u]=o[u][v](q)}o=o[v](q);break;case"csv":switch(s){case"translation":var A=r*g*j[s][0]-l.x,B=r*g*j[s][1]-l.y;l.x+=A,l.y+=B,o=A+q+B;break;case"rotation":o=+i[s][0]+r*g*j[s][0],i[s][1]&&(o+=","+i[s][1]+","+i[s][2]);break;case"scale":o=[+i[s][0]+r*g*j[s][0],+i[s][1]+r*g*j[s][1],2 in k[s]?k[s][2]:p,3 in k[s]?k[s][3]:p][v](q);break;case"clip-rect":o=[],u=4;while(u--)o[u]=+i[s][u]+r*g*j[s][u]}break;default:var C=[].concat(i[s]);o=[],u=m.paper.customAttributes[s].length;while(u--)o[u]=+C[u]+r*g*j[s][u]}n[s]=o}m.attr(n),m._run&&m._run.call(m)}else k.along&&(t=cu(k.along,k.len*!k.back),m.translate(j.sx-(j.x||0)+t.x-j.sx,j.sy-(j.y||0)+t.y-j.sy),k.rot&&m.rotate(j.r+t.alpha,t.x,t.y)),(l.x||l.y)&&m.translate(-l.x,-l.y),k.scale&&(k.scale+=p),m.attr(k),cw.splice(c--,1)}a.svg&&m&&m.paper&&m.paper.safari(),cw[w]&&setTimeout(cx)},cy=function(b,c,d,e,f){var g=d-e;c.timeouts.push(setTimeout(function(){a.is(f,"function")&&f.call(c),c.animate(b,g,b.easing)},e))},cz=function(a){return z(A(a,255),0)},cA=function(a,b){if(a==null)return{x:this._.tx,y:this._.ty,toString:cp};this._.tx+=+a,this._.ty+=+b;switch(this.type){case"circle":case"ellipse":this.attr({cx:+a+this.attrs.cx,cy:+b+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+a+this.attrs.x,y:+b+this.attrs.y});break;case"path":var c=bp(this.attrs.path);c[0][1]+=+a,c[0][2]+=+b,this.attr({path:c})}return this};bO.animateWith=function(a,b,c,d,e){for(var f=0,g=cw.length;f<g;f++)cw[f].el.id==a.id&&(b.start=cw[f].start);return this.animate(b,c,d,e)},bO.animateAlong=cB(),bO.animateAlongBack=cB(1),bO.onAnimation=function(a){this._run=a||0;return this},bO.animate=function(c,d,e,g){var h=this;h.timeouts=h.timeouts||[];if(a.is(e,"function")||!e)g=e||null;if(h.removed){g&&g.call(h);return h}var i={},j={},k=!1,l={};for(var m in c)if(c[f](m))if(X[f](m)||h.paper.customAttributes[f](m)){k=!0,i[m]=h.attr(m),i[m]==null&&(i[m]=W[m]),j[m]=c[m];switch(X[m]){case"along":var n=ct(c[m]),o=cu(c[m],n*!!c.back),p=h.getBBox();l[m]=n/d,l.tx=p.x,l.ty=p.y,l.sx=o.x,l.sy=o.y,j.rot=c.rot,j.back=c.back,j.len=n,c.rot&&(l.r=S(h.rotate())||0);break;case E:l[m]=(j[m]-i[m])/d;break;case"colour":i[m]=a.getRGB(i[m]);var q=a.getRGB(j[m]);l[m]={r:(q.r-i[m].r)/d,g:(q.g-i[m].g)/d,b:(q.b-i[m].b)/d};break;case"path":var t=bw(i[m],j[m]);i[m]=t[0];var u=t[1];l[m]=[];for(var v=0,x=i[m][w];v<x;v++){l[m][v]=[0];for(var y=1,z=i[m][v][w];y<z;y++)l[m][v][y]=(u[v][y]-i[m][v][y])/d}break;case"csv":var A=r(c[m])[s](b),B=r(i[m])[s](b);switch(m){case"translation":i[m]=[0,0],l[m]=[A[0]/d,A[1]/d];break;case"rotation":i[m]=B[1]==A[1]&&B[2]==A[2]?B:[0,A[1],A[2]],l[m]=[(A[0]-i[m][0])/d,0,0];break;case"scale":c[m]=A,i[m]=r(i[m])[s](b),l[m]=[(A[0]-i[m][0])/d,(A[1]-i[m][1])/d,0,0];break;case"clip-rect":i[m]=r(i[m])[s](b),l[m]=[],v=4;while(v--)l[m][v]=(A[v]-i[m][v])/d}j[m]=A;break;default:A=[].concat(c[m]),B=[].concat(i[m]),l[m]=[],v=h.paper.customAttributes[m][w];while(v--)l[m][v]=((A[v]||0)-(B[v]||0))/d}}if(!k){var C=[],D;for(var F in c)c[f](F)&&Z.test(F)&&(m={value:c[F]},F=="from"&&(F=0),F=="to"&&(F=100),m.key=T(F,10),C.push(m));C.sort(be),C[0].key&&C.unshift({key:0,value:h.attrs});for(v=0,x=C[w];v<x;v++)cy(C[v].value,h,d/100*C[v].key,d/100*(C[v-1]&&C[v-1].key||0),C[v-1]&&C[v-1].value.callback);D=C[C[w]-1].value.callback,D&&h.timeouts.push(setTimeout(function(){D.call(h)},d))}else{var G=a.easing_formulas[e];if(!G){G=r(e).match(P);if(G&&G[w]==5){var H=G;G=function(a){return cC(a,+H[1],+H[2],+H[3],+H[4],d)}}else G=function(a){return a}}cw.push({start:c.start||+(new Date),ms:d,easing:G,from:i,diff:l,to:j,el:h,t:{x:0,y:0}}),a.is(g,"function")&&(h._ac=setTimeout(function(){g.call(h)},d)),cw[w]==1&&setTimeout(cx)}return this},bO.stop=function(){for(var a=0;a<cw.length;a++)cw[a].el.id==this.id&&cw.splice(a--,1);for(a=0,ii=this.timeouts&&this.timeouts.length;a<ii;a++)clearTimeout(this.timeouts[a]);this.timeouts=[],clearTimeout(this._ac),delete this._ac;return this},bO.translate=function(a,b){return this.attr({translation:a+" "+b})},bO[H]=function(){return"Raphaël’s object"},a.ae=cw;var cD=function(a){this.items=[],this[w]=0,this.type="set";if(a)for(var b=0,c=a[w];b<c;b++)a[b]&&(a[b].constructor==bN||a[b].constructor==cD)&&(this[this.items[w]]=this.items[this.items[w]]=a[b],this[w]++)};cD[e][L]=function(){var a,b;for(var c=0,d=arguments[w];c<d;c++)a=arguments[c],a&&(a.constructor==bN||a.constructor==cD)&&(b=this.items[w],this[b]=this.items[b]=a,this[w]++);return this},cD[e].pop=function(){delete this[this[w]--];return this.items.pop()};for(var cE in bO)bO[f](cE)&&(cD[e][cE]=function(a){return function(){for(var b=0,c=this.items[w];b<c;b++)this.items[b][a][m](this.items[b],arguments);return this}}(cE));cD[e].attr=function(b,c){if(b&&a.is(b,G)&&a.is(b[0],"object"))for(var d=0,e=b[w];d<e;d++)this.items[d].attr(b[d]);else for(var f=0,g=this.items[w];f<g;f++)this.items[f].attr(b,c);return this},cD[e].animate=function(b,c,d,e){(a.is(d,"function")||!d)&&(e=d||null);var f=this.items[w],g=f,h,i=this,j;e&&(j=function(){!--f&&e.call(i)}),d=a.is(d,F)?d:j,h=this.items[--g].animate(b,c,d,j);while(g--)this.items[g]&&!this.items[g].removed&&this.items[g].animateWith(h,b,c,d,j);return this},cD[e].insertAfter=function(a){var b=this.items[w];while(b--)this.items[b].insertAfter(a);return this},cD[e].getBBox=function(){var a=[],b=[],c=[],d=[];for(var e=this.items[w];e--;){var f=this.items[e].getBBox();a[L](f.x),b[L](f.y),c[L](f.x+f.width),d[L](f.y+f.height)}a=A[m](0,a),b=A[m](0,b);return{x:a,y:b,width:z[m](0,c)-a,height:z[m](0,d)-b}},cD[e].clone=function(a){a=new cD;for(var b=0,c=this.items[w];b<c;b++)a[L](this.items[b].clone());return a},a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[f](d)&&(b.face[d]=a.face[d]);this.fonts[c]?this.fonts[c][L](b):this.fonts[c]=[b];if(!a.svg){b.face["units-per-em"]=T(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[f](e)){var g=a.glyphs[e];b.glyphs[e]={w:g.w,k:{},d:g.d&&"M"+g.d[Y](/[mlcxtrv]/g,function(a){return({l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"})[a]||"M"})+"z"};if(g.k)for(var h in g.k)g[f](h)&&(b.glyphs[e].k[h]=g.k[h])}}return a},k.getFont=function(b,c,d,e){e=e||"normal",d=d||"normal",c=+c||({normal:400,bold:700,lighter:300,bolder:800})[c]||400;if(!!a.fonts){var g=a.fonts[b];if(!g){var h=new RegExp("(^|\\s)"+b[Y](/[^\w\d\s+!~.:_-]/g,p)+"(\\s|$)","i");for(var i in a.fonts)if(a.fonts[f](i)&&h.test(i)){g=a.fonts[i];break}}var j;if(g)for(var k=0,l=g[w];k<l;k++){j=g[k];if(j.face["font-weight"]==c&&(j.face["font-style"]==d||!j.face["font-style"])&&j.face["font-stretch"]==e)break}return j}},k.print=function(c,d,e,f,g,h,i){h=h||"middle",i=z(A(i||0,1),-1);var j=this.set(),k=r(e)[s](p),l=0,m=p,n;a.is(f,e)&&(f=this.getFont(f));if(f){n=(g||16)/f.face["units-per-em"];var o=f.face.bbox.split(b),q=+o[0],t=+o[1]+(h=="baseline"?o[3]-o[1]+ +f.face.descent:(o[3]-o[1])/2);for(var u=0,v=k[w];u<v;u++){var x=u&&f.glyphs[k[u-1]]||{},y=f.glyphs[k[u]];l+=u?(x.w||f.w)+(x.k&&x.k[k[u]]||0)+f.w*i:0,y&&y.d&&j[L](this.path(y.d).attr({fill:"#000",stroke:"none",translation:[l,0]}))}j.scale(n,n,q,t).translate(c-q,d-t)}return j},a.format=function(b,c){var e=a.is(c,G)?[0][n](c):arguments;b&&a.is(b,F)&&e[w]-1&&(b=b[Y](d,function(a,b){return e[++b]==null?p:e[b]}));return b||p},a.ninja=function(){i.was?h.Raphael=i.is:delete Raphael;return a},a.el=bO,a.st=cD[e],i.was?h.Raphael=a:Raphael=a})()
public/javascripts/revision_graph.js
1
var commits = chunk.commits,
2
    comms = {},
3
    pixelsX = [],
4
    pixelsY = [],
5
    mmax = Math.max,
6
    max_rdmid = 0,
7
    max_space = 0,
8
    parents = {};
9
for (var i = 0, ii = commits.length; i < ii; i++) {
10
    for (var j = 0, jj = commits[i].parents.length; j < jj; j++) {
11
        parents[commits[i].parents[j][0]] = true;
12
    }
13
    max_rdmid = Math.max(max_rdmid, commits[i].rdmid);
14
    max_space = Math.max(max_space, commits[i].space);
15
}
16

  
17
for (i = 0; i < ii; i++) {
18
    if (commits[i].scmid in parents) {
19
        commits[i].isParent = true;
20
    }
21
    comms[commits[i].scmid] = commits[i];
22
}
23
var colors = ["#000"];
24
for (var k = 0; k < max_space; k++) {
25
    colors.push(Raphael.getColor());
26
}
27

  
28
function branchGraph(holder) {
29
    var xstep = 20;
30
    var ystep = $$('tr.changeset')[0].getHeight();
31
    var ch, cw;
32
    cw = max_space * xstep + xstep;
33
    ch = max_rdmid * ystep + ystep;
34
    var r = Raphael("holder", cw, ch),
35
        top = r.set();
36
    var cuday = 0, cumonth = "";
37

  
38
    for (i = 0; i < ii; i++) {
39
        var x, y;
40
        y = 10 + ystep *(max_rdmid - commits[i].rdmid);
41
        x = 3 + xstep * commits[i].space;
42
        var stroke = "none";
43
        r.circle(x, y, 3).attr({fill: colors[commits[i].space], stroke: stroke});
44
        if (commits[i].refs != null && commits[i].refs != "") {
45
            var longrefs  = commits[i].refs
46
            var shortrefs = commits[i].refs;
47
            if (shortrefs.length > 15) {
48
              shortrefs = shortrefs.substr(0,13) + "...";
49
              }
50
            var t = r.text(x+5,y+5,shortrefs).attr({font: "12px Fontin-Sans, Arial", fill: "#666",
51
            title: longrefs, cursor: "pointer", rotation: "0"});
52

  
53
            var textbox = t.getBBox();
54
            t.translate(textbox.width / 2, textbox.height / -3);
55
         }
56
        for (var j = 0, jj = commits[i].parents.length; j < jj; j++) {
57
            var c = comms[commits[i].parents[j][0]];
58
            var p,arrow;
59
            if (c) {
60
                var cy, cx;
61
                cy = 10 + ystep * (max_rdmid - c.rdmid),
62
                cx = 3 + xstep * c.space;
63

  
64
                if (c.space == commits[i].space) {
65
                    p = r.path("M" + x + "," + y + "L" + cx + "," + cy);
66
                } else {
67
                    p = r.path(["M", x, y, "C",x,y,x, y+(cy-y)/2,x+(cx-x)/2, y+(cy-y)/2,
68
                                "C", x+(cx-x)/2,y+(cy-y)/2, cx, cy-(cy-y)/2, cx, cy]);
69
                }
70
            } else {
71
              p = r.path("M" + x + "," + y + "L" + x + "," + ch);
72
             }
73
            p.attr({stroke: colors[commits[i].space], "stroke-width": 1.5});
74
         }
75
        (function (c, x, y) {
76
            top.push(r.circle(x, y, 10).attr({fill: "#000", opacity: 0,
77
                                              cursor: "pointer", href: commits[i].href})
78
              .hover(function () {}, function () {})
79
              );
80
        }(commits[i], x, y));
81
     }
82
    top.toFront();
83
    var hw = holder.offsetWidth,
84
        hh = holder.offsetHeight,
85
        drag,
86
        dragger = function (e) {
87
            if (drag) {
88
                e = e || window.event;
89
                holder.scrollLeft = drag.sl - (e.clientX - drag.x);
90
                holder.scrollTop = drag.st - (e.clientY - drag.y);
91
            }
92
        };
93
    holder.onmousedown = function (e) {
94
        e = e || window.event;
95
        drag = {x: e.clientX, y: e.clientY, st: holder.scrollTop, sl: holder.scrollLeft};
96
        document.onmousemove = dragger;
97
    };
98
    document.onmouseup = function () {
99
        drag = false;
100
        document.onmousemove = null;
101
    };
102
    holder.scrollLeft = cw;
103
};
104

  
105
Raphael.fn.popupit = function (x, y, set, dir, size) {
106
    dir = dir == null ? 2 : dir;
107
    size = size || 5;
108
    x = Math.round(x);
109
    y = Math.round(y);
110
    var bb = set.getBBox(),
111
        w = Math.round(bb.width / 2),
112
        h = Math.round(bb.height / 2),
113
        dx = [0, w + size * 2, 0, -w - size * 2],
114
        dy = [-h * 2 - size * 3, -h - size, 0, -h - size],
115
        p = ["M", x - dx[dir], y - dy[dir], "l", -size, (dir == 2) * -size, -mmax(w - size, 0),
116
             0, "a", size, size, 0, 0, 1, -size, -size,
117
            "l", 0, -mmax(h - size, 0), (dir == 3) * -size, -size, (dir == 3) * size, -size, 0,
118
            -mmax(h - size, 0), "a", size, size, 0, 0, 1, size, -size,
119
            "l", mmax(w - size, 0), 0, size, !dir * -size, size, !dir * size, mmax(w - size, 0),
120
            0, "a", size, size, 0, 0, 1, size, size,
121
            "l", 0, mmax(h - size, 0), (dir == 1) * size, size, (dir == 1) * -size, size, 0,
122
            mmax(h - size, 0), "a", size, size, 0, 0, 1, -size, size,
123
            "l", -mmax(w - size, 0), 0, "z"].join(","),
124
        xy = [{x: x, y: y + size * 2 + h},
125
              {x: x - size * 2 - w, y: y},
126
              {x: x, y: y - size * 2 - h},
127
              {x: x + size * 2 + w, y: y}]
128
              [dir];
129
    set.translate(xy.x - w - bb.x, xy.y - h - bb.y);
130
    return this.set(this.path(p).attr({fill: "#234", stroke: "none"})
131
                     .insertBefore(set.node ? set : set[0]), set);
132
};
133

  
134
Raphael.fn.popup = function (x, y, text, dir, size) {
135
    dir = dir == null ? 2 : dir > 3 ? 3 : dir;
136
    size = size || 5;
137
    text = text || "$9.99";
138
    var res = this.set(),
139
        d = 3;
140
    res.push(this.path().attr({fill: "#000", stroke: "#000"}));
141
    res.push(this.text(x, y, text).attr(this.g.txtattr).attr({fill: "#fff", "font-family": "Helvetica, Arial"}));
142
    res.update = function (X, Y, withAnimation) {
143
        X = X || x;
144
        Y = Y || y;
145
        var bb = this[1].getBBox(),
146
            w = bb.width / 2,
147
            h = bb.height / 2,
148
            dx = [0, w + size * 2, 0, -w - size * 2],
149
            dy = [-h * 2 - size * 3, -h - size, 0, -h - size],
150
            p = ["M", X - dx[dir], Y - dy[dir], "l", -size, (dir == 2) * -size,
151
                 -mmax(w - size, 0), 0, "a", size, size, 0, 0, 1, -size, -size,
152
                "l", 0, -mmax(h - size, 0), (dir == 3) * -size, -size, (dir == 3) * size, -size,
153
                 0, -mmax(h - size, 0), "a", size, size, 0, 0, 1, size, -size,
154
                "l", mmax(w - size, 0), 0, size, !dir * -size, size, !dir * size, mmax(w - size, 0),
155
                 0, "a", size, size, 0, 0, 1, size, size,
156
                "l", 0, mmax(h - size, 0), (dir == 1) * size, size, (dir == 1) * -size, size, 0,
157
                mmax(h - size, 0), "a", size, size, 0, 0, 1, -size, size,
158
                "l", -mmax(w - size, 0), 0, "z"].join(","),
159
            xy = [{x: X, y: Y + size * 2 + h},
160
                  {x: X - size * 2 - w, y: Y},
161
                  {x: X, y: Y - size * 2 - h},
162
                  {x: X + size * 2 + w, y: Y}]
163
                  [dir];
164
        xy.path = p;
165
        if (withAnimation) {
166
            this.animate(xy, 500, ">");
167
        } else {
168
            this.attr(xy);
169
         }
170
        return this;
171
     };
172
    return res.update(x, y);
173
};
public/stylesheets/application.css
80 80

  
81 81
#content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
82 82
* html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
83
html>body #content { min-height: 600px; } 
83
html>body #content { min-height: 600px; }
84 84
* html body #content { height: 600px; } /* IE */
85 85

  
86 86
#main.nosidebar #sidebar{ display: none; }
......
93 93
#login-form label {font-weight: bold;}
94 94
#login-form input#username, #login-form input#password { width: 300px; }
95 95

  
96
#modalbg {position:absolute; top:0; left:0; width:100%; height:100%; background:#ccc; z-index:49; opacity:0.5;}
97
html>body #modalbg {position:fixed;}
98
div.modal { border-radius:5px; position:absolute; top:25%; background:#fff; border:2px solid #759FCF; z-index:50; padding:0px; padding:8px;}
99
div.modal h3.title {background:#759FCF; color:#fff; border:0; padding-left:8px; margin:-8px; margin-bottom: 1em; border-top-left-radius:2px;border-top-right-radius:2px;}
100
div.modal p.buttons {text-align:right; margin-bottom:0;}
101
html>body div.modal {position:fixed;}
102

  
96 103
input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
97 104

  
98 105
.clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
......
157 164
tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
158 165
tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
159 166

  
160
tr.changeset td.author { text-align: center; width: 15%; }
161
tr.changeset td.committed_on { text-align: center; width: 15%; }
167
tr.changeset { height: 20px }
168
tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; }
169
tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; }
170
tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;}
171
tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;}
172
tr.changeset td.comments_nowrap { width: 45%; white-space:nowrap;}
162 173

  
163 174
table.files tr.file td { text-align: center; }
164 175
table.files tr.file td.filename { text-align: left; }
......
281 292
li p {margin-top: 0;}
282 293
div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
283 294
p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
284
p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; } 
295
p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
285 296
p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
286 297

  
287 298
div.issue div.subject div div { padding-left: 16px; }
......
302 313
fieldset#filters table { border-collapse: collapse; }
303 314
fieldset#filters table td { padding: 0; vertical-align: middle; }
304 315
fieldset#filters tr.filter { height: 2em; }
316
fieldset#filters td.field { width:200px; }
317
fieldset#filters td.operator { width:170px; }
318
fieldset#filters td.values { white-space:nowrap; }
319
fieldset#filters td.values img { vertical-align: bottom; }
305 320
fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
306 321
.buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
307 322

  
......
335 350
div#search-results-counts { display: block; padding-left: 0; margin-left: 0; }
336 351
div#search-results-counts ul { margin-top: 0.5em; padding-left: 0; margin-left: 0; }
337 352
div#search-results-counts li { display: inline; list-style-type: none; margin-right: 1em; }
338
  
353

  
339 354
dt.issue { background-image: url(../images/ticket.png); }
340 355
dt.issue-edit { background-image: url(../images/ticket_edit.png); }
341 356
dt.issue-closed { background-image: url(../images/ticket_checked.png); }
......
369 384
table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
370 385
table#time-report .hours-dec { font-size: 0.9em; }
371 386

  
372
form .attributes { margin-bottom: 8px; }
373
form .attributes p { padding-top: 1px; padding-bottom: 2px; }
387
div.wiki-page .contextual a {opacity: 0.4}
388
div.wiki-page .contextual a:hover {opacity: 1}
389

  
374 390
form .attributes select { width: 60%; }
375 391
input#issue_subject { width: 99%; }
376 392
select#issue_done_ratio { width: 95px; }
......
385 401
li.latest { margin-bottom: 0.5em; }
386 402

  
387 403
#tracker_project_ids ul { margin: 0;  padding-left: 1em; }
388
#tracker_project_ids li { list-style-type:none; } 
404
#tracker_project_ids li { list-style-type:none; }
389 405

  
390 406
ul.properties {padding:0; font-size: 0.9em; color: #777;}
391 407
ul.properties li {list-style-type:none;}
......
395 411
.total-hours span.hours-int { font-size: 120%; }
396 412

  
397 413
.autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
398
#user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select { width: 90%; }
414
#user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select, #user_identity_url { width: 90%; }
399 415

  
400 416
#workflow_copy_form select { width: 200px; }
401 417

  
402
textarea#custom_field_possible_values {width: 99%} 
418
textarea#custom_field_possible_values {width: 99%}
403 419

  
404 420
.pagination {font-size: 90%}
405 421
p.pagination {margin-top:8px;}
......
407 423
/***** Tabular forms ******/
408 424
.tabular p, .tabular ul{
409 425
margin: 0;
410
padding: 5px 0 8px 0;
411
padding-left: 180px; /*width of left column containing the label elements*/
426
padding: 3px 0 3px 0;
427
padding-left: 180px; /* width of left column containing the label elements */
412 428
height: 1%;
413 429
clear:left;
414 430
}
......
422 438
font-weight: bold;
423 439
float: left;
424 440
text-align: right;
425
margin-left: -180px; /*width of left column*/
426
width: 175px; /*width of labels. Should be smaller than left column to create some right 
427
margin*/
441
/* width of left column */
442
margin-left: -180px;
443
/* width of labels. Should be smaller than left column to create some right margin */
444
width: 175px;
428 445
}
429 446

  
430 447
.tabular .splitcontentleft .box p, .tabular .splitcontentright .box p, .splitcontentleft .tabular p, .splitcontentright .tabular p, .tabular .splitcontentleft .box ul, .tabular .splitcontentright .box ul, .splitcontentleft .tabular ul, .splitcontentright .tabular ul {
......
458 475
width: auto;
459 476
}
460 477

  
478
label.no-css {
479
  font-weight: inherit;
480
  float:none;
481
  text-align:left;
482
  margin-left:0px;
483
  width:auto;
484
}
461 485
input#time_entry_comments { width: 90%;}
462 486

  
463 487
#preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
......
466 490
.tabular.settings label{ margin-left: -300px; width: 295px; }
467 491
.tabular.settings textarea { width: 99%; }
468 492

  
469
.tabular.settings.enabled_scm table {width:100%}
470
.tabular.settings.enabled_scm td.scm_name{ font-weight: bold; }
471
.tabular.settings.enabled_scm p.scm_config{ padding-left: 8px; font-style:italic;}
493
.settings.enabled_scm table {width:100%}
494
.settings.enabled_scm td.scm_name{ font-weight: bold; }
472 495

  
473 496
fieldset.settings label { display: block; }
474 497
fieldset#notified_events .parent { padding-left: 20px; }
......
477 500
.summary {font-style: italic;}
478 501

  
479 502
#attachments_fields input[type=text] {margin-left: 8px; }
503
#attachments_fields span {display:block; white-space:nowrap;}
504
#attachments_fields img {vertical-align: middle;}
480 505

  
481 506
div.attachments { margin-top: 12px; }
482 507
div.attachments p { margin:4px 0 2px 0; }
......
506 531
#errorExplanation, div.flash, .nodata, .warning {
507 532
    padding: 4px 4px 4px 30px;
508 533
    margin-bottom: 12px;
509
	font-size: 1.1em;
510
	border: 2px solid;
534
    font-size: 1.1em;
535
    border: 2px solid;
511 536
}
512 537

  
513 538
div.flash {margin-top: 8px;}
514 539

  
515 540
div.flash.error, #errorExplanation {
516
	background: url(../images/exclamation.png) 8px 50% no-repeat;
517
	background-color: #ffe3e3;
518
	border-color: #dd0000;
519
	color: #880000;
541
    background: url(../images/exclamation.png) 8px 50% no-repeat;
542
    background-color: #ffe3e3;
543
    border-color: #dd0000;
544
    color: #880000;
520 545
}
521 546

  
522 547
div.flash.notice {
523 548
    background: url(../images/true.png) 8px 5px no-repeat;
524
	background-color: #dfffdf;
525
	border-color: #9fcf9f;
526
	color: #005f00;
549
    background-color: #dfffdf;
550
    border-color: #9fcf9f;
551
    color: #005f00;
527 552
}
528 553

  
529 554
div.flash.warning {
530 555
  background: url(../images/warning.png) 8px 5px no-repeat;
531
	background-color: #FFEBC1;
532
	border-color: #FDBF3B;
533
	color: #A6750C;
556
    background-color: #FFEBC1;
557
    border-color: #FDBF3B;
558
    color: #A6750C;
534 559
  text-align: left;
535 560
}
536 561

  
537 562
.nodata, .warning {
538 563
    text-align: center;
539
	background-color: #FFEBC1;
540
	border-color: #FDBF3B;
541
	color: #A6750C;
564
    background-color: #FFEBC1;
565
    border-color: #FDBF3B;
566
    color: #A6750C;
542 567
}
543 568

  
544 569
span.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
......
558 583
text-align:center;
559 584
padding:0.6em;
560 585
z-index:100;
561
filter:alpha(opacity=50);
562 586
opacity: 0.5;
563 587
}
564 588

  
......
665 689
div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
666 690

  
667 691
button.tab-left, button.tab-right {
668
	font-size: 0.9em;
669
	cursor: pointer;
670
	height:24px;
671
	border: 1px solid #ccc;
672
	border-bottom: 1px solid #bbbbbb;
673
	position:absolute;
674
	padding:4px;
675
	width: 20px;
676
	bottom: -1px;
692
    font-size: 0.9em;
693
    cursor: pointer;
694
    height:24px;
695
    border: 1px solid #ccc;
696
    border-bottom: 1px solid #bbbbbb;
697
    position:absolute;
698
    padding:4px;
699
    width: 20px;
700
    bottom: -1px;
677 701
}
678 702

  
679 703
button.tab-left {
680
	right: 20px;
681
	background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
704
    right: 20px;
705
    background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
682 706
}
683 707

  
684 708
button.tab-right {
685
	right: 0;
686
	background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
709
    right: 0;
710
    background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
687 711
}
688 712

  
689 713
/***** Auto-complete *****/
......
755 779
    color: #b73535;
756 780
}
757 781

  
782
div.wiki ul, div.wiki ol {margin-bottom:1em;}
783

  
758 784
div.wiki pre {
759 785
    margin: 1em 1em 1em 1.6em;
760 786
    padding: 2px 2px 2px 0;
......
796 822
a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
797 823
h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
798 824

  
799
div.wiki img { vertical-align: middle; } 
825
div.wiki img { vertical-align: middle; }
800 826

  
801 827
/***** My page layout *****/
802 828
.block-receiver {
......
860 886
.task.label.project, .task.label.version { font-weight: bold; }
861 887

  
862 888
.task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
863
.task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }  
889
.task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
864 890
.task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
865 891

  
866 892
.task_todo.parent { background: #888; border: 1px solid #888; height: 3px;}
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff