WooCommerce Extended Coupon Features - Version 2.6.0

Version Description

Release Date - 2017-12-02 * ADMIN: Compatibility with coupons added on the Order page from wp-admin (requires WC3.3+) * ADMIN: Show 'settings' link on the plugin screen * INTERNAL: Moved debugging functions to WJECF_Debug. Use template/log.php for output rendering of the log * (PRO) FEATURE: Limit coupon to first time purchase only * (PRO) ENHANCEMENT: Free products: Better grid layout of the free product selector * (PRO) ENHANCEMENT: Free products: Auto submit of selection (works for inputs in container with class 'wjecf-auto-submit') * (PRO) FIX: Free products: Respect "sold individually" when adding free products to the cart * (PRO) FIX: Free products: WC2.6 compatibility (product->get_status())

Download this release

Release Info

Developer josk79
Plugin Icon 128x128 WooCommerce Extended Coupon Features
Version 2.6.0
Comparing to
See all releases

Code changes from version 2.5.4 to 2.6.0

Files changed (41) hide show
  1. assets/wjecf.css +59 -21
  2. docs/404.html +138 -0
  3. docs/assets/css/documenter_style.css +0 -418
  4. docs/assets/css/img/info.png +0 -0
  5. docs/assets/css/img/warning.png +0 -0
  6. docs/assets/images/image_1.png +0 -0
  7. docs/assets/images/image_2.png +0 -0
  8. docs/assets/images/image_4.png +0 -0
  9. docs/assets/js/google-code-prettify/prettify.css +0 -30
  10. docs/assets/js/google-code-prettify/prettify.js +0 -28
  11. docs/assets/js/jquery.easing.js +0 -205
  12. docs/assets/js/jquery.js +0 -9252
  13. docs/assets/js/jquery.scrollTo.js +0 -11
  14. docs/assets/js/script.js +0 -159
  15. docs/changelog/index.html +422 -0
  16. docs/css/highlight.css +124 -0
  17. docs/css/jos.css +1 -0
  18. docs/css/theme.css +12 -0
  19. docs/css/theme_extra.css +194 -0
  20. docs/development/index.html +339 -0
  21. docs/fonts/fontawesome-webfont.eot +0 -0
  22. docs/fonts/fontawesome-webfont.svg +399 -0
  23. docs/fonts/fontawesome-webfont.ttf +0 -0
  24. docs/fonts/fontawesome-webfont.woff +0 -0
  25. docs/img/be_settings_licence.png +0 -0
  26. docs/img/be_tab_checkout.png +0 -0
  27. docs/{assets/images/image_5.png → img/be_tab_extended_features.png} +0 -0
  28. docs/img/be_tab_free_products.png +0 -0
  29. docs/{assets/images/image_6.png → img/be_tab_misc_auto_coupon.png} +0 -0
  30. docs/{assets/images/image_3.png → img/be_tab_misc_coupon_queueing.png} +0 -0
  31. docs/{assets/images/image_7.png → img/be_tab_usage_restriction.png} +0 -0
  32. docs/img/favicon.ico +0 -0
  33. docs/img/fe_cart_choose_free_gift.png +0 -0
  34. docs/index.html +188 -490
  35. docs/js/highlight.pack.js +2 -0
  36. docs/js/jquery-2.1.1.min.js +4 -0
  37. docs/js/modernizr-2.8.3.min.js +1 -0
  38. docs/js/theme.js +99 -0
  39. docs/search.html +145 -0
  40. docs/search/lunr.min.js +7 -0
  41. docs/search/mustache.min.js +1 -0
assets/wjecf.css CHANGED
@@ -1,28 +1,66 @@
1
  /*
2
- WJECF columns system
3
  */
4
 
5
- ul.wjecf-cols { list-style-type: none;margin:0}
 
 
 
 
 
 
6
  ul.wjecf-cols::after { content:'';display:block;clear:both; } /* clearfix */
7
- ul.wjecf-cols > li { float:left;padding:0;position:relative;margin-right:3%;margin-left:0; }
8
-
9
- ul.wjecf-cols.cols-2 > li { width:48.5%; }
10
- ul.wjecf-cols.cols-3 > li { width:31.3%; }
11
- ul.wjecf-cols.cols-4 > li { width:22.7%; }
12
- ul.wjecf-cols.cols-5 > li { width:17.6%; }
13
- ul.wjecf-cols.cols-6 > li { width:14.1%; }
14
-
15
- ul.wjecf-cols.cols-2 > li:nth-child(2n+2),
16
- ul.wjecf-cols.cols-3 > li:nth-child(3n+3),
17
- ul.wjecf-cols.cols-4 > li:nth-child(4n+4),
18
- ul.wjecf-cols.cols-5 > li:nth-child(5n+5),
19
- ul.wjecf-cols.cols-6 > li:nth-child(6n+6) { margin-right:0!important; }
20
-
21
- ul.wjecf-cols.cols-2 > li:nth-child(2n+1),
22
- ul.wjecf-cols.cols-3 > li:nth-child(3n+1),
23
- ul.wjecf-cols.cols-4 > li:nth-child(4n+1),
24
- ul.wjecf-cols.cols-5 > li:nth-child(5n+1),
25
- ul.wjecf-cols.cols-6 > li:nth-child(6n+1) { clear:both; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  .wjecf-select-free-products ul.wjecf-cols > li > img { width:auto; }
28
  .wjecf-select-free-products ul.wjecf-cols > li input[type="number"] { width:100%; }
1
  /*
2
+ WJECF columns system v2.6.0
3
  */
4
 
5
+ ul.wjecf-cols {
6
+ list-style-type: none;
7
+ margin:0 -15px 0 -15px;
8
+ display: flex;
9
+ flex-wrap: wrap;
10
+ align-items: flex-start;
11
+ }
12
  ul.wjecf-cols::after { content:'';display:block;clear:both; } /* clearfix */
13
+
14
+ ul.wjecf-cols > li {
15
+ float:left;
16
+ padding-left:15px;
17
+ padding-right:15px;
18
+ position:relative;
19
+ margin: 0 0 30px 0;
20
+ }
21
+
22
+ ul.wjecf-cols.cols-1 > li { width:100%; }
23
+ ul.wjecf-cols.cols-2 > li { width:50%; }
24
+ ul.wjecf-cols.cols-3 > li { width:33.33%; }
25
+ ul.wjecf-cols.cols-4 > li { width:25%; }
26
+ ul.wjecf-cols.cols-5 > li { width:20%; }
27
+ ul.wjecf-cols.cols-6 > li { width:16.66%; }
28
+
29
+ @media (max-width: 1200px) {
30
+ ul.wjecf-cols.cols-xl-1 > li { width:100%; }
31
+ ul.wjecf-cols.cols-xl-2 > li { width:50%; }
32
+ ul.wjecf-cols.cols-xl-3 > li { width:33.33%; }
33
+ ul.wjecf-cols.cols-xl-4 > li { width:25%; }
34
+ ul.wjecf-cols.cols-xl-5 > li { width:20%; }
35
+ ul.wjecf-cols.cols-xl-6 > li { width:16.66%; }
36
+ }
37
+
38
+ @media (max-width: 992px) {
39
+ ul.wjecf-cols.cols-lg-1 > li { width:100%; }
40
+ ul.wjecf-cols.cols-lg-2 > li { width:50%; }
41
+ ul.wjecf-cols.cols-lg-3 > li { width:33.33%; }
42
+ ul.wjecf-cols.cols-lg-4 > li { width:25%; }
43
+ ul.wjecf-cols.cols-lg-5 > li { width:20%; }
44
+ ul.wjecf-cols.cols-lg-6 > li { width:16.66%; }
45
+ }
46
+
47
+ @media (max-width: 768px) {
48
+ ul.wjecf-cols.cols-md-1 > li { width:100%; }
49
+ ul.wjecf-cols.cols-md-2 > li { width:50%; }
50
+ ul.wjecf-cols.cols-md-3 > li { width:33.33%; }
51
+ ul.wjecf-cols.cols-md-4 > li { width:25%; }
52
+ ul.wjecf-cols.cols-md-5 > li { width:20%; }
53
+ ul.wjecf-cols.cols-md-6 > li { width:16.66%; }
54
+ }
55
+
56
+ @media (max-width: 576px) {
57
+ ul.wjecf-cols.cols-sm-1 > li { width:100%; }
58
+ ul.wjecf-cols.cols-sm-2 > li { width:50%; }
59
+ ul.wjecf-cols.cols-sm-3 > li { width:33.33%; }
60
+ ul.wjecf-cols.cols-sm-4 > li { width:25%; }
61
+ ul.wjecf-cols.cols-sm-5 > li { width:20%; }
62
+ ul.wjecf-cols.cols-sm-6 > li { width:16.66%; }
63
+ }
64
 
65
  .wjecf-select-free-products ul.wjecf-cols > li > img { width:auto; }
66
  .wjecf-select-free-products ul.wjecf-cols > li input[type="number"] { width:100%; }
docs/404.html ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
3
+ <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+
9
+
10
+ <link rel="shortcut icon" href="/img/favicon.ico">
11
+ <title>Soft79 Documentation</title>
12
+ <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
13
+
14
+ <link rel="stylesheet" href="/css/theme.css" type="text/css" />
15
+ <link rel="stylesheet" href="/css/theme_extra.css" type="text/css" />
16
+ <link rel="stylesheet" href="/css/highlight.css">
17
+ <link href="/css/jos.css" rel="stylesheet">
18
+
19
+ <script src="/js/jquery-2.1.1.min.js"></script>
20
+ <script src="/js/modernizr-2.8.3.min.js"></script>
21
+ <script type="text/javascript" src="/js/highlight.pack.js"></script>
22
+
23
+ </head>
24
+
25
+ <body class="wy-body-for-nav" role="document">
26
+
27
+ <div class="wy-grid-for-nav">
28
+
29
+
30
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
31
+ <div class="wy-side-nav-search">
32
+ <a href="/" class="icon icon-home"> Soft79 Documentation</a>
33
+ <div role="search">
34
+ <form id ="rtd-search-form" class="wy-form" action="/search.html" method="get">
35
+ <input type="text" name="q" placeholder="Search docs" />
36
+ </form>
37
+ </div>
38
+ </div>
39
+
40
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
41
+ <ul class="current">
42
+
43
+
44
+ <li class="toctree-l1">
45
+
46
+ <span class="caption-text">WooCommerce Extended Coupon Features</span>
47
+ <ul class="subnav">
48
+ <li class="">
49
+
50
+ <a class="" href="/">About</a>
51
+ </li>
52
+ <li class="">
53
+
54
+ <a class="" href="/usage/">Usage</a>
55
+ </li>
56
+ <li class="">
57
+
58
+ <a class="" href="/development/">Development</a>
59
+ </li>
60
+ <li class="">
61
+
62
+ <a class="" href="/changelog/">Changelog</a>
63
+ </li>
64
+ </ul>
65
+ </li>
66
+
67
+ </ul>
68
+ </div>
69
+ &nbsp;
70
+ </nav>
71
+
72
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
73
+
74
+
75
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
76
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
77
+ <a href="/">Soft79 Documentation</a>
78
+ </nav>
79
+
80
+
81
+ <div class="wy-nav-content">
82
+ <div class="rst-content">
83
+ <div role="navigation" aria-label="breadcrumbs navigation">
84
+ <ul class="wy-breadcrumbs">
85
+ <li><a href="/">Docs</a> &raquo;</li>
86
+
87
+
88
+ <li class="wy-breadcrumbs-aside">
89
+
90
+ </li>
91
+ </ul>
92
+ <hr/>
93
+ </div>
94
+ <div role="main">
95
+ <div class="section">
96
+
97
+
98
+ <h1 id="404-page-not-found">404</h1>
99
+
100
+ <p><strong>Page not found</strong></p>
101
+
102
+
103
+ </div>
104
+ </div>
105
+ <footer>
106
+
107
+
108
+ <hr/>
109
+
110
+ <div role="contentinfo">
111
+ <!-- Copyright etc -->
112
+
113
+ </div>
114
+
115
+ Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
116
+ </footer>
117
+
118
+ </div>
119
+ </div>
120
+
121
+ </section>
122
+
123
+ </div>
124
+
125
+ <div class="rst-versions" role="note" style="cursor: pointer">
126
+ <span class="rst-current-version" data-toggle="rst-current-version">
127
+
128
+
129
+
130
+ </span>
131
+ </div>
132
+ <script>var base_url = '';</script>
133
+ <script src="/js/theme.js"></script>
134
+ <script src="/search/require.js"></script>
135
+ <script src="/search/search.js"></script>
136
+
137
+ </body>
138
+ </html>
docs/assets/css/documenter_style.css DELETED
@@ -1,418 +0,0 @@
1
- /*!
2
- * Documenter 2.0
3
- * http://rxa.li/documenter
4
- *
5
- * Copyright 2011, Xaver Birsak
6
- * http://revaxarts.com
7
- *
8
- */
9
- html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{
10
- margin:0;
11
- padding:0;
12
- border:0;
13
- outline:0;
14
- font-weight:inherit;
15
- font-style:inherit;
16
- font-size:100%;
17
- font-family:inherit;
18
- vertical-align:baseline;
19
- }
20
- html {
21
- font-size:101%;
22
- font-family:Arial,verdana,arial,sans-serif;
23
- font-size:12px;
24
- -webkit-text-size-adjust:none;
25
- color:#6F6F6F;
26
- background-color:#efefef;
27
- }
28
- body{
29
- min-height:100%;
30
- height:auto;
31
- width:100%;
32
- }
33
- footer, header, section {
34
- display:block;
35
- }
36
- a{ color:#6F6F6F; text-decoration:none; cursor:pointer; }
37
- a:hover { text-decoration:underline }
38
- p, ul, ol{
39
- margin:18px 0;
40
- line-height:1.5em;
41
- }
42
- li{
43
- list-style:none;
44
- }
45
- li.placeholder{
46
- height:70px;
47
- width:100%;
48
- font-size:16px;
49
- }
50
- hr {
51
- display:block;
52
- height:0px;
53
- line-height:0px;
54
- border:0;
55
- border-top:1px solid #ddd;
56
- border-bottom:1px solid #aaa;
57
- margin:16px 0;
58
- padding:0;
59
- clear:both;
60
- float:none;
61
- }
62
- hr.notop{
63
- margin-top:0;
64
- }
65
- strong{
66
- font-weight:700;
67
- }
68
- #documenter_buttons{
69
- position:absolute;
70
- right:10px;
71
- margin-top:-30px;
72
- }
73
- .btn{
74
- cursor:pointer;
75
- width:auto;
76
- padding:7px 7px 8px;
77
- border-radius:3px;
78
- border:1px solid #ccc;
79
- }
80
- .btn:hover{
81
- border:1px solid #B1B4B0;
82
- box-shadow:0px 2px 2px rgba(0,0,0,0.1);
83
- -moz-box-shadow:0px 2px 2px rgba(0,0,0,0.1);
84
- -webkit-box-shadow:0px 2px 2px rgba(0,0,0,0.1);
85
- text-decoration:none;
86
- }
87
- .btn:active{
88
- border:1px solid #B1B4B0;
89
- box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1);
90
- -moz-box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1);
91
- -webkit-box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1);
92
- background-color:#eee;
93
- }
94
-
95
- #documenter_content{
96
- position:absolute;
97
- right:18px;
98
- left:218px;
99
- padding-left:10px;
100
- padding-bottom:800px;
101
- min-height:100%;
102
- height:auto;
103
- z-index:1;
104
- }
105
- #documenter_sidebar{
106
- -moz-box-shadow:0 0 6px rgba(3,3,3,0.6);
107
- -webkit-box-shadow:0 0 6px rgba(3,3,3,0.6);
108
- box-shadow:0 0 6px rgba(3,3,3,0.6);
109
- position:fixed;
110
- left:0;
111
- width:200px;
112
- height:100%;
113
- min-height:100%;
114
- z-index:100;
115
- }
116
- #documenter_sidebar a{
117
- position:relative;
118
- z-index:100;
119
- }
120
- img{
121
- border:0;
122
- }
123
- #documenter_copyright{
124
- position:absolute;
125
- bottom:10px;
126
- font-size:10px;
127
- right:15px;
128
- width:200px;
129
- text-align:right;
130
- z-index:1
131
- }
132
- noscript{
133
- display:block;
134
- position:absolute;
135
- top:238px;
136
- margin:0 auto;
137
- width:800px;
138
- bottom:0;
139
- z-index:20;
140
- }
141
- noscript p{
142
- width:800px;
143
- font-size:20px;
144
- padding-top:20px;
145
- margin:0 auto;
146
- color:#4D4D4D;
147
- }
148
- .small{
149
- font-size:10px;
150
- letter-spacing:0;
151
- }
152
-
153
- /*----------------------------------------------------------------------*/
154
- /* Sidebar
155
- /*----------------------------------------------------------------------*/
156
-
157
- #documenter_sidebar #documenter_logo{
158
- display:block;
159
- height:20%;
160
- max-height:200px;
161
- min-height:70px;
162
- width:200px;
163
- background-position:center center;
164
- background-repeat:no-repeat;
165
- }
166
- #documenter_sidebar ul{
167
- font-size:12px;
168
- font-weight:700;
169
- min-height:150px;
170
- height:75%;
171
- overflow:auto;
172
- }
173
-
174
- #documenter_sidebar ul li{
175
- text-align:right;
176
- padding:0;
177
- }
178
- #documenter_sidebar ul a{
179
- display:block;
180
- border-top:1px solid #ddd;
181
- border-bottom:1px solid #aaa;
182
- padding:6px 15px 7px 0;
183
- text-align:right;
184
- }
185
- #documenter_sidebar ul a:hover,#documenter_sidebar ul a.current{
186
- -webkit-text-shadow:none;
187
- -moz-text-shadow:none;
188
- text-shadow:none;
189
- text-decoration:none;
190
- }
191
- #documenter_sidebar ul li ul{
192
- border-top:0;
193
- font-size:10px;
194
- min-height:10px;
195
- height:auto;
196
- overflow:auto;
197
- margin:0;
198
- display:none;
199
- }
200
- #documenter_sidebar ul li ul li a{
201
- display:block;
202
- padding:4px 15px 5px 0;
203
- text-align:right;
204
- }
205
-
206
- /*----------------------------------------------------------------------*/
207
- /* Content
208
- /*----------------------------------------------------------------------*/
209
-
210
- #documenter_cover{
211
- position:relative;
212
- height:800px;
213
- padding-top:200px !important;
214
- }
215
- #documenter_cover li{
216
- list-style:none !important;
217
- margin-left:0 !important;
218
- }
219
- #documenter_cover p{
220
- width:500px;
221
- }
222
- #documenter_content section{
223
- padding-top:70px;
224
- }
225
- #documenter_content h1{
226
- font-size:30px;
227
- font-weight:700;
228
- }
229
- #documenter_content h2{
230
- font-size:20px;
231
- margin-bottom:18px;
232
- font-weight:100;
233
- }
234
- #documenter_content h3{
235
- font-size:26px;
236
- margin:18px 0 0;
237
- font-weight:100;
238
- }
239
- #documenter_content h4{
240
- font-size:20px;
241
- margin:18px 0;
242
- font-weight:100;
243
- }
244
- #documenter_content h5{
245
- font-size:16px;
246
- margin:18px 0;
247
- font-weight:100;
248
- }
249
- #documenter_content h6{
250
- font-size:14px;
251
- margin:18px 0;
252
- font-weight:100;
253
- }
254
- #documenter_content p{
255
- margin:18px 0;
256
- }
257
- #documenter_content ol li{
258
- list-style:decimal;
259
- margin-left:36px;
260
- }
261
- #documenter_content ul li{
262
- list-style:square;
263
- margin-left:36px;
264
- }
265
- #documenter_content dl{
266
- }
267
- #documenter_content dl dt{
268
- padding-top:12px;
269
- font-weight:700;
270
- font-size:14px;
271
- }
272
- #documenter_content dl dd{
273
- padding-top:3px;
274
- margin-left:18px;
275
- }
276
- #documenter_content table{
277
- border-collapse:collapse;
278
- }
279
- #documenter_content table th{
280
- font-weight:700;
281
- }
282
- #documenter_content table th, #documenter_content table td{
283
- padding:3px;
284
- text-align:left;
285
- }
286
- #documenter_content code{
287
- font-family:"Courier New", Courier, monospace;
288
- font-size:12px;
289
- }
290
- #documenter_content .warning{
291
- padding:10px 10px 10px 30px;
292
- border:1px solid #D5D458;
293
- background-color:#F0FEB1;
294
- background-image:url(img/warning.png);
295
- background-repeat:no-repeat;
296
- background-position: 8px 11px;
297
- }
298
- #documenter_content .info{
299
- padding:10px 10px 10px 30px;
300
- border:1px solid #6AB3FF;
301
- background-color:#A3D0FF;
302
- background-image:url(img/info.png);
303
- background-repeat:no-repeat;
304
- background-position: 8px 11px;
305
- }
306
- #documenter_content div.alert {
307
- padding: 8px 35px 8px 14px;
308
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
309
- background-color: #fcf8e3;
310
- border: 1px solid #fbeed5;
311
- -webkit-border-radius: 4px;
312
- -moz-border-radius: 4px;
313
- border-radius: 4px;
314
- }
315
- #documenter_content div.alert-success,#documenter_content div.alert-success div.alert-heading {
316
- color: #468847;
317
- }
318
- #documenter_content div.alert-danger,#documenter_content div.alert-error {
319
- background-color: #f2dede;
320
- border-color: #eed3d7;
321
- }
322
- #documenter_content div.alert-danger,
323
- #documenter_content div.alert-error,
324
- #documenter_content div.alert-danger div.alert-heading,
325
- #documenter_content div.alert-error div.alert-heading {
326
- color: #b94a48;
327
- }
328
- #documenter_content div.alert-info {
329
- background-color: #d9edf7;
330
- border-color: #bce8f1;
331
- }
332
- #documenter_content div.alert-info,#documenter_content div.alert-info div.alert-heading {
333
- color: #3a87ad;
334
- }
335
- #documenter_content div.alert-block {
336
- padding-top: 14px;
337
- padding-bottom: 14px;
338
- }
339
- #documenter_content div.alert-block > p,#documenter_content div.alert-block > ul {
340
- margin-bottom: 0;
341
- }
342
- #documenter_content div.alert-block p + p {
343
- margin-top: 5px;
344
- }
345
-
346
-
347
-
348
-
349
-
350
- /*----------------------------------------------------------------------*/
351
- /* Print Styles
352
- /*----------------------------------------------------------------------*/
353
-
354
- @media print {
355
- * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important;
356
- -ms-filter: none !important; } /* Black prints faster: sanbeiji.com/archives/953 */
357
- a, a:visited { color: #444 !important; text-decoration: underline; }
358
- a[href]:after { content: " (" attr(href) ")"; }
359
- abbr[title]:after { content: " (" attr(title) ")"; }
360
- .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } /* Don't show links for images, or javascript/internal links */
361
- pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
362
- thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */
363
- tr, img { page-break-inside: avoid; }
364
- @page { margin: 0.5cm; }
365
- p, h2, h3 { orphans: 3; widows: 3; }
366
- h2, h3{ page-break-after: avoid; }
367
- hr { border-top:1px solid #000 !important;border-bottom:0 !important; }
368
-
369
- #documenter_sidebar{
370
- -moz-box-shadow:none;
371
- -webkit-box-shadow:none;
372
- box-shadow:none;
373
- position:absolute;
374
- left:10px;
375
- top:0;
376
- width:100%;
377
- margin-top:500px;
378
- }
379
- #documenter_sidebar ul:before { content: "Table of Contents"; }
380
-
381
- #documenter_sidebar ul{
382
- border:0 !important;
383
- }
384
- #documenter_sidebar ul li{
385
- border:0 !important;
386
- text-align:left;
387
- }
388
- #documenter_sidebar ul li a{
389
- border:0 !important;
390
- text-align:left;
391
- padding:4px;
392
- }
393
- #documenter_sidebar ul li a:hover{
394
- border:0 !important;
395
- }
396
- #documenter_sidebar #documenter_logo{
397
- display:none;
398
- }
399
- #documenter_sidebar #documenter_copyright{
400
- display:none;
401
- }
402
- #documenter_content{
403
- left:10px;
404
- }
405
- #documenter_cover{
406
- margin-bottom:300px;
407
- }
408
- #documenter_content .warning{
409
- background-image:url(img/warning.png) !important;
410
- background-repeat:no-repeat !important;
411
- background-position: 8px 11px !important;
412
- }
413
- #documenter_content .info{
414
- background-image:url(img/info.png) !important;
415
- background-repeat:no-repeat !important;
416
- background-position: 8px 11px !important;
417
- }
418
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docs/assets/css/img/info.png DELETED
Binary file
docs/assets/css/img/warning.png DELETED
Binary file
docs/assets/images/image_1.png DELETED
Binary file
docs/assets/images/image_2.png DELETED
Binary file
docs/assets/images/image_4.png DELETED
Binary file
docs/assets/js/google-code-prettify/prettify.css DELETED
@@ -1,30 +0,0 @@
1
- .com { color: #93a1a1; }
2
- .lit { color: #195f91; }
3
- .pun, .opn, .clo { color: #93a1a1; }
4
- .fun { color: #dc322f; }
5
- .str, .atv { color: #D14; }
6
- .kwd, .linenums .tag { color: #1e347b; }
7
- .typ, .atn, .dec, .var { color: teal; }
8
- .pln { color: #48484c; }
9
-
10
- .prettyprint {
11
- padding: 8px;
12
- background-color: #f7f7f9;
13
- border: 1px solid #e1e1e8;
14
- }
15
- .prettyprint.linenums {
16
- -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
17
- -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
18
- box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
19
- }
20
-
21
- /* Specify class=linenums on a pre to get line numbering */
22
- ol.linenums {
23
- margin: 0 0 0 33px; /* IE indents via margin-left */
24
- }
25
- ol.linenums li {
26
- padding-left: 12px;
27
- color: #bebec5;
28
- line-height: 18px;
29
- text-shadow: 0 1px 0 #fff;
30
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docs/assets/js/google-code-prettify/prettify.js DELETED
@@ -1,28 +0,0 @@
1
- var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
2
- (function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
3
- [],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
4
- f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
5
- (j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
6
- {b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
7
- t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
8
- "string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
9
- l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
10
- q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
11
- q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
12
- "");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
13
- a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
14
- for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
15
- m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
16
- a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
17
- j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
18
- "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
19
- H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
20
- J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
21
- I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
22
- ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
23
- /^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
24
- ["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
25
- hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
26
- !k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
27
- 250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
28
- PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docs/assets/js/jquery.easing.js DELETED
@@ -1,205 +0,0 @@
1
- /*
2
- * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
3
- *
4
- * Uses the built in easing capabilities added In jQuery 1.1
5
- * to offer multiple easing options
6
- *
7
- * TERMS OF USE - jQuery Easing
8
- *
9
- * Open source under the BSD License.
10
- *
11
- * Copyright © 2008 George McGinley Smith
12
- * All rights reserved.
13
- *
14
- * Redistribution and use in source and binary forms, with or without modification,
15
- * are permitted provided that the following conditions are met:
16
- *
17
- * Redistributions of source code must retain the above copyright notice, this list of
18
- * conditions and the following disclaimer.
19
- * Redistributions in binary form must reproduce the above copyright notice, this list
20
- * of conditions and the following disclaimer in the documentation and/or other materials
21
- * provided with the distribution.
22
- *
23
- * Neither the name of the author nor the names of contributors may be used to endorse
24
- * or promote products derived from this software without specific prior written permission.
25
- *
26
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
27
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
28
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
31
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
32
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
34
- * OF THE POSSIBILITY OF SUCH DAMAGE.
35
- *
36
- */
37
-
38
- // t: current time, b: begInnIng value, c: change In value, d: duration
39
- jQuery.easing['jswing'] = jQuery.easing['swing'];
40
-
41
- jQuery.extend( jQuery.easing,
42
- {
43
- def: 'easeOutQuad',
44
- swing: function (x, t, b, c, d) {
45
- //alert(jQuery.easing.default);
46
- return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
47
- },
48
- easeInQuad: function (x, t, b, c, d) {
49
- return c*(t/=d)*t + b;
50
- },
51
- easeOutQuad: function (x, t, b, c, d) {
52
- return -c *(t/=d)*(t-2) + b;
53
- },
54
- easeInOutQuad: function (x, t, b, c, d) {
55
- if ((t/=d/2) < 1) return c/2*t*t + b;
56
- return -c/2 * ((--t)*(t-2) - 1) + b;
57
- },
58
- easeInCubic: function (x, t, b, c, d) {
59
- return c*(t/=d)*t*t + b;
60
- },
61
- easeOutCubic: function (x, t, b, c, d) {
62
- return c*((t=t/d-1)*t*t + 1) + b;
63
- },
64
- easeInOutCubic: function (x, t, b, c, d) {
65
- if ((t/=d/2) < 1) return c/2*t*t*t + b;
66
- return c/2*((t-=2)*t*t + 2) + b;
67
- },
68
- easeInQuart: function (x, t, b, c, d) {
69
- return c*(t/=d)*t*t*t + b;
70
- },
71
- easeOutQuart: function (x, t, b, c, d) {
72
- return -c * ((t=t/d-1)*t*t*t - 1) + b;
73
- },
74
- easeInOutQuart: function (x, t, b, c, d) {
75
- if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
76
- return -c/2 * ((t-=2)*t*t*t - 2) + b;
77
- },
78
- easeInQuint: function (x, t, b, c, d) {
79
- return c*(t/=d)*t*t*t*t + b;
80
- },
81
- easeOutQuint: function (x, t, b, c, d) {
82
- return c*((t=t/d-1)*t*t*t*t + 1) + b;
83
- },
84
- easeInOutQuint: function (x, t, b, c, d) {
85
- if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
86
- return c/2*((t-=2)*t*t*t*t + 2) + b;
87
- },
88
- easeInSine: function (x, t, b, c, d) {
89
- return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
90
- },
91
- easeOutSine: function (x, t, b, c, d) {
92
- return c * Math.sin(t/d * (Math.PI/2)) + b;
93
- },
94
- easeInOutSine: function (x, t, b, c, d) {
95
- return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
96
- },
97
- easeInExpo: function (x, t, b, c, d) {
98
- return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
99
- },
100
- easeOutExpo: function (x, t, b, c, d) {
101
- return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
102
- },
103
- easeInOutExpo: function (x, t, b, c, d) {
104
- if (t==0) return b;
105
- if (t==d) return b+c;
106
- if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
107
- return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
108
- },
109
- easeInCirc: function (x, t, b, c, d) {
110
- return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
111
- },
112
- easeOutCirc: function (x, t, b, c, d) {
113
- return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
114
- },
115
- easeInOutCirc: function (x, t, b, c, d) {
116
- if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
117
- return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
118
- },
119
- easeInElastic: function (x, t, b, c, d) {
120
- var s=1.70158;var p=0;var a=c;
121
- if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
122
- if (a < Math.abs(c)) { a=c; var s=p/4; }
123
- else var s = p/(2*Math.PI) * Math.asin (c/a);
124
- return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
125
- },
126
- easeOutElastic: function (x, t, b, c, d) {
127
- var s=1.70158;var p=0;var a=c;
128
- if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
129
- if (a < Math.abs(c)) { a=c; var s=p/4; }
130
- else var s = p/(2*Math.PI) * Math.asin (c/a);
131
- return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
132
- },
133
- easeInOutElastic: function (x, t, b, c, d) {
134
- var s=1.70158;var p=0;var a=c;
135
- if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
136
- if (a < Math.abs(c)) { a=c; var s=p/4; }
137
- else var s = p/(2*Math.PI) * Math.asin (c/a);
138
- if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
139
- return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
140
- },
141
- easeInBack: function (x, t, b, c, d, s) {
142
- if (s == undefined) s = 1.70158;
143
- return c*(t/=d)*t*((s+1)*t - s) + b;
144
- },
145
- easeOutBack: function (x, t, b, c, d, s) {
146
- if (s == undefined) s = 1.70158;
147
- return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
148
- },
149
- easeInOutBack: function (x, t, b, c, d, s) {
150
- if (s == undefined) s = 1.70158;
151
- if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
152
- return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
153
- },
154
- easeInBounce: function (x, t, b, c, d) {
155
- return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
156
- },
157
- easeOutBounce: function (x, t, b, c, d) {
158
- if ((t/=d) < (1/2.75)) {
159
- return c*(7.5625*t*t) + b;
160
- } else if (t < (2/2.75)) {
161
- return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
162
- } else if (t < (2.5/2.75)) {
163
- return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
164
- } else {
165
- return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
166
- }
167
- },
168
- easeInOutBounce: function (x, t, b, c, d) {
169
- if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
170
- return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
171
- }
172
- });
173
-
174
- /*
175
- *
176
- * TERMS OF USE - EASING EQUATIONS
177
- *
178
- * Open source under the BSD License.
179
- *
180
- * Copyright © 2001 Robert Penner
181
- * All rights reserved.
182
- *
183
- * Redistribution and use in source and binary forms, with or without modification,
184
- * are permitted provided that the following conditions are met:
185
- *
186
- * Redistributions of source code must retain the above copyright notice, this list of
187
- * conditions and the following disclaimer.
188
- * Redistributions in binary form must reproduce the above copyright notice, this list
189
- * of conditions and the following disclaimer in the documentation and/or other materials
190
- * provided with the distribution.
191
- *
192
- * Neither the name of the author nor the names of contributors may be used to endorse
193
- * or promote products derived from this software without specific prior written permission.
194
- *
195
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
196
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
197
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
198
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
199
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
200
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
201
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
202
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
203
- * OF THE POSSIBILITY OF SUCH DAMAGE.
204
- *
205
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docs/assets/js/jquery.js DELETED
@@ -1,9252 +0,0 @@
1
- /*! jQuery v1.7.1 jquery.com | jquery.org/license */
2
- (function( window, undefined ) {
3
-
4
- // Use the correct document accordingly with window argument (sandbox)
5
- var document = window.document,
6
- navigator = window.navigator,
7
- location = window.location;
8
- var jQuery = (function() {
9
-
10
- // Define a local copy of jQuery
11
- var jQuery = function( selector, context ) {
12
- // The jQuery object is actually just the init constructor 'enhanced'
13
- return new jQuery.fn.init( selector, context, rootjQuery );
14
- },
15
-
16
- // Map over jQuery in case of overwrite
17
- _jQuery = window.jQuery,
18
-
19
- // Map over the $ in case of overwrite
20
- _$ = window.$,
21
-
22
- // A central reference to the root jQuery(document)
23
- rootjQuery,
24
-
25
- // A simple way to check for HTML strings or ID strings
26
- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
27
- quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
28
-
29
- // Check if a string has a non-whitespace character in it
30
- rnotwhite = /\S/,
31
-
32
- // Used for trimming whitespace
33
- trimLeft = /^\s+/,
34
- trimRight = /\s+$/,
35
-
36
- // Match a standalone tag
37
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
38
-
39
- // JSON RegExp
40
- rvalidchars = /^[\],:{}\s]*$/,
41
- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
42
- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
43
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
44
-
45
- // Useragent RegExp
46
- rwebkit = /(webkit)[ \/]([\w.]+)/,
47
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
48
- rmsie = /(msie) ([\w.]+)/,
49
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
50
-
51
- // Matches dashed string for camelizing
52
- rdashAlpha = /-([a-z]|[0-9])/ig,
53
- rmsPrefix = /^-ms-/,
54
-
55
- // Used by jQuery.camelCase as callback to replace()
56
- fcamelCase = function( all, letter ) {
57
- return ( letter + "" ).toUpperCase();
58
- },
59
-
60
- // Keep a UserAgent string for use with jQuery.browser
61
- userAgent = navigator.userAgent,
62
-
63
- // For matching the engine and version of the browser
64
- browserMatch,
65
-
66
- // The deferred used on DOM ready
67
- readyList,
68
-
69
- // The ready event handler
70
- DOMContentLoaded,
71
-
72
- // Save a reference to some core methods
73
- toString = Object.prototype.toString,
74
- hasOwn = Object.prototype.hasOwnProperty,
75
- push = Array.prototype.push,
76
- slice = Array.prototype.slice,
77
- trim = String.prototype.trim,
78
- indexOf = Array.prototype.indexOf,
79
-
80
- // [[Class]] -> type pairs
81
- class2type = {};
82
-
83
- jQuery.fn = jQuery.prototype = {
84
- constructor: jQuery,
85
- init: function( selector, context, rootjQuery ) {
86
- var match, elem, ret, doc;
87
-
88
- // Handle $(""), $(null), or $(undefined)
89
- if ( !selector ) {
90
- return this;
91
- }
92
-
93
- // Handle $(DOMElement)
94
- if ( selector.nodeType ) {
95
- this.context = this[0] = selector;
96
- this.length = 1;
97
- return this;
98
- }
99
-
100
- // The body element only exists once, optimize finding it
101
- if ( selector === "body" && !context && document.body ) {
102
- this.context = document;
103
- this[0] = document.body;
104
- this.selector = selector;
105
- this.length = 1;
106
- return this;
107
- }
108
-
109
- // Handle HTML strings
110
- if ( typeof selector === "string" ) {
111
- // Are we dealing with HTML string or an ID?
112
- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
113
- // Assume that strings that start and end with <> are HTML and skip the regex check
114
- match = [ null, selector, null ];
115
-
116
- } else {
117
- match = quickExpr.exec( selector );
118
- }
119
-
120
- // Verify a match, and that no context was specified for #id
121
- if ( match && (match[1] || !context) ) {
122
-
123
- // HANDLE: $(html) -> $(array)
124
- if ( match[1] ) {
125
- context = context instanceof jQuery ? context[0] : context;
126
- doc = ( context ? context.ownerDocument || context : document );
127
-
128
- // If a single string is passed in and it's a single tag
129
- // just do a createElement and skip the rest
130
- ret = rsingleTag.exec( selector );
131
-
132
- if ( ret ) {
133
- if ( jQuery.isPlainObject( context ) ) {
134
- selector = [ document.createElement( ret[1] ) ];
135
- jQuery.fn.attr.call( selector, context, true );
136
-
137
- } else {
138
- selector = [ doc.createElement( ret[1] ) ];
139
- }
140
-
141
- } else {
142
- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
143
- selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
144
- }
145
-
146
- return jQuery.merge( this, selector );
147
-
148
- // HANDLE: $("#id")
149
- } else {
150
- elem = document.getElementById( match[2] );
151
-
152
- // Check parentNode to catch when Blackberry 4.6 returns
153
- // nodes that are no longer in the document #6963
154
- if ( elem && elem.parentNode ) {
155
- // Handle the case where IE and Opera return items
156
- // by name instead of ID
157
- if ( elem.id !== match[2] ) {
158
- return rootjQuery.find( selector );
159
- }
160
-
161
- // Otherwise, we inject the element directly into the jQuery object
162
- this.length = 1;
163
- this[0] = elem;
164
- }
165
-
166
- this.context = document;
167
- this.selector = selector;
168
- return this;
169
- }
170
-
171
- // HANDLE: $(expr, $(...))
172
- } else if ( !context || context.jquery ) {
173
- return ( context || rootjQuery ).find( selector );
174
-
175
- // HANDLE: $(expr, context)
176
- // (which is just equivalent to: $(context).find(expr)
177
- } else {
178
- return this.constructor( context ).find( selector );
179
- }
180
-
181
- // HANDLE: $(function)
182
- // Shortcut for document ready
183
- } else if ( jQuery.isFunction( selector ) ) {
184
- return rootjQuery.ready( selector );
185
- }
186
-
187
- if ( selector.selector !== undefined ) {
188
- this.selector = selector.selector;
189
- this.context = selector.context;
190
- }
191
-
192
- return jQuery.makeArray( selector, this );
193
- },
194
-
195
- // Start with an empty selector
196
- selector: "",
197
-
198
- // The current version of jQuery being used
199
- jquery: "1.7.1",
200
-
201
- // The default length of a jQuery object is 0
202
- length: 0,
203
-
204
- // The number of elements contained in the matched element set
205
- size: function() {
206
- return this.length;
207
- },
208
-
209
- toArray: function() {
210
- return slice.call( this, 0 );
211
- },
212
-
213
- // Get the Nth element in the matched element set OR
214
- // Get the whole matched element set as a clean array
215
- get: function( num ) {
216
- return num == null ?
217
-
218
- // Return a 'clean' array
219
- this.toArray() :
220
-
221
- // Return just the object
222
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
223
- },
224
-
225
- // Take an array of elements and push it onto the stack
226
- // (returning the new matched element set)
227
- pushStack: function( elems, name, selector ) {
228
- // Build a new jQuery matched element set
229
- var ret = this.constructor();
230
-
231
- if ( jQuery.isArray( elems ) ) {
232
- push.apply( ret, elems );
233
-
234
- } else {
235
- jQuery.merge( ret, elems );
236
- }
237
-
238
- // Add the old object onto the stack (as a reference)
239
- ret.prevObject = this;
240
-
241
- ret.context = this.context;
242
-
243
- if ( name === "find" ) {
244
- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
245
- } else if ( name ) {
246
- ret.selector = this.selector + "." + name + "(" + selector + ")";
247
- }
248
-
249
- // Return the newly-formed element set
250
- return ret;
251
- },
252
-
253
- // Execute a callback for every element in the matched set.
254
- // (You can seed the arguments with an array of args, but this is
255
- // only used internally.)
256
- each: function( callback, args ) {
257
- return jQuery.each( this, callback, args );
258
- },
259
-
260
- ready: function( fn ) {
261
- // Attach the listeners
262
- jQuery.bindReady();
263
-
264
- // Add the callback
265
- readyList.add( fn );
266
-
267
- return this;
268
- },
269
-
270
- eq: function( i ) {
271
- i = +i;
272
- return i === -1 ?
273
- this.slice( i ) :
274
- this.slice( i, i + 1 );
275
- },
276
-
277
- first: function() {
278
- return this.eq( 0 );
279
- },
280
-
281
- last: function() {
282
- return this.eq( -1 );
283
- },
284
-
285
- slice: function() {
286
- return this.pushStack( slice.apply( this, arguments ),
287
- "slice", slice.call(arguments).join(",") );
288
- },
289
-
290
- map: function( callback ) {
291
- return this.pushStack( jQuery.map(this, function( elem, i ) {
292
- return callback.call( elem, i, elem );
293
- }));
294
- },
295
-
296
- end: function() {
297
- return this.prevObject || this.constructor(null);
298
- },
299
-
300
- // For internal use only.
301
- // Behaves like an Array's method, not like a jQuery method.
302
- push: push,
303
- sort: [].sort,
304
- splice: [].splice
305
- };
306
-
307
- // Give the init function the jQuery prototype for later instantiation
308
- jQuery.fn.init.prototype = jQuery.fn;
309
-
310
- jQuery.extend = jQuery.fn.extend = function() {
311
- var options, name, src, copy, copyIsArray, clone,
312
- target = arguments[0] || {},
313
- i = 1,
314
- length = arguments.length,
315
- deep = false;
316
-
317
- // Handle a deep copy situation
318
- if ( typeof target === "boolean" ) {
319
- deep = target;
320
- target = arguments[1] || {};
321
- // skip the boolean and the target
322
- i = 2;
323
- }
324
-
325
- // Handle case when target is a string or something (possible in deep copy)
326
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
327
- target = {};
328
- }
329
-
330
- // extend jQuery itself if only one argument is passed
331
- if ( length === i ) {
332
- target = this;
333
- --i;
334
- }
335
-
336
- for ( ; i < length; i++ ) {
337
- // Only deal with non-null/undefined values
338
- if ( (options = arguments[ i ]) != null ) {
339
- // Extend the base object
340
- for ( name in options ) {
341
- src = target[ name ];
342
- copy = options[ name ];
343
-
344
- // Prevent never-ending loop
345
- if ( target === copy ) {
346
- continue;
347
- }
348
-
349
- // Recurse if we're merging plain objects or arrays
350
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
351
- if ( copyIsArray ) {
352
- copyIsArray = false;
353
- clone = src && jQuery.isArray(src) ? src : [];
354
-
355
- } else {
356
- clone = src && jQuery.isPlainObject(src) ? src : {};
357
- }
358
-
359
- // Never move original objects, clone them
360
- target[ name ] = jQuery.extend( deep, clone, copy );
361
-
362
- // Don't bring in undefined values
363
- } else if ( copy !== undefined ) {
364
- target[ name ] = copy;
365
- }
366
- }
367
- }
368
- }
369
-
370
- // Return the modified object
371
- return target;
372
- };
373
-
374
- jQuery.extend({
375
- noConflict: function( deep ) {
376
- if ( window.$ === jQuery ) {
377
- window.$ = _$;
378
- }
379
-
380
- if ( deep && window.jQuery === jQuery ) {
381
- window.jQuery = _jQuery;
382
- }
383
-
384
- return jQuery;
385
- },
386
-
387
- // Is the DOM ready to be used? Set to true once it occurs.
388
- isReady: false,
389
-
390
- // A counter to track how many items to wait for before
391
- // the ready event fires. See #6781
392
- readyWait: 1,
393
-
394
- // Hold (or release) the ready event
395
- holdReady: function( hold ) {
396
- if ( hold ) {
397
- jQuery.readyWait++;
398
- } else {
399
- jQuery.ready( true );
400
- }
401
- },
402
-
403
- // Handle when the DOM is ready
404
- ready: function( wait ) {
405
- // Either a released hold or an DOMready/load event and not yet ready
406
- if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
407
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
408
- if ( !document.body ) {
409
- return setTimeout( jQuery.ready, 1 );
410
- }
411
-
412
- // Remember that the DOM is ready
413
- jQuery.isReady = true;
414
-
415
- // If a normal DOM Ready event fired, decrement, and wait if need be
416
- if ( wait !== true && --jQuery.readyWait > 0 ) {
417
- return;
418
- }
419
-
420
- // If there are functions bound, to execute
421
- readyList.fireWith( document, [ jQuery ] );
422
-
423
- // Trigger any bound ready events
424
- if ( jQuery.fn.trigger ) {
425
- jQuery( document ).trigger( "ready" ).off( "ready" );
426
- }
427
- }
428
- },
429
-
430
- bindReady: function() {
431
- if ( readyList ) {
432
- return;
433
- }
434
-
435
- readyList = jQuery.Callbacks( "once memory" );
436
-
437
- // Catch cases where $(document).ready() is called after the
438
- // browser event has already occurred.
439
- if ( document.readyState === "complete" ) {
440
- // Handle it asynchronously to allow scripts the opportunity to delay ready
441
- return setTimeout( jQuery.ready, 1 );
442
- }
443
-
444
- // Mozilla, Opera and webkit nightlies currently support this event
445
- if ( document.addEventListener ) {
446
- // Use the handy event callback
447
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
448
-
449
- // A fallback to window.onload, that will always work
450
- window.addEventListener( "load", jQuery.ready, false );
451
-
452
- // If IE event model is used
453
- } else if ( document.attachEvent ) {
454
- // ensure firing before onload,
455
- // maybe late but safe also for iframes
456
- document.attachEvent( "onreadystatechange", DOMContentLoaded );
457
-
458
- // A fallback to window.onload, that will always work
459
- window.attachEvent( "onload", jQuery.ready );
460
-
461
- // If IE and not a frame
462
- // continually check to see if the document is ready
463
- var toplevel = false;
464
-
465
- try {
466
- toplevel = window.frameElement == null;
467
- } catch(e) {}
468
-
469
- if ( document.documentElement.doScroll && toplevel ) {
470
- doScrollCheck();
471
- }
472
- }
473
- },
474
-
475
- // See test/unit/core.js for details concerning isFunction.
476
- // Since version 1.3, DOM methods and functions like alert
477
- // aren't supported. They return false on IE (#2968).
478
- isFunction: function( obj ) {
479
- return jQuery.type(obj) === "function";
480
- },
481
-
482
- isArray: Array.isArray || function( obj ) {
483
- return jQuery.type(obj) === "array";
484
- },
485
-
486
- // A crude way of determining if an object is a window
487
- isWindow: function( obj ) {
488
- return obj && typeof obj === "object" && "setInterval" in obj;
489
- },
490
-
491
- isNumeric: function( obj ) {
492
- return !isNaN( parseFloat(obj) ) && isFinite( obj );
493
- },
494
-
495
- type: function( obj ) {
496
- return obj == null ?
497
- String( obj ) :
498
- class2type[ toString.call(obj) ] || "object";
499
- },
500
-
501
- isPlainObject: function( obj ) {
502
- // Must be an Object.
503
- // Because of IE, we also have to check the presence of the constructor property.
504
- // Make sure that DOM nodes and window objects don't pass through, as well
505
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
506
- return false;
507
- }
508
-
509
- try {
510
- // Not own constructor property must be Object
511
- if ( obj.constructor &&
512
- !hasOwn.call(obj, "constructor") &&
513
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
514
- return false;
515
- }
516
- } catch ( e ) {
517
- // IE8,9 Will throw exceptions on certain host objects #9897
518
- return false;
519
- }
520
-
521
- // Own properties are enumerated firstly, so to speed up,
522
- // if last one is own, then all properties are own.
523
-
524
- var key;
525
- for ( key in obj ) {}
526
-
527
- return key === undefined || hasOwn.call( obj, key );
528
- },
529
-
530
- isEmptyObject: function( obj ) {
531
- for ( var name in obj ) {
532
- return false;
533
- }
534
- return true;
535
- },
536
-
537
- error: function( msg ) {
538
- throw new Error( msg );
539
- },
540
-
541
- parseJSON: function( data ) {
542
- if ( typeof data !== "string" || !data ) {
543
- return null;
544
- }
545
-
546
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
547
- data = jQuery.trim( data );
548
-
549
- // Attempt to parse using the native JSON parser first
550
- if ( window.JSON && window.JSON.parse ) {
551
- return window.JSON.parse( data );
552
- }
553
-
554
- // Make sure the incoming data is actual JSON
555
- // Logic borrowed from http://json.org/json2.js
556
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
557
- .replace( rvalidtokens, "]" )
558
- .replace( rvalidbraces, "")) ) {
559
-
560
- return ( new Function( "return " + data ) )();
561
-
562
- }
563
- jQuery.error( "Invalid JSON: " + data );
564
- },
565
-
566
- // Cross-browser xml parsing
567
- parseXML: function( data ) {
568
- var xml, tmp;
569
- try {
570
- if ( window.DOMParser ) { // Standard
571
- tmp = new DOMParser();
572
- xml = tmp.parseFromString( data , "text/xml" );
573
- } else { // IE
574
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
575
- xml.async = "false";
576
- xml.loadXML( data );
577
- }
578
- } catch( e ) {
579
- xml = undefined;
580
- }
581
- if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
582
- jQuery.error( "Invalid XML: " + data );
583
- }
584
- return xml;
585
- },
586
-
587
- noop: function() {},
588
-
589
- // Evaluates a script in a global context
590
- // Workarounds based on findings by Jim Driscoll
591
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
592
- globalEval: function( data ) {
593
- if ( data && rnotwhite.test( data ) ) {
594
- // We use execScript on Internet Explorer
595
- // We use an anonymous function so that context is window
596
- // rather than jQuery in Firefox
597
- ( window.execScript || function( data ) {
598
- window[ "eval" ].call( window, data );
599
- } )( data );
600
- }
601
- },
602
-
603
- // Convert dashed to camelCase; used by the css and data modules
604
- // Microsoft forgot to hump their vendor prefix (#9572)
605
- camelCase: function( string ) {
606
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
607
- },
608
-
609
- nodeName: function( elem, name ) {
610
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
611
- },
612
-
613
- // args is for internal usage only
614
- each: function( object, callback, args ) {
615
- var name, i = 0,
616
- length = object.length,
617
- isObj = length === undefined || jQuery.isFunction( object );
618
-
619
- if ( args ) {
620
- if ( isObj ) {
621
- for ( name in object ) {
622
- if ( callback.apply( object[ name ], args ) === false ) {
623
- break;
624
- }
625
- }
626
- } else {
627
- for ( ; i < length; ) {
628
- if ( callback.apply( object[ i++ ], args ) === false ) {
629
- break;
630
- }
631
- }
632
- }
633
-
634
- // A special, fast, case for the most common use of each
635
- } else {
636
- if ( isObj ) {
637
- for ( name in object ) {
638
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
639
- break;
640
- }
641
- }
642
- } else {
643
- for ( ; i < length; ) {
644
- if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
645
- break;
646
- }
647
- }
648
- }
649
- }
650
-
651
- return object;
652
- },
653
-
654
- // Use native String.trim function wherever possible
655
- trim: trim ?
656
- function( text ) {
657
- return text == null ?
658
- "" :
659
- trim.call( text );
660
- } :
661
-
662
- // Otherwise use our own trimming functionality
663
- function( text ) {
664
- return text == null ?
665
- "" :
666
- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
667
- },
668
-
669
- // results is for internal usage only
670
- makeArray: function( array, results ) {
671
- var ret = results || [];
672
-
673
- if ( array != null ) {
674
- // The window, strings (and functions) also have 'length'
675
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
676
- var type = jQuery.type( array );
677
-
678
- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
679
- push.call( ret, array );
680
- } else {
681
- jQuery.merge( ret, array );
682
- }
683
- }
684
-
685
- return ret;
686
- },
687
-
688
- inArray: function( elem, array, i ) {
689
- var len;
690
-
691
- if ( array ) {
692
- if ( indexOf ) {
693
- return indexOf.call( array, elem, i );
694
- }
695
-
696
- len = array.length;
697
- i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
698
-
699
- for ( ; i < len; i++ ) {
700
- // Skip accessing in sparse arrays
701
- if ( i in array && array[ i ] === elem ) {
702
- return i;
703
- }
704
- }
705
- }
706
-
707
- return -1;
708
- },
709
-
710
- merge: function( first, second ) {
711
- var i = first.length,
712
- j = 0;
713
-
714
- if ( typeof second.length === "number" ) {
715
- for ( var l = second.length; j < l; j++ ) {
716
- first[ i++ ] = second[ j ];
717
- }
718
-
719
- } else {
720
- while ( second[j] !== undefined ) {
721
- first[ i++ ] = second[ j++ ];
722
- }
723
- }
724
-
725
- first.length = i;
726
-
727
- return first;
728
- },
729
-
730
- grep: function( elems, callback, inv ) {
731
- var ret = [], retVal;
732
- inv = !!inv;
733
-
734
- // Go through the array, only saving the items
735
- // that pass the validator function
736
- for ( var i = 0, length = elems.length; i < length; i++ ) {
737
- retVal = !!callback( elems[ i ], i );
738
- if ( inv !== retVal ) {
739
- ret.push( elems[ i ] );
740
- }
741
- }
742
-
743
- return ret;
744
- },
745
-
746
- // arg is for internal usage only
747
- map: function( elems, callback, arg ) {
748
- var value, key, ret = [],
749
- i = 0,
750
- length = elems.length,
751
- // jquery objects are treated as arrays
752
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
753
-
754
- // Go through the array, translating each of the items to their
755
- if ( isArray ) {
756
- for ( ; i < length; i++ ) {
757
- value = callback( elems[ i ], i, arg );
758
-
759
- if ( value != null ) {
760
- ret[ ret.length ] = value;
761
- }
762
- }
763
-
764
- // Go through every key on the object
765
- } else {
766
- for ( key in elems ) {
767
- value = callback( elems[ key ], key, arg );
768
-
769
- if ( value != null ) {
770
- ret[ ret.length ] = value;
771
- }
772
- }
773
- }
774
-
775
- // Flatten any nested arrays
776
- return ret.concat.apply( [], ret );
777
- },
778
-
779
- // A global GUID counter for objects
780
- guid: 1,
781
-
782
- // Bind a function to a context, optionally partially applying any
783
- // arguments.
784
- proxy: function( fn, context ) {
785
- if ( typeof context === "string" ) {
786
- var tmp = fn[ context ];
787
- context = fn;
788
- fn = tmp;
789
- }
790
-
791
- // Quick check to determine if target is callable, in the spec
792
- // this throws a TypeError, but we will just return undefined.
793
- if ( !jQuery.isFunction( fn ) ) {
794
- return undefined;
795
- }
796
-
797
- // Simulated bind
798
- var args = slice.call( arguments, 2 ),
799
- proxy = function() {
800
- return fn.apply( context, args.concat( slice.call( arguments ) ) );
801
- };
802
-
803
- // Set the guid of unique handler to the same of original handler, so it can be removed
804
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
805
-
806
- return proxy;
807
- },
808
-
809
- // Mutifunctional method to get and set values to a collection
810
- // The value/s can optionally be executed if it's a function
811
- access: function( elems, key, value, exec, fn, pass ) {
812
- var length = elems.length;
813
-
814
- // Setting many attributes
815
- if ( typeof key === "object" ) {
816
- for ( var k in key ) {
817
- jQuery.access( elems, k, key[k], exec, fn, value );
818
- }
819
- return elems;
820
- }
821
-
822
- // Setting one attribute
823
- if ( value !== undefined ) {
824
- // Optionally, function values get executed if exec is true
825
- exec = !pass && exec && jQuery.isFunction(value);
826
-
827
- for ( var i = 0; i < length; i++ ) {
828
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
829
- }
830
-
831
- return elems;
832
- }
833
-
834
- // Getting an attribute
835
- return length ? fn( elems[0], key ) : undefined;
836
- },
837
-
838
- now: function() {
839
- return ( new Date() ).getTime();
840
- },
841
-
842
- // Use of jQuery.browser is frowned upon.
843
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
844
- uaMatch: function( ua ) {
845
- ua = ua.toLowerCase();
846
-
847
- var match = rwebkit.exec( ua ) ||
848
- ropera.exec( ua ) ||
849
- rmsie.exec( ua ) ||
850
- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
851
- [];
852
-
853
- return { browser: match[1] || "", version: match[2] || "0" };
854
- },
855
-
856
- sub: function() {
857
- function jQuerySub( selector, context ) {
858
- return new jQuerySub.fn.init( selector, context );
859
- }
860
- jQuery.extend( true, jQuerySub, this );
861
- jQuerySub.superclass = this;
862
- jQuerySub.fn = jQuerySub.prototype = this();
863
- jQuerySub.fn.constructor = jQuerySub;
864
- jQuerySub.sub = this.sub;
865
- jQuerySub.fn.init = function init( selector, context ) {
866
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
867
- context = jQuerySub( context );
868
- }
869
-
870
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
871
- };
872
- jQuerySub.fn.init.prototype = jQuerySub.fn;
873
- var rootjQuerySub = jQuerySub(document);
874
- return jQuerySub;
875
- },
876
-
877
- browser: {}
878
- });
879
-
880
- // Populate the class2type map
881
- jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
882
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
883
- });
884
-
885
- browserMatch = jQuery.uaMatch( userAgent );
886
- if ( browserMatch.browser ) {
887
- jQuery.browser[ browserMatch.browser ] = true;
888
- jQuery.browser.version = browserMatch.version;
889
- }
890
-
891
- // Deprecated, use jQuery.browser.webkit instead
892
- if ( jQuery.browser.webkit ) {
893
- jQuery.browser.safari = true;
894
- }
895
-
896
- // IE doesn't match non-breaking spaces with \s
897
- if ( rnotwhite.test( "\xA0" ) ) {
898
- trimLeft = /^[\s\xA0]+/;
899
- trimRight = /[\s\xA0]+$/;
900
- }
901
-
902
- // All jQuery objects should point back to these
903
- rootjQuery = jQuery(document);
904
-
905
- // Cleanup functions for the document ready method
906
- if ( document.addEventListener ) {
907
- DOMContentLoaded = function() {
908
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
909
- jQuery.ready();
910
- };
911
-
912
- } else if ( document.attachEvent ) {
913
- DOMContentLoaded = function() {
914
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
915
- if ( document.readyState === "complete" ) {
916
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
917
- jQuery.ready();
918
- }
919
- };
920
- }
921
-
922
- // The DOM ready check for Internet Explorer
923
- function doScrollCheck() {
924
- if ( jQuery.isReady ) {
925
- return;
926
- }
927
-
928
- try {
929
- // If IE is used, use the trick by Diego Perini
930
- // http://javascript.nwbox.com/IEContentLoaded/
931
- document.documentElement.doScroll("left");
932
- } catch(e) {
933
- setTimeout( doScrollCheck, 1 );
934
- return;
935
- }
936
-
937
- // and execute any waiting functions
938
- jQuery.ready();
939
- }
940
-
941
- return jQuery;
942
-
943
- })();
944
-
945
-
946
- // String to Object flags format cache
947
- var flagsCache = {};
948
-
949
- // Convert String-formatted flags into Object-formatted ones and store in cache
950
- function createFlags( flags ) {
951
- var object = flagsCache[ flags ] = {},
952
- i, length;
953
- flags = flags.split( /\s+/ );
954
- for ( i = 0, length = flags.length; i < length; i++ ) {
955
- object[ flags[i] ] = true;
956
- }
957
- return object;
958
- }
959
-
960
- /*
961
- * Create a callback list using the following parameters:
962
- *
963
- * flags: an optional list of space-separated flags that will change how
964
- * the callback list behaves
965
- *
966
- * By default a callback list will act like an event callback list and can be
967
- * "fired" multiple times.
968
- *
969
- * Possible flags:
970
- *
971
- * once: will ensure the callback list can only be fired once (like a Deferred)
972
- *
973
- * memory: will keep track of previous values and will call any callback added
974
- * after the list has been fired right away with the latest "memorized"
975
- * values (like a Deferred)
976
- *
977
- * unique: will ensure a callback can only be added once (no duplicate in the list)
978
- *
979
- * stopOnFalse: interrupt callings when a callback returns false
980
- *
981
- */
982
- jQuery.Callbacks = function( flags ) {
983
-
984
- // Convert flags from String-formatted to Object-formatted
985
- // (we check in cache first)
986
- flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
987
-
988
- var // Actual callback list
989
- list = [],
990
- // Stack of fire calls for repeatable lists
991
- stack = [],
992
- // Last fire value (for non-forgettable lists)
993
- memory,
994
- // Flag to know if list is currently firing
995
- firing,
996
- // First callback to fire (used internally by add and fireWith)
997
- firingStart,
998
- // End of the loop when firing
999
- firingLength,
1000
- // Index of currently firing callback (modified by remove if needed)
1001
- firingIndex,
1002
- // Add one or several callbacks to the list
1003
- add = function( args ) {
1004
- var i,
1005
- length,
1006
- elem,
1007
- type,
1008
- actual;
1009
- for ( i = 0, length = args.length; i < length; i++ ) {
1010
- elem = args[ i ];
1011
- type = jQuery.type( elem );
1012
- if ( type === "array" ) {
1013
- // Inspect recursively
1014